428 lines
22 KiB
Markdown
428 lines
22 KiB
Markdown
|
|
# 공정 작업기준 컴포넌트 (v2-process-work-standard) 구현 계획
|
||
|
|
|
||
|
|
> **작성일**: 2026-02-24
|
||
|
|
> **컴포넌트 ID**: `v2-process-work-standard`
|
||
|
|
> **성격**: 도메인 특화 컴포넌트 (v2-rack-structure와 동일 패턴)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 1. 현황 분석
|
||
|
|
|
||
|
|
### 1.1 기존 DB 테이블 (참조용, 이미 존재)
|
||
|
|
|
||
|
|
| 테이블 | 역할 | 핵심 컬럼 |
|
||
|
|
|--------|------|----------|
|
||
|
|
| `item_info` | 품목 마스터 | id, item_name, item_number, company_code |
|
||
|
|
| `item_routing_version` | 라우팅 버전 | id, item_code, version_name, company_code |
|
||
|
|
| `item_routing_detail` | 라우팅 상세 (공정 배정) | id, routing_version_id, seq_no, process_code, company_code |
|
||
|
|
| `process_mng` | 공정 마스터 | id, process_code, process_name, company_code |
|
||
|
|
|
||
|
|
### 1.2 신규 생성 필요 테이블
|
||
|
|
|
||
|
|
**`process_work_item`** - 작업 항목 (검사 장비 준비, 외관 검사 등)
|
||
|
|
|
||
|
|
| 컬럼 | 타입 | 설명 |
|
||
|
|
|------|------|------|
|
||
|
|
| id | VARCHAR PK | UUID |
|
||
|
|
| company_code | VARCHAR NOT NULL | 멀티테넌시 |
|
||
|
|
| routing_detail_id | VARCHAR NOT NULL | item_routing_detail.id FK |
|
||
|
|
| work_phase | VARCHAR NOT NULL | Config의 phases[].key 값 (예: 'PRE', 'IN', 'POST' 또는 사용자 정의) |
|
||
|
|
| title | VARCHAR NOT NULL | 항목 제목 (예: 검사 장비 준비) |
|
||
|
|
| is_required | VARCHAR | 'Y' / 'N' |
|
||
|
|
| sort_order | INTEGER | 표시 순서 |
|
||
|
|
| description | TEXT | 비고/설명 |
|
||
|
|
| created_date | TIMESTAMP | 생성일 |
|
||
|
|
| updated_date | TIMESTAMP | 수정일 |
|
||
|
|
| writer | VARCHAR | 작성자 |
|
||
|
|
|
||
|
|
**`process_work_item_detail`** - 작업 항목 상세 (버니어 캘리퍼스 상태 소정 등)
|
||
|
|
|
||
|
|
| 컬럼 | 타입 | 설명 |
|
||
|
|
|------|------|------|
|
||
|
|
| id | VARCHAR PK | UUID |
|
||
|
|
| company_code | VARCHAR NOT NULL | 멀티테넌시 |
|
||
|
|
| work_item_id | VARCHAR NOT NULL | process_work_item.id FK |
|
||
|
|
| detail_type | VARCHAR | 'CHECK' / 'INSPECTION' / 'MEASUREMENT' 등 |
|
||
|
|
| content | VARCHAR NOT NULL | 상세 내용 |
|
||
|
|
| is_required | VARCHAR | 'Y' / 'N' |
|
||
|
|
| sort_order | INTEGER | 표시 순서 |
|
||
|
|
| remark | TEXT | 비고 |
|
||
|
|
| created_date | TIMESTAMP | 생성일 |
|
||
|
|
| updated_date | TIMESTAMP | 수정일 |
|
||
|
|
| writer | VARCHAR | 작성자 |
|
||
|
|
|
||
|
|
### 1.3 데이터 흐름 (5단계 연쇄)
|
||
|
|
|
||
|
|
```
|
||
|
|
item_info (품목)
|
||
|
|
└─→ item_routing_version (라우팅 버전)
|
||
|
|
└─→ item_routing_detail (공정 배정) ← JOIN → process_mng (공정명)
|
||
|
|
└─→ process_work_item (작업 항목, phase별)
|
||
|
|
└─→ process_work_item_detail (상세)
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 2. 파일 구조 계획
|
||
|
|
|
||
|
|
### 2.1 프론트엔드 (컴포넌트 등록)
|
||
|
|
|
||
|
|
```
|
||
|
|
frontend/lib/registry/components/v2-process-work-standard/
|
||
|
|
├── index.ts # createComponentDefinition
|
||
|
|
├── types.ts # 타입 정의
|
||
|
|
├── config.ts # 기본 설정
|
||
|
|
├── ProcessWorkStandardRenderer.tsx # AutoRegisteringComponentRenderer
|
||
|
|
├── ProcessWorkStandardConfigPanel.tsx # 설정 패널
|
||
|
|
├── ProcessWorkStandardComponent.tsx # 메인 UI (좌우 분할)
|
||
|
|
├── components/
|
||
|
|
│ ├── ItemProcessSelector.tsx # 좌측: 품목/라우팅/공정 아코디언 트리
|
||
|
|
│ ├── WorkStandardEditor.tsx # 우측: 작업기준 편집 영역 전체
|
||
|
|
│ ├── WorkPhaseSection.tsx # Pre/In/Post 섹션 (3회 재사용)
|
||
|
|
│ ├── WorkItemCard.tsx # 작업 항목 카드
|
||
|
|
│ ├── WorkItemDetailList.tsx # 상세 리스트
|
||
|
|
│ └── WorkItemAddModal.tsx # 작업 항목 추가/수정 모달
|
||
|
|
├── hooks/
|
||
|
|
│ ├── useProcessWorkStandard.ts # 전체 데이터 관리 훅
|
||
|
|
│ ├── useItemProcessTree.ts # 좌측 트리 데이터 훅
|
||
|
|
│ └── useWorkItems.ts # 작업 항목 CRUD 훅
|
||
|
|
└── README.md
|
||
|
|
```
|
||
|
|
|
||
|
|
### 2.2 백엔드 (API)
|
||
|
|
|
||
|
|
```
|
||
|
|
backend-node/src/
|
||
|
|
├── routes/processWorkStandardRoutes.ts # 라우트 정의
|
||
|
|
└── controllers/processWorkStandardController.ts # 컨트롤러
|
||
|
|
```
|
||
|
|
|
||
|
|
### 2.3 DB 마이그레이션
|
||
|
|
|
||
|
|
```
|
||
|
|
db/migrations/XXX_create_process_work_standard_tables.sql
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 3. API 설계
|
||
|
|
|
||
|
|
| Method | Endpoint | 설명 |
|
||
|
|
|--------|----------|------|
|
||
|
|
| GET | `/api/process-work-standard/items` | 품목 목록 (라우팅 있는 품목만) |
|
||
|
|
| GET | `/api/process-work-standard/items/:itemCode/routings` | 품목별 라우팅 버전 + 공정 목록 |
|
||
|
|
| GET | `/api/process-work-standard/routing-detail/:routingDetailId/work-items` | 공정별 작업 항목 목록 (phase별 그룹) |
|
||
|
|
| POST | `/api/process-work-standard/work-items` | 작업 항목 추가 |
|
||
|
|
| PUT | `/api/process-work-standard/work-items/:id` | 작업 항목 수정 |
|
||
|
|
| DELETE | `/api/process-work-standard/work-items/:id` | 작업 항목 삭제 |
|
||
|
|
| GET | `/api/process-work-standard/work-items/:workItemId/details` | 작업 항목 상세 목록 |
|
||
|
|
| POST | `/api/process-work-standard/work-item-details` | 상세 추가 |
|
||
|
|
| PUT | `/api/process-work-standard/work-item-details/:id` | 상세 수정 |
|
||
|
|
| DELETE | `/api/process-work-standard/work-item-details/:id` | 상세 삭제 |
|
||
|
|
| PUT | `/api/process-work-standard/save-all` | 전체 저장 (작업 항목 + 상세 일괄) |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 4. 구현 단계 (TDD 기반)
|
||
|
|
|
||
|
|
### Phase 1: DB + API 기반
|
||
|
|
|
||
|
|
- [ ] 1-1. 마이그레이션 SQL 작성 (process_work_item, process_work_item_detail)
|
||
|
|
- [ ] 1-2. 마이그레이션 실행 및 테이블 생성 확인
|
||
|
|
- [ ] 1-3. 백엔드 라우트/컨트롤러 작성 (CRUD API)
|
||
|
|
- [ ] 1-4. API 테스트 (품목 목록, 라우팅 조회, 작업항목 CRUD)
|
||
|
|
|
||
|
|
### Phase 2: 컴포넌트 기본 구조
|
||
|
|
|
||
|
|
- [ ] 2-1. types.ts, config.ts, index.ts 작성 (컴포넌트 정의)
|
||
|
|
- [ ] 2-2. Renderer, ConfigPanel 작성 (V2 시스템 등록)
|
||
|
|
- [ ] 2-3. components/index.ts에 import 추가
|
||
|
|
- [ ] 2-4. getComponentConfigPanel.tsx에 매핑 추가
|
||
|
|
- [ ] 2-5. 화면 디자이너에서 컴포넌트 배치 가능 확인
|
||
|
|
|
||
|
|
### Phase 3: 좌측 패널 (품목/공정 선택)
|
||
|
|
|
||
|
|
- [ ] 3-1. useItemProcessTree 훅 구현 (품목 목록 + 라우팅 조회)
|
||
|
|
- [ ] 3-2. ItemProcessSelector 컴포넌트 (아코디언 + 공정 리스트)
|
||
|
|
- [ ] 3-3. 검색 기능 (품목명/공정명 검색)
|
||
|
|
- [ ] 3-4. 선택 상태 관리 + 우측 패널 연동
|
||
|
|
|
||
|
|
### Phase 4: 우측 패널 (작업기준 편집)
|
||
|
|
|
||
|
|
- [ ] 4-1. WorkStandardEditor 기본 레이아웃 (Pre/In/Post 3단 섹션)
|
||
|
|
- [ ] 4-2. useWorkItems 훅 (작업 항목 + 상세 CRUD)
|
||
|
|
- [ ] 4-3. WorkPhaseSection 컴포넌트 (섹션 헤더 + 카드 영역 + 상세 영역)
|
||
|
|
- [ ] 4-4. WorkItemCard 컴포넌트 (카드 UI + 카운트 배지)
|
||
|
|
- [ ] 4-5. WorkItemDetailList 컴포넌트 (상세 목록 + 인라인 편집)
|
||
|
|
- [ ] 4-6. WorkItemAddModal (작업 항목 추가/수정 모달 + 상세 추가)
|
||
|
|
|
||
|
|
### Phase 5: 통합 + 전체 저장
|
||
|
|
|
||
|
|
- [ ] 5-1. 전체 저장 기능 (변경사항 일괄 저장 API 연동)
|
||
|
|
- [ ] 5-2. 공정 선택 시 데이터 로딩/전환 처리
|
||
|
|
- [ ] 5-3. Empty State 처리 (데이터 없을 때 안내 UI)
|
||
|
|
- [ ] 5-4. 로딩/에러 상태 처리
|
||
|
|
|
||
|
|
### Phase 6: 마무리
|
||
|
|
|
||
|
|
- [ ] 6-1. 멀티테넌시 검증 (company_code 필터링)
|
||
|
|
- [ ] 6-2. 반응형 디자인 점검
|
||
|
|
- [ ] 6-3. README.md 작성
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 5. 핵심 UI 설계
|
||
|
|
|
||
|
|
### 5.1 전체 레이아웃
|
||
|
|
|
||
|
|
```
|
||
|
|
┌─────────────────────────────────────────────────────────────────────┐
|
||
|
|
│ v2-process-work-standard │
|
||
|
|
├────────────────────┬────────────────────────────────────────────────┤
|
||
|
|
│ 품목 및 공정 선택 │ [품목명] - [공정명] [전체 저장] │
|
||
|
|
│ │ │
|
||
|
|
│ [검색 입력] │ ── 작업 전 (Pre-Work) N개 항목 ── [+항목추가] │
|
||
|
|
│ │ ┌────────┐ ┌─────────────────────────────┐ │
|
||
|
|
│ ▼ 볼트 M8x20 │ │카드 │ │ 상세 리스트 (선택 시 표시) │ │
|
||
|
|
│ ★ 기본 라우팅 │ │ │ │ │ │
|
||
|
|
│ ◉ 재단 │ └────────┘ └─────────────────────────────┘ │
|
||
|
|
│ ◉ 검사 ← 선택 │ │
|
||
|
|
│ ★ 버전2 │ ── 작업 중 (In-Work) N개 항목 ── [+항목추가] │
|
||
|
|
│ │ ┌────────┐ ┌────────┐ │
|
||
|
|
│ ▶ 기어 50T │ │카드1 │ │카드2 │ (상세: 우측 표시) │
|
||
|
|
│ ▶ 샤프트 D30 │ └────────┘ └────────┘ │
|
||
|
|
│ │ │
|
||
|
|
│ │ ── 작업 후 (Post-Work) N개 항목 ── [+항목추가] │
|
||
|
|
│ │ (동일 구조) │
|
||
|
|
├────────────────────┴────────────────────────────────────────────────┤
|
||
|
|
│ 30% │ 70% │
|
||
|
|
└─────────────────────────────────────────────────────────────────────┘
|
||
|
|
```
|
||
|
|
|
||
|
|
### 5.2 WorkPhaseSection 내부 구조
|
||
|
|
|
||
|
|
```
|
||
|
|
── 작업 전 (Pre-Work) 4개 항목 ────────────────── [+ 작업항목 추가]
|
||
|
|
┌──────────────────────────────┬──────────────────────────────────────┐
|
||
|
|
│ 작업 항목 카드 목록 │ 선택된 항목 상세 │
|
||
|
|
│ │ │
|
||
|
|
│ ┌──────────────────────┐ │ [항목 제목] [+ 상세추가]│
|
||
|
|
│ │ ≡ 검사 장비 준비 ✏️ 🗑 │ │ ─────────────────────────────────── │
|
||
|
|
│ │ 4개 필수 │ │ 순서│유형 │내용 │필수│관리│
|
||
|
|
│ └──────────────────────┘ │ 1 │체크 │버니어 캘리퍼스... │필수│✏️🗑│
|
||
|
|
│ │ 2 │체크 │마이크로미터... │선택│✏️🗑│
|
||
|
|
│ ┌──────────────────────┐ │ 3 │체크 │검사대 청소 │선택│✏️🗑│
|
||
|
|
│ │ ≡ 측정 도구 확인 ✏️ 🗑 │ │ 4 │체크 │검사 기록지 준비 │필수│✏️🗑│
|
||
|
|
│ │ 2개 선택 │ │ │
|
||
|
|
│ └──────────────────────┘ │ │
|
||
|
|
└──────────────────────────────┴──────────────────────────────────────┘
|
||
|
|
```
|
||
|
|
|
||
|
|
### 5.3 작업 항목 추가 모달
|
||
|
|
|
||
|
|
```
|
||
|
|
┌─────────────────────────────────────────────┐
|
||
|
|
│ 작업 항목 추가 ✕ │
|
||
|
|
├─────────────────────────────────────────────┤
|
||
|
|
│ 기본 정보 │
|
||
|
|
│ │
|
||
|
|
│ 항목 제목 * 필수 여부 │
|
||
|
|
│ [ ] [필수 ▼] │
|
||
|
|
│ │
|
||
|
|
│ 비고 │
|
||
|
|
│ [ ] │
|
||
|
|
│ │
|
||
|
|
│ 상세 항목 [+ 상세 추가] │
|
||
|
|
│ ┌───┬──────┬──────────────┬────┬────┐ │
|
||
|
|
│ │순서│유형 │내용 │필수│관리│ │
|
||
|
|
│ ├───┼──────┼──────────────┼────┼────┤ │
|
||
|
|
│ │ 1 │체크 │ │필수│ 🗑 │ │
|
||
|
|
│ └───┴──────┴──────────────┴────┴────┘ │
|
||
|
|
│ │
|
||
|
|
│ [취소] [저장] │
|
||
|
|
└─────────────────────────────────────────────┘
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 6. 컴포넌트 Config 설계
|
||
|
|
|
||
|
|
### 6.1 설정 패널 UI 구조
|
||
|
|
|
||
|
|
```
|
||
|
|
┌─────────────────────────────────────────────────┐
|
||
|
|
│ 공정 작업기준 설정 │
|
||
|
|
├─────────────────────────────────────────────────┤
|
||
|
|
│ │
|
||
|
|
│ ── 데이터 소스 설정 ────────────────────────── │
|
||
|
|
│ │
|
||
|
|
│ 품목 테이블 │
|
||
|
|
│ [item_info ▼] │
|
||
|
|
│ 품목명 컬럼 품목코드 컬럼 │
|
||
|
|
│ [item_name ▼] [item_number ▼] │
|
||
|
|
│ │
|
||
|
|
│ 라우팅 버전 테이블 │
|
||
|
|
│ [item_routing_version ▼] │
|
||
|
|
│ 품목 연결 컬럼 (FK) │
|
||
|
|
│ [item_code ▼] │
|
||
|
|
│ │
|
||
|
|
│ 라우팅 상세 테이블 │
|
||
|
|
│ [item_routing_detail ▼] │
|
||
|
|
│ │
|
||
|
|
│ 공정 마스터 테이블 │
|
||
|
|
│ [process_mng ▼] │
|
||
|
|
│ │
|
||
|
|
│ ── 작업 단계 설정 ────────────────────────── │
|
||
|
|
│ │
|
||
|
|
│ ┌────┬────────────────────┬─────────────┬───┐ │
|
||
|
|
│ │순서│ 단계 키(DB저장용) │ 표시 이름 │관리│ │
|
||
|
|
│ ├────┼────────────────────┼─────────────┼───┤ │
|
||
|
|
│ │ 1 │ PRE │ 작업 전 │ 🗑 │ │
|
||
|
|
│ │ 2 │ IN │ 작업 중 │ 🗑 │ │
|
||
|
|
│ │ 3 │ POST │ 작업 후 │ 🗑 │ │
|
||
|
|
│ └────┴────────────────────┴─────────────┴───┘ │
|
||
|
|
│ [+ 단계 추가] │
|
||
|
|
│ │
|
||
|
|
│ ── 상세 유형 옵션 ────────────────────────── │
|
||
|
|
│ │
|
||
|
|
│ ┌────────────────────┬─────────────┬───┐ │
|
||
|
|
│ │ 유형 값(DB저장용) │ 표시 이름 │관리│ │
|
||
|
|
│ ├────────────────────┼─────────────┼───┤ │
|
||
|
|
│ │ CHECK │ 체크 │ 🗑 │ │
|
||
|
|
│ │ INSPECTION │ 검사 │ 🗑 │ │
|
||
|
|
│ │ MEASUREMENT │ 측정 │ 🗑 │ │
|
||
|
|
│ └────────────────────┴─────────────┴───┘ │
|
||
|
|
│ [+ 유형 추가] │
|
||
|
|
│ │
|
||
|
|
│ ── UI 설정 ────────────────────────── │
|
||
|
|
│ │
|
||
|
|
│ 좌우 분할 비율 │
|
||
|
|
│ [30 ] % │
|
||
|
|
│ │
|
||
|
|
│ 좌측 패널 제목 │
|
||
|
|
│ [품목 및 공정 선택 ] │
|
||
|
|
│ │
|
||
|
|
│ 읽기 전용 모드 │
|
||
|
|
│ [ ] 활성화 │
|
||
|
|
│ │
|
||
|
|
└─────────────────────────────────────────────────┘
|
||
|
|
```
|
||
|
|
|
||
|
|
### 6.2 Config 타입 정의
|
||
|
|
|
||
|
|
```typescript
|
||
|
|
// 작업 단계 정의 (사용자가 추가/삭제/이름변경 가능)
|
||
|
|
interface WorkPhaseDefinition {
|
||
|
|
key: string; // DB 저장용 키 (예: "PRE", "IN", "POST", "QC")
|
||
|
|
label: string; // 화면 표시명 (예: "작업 전 (Pre-Work)")
|
||
|
|
sortOrder: number; // 표시 순서
|
||
|
|
}
|
||
|
|
|
||
|
|
// 상세 유형 정의 (사용자가 추가/삭제 가능)
|
||
|
|
interface DetailTypeDefinition {
|
||
|
|
value: string; // DB 저장용 값 (예: "CHECK")
|
||
|
|
label: string; // 화면 표시명 (예: "체크")
|
||
|
|
}
|
||
|
|
|
||
|
|
// 데이터 소스 설정 (사용자가 테이블 지정 가능)
|
||
|
|
interface DataSourceConfig {
|
||
|
|
// 품목 테이블
|
||
|
|
itemTable: string; // 기본: "item_info"
|
||
|
|
itemNameColumn: string; // 기본: "item_name"
|
||
|
|
itemCodeColumn: string; // 기본: "item_number"
|
||
|
|
|
||
|
|
// 라우팅 버전 테이블
|
||
|
|
routingVersionTable: string; // 기본: "item_routing_version"
|
||
|
|
routingItemFkColumn: string; // 기본: "item_code" (품목과 연결하는 FK)
|
||
|
|
routingVersionNameColumn: string; // 기본: "version_name"
|
||
|
|
|
||
|
|
// 라우팅 상세 테이블
|
||
|
|
routingDetailTable: string; // 기본: "item_routing_detail"
|
||
|
|
|
||
|
|
// 공정 마스터 테이블
|
||
|
|
processTable: string; // 기본: "process_mng"
|
||
|
|
processNameColumn: string; // 기본: "process_name"
|
||
|
|
processCodeColumn: string; // 기본: "process_code"
|
||
|
|
}
|
||
|
|
|
||
|
|
// 전체 Config
|
||
|
|
interface ProcessWorkStandardConfig {
|
||
|
|
// 데이터 소스 설정
|
||
|
|
dataSource: DataSourceConfig;
|
||
|
|
|
||
|
|
// 작업 단계 정의 (기본 3개, 사용자가 추가/삭제/수정 가능)
|
||
|
|
phases: WorkPhaseDefinition[];
|
||
|
|
// 기본값: [
|
||
|
|
// { key: "PRE", label: "작업 전 (Pre-Work)", sortOrder: 1 },
|
||
|
|
// { key: "IN", label: "작업 중 (In-Work)", sortOrder: 2 },
|
||
|
|
// { key: "POST", label: "작업 후 (Post-Work)", sortOrder: 3 },
|
||
|
|
// ]
|
||
|
|
|
||
|
|
// 상세 유형 옵션 (사용자가 추가/삭제 가능)
|
||
|
|
detailTypes: DetailTypeDefinition[];
|
||
|
|
// 기본값: [
|
||
|
|
// { value: "CHECK", label: "체크" },
|
||
|
|
// { value: "INSPECTION", label: "검사" },
|
||
|
|
// { value: "MEASUREMENT", label: "측정" },
|
||
|
|
// ]
|
||
|
|
|
||
|
|
// UI 설정
|
||
|
|
splitRatio?: number; // 좌우 분할 비율, 기본: 30
|
||
|
|
leftPanelTitle?: string; // 좌측 패널 제목, 기본: "품목 및 공정 선택"
|
||
|
|
readonly?: boolean; // 읽기 전용 모드, 기본: false
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### 6.3 커스터마이징 시나리오 예시
|
||
|
|
|
||
|
|
**시나리오 A: 제조업 (기본)**
|
||
|
|
```
|
||
|
|
단계: 작업 전 → 작업 중 → 작업 후
|
||
|
|
유형: 체크, 검사, 측정
|
||
|
|
```
|
||
|
|
|
||
|
|
**시나리오 B: 품질검사 강화 회사**
|
||
|
|
```
|
||
|
|
단계: 준비 → 검사 → 판정 → 기록 → 보관
|
||
|
|
유형: 육안검사, 치수검사, 강도검사, 내구검사, 기능검사
|
||
|
|
```
|
||
|
|
|
||
|
|
**시나리오 C: 단순 2단계 회사**
|
||
|
|
```
|
||
|
|
단계: 사전점검 → 사후점검
|
||
|
|
유형: 확인, 기록
|
||
|
|
```
|
||
|
|
|
||
|
|
**시나리오 D: 다른 테이블 사용 회사**
|
||
|
|
```
|
||
|
|
품목 테이블: product_master (item_info 대신)
|
||
|
|
공정 테이블: operation_mng (process_mng 대신)
|
||
|
|
```
|
||
|
|
|
||
|
|
### 6.4 DB 설계 반영 사항
|
||
|
|
|
||
|
|
`work_phase` 컬럼은 고정 ENUM이 아니라 **사용자 정의 키(VARCHAR)** 로 저장합니다.
|
||
|
|
- Config에서 `phases[].key` 로 정의한 값이 DB에 저장됨
|
||
|
|
- 예: "PRE", "IN", "POST" 또는 "PREPARE", "INSPECT", "JUDGE", "RECORD", "STORE"
|
||
|
|
- 회사별 Config에 따라 다른 값이 저장되므로, 조회 시 Config의 phases 정의를 기준으로 섹션을 렌더링
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 7. 등록 체크리스트
|
||
|
|
|
||
|
|
| 항목 | 파일 | 작업 |
|
||
|
|
|------|------|------|
|
||
|
|
| 컴포넌트 정의 | `v2-process-work-standard/index.ts` | createComponentDefinition |
|
||
|
|
| 렌더러 등록 | `v2-process-work-standard/...Renderer.tsx` | registerSelf() |
|
||
|
|
| 컴포넌트 로드 | `components/index.ts` | import 추가 |
|
||
|
|
| 설정 패널 매핑 | `getComponentConfigPanel.tsx` | CONFIG_PANEL_MAP 추가 |
|
||
|
|
| 라우트 등록 | `backend-node/src/app.ts` | router.use() 추가 |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 8. 의존성
|
||
|
|
|
||
|
|
- 외부 라이브러리 추가: 없음 (기존 shadcn/ui + Lucide 아이콘만 사용)
|
||
|
|
- 기존 API 재사용: dataRoutes의 범용 CRUD는 사용하지 않고 전용 API 개발
|
||
|
|
- 이유: 5단계 JOIN + phase별 그룹핑 등 범용 API로는 처리 불가
|