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',