Files
sam-docs/sam/docs/features/planning/README.md
김보곤 4f90c0e869 docs: [planning] 주일기업 기획 메뉴 기술문서 추가
- README.md: 전체 개요, 5개 하위 메뉴 구조, 아키텍처
- construction-photos.md: 공사현장 사진대지 (GCS, 행 구조, 음성입력)
- meeting-minutes.md: 회의록 (STT 화자분리, Gemini AI 요약, 오디오 녹음)
- planning-views.md: 견적/프로젝트/워크플로우 화면 명세
- INDEX.md: 문서 인덱스에 planning 등록
2026-03-06 08:25:20 +09:00

130 lines
5.2 KiB
Markdown

# 주일기업 기획 메뉴
> **작성일**: 2026-03-06
> **상태**: 운영 중
> **프로젝트**: SAM MNG (관리자 웹)
> **라우트 접두사**: `/juil`
---
## 1. 개요
### 1.1 목적
블라인드/스크린 제조업체의 현장 관리를 위한 기획 도구 모음. 견적부터 공사, 준공까지의 업무 흐름과 현장 기록(사진대지), 회의 기록(STT/AI 요약)을 제공한다.
### 1.2 문서 구조
| 문서 | 설명 |
|------|------|
| **README.md** (이 문서) | 전체 개요, 메뉴 구조, 아키텍처 |
| [construction-photos.md](construction-photos.md) | 공사현장 사진대지 기술 명세 |
| [meeting-minutes.md](meeting-minutes.md) | 회의록 작성 기술 명세 (STT/AI 통합) |
| [planning-views.md](planning-views.md) | 견적/프로젝트/워크플로우 화면 명세 |
### 1.3 하위 메뉴 구조
```
주일기업 기획
├── 견적/입찰/공사관리 /juil/estimate
├── 프로젝트관리/기성청구 /juil/project
├── 업무 Workflow /juil/workflow
├── 공사현장 사진대지 /juil/construction-photos
└── 회의록 작성 /juil/meeting-minutes
```
---
## 2. 아키텍처
### 2.1 기술 스택
| 계층 | 기술 | 설명 |
|------|------|------|
| 뷰 | Blade + React (인라인) + Babel | 브라우저 트랜스파일 React 컴포넌트 |
| API | Laravel Controller + Service | JSON API (AJAX) |
| 모델 | Eloquent ORM | Multi-tenant (BelongsToTenant) |
| 파일 저장 | Google Cloud Storage | 사진, 오디오 파일 |
| AI | Gemini API (Vertex AI) | 요약, 화자 분리 |
| STT | Google Speech-to-Text V1/V2 + Web Speech API | 음성 인식 |
### 2.2 프로젝트 파일 구조
```
mng/
├── app/Http/Controllers/
│ ├── PlanningController.php ← 견적/프로젝트/워크플로우
│ ├── ConstructionSitePhotoController.php ← 사진대지 CRUD + 파일 관리
│ └── MeetingMinuteController.php ← 회의록 CRUD + AI 기능
├── app/Services/
│ ├── ConstructionSitePhotoService.php ← 사진대지 비즈니스 로직
│ └── MeetingMinuteService.php ← 회의록 + AI 통합 로직
├── app/Models/
│ ├── ConstructionSitePhoto.php ← 사진대지 모델
│ ├── ConstructionSitePhotoRow.php ← 사진 행 모델
│ ├── MeetingMinute.php ← 회의록 모델
│ └── MeetingMinuteSegment.php ← 회의 세그먼트 모델
└── resources/views/juil/
├── estimate.blade.php ← 견적/입찰/공사관리
├── project.blade.php ← 프로젝트관리/기성청구
├── workflow.blade.php ← 업무 Workflow
├── construction-photos.blade.php ← 사진대지 SPA
└── meeting-minutes.blade.php ← 회의록 SPA
```
### 2.3 기능별 구현 현황
| 기능 | 구현 방식 | 백엔드 | DB |
|------|----------|--------|-----|
| 견적/입찰/공사관리 | React 뷰 (목데이터) | PlanningController (뷰 반환만) | 없음 |
| 프로젝트관리/기성청구 | React 뷰 (목데이터) | PlanningController (뷰 반환만) | 없음 |
| 업무 Workflow | React 뷰 (정적 데이터) | PlanningController (뷰 반환만) | 없음 |
| 공사현장 사진대지 | React SPA + API | Controller + Service | 2 테이블 |
| 회의록 작성 | React SPA + API | Controller + Service + AI | 2 테이블 |
---
## 3. 외부 서비스 의존성
| 서비스 | 용도 | 추적 |
|--------|------|------|
| **Google Cloud Storage** | 사진/오디오 파일 저장 | `AiTokenHelper::saveGcsStorageUsage()` |
| **Google Speech-to-Text V2 (Chirp2)** | 자동 화자 분리 (최우선) | `AiTokenHelper::saveSttUsage()` |
| **Google Speech-to-Text V1** | 화자 분리 (V2 실패 시 폴백) | `AiTokenHelper::saveSttUsage()` |
| **Gemini API (Vertex AI)** | 요약 생성 + 화자 재분배 | `AiTokenHelper::saveGeminiUsage()` |
| **Web Speech API** | 브라우저 음성 입력 (현장명/설명) | `logSttUsage()` |
### 3.1 도메인 용어 힌트 (STT 정확도 향상)
```
블라인드, 스크린, 롤스크린, 허니콤, 버티컬,
원단, 바텀레일, 헤드레일, 브라켓,
주일, 경동, 주일블라인드, 경동블라인드,
수주, 발주, 납기, 출하, 재고, 원가, 단가,
SAM, ERP, MES
```
---
## 4. HTMX 전체 페이지 로드 규칙
모든 `/juil/*` 페이지는 React 인라인 컴포넌트를 사용하므로, HTMX 부분 로드 시 스크립트가 실행되지 않는다. 각 컨트롤러 메서드에서 HTMX 요청 감지 시 **HX-Redirect로 전체 페이지 리로드를 강제**한다.
```php
if ($request->header('HX-Request')) {
return response('', 200)->header('HX-Redirect', route('juil.estimate'));
}
```
---
## 5. 관련 문서
- [공사현장 사진대지](construction-photos.md) — GCS 파일 관리, 행 구조, 음성 입력
- [회의록 작성](meeting-minutes.md) — STT/화자분리/AI 요약, 오디오 녹음
- [견적/프로젝트/워크플로우](planning-views.md) — React 뷰 구성, 업무 프로세스 정의
---
**최종 업데이트**: 2026-03-06