docs: BOM 계산 시스템 구현 작업 현황 정리
- CURRENT_WORKS.md에 2025-09-22 작업 내용 추가 - 1~3단계 완료 내용 상세 기록 - 추가/수정된 파일 목록 및 작업 내용 정리 - 검증 완료 사항 및 시스템 개선 효과 문서화 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -91,5 +91,85 @@ ### 다른 장소에서 작업 시작 방법
|
||||
5. `php artisan migrate:status`로 DB 상태 확인
|
||||
|
||||
---
|
||||
**최종 업데이트**: 2025-09-19 21:45 KST
|
||||
**상태**: Git Push 준비 완료
|
||||
|
||||
## 2025-09-22 (일요일) - 업체별 동적 BOM 계산 시스템 구현
|
||||
|
||||
### 주요 작업
|
||||
- **BOM 계산 시스템 구현**: 경동기업 하드코딩 산출식을 업체별 동적 시스템으로 전환
|
||||
- **1~3단계 완료**: 데이터베이스 스키마 확장 → 계산 엔진 개발 → API 구현
|
||||
- **견적 시스템 개선**: BOM에서 필요 조건 추출하여 동적 견적 화면 구현 기반 마련
|
||||
|
||||
### 추가된 파일
|
||||
- `database/migrations/2025_09_22_215127_add_calculation_fields_to_bom_tables.php` - BOM 테이블 계산 필드 확장
|
||||
- `database/migrations/2025_09_22_215217_create_calculation_configs_table.php` - 업체별 산출식 설정 테이블
|
||||
- `app/Services/Calculation/CalculationEngine.php` - 계산 프로세스 오케스트레이션
|
||||
- `app/Services/Calculation/FormulaParser.php` - 업체별 산출식 파싱/실행
|
||||
- `app/Services/Calculation/ParameterValidator.php` - 파라미터 검증 엔진
|
||||
- `app/Models/Calculation/CalculationConfig.php` - 업체별 산출식 설정 모델
|
||||
- `app/Services/Design/BomCalculationService.php` - BOM 계산 비즈니스 로직
|
||||
- `app/Http/Controllers/Api/V1/Design/BomCalculationController.php` - BOM 계산 API 컨트롤러
|
||||
- `app/Http/Requests/Design/GetEstimateParametersRequest.php` - 견적 파라미터 조회 검증
|
||||
- `app/Http/Requests/Design/CalculateBomRequest.php` - BOM 계산 요청 검증
|
||||
- `app/Http/Requests/Design/SaveCompanyFormulaRequest.php` - 업체 산출식 저장 검증
|
||||
|
||||
### 수정된 파일
|
||||
- `routes/api.php` - BOM 계산 API 라우트 5개 추가
|
||||
|
||||
### 작업 내용
|
||||
|
||||
#### 1단계: 데이터베이스 스키마 확장
|
||||
- **bom_templates 테이블 확장**:
|
||||
- `calculation_schema` (JSON) - 견적 파라미터 스키마
|
||||
- `company_type` (VARCHAR 50) - 업체 타입 (경동기업, 삼성물산 등)
|
||||
- `formula_version` (VARCHAR 20) - 산출식 버전
|
||||
|
||||
- **bom_template_items 테이블 확장**:
|
||||
- `is_calculated` (BOOLEAN) - 계산식 적용 여부
|
||||
- `calculation_formula` (TEXT) - 계산식 표현식
|
||||
- `depends_on` (JSON) - 의존성 파라미터
|
||||
- `calculation_config` (JSON) - 계산 설정
|
||||
|
||||
- **calculation_configs 테이블 신규**:
|
||||
- 업체별 산출식 버전 관리, 멀티테넌트 지원, JSON 기반 파라미터 정의
|
||||
|
||||
#### 2단계: 계산 엔진 개발
|
||||
- **CalculationEngine**: BOM 파라미터 추출 → 중간값 계산 → 아이템별 수량 산출
|
||||
- **FormulaParser**: 경동기업/삼성물산 산출식 지원, 안전한 수식 파싱
|
||||
- **ParameterValidator**: JSON 스키마 기반 검증, 한국어 에러 메시지
|
||||
|
||||
#### 3단계: API 구현
|
||||
- **API 엔드포인트 5개**:
|
||||
- `GET /design/models/{id}/estimate-parameters` - BOM별 필요 파라미터 동적 추출
|
||||
- `POST /design/bom-templates/{id}/calculate-bom` - 실시간 BOM 수량 계산
|
||||
- `GET /design/companies/{name}/formulas` - 업체별 산출식 목록 조회
|
||||
- `POST /design/companies/{name}/formulas/{type}` - 업체별 산출식 등록/수정
|
||||
- `POST /design/formulas/test` - 산출식 배포 전 테스트
|
||||
|
||||
### 검증 완료 사항
|
||||
- ✅ **FormulaParser**: 경동기업 스크린 사이즈 계산 정상 작동
|
||||
- ✅ **ParameterValidator**: 파라미터 검증 및 한국어 에러 메시지 정상
|
||||
- ✅ **CalculationConfig**: 데이터베이스 CRUD 및 버전 관리 정상
|
||||
- ✅ **API Routes**: 5개 엔드포인트 정상 등록 및 라우트 캐시 성공
|
||||
|
||||
### 마이그레이션 상태 변경
|
||||
- **이전**: batch 11까지 실행 완료
|
||||
- **현재**: batch 12로 마이그레이션 2개 추가 실행
|
||||
|
||||
### Git 커밋 정보
|
||||
- **커밋 해시**: bd678df
|
||||
- **브랜치**: develop
|
||||
- **파일 변경**: 15개 파일 (11개 신규 생성, 4개 수정)
|
||||
- **라인 변경**: +2039 추가, -3 삭제
|
||||
|
||||
### 시스템 개선 효과
|
||||
- **개발 효율성**: 하드코딩 → 설정 기반 동적 계산으로 전환
|
||||
- **운영 편의성**: 코드 수정 없이 관리자 화면에서 업체별 산출식 등록 가능
|
||||
- **확장 가능성**: 새로운 업체 추가 시 코드 변경 없이 설정만으로 지원
|
||||
|
||||
### 다음 단계 (4단계)
|
||||
- front/www 저장소: 견적 화면 BOM별 동적 파라미터 입력 폼 구현
|
||||
- admin 저장소: 업체별 산출식 관리 인터페이스 구현
|
||||
|
||||
---
|
||||
**최종 업데이트**: 2025-09-22 23:15 KST
|
||||
**상태**: BOM 계산 시스템 구현 완료
|
||||
Reference in New Issue
Block a user