Files
sam-docs/changes/20260322_production_material_document_improvements.md

6.1 KiB

생산관리 자재투입·문서·현황판 종합 개선

날짜: 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/nameitemCode/itemName)
  • 재공품(isWipOrder) 자재 투입 시 item_type=RM(원자재) 필터 자동 적용
  • handleStockSearchquery 파라미터 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-fullw-max)

6. 자재투입 자동입력 배정수량 버그 수정

  • 원인: 같은 물리 LOT가 다른 BOM 그룹(상부덮개/마구리)에서 사용될 때 physicalUsed 교차 추적에서 lotInputtedQty가 그룹마다 달라 부정확한 차감 발생
  • 수정: physicalAvail = lotAvailableQty + SUM(모든 그룹의 lotInputtedQty)로 초기화
  • 배정완료 뱃지 클릭 → 미배정 그룹만 토글 필터
  • 배정 미완료 그룹에서만 DEV 강제입고 버튼 표시

7. 작업자화면 전 공정 자동 완료 처리

  • StepProgressItemwork_order_status_changed 필드 추가
  • handleStepClick: 단계 토글 후 자동 완료 감지 → 작업 목록 새로고침 + 토스트
  • handleInspectionComplete: 검사 완료 후에도 자동 완료 토스트 표시
  • 슬랫/스크린/절곡 모든 공정에 동일 적용 (백엔드 autoCompleteWorkOrderIfAllStepsDone 연동)

테스트 체크리스트

  • 재공품 자재 투입 검색 시 원자재만 표시
  • 재고생산 품목코드 저장 후 수정/목록에서 표시
  • 재고생산 상태 '생산완료' 통일
  • STOCK 작업지시 확정 시 dynamic_bom 생성 확인
  • 기존 STOCK 작업지시 fallback 자재 매칭
  • 수주서 절곡품 이미지 표시 (가이드레일/케이스/하단마감재)
  • 생산현황판 절곡 탭 depth 구조
  • 자재투입 자동입력 배정수량 정확성
  • 배정완료 뱃지 토글 필터
  • 작업자화면 단계 완료 시 자동 완료 전환
  • 연기차단재 이미지 (기초관리에 데이터 등록 필요)
  • 실제 운영 데이터로 자동 완료 흐름 검증

관련 문서

  • 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