docs: [changes] 2026-03-22 생산관리 자재투입·문서·현황판 종합 개선 변경이력

This commit is contained in:
김보곤
2026-03-22 18:06:31 +09:00
parent 85bc6e2f08
commit 992c52e165
2 changed files with 121 additions and 0 deletions

View File

@@ -317,6 +317,7 @@ DB 도메인별:
| [20260321_process_parent_id_tree.md](changes/20260321_process_parent_id_tree.md) | 공정관리 parent_id 트리 구조 도입 (2depth, 작업자 화면 그룹 탭) |
| [20260321_wip_inspection_report_fix.md](changes/20260321_wip_inspection_report_fix.md) | 재공품 검사성적서 검사부위 공백/도면치수/테스트입력 수정 |
| [20260322_wip_worker_screen_improvements.md](changes/20260322_wip_worker_screen_improvements.md) | 재공품 작업자화면 종합 개선 (검사판정/작업일지/자재투입/재고유형) |
| [20260322_production_material_document_improvements.md](changes/20260322_production_material_document_improvements.md) | 생산관리 자재투입·문서·현황판 종합 개선 (7건) |
---

View File

@@ -0,0 +1,120 @@
# 생산관리 자재투입·문서·현황판 종합 개선
**날짜:** 2026-03-22
**작업자:** Claude Code
## 변경 개요
재공품 자재 투입, 재고생산 품목코드, 수주서 절곡품 이미지, 생산현황판 탭 구조, 자재투입 배정 버그, 작업자화면 자동 완료 등 생산관리 전반 7건의 개선/수정 작업을 수행했다.
---
## 수정된 파일
### API (`sam/api`)
| 파일 | 변경 내용 |
|------|----------|
| `app/Services/BendingCodeService.php` | `lengthCodeToMm()` public static 메서드 추가 |
| `app/Services/Production/BendingInfoBuilder.php` | `buildDynamicBomForStockItem()` 신규 — STOCK용 dynamic_bom 생성 |
| `app/Services/OrderService.php` | STOCK 확정 시 dynamic_bom 생성 블록 추가 |
| `app/Services/WorkOrderService.php` | STOCK 호환 fallback 추가 + `buildBendingImageUrls` public 변경 |
| `app/Services/QmsLotAuditService.php` | 수주서 bending_parts에 이미지 + bending_images 맵 포함 |
### React (`sam/react`)
| 파일 | 변경 내용 |
|------|----------|
| `src/components/production/WorkerScreen/actions.ts` | `searchStockByCode` 필드 매핑 수정 + itemType 필터 + `StepProgressItem.work_order_status_changed` |
| `src/components/production/WorkerScreen/MaterialInputModal.tsx` | 재공품 원자재 필터 + 배정 뱃지 토글 + physicalAvail 교차추적 수정 + DEV 강제입고 |
| `src/components/production/WorkerScreen/index.tsx` | 탭 width 축소 + 자동 완료 감지 → 목록 새로고침 |
| `src/components/stocks/BendingLotForm.tsx` | `expectedItemCode` 상태 추가 — 품목코드 동적 반영 |
| `src/components/stocks/StockProductionList.tsx` | 품목코드 검색 + completed→'생산완료' 통일 |
| `src/components/stocks/StockProductionDetail.tsx` | completed→'생산완료' 통일 |
| `src/components/orders/documents/SalesOrderDocument.tsx` | R2 bending_images 기반 이미지 연결 |
| `src/components/orders/documents/OrderDocumentModal.tsx` | `bendingImages` prop 전달 |
| `src/components/production/ProductionDashboard/index.tsx` | 절곡 탭 depth 구조 |
| `src/components/production/ProductionDashboard/types.ts` | `TabOption.children` 추가 |
---
## 상세 변경 사항
### 1. 재공품 자재 투입 검색 로직 수정
- `searchStockByCode`: API 응답 필드 매핑 수정 (Item 모델 `code`/`name``itemCode`/`itemName`)
- 재공품(`isWipOrder`) 자재 투입 시 `item_type=RM`(원자재) 필터 자동 적용
- `handleStockSearch``query` 파라미터 null 안전 처리
### 2. 재고생산 품목코드 동적 반영
- `expectedItemCode` 상태 추가: 품목 선택 시 즉시 품목코드 input에 반영
- 저장 시 `resolvedItem?.item_code || expectedItemCode` fallback 적용
- 수정 화면 진입 시 `initialData.items[0].itemCode`로 초기화
- 재고생산 목록 검색에 품목코드 필터 추가
- `completed` 상태 라벨을 '생산완료'로 통일 (목록 + 상세)
### 3. STOCK 작업지시 dynamic_bom 생성
- `BendingInfoBuilder::buildDynamicBomForStockItem()`: bending_lot 정보 + partKey → BD 코드 → item_id → DynamicBomEntry 생성
- `OrderService::confirmAndCreateWorkOrders()`: STOCK 확정 시 자동 호출
- `WorkOrderService`: 기존 STOCK 호환 fallback (bending_lot.material 기반 RM 검색)
- `BendingCodeService::lengthCodeToMm()`: 길이코드→mm 변환 공유 메서드
### 4. 수주서 절곡품 이미지 연동
- `QmsLotAuditService::getBendingGroupImages()`: bending_items의 files 기반 이미지 조회
- `bending_images` 맵 (R2 presigned URL): `WorkOrderService::buildBendingImageUrls()` 공유
- `SalesOrderDocument`: `getBendingImageUrl()` 유틸로 R2 이미지 맵 사용
- 가이드레일/케이스/하단마감재/연기차단재 모든 위치에 실제 이미지 표시
- 인증 문제 해결: `image_file_id``/api/proxy/files/{id}/view` 프록시 경유
### 5. 생산현황판 탭 depth 구조
- 절곡 계열 공정(P-003~P-007)을 부모(절곡) + 하위(가이드레일/케이스/하단마감재/기타) 그룹화
- `TabOption.children` 필드 추가
- 재공품 라벨 간소화: "절곡 (재공품-가이드레일)" → "가이드레일"
- 작업자화면 탭 width 축소 (`md:w-full``w-max`)
### 6. 자재투입 자동입력 배정수량 버그 수정
- **원인**: 같은 물리 LOT가 다른 BOM 그룹(상부덮개/마구리)에서 사용될 때 `physicalUsed` 교차 추적에서 `lotInputtedQty`가 그룹마다 달라 부정확한 차감 발생
- **수정**: `physicalAvail = lotAvailableQty + SUM(모든 그룹의 lotInputtedQty)`로 초기화
- 배정완료 뱃지 클릭 → 미배정 그룹만 토글 필터
- 배정 미완료 그룹에서만 DEV 강제입고 버튼 표시
### 7. 작업자화면 전 공정 자동 완료 처리
- `StepProgressItem``work_order_status_changed` 필드 추가
- `handleStepClick`: 단계 토글 후 자동 완료 감지 → 작업 목록 새로고침 + 토스트
- `handleInspectionComplete`: 검사 완료 후에도 자동 완료 토스트 표시
- 슬랫/스크린/절곡 모든 공정에 동일 적용 (백엔드 `autoCompleteWorkOrderIfAllStepsDone` 연동)
---
## 테스트 체크리스트
- [x] 재공품 자재 투입 검색 시 원자재만 표시
- [x] 재고생산 품목코드 저장 후 수정/목록에서 표시
- [x] 재고생산 상태 '생산완료' 통일
- [x] STOCK 작업지시 확정 시 dynamic_bom 생성 확인
- [x] 기존 STOCK 작업지시 fallback 자재 매칭
- [x] 수주서 절곡품 이미지 표시 (가이드레일/케이스/하단마감재)
- [x] 생산현황판 절곡 탭 depth 구조
- [x] 자재투입 자동입력 배정수량 정확성
- [x] 배정완료 뱃지 토글 필터
- [x] 작업자화면 단계 완료 시 자동 완료 전환
- [ ] 연기차단재 이미지 (기초관리에 데이터 등록 필요)
- [ ] 실제 운영 데이터로 자동 완료 흐름 검증
---
## 관련 문서
- `rules/wip-production-policy.md` — 재공품 생산 정책
- `frontend/api-specs/stock-production-api.md` — 재고생산 API 명세
- `frontend/api-specs/bending-lot-api.md` — 절곡품 LOT API
---
**최종 업데이트**: 2026-03-22