diff --git a/CURRENT_WORKS.md b/CURRENT_WORKS.md index a93238d..e44e78c 100644 --- a/CURRENT_WORKS.md +++ b/CURRENT_WORKS.md @@ -91,5 +91,85 @@ ### 다른 장소에서 작업 시작 방법 5. `php artisan migrate:status`로 DB 상태 확인 --- -**최종 업데이트**: 2025-09-19 21:45 KST -**상태**: Git Push 준비 완료 \ No newline at end of file + +## 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 계산 시스템 구현 완료 \ No newline at end of file