- README.md: 전체 개요, 5개 하위 메뉴 구조, 아키텍처 - construction-photos.md: 공사현장 사진대지 (GCS, 행 구조, 음성입력) - meeting-minutes.md: 회의록 (STT 화자분리, Gemini AI 요약, 오디오 녹음) - planning-views.md: 견적/프로젝트/워크플로우 화면 명세 - INDEX.md: 문서 인덱스에 planning 등록
주일기업 기획 메뉴
작성일: 2026-03-06 상태: 운영 중 프로젝트: SAM MNG (관리자 웹) 라우트 접두사:
/juil
1. 개요
1.1 목적
블라인드/스크린 제조업체의 현장 관리를 위한 기획 도구 모음. 견적부터 공사, 준공까지의 업무 흐름과 현장 기록(사진대지), 회의 기록(STT/AI 요약)을 제공한다.
1.2 문서 구조
| 문서 | 설명 |
|---|---|
| README.md (이 문서) | 전체 개요, 메뉴 구조, 아키텍처 |
| construction-photos.md | 공사현장 사진대지 기술 명세 |
| meeting-minutes.md | 회의록 작성 기술 명세 (STT/AI 통합) |
| 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로 전체 페이지 리로드를 강제한다.
if ($request->header('HX-Request')) {
return response('', 200)->header('HX-Redirect', route('juil.estimate'));
}
5. 관련 문서
- 공사현장 사진대지 — GCS 파일 관리, 행 구조, 음성 입력
- 회의록 작성 — STT/화자분리/AI 요약, 오디오 녹음
- 견적/프로젝트/워크플로우 — React 뷰 구성, 업무 프로세스 정의
최종 업데이트: 2026-03-06