Files
sam-docs/dev/dev_plans/bending-work-step-mapping-plan.md

137 lines
4.2 KiB
Markdown

# 절곡품 작업단계 매핑 계획
> **작성일**: 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<string, string[]> = {
'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