Files
sam-docs/projects/quotation/PROGRESS.md
hskwon 80bff661fc docs: Phase 6.1 악성채권 체크리스트 완료 상태 반영
- erp-api-development-plan-d1.0-changes.md: 악성채권 추심관리 구현 완료 체크
- quotation/PROGRESS.md: 견적 프로젝트 진행상황 업데이트
- phase-4-integration/README.md: API 통합 문서 수정
- react-api-integration-plan.md: React API 통합 계획 추가
2025-12-22 15:53:31 +09:00

8.4 KiB

견적 기능 개발 진행 현황

마스터 플랜: MASTER_PLAN.md 공통 정책: PROJECT_DEVELOPMENT_POLICY.md 최종 업데이트: 2025-12-19 (Phase 4 DB 기반 재작성 완료)


전체 진행률

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 개발 🔄 진행 60% 2025-12-19 -

🔄 현재 작업

현재 Phase: Phase 4 진행 중 완료된 작업: mng 패턴 적용 - DB 기반 견적 산출 서비스 재작성 다음 작업: 견적 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 조회로 변경
  • mng 패턴 적용 - Quote 수식 모델 생성
  • FormulaEvaluatorService DB 기반 확장
  • QuoteCalculationService DB 기반 재작성
  • 견적 API 통합 테스트
  • Swagger 문서화
  • React 연동 스펙
  • README.md 작성

산출물

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

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

1. api 프로젝트 prices 테이블 연동

수정된 파일:

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

Git 커밋:

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

2. mng 패턴 적용 - DB 기반 견적 산출 재작성

추가된 파일:

  • api/app/Models/Quote/QuoteFormula.php - 수식 정의 모델
  • api/app/Models/Quote/QuoteFormulaCategory.php - 카테고리 모델
  • api/app/Models/Quote/QuoteFormulaItem.php - 품목 출력 모델
  • api/app/Models/Quote/QuoteFormulaRange.php - 범위별 값 모델
  • api/app/Models/Quote/QuoteFormulaMapping.php - 매핑 값 모델

수정된 파일:

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

    • items 테이블 연동 (products/materials 대체)
    • ITEM_TYPE 상수 업데이트 (FG/PT/RM/SM/CS)
  • api/app/Services/Quote/FormulaEvaluatorService.php

    • executeAll(): 카테고리별 수식 실행 (mng 패턴)
    • evaluateRangeFormula(): QuoteFormula 기반 범위 평가
    • evaluateMappingFormula(): QuoteFormula 기반 매핑 평가
    • getItemPrice(): prices 테이블 연동
  • api/app/Services/Quote/QuoteCalculationService.php

    • 하드코딩된 품목 코드/로직 제거
    • quote_formulas 테이블 기반 동적 계산
    • getFormulasByCategory(): DB에서 수식 조회
    • getInputSchema(): DB 기반 입력 스키마 생성

핵심 변경:

  • 기존: 하드코딩된 품목 코드 (SCR-FABRIC-001 등)
  • 변경: quote_formula_items 테이블에서 동적 조회

Git 커밋:

  • 0d49e4c refactor: 견적 산출 서비스 DB 기반으로 재작성

🏷️ Git 태그

태그 설명 생성일
- - -

📝 정책 결정 기록

날짜 항목 결정 내용 근거
2025-12-19 DB 작업 위치 api 프로젝트에서만 mng 마이그레이션 방지
2025-12-19 신규 테이블 정책 options JSON 적용 Hybrid EAV 전략
2025-12-19 견적 유형 스크린/슬랫 2가지 5130 기존 구조 유지
2025-12-19 체크박스 옵션 JSON으로 통합 저장 확장성 고려
2025-12-19 품목 테이블 items 테이블 사용 products/materials 통합 완료
2025-12-19 견적 산출 방식 mng 패턴 (DB 기반) 하드코딩 제거, 동적 수식 관리
2025-12-19 tenant_id 없을 때 예외 발생 (fallback 금지) 데이터 무결성 보장

⚠️ 이슈/블로커

현재 이슈 없음


📚 참조 문서