- 27종 수입검사 템플릿 ↔ 원자재 매핑 전략 (1:N) - Phase 1~3 구현 계획 (데이터 매핑 → API 보강 → React 연동) - 기존 인프라 분석 (DocumentService::resolve, linked_item_ids)
7.5 KiB
7.5 KiB
입고등록 × 수입검사 연동 계획
작성일: 2026-03-17 상태: 설계 중 담당: R&D실 (API) + 프론트엔드 개발자 (React)
1. 개요
1.1 목적
입고등록 시 선택한 품목에 맞는 수입검사 성적서(27종)를 자동 매칭하여 검사를 수행하고, 검사 결과를 입고 데이터에 반영한다.
1.2 현재 문제
| 항목 | 현황 |
|---|---|
| 수입검사 정보 섹션 | 검사일/검사결과 입력 UI 없음 (readOnly 표시만) |
| 수입검사하기 버튼 | 핸들러는 있으나 화면에 렌더링 안 됨 |
| 검사 등록 (InspectionCreate.tsx) | API 미연동 (console.log만) |
| 품목 ↔ 템플릿 매핑 | linked_item_ids 인프라 있으나 데이터 미설정 |
2. 시스템 구조 (기존 인프라)
2.1 템플릿 ↔ 품목 매핑
MNG 문서양식관리
├─ document_templates (27종 수입검사 양식)
│ ├─ category: '수입검사'
│ ├─ linked_item_ids: [101, 102, 103] ← 이 품목들이 이 검사서 사용
│ └─ sections → section_items (검사항목 N개, 동적)
│
API DocumentService::resolve()
├─ 입력: { category: 'incoming_inspection', item_id: 101 }
├─ 로직: linked_item_ids에 해당 item_id가 포함된 템플릿 검색
└─ 출력: { template: {...}, is_new: true/false }
2.2 입고 → 수입검사 흐름 (목표)
입고등록
↓ 품목 선택
↓ checkInspectionTemplate(item_id)
↓
├─ 템플릿 있음 → [수입검사하기] 버튼 표시
│ ↓ 클릭
│ ↓ DocumentService::resolve(incoming_inspection, item_id)
│ ↓ 해당 품목의 검사항목 동적 로드
│ ↓ 검사 수행 → Document 저장
│ ↓ 입고의 inspectionDate/inspectionResult 자동 반영
│ └─ 입고 상태: receiving_pending → inspection_pending → receiving_pending
│
└─ 템플릿 없음 → 수입검사 불필요 (바로 입고처리 가능)
3. 27종 검사서 ↔ 원자재 매핑 전략
3.1 매핑 방식: 1:N (한 템플릿 → 여러 품목)
수입검사 템플릿 A (SUS 판재)
└─ linked_item_ids: [SUS304 3T, SUS304 2T, SUS316 3T, ...]
수입검사 템플릿 B (GI 도금강판)
└─ linked_item_ids: [GI 0.5T, GI 0.8T, GI 1.0T, ...]
수입검사 템플릿 C (알루미늄)
└─ linked_item_ids: [AL 40x40, AL 30x30, ...]
수입검사 템플릿 D (DC 모터)
└─ linked_item_ids: [DC모터 24V, DC모터 12V, ...]
3.2 매핑 기준
| 기준 | 설명 |
|---|---|
| 재질 그룹 | SUS, GI, AL, 플라스틱 등 동일 재질은 같은 검사항목 |
| 형태 그룹 | 판재, 코일, 프로파일, 봉강 등 형태별 검사 기준 차이 |
| 부품 유형 | 모터, 전자부품, 볼트/너트, 접착제 등 |
3.3 매핑 설정 방법
MNG 문서양식관리에서 각 수입검사 템플릿 수정 시 연결 품목을 설정한다.
MNG > 문서 > 문서양식관리 > [수입검사 템플릿 선택] > 수정
→ "연결 품목" 영역에서 해당 검사서를 사용할 품목 선택
→ linked_item_ids에 자동 저장
중복 방지: 동일 category(수입검사) 내에서 같은 품목을 두 템플릿에 중복 연결 불가 (MNG에서 자동 검증).
3.4 매핑 검증
매핑 완료 후 아래 체크:
✅ 모든 원자재(RM) 품목이 최소 1개 수입검사 템플릿에 연결됨
✅ 동일 품목이 2개 이상 수입검사 템플릿에 중복 연결되지 않음
✅ 템플릿 없는 품목은 입고 시 수입검사 건너뜀 (정상 동작)
4. 구현 계획
Phase 1: 데이터 매핑 (MNG 작업, 코드 변경 없음)
MNG 문서양식관리에서 27종 수입검사 템플릿의 linked_item_ids에 원자재 품목 연결.
| 작업 | 담당 | 비고 |
|---|---|---|
| 27종 검사서 ↔ 원자재 매핑표 작성 | R&D실 | 재질/형태별 그룹핑 |
| MNG에서 linked_item_ids 설정 | R&D실 | 각 템플릿 수정 |
| 매핑 검증 (누락/중복 체크) | R&D실 | API로 검증 |
Phase 2: API 보강 (백엔드)
| 작업 | 상태 | 설명 |
|---|---|---|
DocumentService::resolve() |
✅ 구현됨 | 품목 → 템플릿 매칭 |
ReceivingService::getItemsWithInspectionTemplate() |
✅ 구현됨 | 입고 목록 필터 |
| 수입검사 결과 → Receiving options 반영 | ⚠️ 보강 필요 | 검사완료 시 inspectionDate/Result 자동 설정 |
| 입고 상태 전이 (inspection_pending) | ⚠️ 보강 필요 | 검사 시작 → 검사대기, 검사완료 → 입고대기 |
Phase 3: React UI 연동 (프론트엔드)
| 작업 | 설명 |
|---|---|
| 수입검사하기 버튼 표시 | hasInspectionTemplate 기반 조건부 렌더링 |
| 수입검사 모달 연동 | DocumentService::resolve() → 검사항목 동적 로드 |
| 검사결과 저장 | POST /api/v1/documents → Document 생성 |
| 입고 데이터 반영 | 검사완료 → inspectionDate/Result 자동 갱신 |
5. 관련 API 엔드포인트
5.1 기존 (구현 완료)
GET /api/v1/documents/resolve
params: { category: 'incoming_inspection', item_id: 101 }
→ 해당 품목의 수입검사 템플릿 + 기존 문서 반환
POST /api/v1/documents
→ 검사 결과 문서 저장
GET /api/v1/items/{id}
→ 응답에 has_inspection_template 포함
5.2 보강 필요
PATCH /api/v1/receivings/{id}/inspection-result (신규)
body: { inspection_date, inspection_result, document_id? }
→ Receiving.options의 검사일/검사결과 업데이트
→ 상태 전이 (inspection_pending → receiving_pending)
6. 입고등록 화면 변경 (프론트엔드)
수입검사 정보 섹션 개선
현재:
┌─────────────────────────────────────────┐
│ 수입검사 정보 │
│ 검사일: (빈 readOnly) │
│ 검사결과: (빈 readOnly) │
│ 업체 제공 성적서: [파일 업로드] │
└─────────────────────────────────────────┘
변경 후:
┌─────────────────────────────────────────┐
│ 수입검사 정보 [수입검사하기] │ ← 버튼 (템플릿 있을 때만)
│ 검사일: 2026-03-17 (자동) │
│ 검사결과: 합격 (자동) │
│ 업체 제공 성적서: [파일 업로드] │
│ │
│ [수입검사성적서 보기] │ ← 검사 완료 후 표시
└─────────────────────────────────────────┘
버튼 표시 조건
| 버튼 | 조건 |
|---|---|
| 수입검사하기 | hasInspectionTemplate === true && 검사 미완료 |
| 수입검사성적서 보기 | 검사 완료 (inspectionResult 존재) |
관련 문서
- 수입검사 성적서 연동 계획 — 기존 상세 설계
- 수입검사 템플릿 계획 — 템플릿 생성 계획
- 채번규칙 — 원자재 로트번호 채번
- 입고관리 분석 — 입고 시스템 현황
최종 업데이트: 2026-03-17