Files
sam-docs/sam/docs/features/planning
김보곤 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
..

주일기업 기획 메뉴

작성일: 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. 관련 문서


최종 업데이트: 2026-03-06