diff --git a/dev/dev_plans/bending-work-step-mapping-plan.md b/dev/dev_plans/bending-work-step-mapping-plan.md new file mode 100644 index 0000000..69165dd --- /dev/null +++ b/dev/dev_plans/bending-work-step-mapping-plan.md @@ -0,0 +1,136 @@ +# 절곡품 작업단계 매핑 계획 + +> **작성일**: 2026-03-20 +> **상태**: 설계 확정 +> **담당**: R&D실 + +--- + +## 1. 개요 + +### 1.1 목적 + +절곡 공정(P-003)의 작업단계가 모든 절곡 품목에 동일하게 표시되는 문제를 해결한다. BD 코드 접두사에 따라 해당 품목에 필요한 작업단계만 표시한다. + +### 1.2 현재 문제 + +``` +현재: 모든 절곡 작업지시 → [가이드레일 제작, 케이스 제작, 하단마감재 제작, 검사] +문제: BD-ST-24 (가이드레일 측면형)에 케이스/하단마감재 단계가 불필요하게 표시됨 +``` + +### 1.3 기대 결과 + +``` +BD-RS-30 (가이드레일 벽면) → [가이드레일 제작, 검사] +BD-ST-24 (가이드레일 측면) → [가이드레일 제작, 검사] +BD-CF-35 (케이스 전면부) → [케이스 제작, 검사] +BD-CB-35 (케이스 린텔부) → [케이스 제작, 검사] +BD-BL-35 (하단마감재 스크린) → [하단마감재 제작, 검사] +``` + +--- + +## 2. BD 코드 분류 체계 + +### 2.1 코드 구조 + +``` +BD-{종류코드}{규격코드}-{길이코드} +예: BD-RS-30 = BD + R(가이드레일) + S(측면형) + 30(길이) +``` + +### 2.2 종류코드 → 작업단계 매핑 + +| 종류코드 접두사 | 제품 분류 | 필요 작업단계 | +|:---:|---|---| +| `R` | 가이드레일-벽면형 | `guide_rail`, `inspection` | +| `S` | 가이드레일-측면형 | `guide_rail`, `inspection` | +| `C` | 케이스 (린텔/전면/점검/후면) | `case`, `inspection` | +| `B` | 하단마감재-스크린 | `bottom_finish`, `inspection` | +| `T` | 하단마감재-철재 | `bottom_finish`, `inspection` | +| `L` | L-Bar | `guide_rail`, `inspection` | +| `G` | 연기차단재 | `guide_rail`, `inspection` | + +--- + +## 3. 구현 방안: 프론트엔드 코드 매핑 + +### 3.1 선택 근거 + +| 방안 | 장점 | 단점 | +|------|------|------| +| ~~A. DB 규칙 기반~~ | 유연 | 마이그레이션, 관리 UI 필요 | +| **B. 프론트엔드 코드 매핑** | 빠른 구현, 변경 용이 | BD 코드 체계 변경 시 수정 필요 | + +BD 코드 체계가 안정적이고 종류가 7개로 한정되어 있어 프론트엔드 매핑이 적합하다. + +### 3.2 구현 위치 + +| 파일 | 변경 내용 | +|------|----------| +| `react/src/components/production/WorkOrders/types.ts` | `BENDING_STEP_MAP` 상수 추가 | +| `react/src/components/production/WorkOrders/WorkOrderDetail.tsx` | `ProcessStepPills`에 필터링 로직 적용 | + +### 3.3 매핑 상수 + +```typescript +// BD 코드 접두사 → 필요 작업단계 매핑 +const BENDING_STEP_MAP: Record = { + 'R': ['guide_rail', 'inspection'], // 가이드레일-벽면 + 'S': ['guide_rail', 'inspection'], // 가이드레일-측면 + 'C': ['case', 'inspection'], // 케이스 + 'B': ['bottom_finish', 'inspection'], // 하단마감재-스크린 + 'T': ['bottom_finish', 'inspection'], // 하단마감재-철재 + 'L': ['guide_rail', 'inspection'], // L-Bar + 'G': ['guide_rail', 'inspection'], // 연기차단재 +}; +``` + +### 3.4 필터링 로직 + +``` +1. 작업지시의 work_order_items에서 품목 코드(BD-XX-YY) 수집 +2. BD- 접두사 뒤의 첫 글자(종류코드)로 필요 단계 결정 +3. 여러 품목이 있으면 필요 단계의 합집합(union)으로 표시 +4. BD 코드가 아닌 품목이면 전체 단계 표시 (fallback) +``` + +--- + +## 4. 데이터 흐름 + +``` +API: WorkOrder → items[].item_code (BD-RS-30, BD-CF-35 등) + ↓ +React: transformApiToFrontend() + ↓ items에서 BD 코드 추출 + ↓ BENDING_STEP_MAP으로 필요 단계 결정 + ↓ +ProcessStepPills(filteredSteps) + ↓ 필요 단계만 렌더링 +``` + +--- + +## 5. 재고생산(STOCK)의 경우 + +재고생산은 단일 품목(BD-XX-YY)으로 생성되므로 매핑이 명확하다. + +``` +STK202603180005 → BD-ST-24 (가이드레일 측면) + → 종류코드 'S' → ['guide_rail', 'inspection'] + → 가이드레일 제작 + 검사 만 표시 +``` + +--- + +## 관련 문서 + +- [재고생산 개편](stock-production-lot-form-plan.md) — 절곡품 LOT 방식 +- [입고×수입검사 연동](receiving-inspection-integration-plan.md) — 입고-검사-재고 흐름 +- [재공품 생산 정책](../../rules/wip-production-policy.md) — 재공품 개념 + +--- + +**최종 업데이트**: 2026-03-20