From 02e268e49a5b33ac240b5a9026deb9e171e585d0 Mon Sep 17 00:00:00 2001 From: kent Date: Fri, 2 Jan 2026 21:06:06 +0900 Subject: [PATCH] =?UTF-8?q?docs(API):=20=EA=B2=AC=EC=A0=81=20BOM=20?= =?UTF-8?q?=EC=82=B0=EC=B6=9C=20=EC=9E=91=EC=97=85=20=ED=98=84=ED=99=A9=20?= =?UTF-8?q?=EB=B0=8F=20Item=20=EB=AA=A8=EB=8D=B8=20=EC=A3=BC=EC=84=9D=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Item 모델 item_category 필드 주석 추가 - CURRENT_WORKS.md 견적 자동산출 작업 현황 업데이트 - LOGICAL_RELATIONSHIPS.md 관계 문서 업데이트 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- CURRENT_WORKS.md | 84 +++++++++++++++++++++++++++++++++++++++ LOGICAL_RELATIONSHIPS.md | 9 ++++- app/Models/Items/Item.php | 1 + 3 files changed, 93 insertions(+), 1 deletion(-) diff --git a/CURRENT_WORKS.md b/CURRENT_WORKS.md index 52a1713..3bad373 100644 --- a/CURRENT_WORKS.md +++ b/CURRENT_WORKS.md @@ -1,5 +1,89 @@ # SAM API 작업 현황 +## 2026-01-02 (목) - 채권현황 동적월 지원 및 버그 수정 + +### 작업 목표 +- "최근 1년" 필터 선택 시 동적 월 기간(최근 12개월) 지원 +- year=0 파라미터 처리 버그 수정 +- 거래처별 연체 상태 및 메모 관리 기능 추가 + +### 수정된 파일 +| 파일명 | 설명 | +|--------|------| +| `app/Http/Controllers/Api/V1/ReceivablesController.php` | boolean 유효성 검사 수정, 디버깅 로그 추가 | +| `app/Services/ReceivablesService.php` | 동적 월 기간 지원, 이월잔액 계산 추가 | +| `app/Models/Orders/Client.php` | is_overdue, memo 필드 추가 | +| `routes/api.php` | 채권현황 라우트 추가 | + +### 생성된 파일 +| 파일명 | 설명 | +|--------|------| +| `database/migrations/2026_01_02_113722_add_is_overdue_to_clients_table.php` | clients 테이블 is_overdue 컬럼 추가 | + +### 주요 변경 내용 +1. **Boolean 유효성 검사 수정**: `'nullable|boolean'` → `'nullable|string|in:true,false,1,0'` + - 쿼리 문자열의 `"true"` 문자열을 올바르게 처리 +2. **동적 월 기간 지원**: `recent_year=true` 시 최근 12개월 동적 계산 +3. **월별 레이블 동적 생성**: 예: `['25.02', '25.03', ...]` +4. **이월잔액(carry_forward_balance) 계산**: 선택 기간 이전의 누적 미수금 + +### Git 커밋 +- `4fa38e3` feat(API): 채권현황 동적월 지원 및 year=0 파라미터 버그 수정 + +### 남은 작업 +- [ ] 디버깅 로그 제거 (테스트 완료 후) +- [ ] 추가 UI 개선사항 확인 + +--- + +## 2026-01-02 (목) - Phase 1.2 다건 BOM 기반 자동산출 API 구현 + +### 작업 목표 +- React 견적등록 화면에서 여러 품목의 자동산출을 일괄 요청할 수 있는 API 구현 +- React QuoteFormItem 인터페이스 필드명(camelCase)과 API 변수명(약어) 모두 지원 + +### 생성된 파일 +| 파일명 | 설명 | +|--------|------| +| `app/Http/Requests/Quote/QuoteBomBulkCalculateRequest.php` | 다건 BOM 산출 FormRequest (필드 변환 포함) | +| `docs/changes/20260102_1300_quote_bom_bulk_calculation.md` | 변경 내용 문서 | + +### 수정된 파일 +| 파일명 | 설명 | +|--------|------| +| `app/Services/Quote/QuoteCalculationService.php` | calculateBomBulk() 메서드 추가 | +| `app/Http/Controllers/Api/V1/QuoteController.php` | calculateBomBulk 액션 추가 | +| `routes/api.php` | /calculate/bom/bulk 라우트 추가 | +| `app/Swagger/v1/QuoteApi.php` | 스키마 3개 + 엔드포인트 추가 | + +### 주요 변경 내용 +1. **다건 BOM 기반 자동산출 API**: `POST /api/v1/quotes/calculate/bom/bulk` +2. **필드 매핑 지원**: React camelCase (openWidth, openHeight) ↔ API 약어 (W0, H0) +3. **일괄 처리**: 여러 품목 동시 계산, 성공/실패 요약 제공 +4. **Swagger 문서화**: QuoteBomBulkCalculateRequest, QuoteBomBulkItemInput, QuoteBomBulkCalculationResult + +### 필드 매핑 테이블 +| React 필드 | API 변수 | 설명 | +|-----------|---------|------| +| openWidth | W0 | 개구부 폭 | +| openHeight | H0 | 개구부 높이 | +| quantity | QTY | 수량 | +| productCategory | PC | 제품 카테고리 | +| guideRailType | GT | 가이드레일 타입 | +| motorPower | MP | 모터 출력 | +| controller | CT | 제어반 | +| wingSize | WS | 날개 크기 | +| inspectionFee | INSP | 검사비 | + +### Git 커밋 +- `4e59bbf` feat: Phase 1.2 - 다건 BOM 기반 자동산출 API 구현 + +### 관련 문서 +- 계획 문서: `docs/plans/quote-calculation-api-plan.md` +- Phase 1.1: `docs/changes/20260102_quote_bom_calculation_api.md` + +--- + ## 2026-01-02 (목) - Phase 1.1 견적 산출 API 엔드포인트 구현 ### 작업 목표 diff --git a/LOGICAL_RELATIONSHIPS.md b/LOGICAL_RELATIONSHIPS.md index c95aa8b..938716b 100644 --- a/LOGICAL_RELATIONSHIPS.md +++ b/LOGICAL_RELATIONSHIPS.md @@ -1,6 +1,6 @@ # 논리적 데이터베이스 관계 문서 -> **자동 생성**: 2025-12-30 16:08:45 +> **자동 생성**: 2026-01-02 11:42:39 > **소스**: Eloquent 모델 관계 분석 ## 📊 모델별 관계 현황 @@ -60,6 +60,11 @@ ### post_custom_field_values - **post()**: belongsTo → `posts` - **field()**: belongsTo → `board_settings` +### category_groups +**모델**: `App\Models\CategoryGroup` + +- **tenant()**: belongsTo → `tenants` + ### categorys **모델**: `App\Models\Commons\Category` @@ -335,6 +340,8 @@ ### roles - **tenant()**: belongsTo → `tenants` - **menuPermissions()**: hasMany → `role_menu_permissions` - **userRoles()**: hasMany → `user_roles` +- **users()**: belongsToMany → `users` +- **permissions()**: belongsToMany → `permissions` ### role_menu_permissions **모델**: `App\Models\Permissions\RoleMenuPermission` diff --git a/app/Models/Items/Item.php b/app/Models/Items/Item.php index 9ffe1ce..d62ef00 100644 --- a/app/Models/Items/Item.php +++ b/app/Models/Items/Item.php @@ -23,6 +23,7 @@ class Item extends Model protected $fillable = [ 'tenant_id', 'item_type', + 'item_category', // 품목 카테고리 (SCREEN, STEEL, BENDING, ALUMINUM 등) 'code', 'name', 'unit',