Files
sam-docs/changes/20260319_nonconforming_management_api.md

3.3 KiB

부적합관리 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