Files
sam-docs/projects/quotation/PROGRESS.md

7.4 KiB

견적 기능 개발 진행 현황

마스터 플랜: MASTER_PLAN.md 공통 정책: PROJECT_DEVELOPMENT_POLICY.md 최종 업데이트: 2025-12-19 (Phase 4 prices 연동)


전체 진행률

Phase 상태 진행률 시작일 완료일
Phase 1: 5130 분석 완료 100% 2025-12-19 2025-12-19
Phase 2: mng 분석 완료 100% 2025-12-19 2025-12-19
Phase 3: 구현 완료 100% 2025-12-19 2025-12-19
Phase 4: API 개발 🔄 진행 30% 2025-12-19 -

🔄 현재 작업

현재 Phase: Phase 4 진행 중 완료된 작업: api 프로젝트 prices 테이블 연동 다음 작업: 견적 API 테스트 및 Swagger 문서화


Phase 1: 5130 견적 기능 분석 (완료)

체크리스트

  • UI/화면 분석 (list.php, write_form.php 등)
  • JS 수식 분석 (calculation.js, fetch_unitprice.php)
  • PHP 계산 로직 분석 (get_screen_amount.php, get_slat_amount.php)
  • DB 구조 분석 (estimate, BDmodels, price_* 테이블)
  • 비즈니스 로직 문서화
  • README.md 작성

산출물

핵심 발견 사항

견적 유형 (2가지)

유형 주요 특징
스크린 면적 기반 (높이+550), 실리카/와이어 소재
슬랫(철재) 면적 기반 (높이+50), 방화슬랫 소재

계산 항목 (18개)

검사비, 주자재, 조인트바, 모터, 제어기, 케이스, 케이스연기차단재, 마구리, 앵글, 가이드레일, 레일연기차단재, 하장바, L바, 보강평철, 샤프트, 무게평철, 환봉, 각파이프

옵션 체크박스 (5개)

옵션 영향 항목
절곡 케이스, 레일, 연기차단재, 하장바, L바, 보강평철
모터 모터 가격
보증 보증기간
슬랫 주자재(슬랫), 조인트바
부자재 샤프트, 각파이프, 앵글

Phase 2: mng 견적 수식 관리 분석 (완료)

체크리스트

  • 현재 구현 상태 분석 (quote-formulas)
  • 오류/문제점 목록화
  • 5130과의 차이점 분석
  • 개선 방향 도출
  • README.md 작성

산출물

핵심 발견 사항

구현 상태 요약

구성요소 개수 상태
DB 테이블 5개 완료
Models 5개 완료
Services 2개 완료
Controllers 3개 완료
Views 9개 완료

핵심 이슈 (Phase 3에서 해결)

우선순위 이슈 설명
🔴 Critical 품목 단가 조회 getItemPrice() TODO 상태
🔴 Critical 수식 데이터 미입력 테이블 비어있음
🟡 Important eval() 사용 보안 취약점

5130 vs mng 비교

항목 5130 mng 평가
수식 저장 JS 하드코딩 DB 동적관리 mng 우수
카테고리 분류 없음 13개 지원 mng 우수
품목 단가 연동 직접 조회 TODO 상태 🔴 미완성

Phase 3: mng 견적 기능 구현 (완료)

체크리스트

  • 테이블 매핑 (5130 → SAM)
  • getItemPrice() 연동 구현
  • Price 모델 생성 (mng)
  • Seeder 확인 및 실행 방법 문서화
  • README.md 작성

산출물

핵심 구현 내용

getItemPrice() 연동

파일: mng/app/Services/Quote/FormulaEvaluatorService.php:324-335

  • prices 테이블 연동 완료
  • 품목 코드 → 판매단가 조회 구현

Price 모델

파일: mng/app/Models/Price.php

  • getCurrentPrice(): 현재 유효 단가 조회
  • getSalesPriceByItemCode(): 품목 코드로 단가 조회

Seeder 실행 방법

cd /Users/hskwon/Works/@KD_SAM/SAM/api
php artisan db:seed --class=QuoteFormulaCategorySeeder
php artisan db:seed --class=QuoteFormulaSeeder

🔄 Phase 4: 견적 API 개발 (진행 중)

체크리스트

  • api 프로젝트 prices 테이블 연동
  • Price 모델에 getCurrentPrice(), getSalesPriceByItemCode() 추가
  • QuoteCalculationService prices 조회로 변경
  • 견적 API 통합 테스트
  • Swagger 문서화
  • React 연동 스펙
  • README.md 작성

산출물

  • phase-4-api/README.md
  • phase-4-api/api-spec.md

완료된 작업 (2025-12-19)

api 프로젝트 prices 테이블 연동

수정된 파일:

  • api/app/Models/Products/Price.php

    • 상수 추가: STATUS_, ITEM_TYPE_
    • getCurrentPrice(): 현재 유효 단가 조회
    • getSalesPriceByItemCode(): 품목 코드로 단가 조회
  • api/app/Services/Quote/QuoteCalculationService.php

    • setTenantId(): 테넌트 ID 설정
    • getUnitPrice(): 단가 조회 헬퍼 (fallback 지원)
    • 모든 하드코딩 단가 → Price 모델 조회로 변경

연동된 품목 코드:

품목 코드 설명 기존 fallback
SCR-FABRIC-001 스크린 원단 25,000
SCR-CASE-001 알루미늄 케이스 85,000
SCR-BRACKET-001 설치 브라켓 15,000
SCR-MOTOR-50W~300W 모터 용량별 120,000~280,000
LAB-INSTALL-001 설치 인건비 50,000
STL-PLATE-SS304/SS316/GALVANIZED 철판 재질별 3,000~6,500
STL-WELD-001 용접 15,000
STL-FINISH-HAIRLINE/MIRROR/MATTE 표면처리 5,000~15,000
STL-PROCESS-001 가공비 50,000

Git 커밋:

  • 4d3085e feat: 견적 산출 서비스 prices 테이블 연동

🏷️ Git 태그

태그 설명 생성일
- - -

📝 정책 결정 기록

날짜 항목 결정 내용 근거
2025-12-19 DB 작업 위치 api 프로젝트에서만 mng 마이그레이션 방지
2025-12-19 신규 테이블 정책 options JSON 적용 Hybrid EAV 전략
2025-12-19 견적 유형 스크린/슬랫 2가지 5130 기존 구조 유지
2025-12-19 체크박스 옵션 JSON으로 통합 저장 확장성 고려

⚠️ 이슈/블로커

현재 이슈 없음


📚 참조 문서