From 6c67bcf1441279a54ee5a098420c5678d6e16f1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Thu, 19 Mar 2026 09:10:44 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20[material]=20=EB=B6=80=EC=A0=81?= =?UTF-8?q?=ED=95=A9=EA=B4=80=EB=A6=AC=20API=20=EB=B3=80=EA=B2=BD=EC=9D=B4?= =?UTF-8?q?=EB=A0=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- INDEX.md | 1 + .../20260319_nonconforming_management_api.md | 92 +++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 changes/20260319_nonconforming_management_api.md diff --git a/INDEX.md b/INDEX.md index 8b8ca9f..24ff253 100644 --- a/INDEX.md +++ b/INDEX.md @@ -275,6 +275,7 @@ DB 도메인별: | [20260318_stock_production_item_add_removal.md](changes/20260318_stock_production_item_add_removal.md) | 재고생산 수정 화면 레이아웃 통일 (등록과 동일 BendingLotForm 사용) | | [20260318_rm_spec_field_restructure.md](changes/20260318_rm_spec_field_restructure.md) | 원자재(RM) 규격 필드 구조 개선 (라벨 분리, 섹션 그룹핑, 테스트 데이터 정리) | | [20260319_item_master_field_search.md](changes/20260319_item_master_field_search.md) | 서비스 품목기준관리 항목 탭 검색 기능 추가 | +| [20260319_nonconforming_management_api.md](changes/20260319_nonconforming_management_api.md) | 부적합관리 API 구현 (8개 엔드포인트 + 결재 연동) | | [20260319_statcards_grid_layout_fix.md](changes/20260319_statcards_grid_layout_fix.md) | StatCards 카드 6개 한 행 표시 개선 | --- diff --git a/changes/20260319_nonconforming_management_api.md b/changes/20260319_nonconforming_management_api.md new file mode 100644 index 0000000..ceb85d8 --- /dev/null +++ b/changes/20260319_nonconforming_management_api.md @@ -0,0 +1,92 @@ +# 부적합관리 API 구현 (Phase 1-A + 결재 연동) + +**날짜:** 2026-03-19 +**작업자:** Claude Code + +## 변경 개요 + +자재관리 - 부적합관리 기능의 API를 구현했다. 부적합 보고서 CRUD + 자재 내역/비용 관리 + 결재 시스템 연동까지 완료. + +--- + +## 수정된 파일 + +### 신규 생성 + +| 파일 | 변경 내용 | +|------|----------| +| `database/migrations/2026_03_19_100000_create_nonconforming_reports_table.php` | `nonconforming_reports` + `nonconforming_report_items` 테이블 | +| `database/migrations/2026_03_19_110000_add_approval_id_to_nonconforming_reports_table.php` | `approval_id` FK 추가 | +| `app/Models/Materials/NonconformingReport.php` | 부적합 보고서 모델 (관계, cast, 상수, 헬퍼) | +| `app/Models/Materials/NonconformingReportItem.php` | 자재 상세 내역 모델 | +| `app/Services/NonconformingReportService.php` | CRUD + 채번 + 비용 계산 + 상태 전이 + 결재상신 | +| `app/Http/Controllers/Api/V1/NonconformingReportController.php` | REST 8개 엔드포인트 | +| `app/Http/Requests/Material/StoreNonconformingReportRequest.php` | 등록 검증 | +| `app/Http/Requests/Material/UpdateNonconformingReportRequest.php` | 수정 검증 | + +### 수정 + +| 파일 | 변경 내용 | +|------|----------| +| `routes/api/v1/inventory.php` | 부적합관리 라우트 8개 등록 | +| `lang/ko/error.php` | 부적합관리 에러 메시지 7개 추가 | +| `app/Services/ApprovalService.php` | 부적합 결재 콜백 3개 추가 (승인/반려/회수) | + +--- + +## API 엔드포인트 (8개) + +| Method | Path | 설명 | +|--------|------|------| +| GET | `/api/v1/material/nonconforming-reports` | 목록 (필터/검색/페이지네이션) | +| GET | `/api/v1/material/nonconforming-reports/stats` | 상태별 통계 | +| POST | `/api/v1/material/nonconforming-reports` | 등록 (items 일괄) | +| GET | `/api/v1/material/nonconforming-reports/{id}` | 단건 조회 | +| PUT | `/api/v1/material/nonconforming-reports/{id}` | 수정 (items sync) | +| DELETE | `/api/v1/material/nonconforming-reports/{id}` | 소프트 삭제 | +| PATCH | `/api/v1/material/nonconforming-reports/{id}/status` | 상태 변경 | +| POST | `/api/v1/material/nonconforming-reports/{id}/submit-approval` | 결재상신 | + +--- + +## 주요 기능 + +### 채번 + +- 형식: `NC-YYYYMMDD-NNN` (테넌트별, 일자별 리셋) + +### 비용 자동 계산 + +- `material_cost` = 자재 상세 테이블 금액 합계 +- `total_cost` = 자재 + 운송 + 시공 + 기타 + +### 상태 워크플로우 + +``` +RECEIVED → ANALYZING → RESOLVED → (결재상신) → 승인 → CLOSED + → 반려/회수 → RESOLVED (재상신 가능) +``` + +### 결재 연동 + +- `linkable_type` = `NonconformingReport::class` 으로 Approval과 polymorphic 연결 +- 승인 시 자동 CLOSED, 반려/회수 시 approval_id 해제 + +--- + +## 프론트엔드 전달 문서 + +- `docs/frontend/api-specs/nonconforming-api.md` — 8개 엔드포인트 + 화면 가이드 + Server Actions 예시 +- `docs/dev/dev_plans/nonconforming-management-plan.md` — 기획서 (API/FE 분리 단계별 계획) + +--- + +## 관련 문서 + +- `dev/dev_plans/nonconforming-management-plan.md` — 기획서 +- `frontend/api-specs/nonconforming-api.md` — FE API 명세 +- `dev/guides/approval-module-integration-guide.md` — 결재 모듈 통합 가이드 + +--- + +**최종 업데이트**: 2026-03-19