refactor(work-orders): process_type을 process_id FK로 변환
- types.ts: processId, processName, processCode 추가, transform 함수 구현 - actions.ts: getProcessOptions() 추가, CRUD에 transform 적용 - WorkOrderCreate.tsx: 공정 목록 API 동적 로딩 - WorkOrderList.tsx: processName 표시로 변경 - WorkOrderDetail.tsx: processName 표시, processType은 로직용 유지
This commit is contained in:
@@ -1,5 +1,83 @@
|
||||
# SAM React 작업 현황
|
||||
|
||||
## 2025-01-09 (목) - 작업지시 process_type → process_id FK 변환
|
||||
|
||||
### 작업 목표
|
||||
- 작업지시의 `process_type` (varchar enum: 'screen'/'slat'/'bending')를 `process_id` (FK → processes.id)로 변환
|
||||
- API와 Frontend 전체 스택 마이그레이션
|
||||
|
||||
### 수정된 파일
|
||||
| 파일명 | 설명 |
|
||||
|--------|------|
|
||||
| `src/components/production/WorkOrders/types.ts` | processId, processName, processCode 필드 추가, transformApiToFrontend에서 processType 하위 호환 유지 |
|
||||
| `src/components/production/WorkOrders/actions.ts` | getProcessOptions() 추가, createWorkOrder에서 processId 사용 |
|
||||
| `src/components/production/WorkOrders/WorkOrderCreate.tsx` | processType enum → processId FK 변경, 동적 공정 옵션 로딩 |
|
||||
| `src/components/production/WorkOrders/WorkOrderList.tsx` | PROCESS_TYPE_LABELS 제거, order.processName 사용 |
|
||||
| `src/components/production/WorkOrders/WorkOrderDetail.tsx` | PROCESS_TYPE_LABELS 제거, order.processName 사용 (비즈니스 로직은 processType 유지) |
|
||||
|
||||
### 주요 변경 내용
|
||||
|
||||
#### 1. types.ts - 타입 및 변환 함수
|
||||
- `WorkOrder` 인터페이스에 `processId`, `processName`, `processCode` 추가
|
||||
- `processType`은 `@deprecated` 마킹, 하위 호환용 유지
|
||||
- `transformApiToFrontend`에서 `processName` → `processType` 자동 매핑
|
||||
|
||||
#### 2. actions.ts - 서버 액션
|
||||
- `getProcessOptions()`: 공정 목록 API 조회 (GET /api/v1/processes)
|
||||
- `createWorkOrder()`: `processId` 필드 사용 (기존 processType 제거)
|
||||
|
||||
#### 3. WorkOrderCreate.tsx - 등록 폼
|
||||
- `processType: ProcessType` → `processId: number | null`
|
||||
- `useEffect`로 공정 옵션 동적 로딩
|
||||
- 첫 번째 공정 자동 선택 (기본값)
|
||||
- Select 컴포넌트 동적 옵션 렌더링
|
||||
|
||||
#### 4. WorkOrderList.tsx / WorkOrderDetail.tsx - 목록/상세
|
||||
- `PROCESS_TYPE_LABELS[order.processType]` → `order.processName`
|
||||
- 비즈니스 로직(ProcessSteps, 절곡 확인)은 `processType` 유지
|
||||
|
||||
### 빌드 검증
|
||||
✅ Next.js 빌드 성공 (TypeScript 오류 없음)
|
||||
|
||||
### 관련 API 변경 (api 저장소)
|
||||
- `WorkOrder` 모델: `process_id` FK 추가, `process()` 관계 정의
|
||||
- `WorkOrderService`: `process_id` 사용
|
||||
- `WorkOrderStoreRequest/UpdateRequest`: `process_id` 검증 규칙
|
||||
|
||||
---
|
||||
|
||||
## 2025-01-09 (목) - 작업지시 코드 리뷰 기반 프론트엔드 개선
|
||||
|
||||
### 작업 목표
|
||||
- 작업지시 기능 코드 리뷰 결과 기반 프론트엔드 개선
|
||||
- Critical, High, Medium 우선순위 항목 전체 수정
|
||||
|
||||
### 수정된 파일
|
||||
| 파일명 | 설명 |
|
||||
|--------|------|
|
||||
| `src/components/production/WorkOrders/WorkOrderList.tsx` | useCallback 의존성 순환 수정 |
|
||||
| `src/components/production/WorkOrders/WorkOrderDetail.tsx` | 작업 버튼 핸들러 구현 |
|
||||
| `src/components/production/WorkOrders/types.ts` | scheduledDate 매핑, 다중 담당자 타입 추가 |
|
||||
| `src/components/production/WorkOrders/actions.ts` | API 경로 수정 (/sales-orders → /orders) |
|
||||
| `src/components/production/WorkOrders/SalesOrderSelectModal.tsx` | debounce 적용 |
|
||||
| `src/components/production/WorkOrders/hooks/useDebounce.ts` | 신규 생성 - 커스텀 debounce 훅 |
|
||||
|
||||
### 주요 변경 내용
|
||||
1. **useCallback 의존성 수정**: 무한 루프 방지를 위한 의존성 배열 수정
|
||||
2. **scheduledDate 매핑**: transformFrontendToApi에 scheduled_date 필드 추가
|
||||
3. **작업 버튼 구현**: "시작"/"완료" 버튼 핸들러 추가
|
||||
4. **API 경로 수정**: `/api/v1/sales-orders` → `/api/v1/orders` 변경
|
||||
5. **debounce 적용**: 커스텀 useDebounce 훅 (300ms) 적용
|
||||
6. **다중 담당자 타입**: WorkOrderAssigneeApi 인터페이스 및 assignees 필드 추가
|
||||
|
||||
### Git 커밋
|
||||
- `12b4259 refactor(work-orders): 코드 리뷰 기반 프론트엔드 개선`
|
||||
|
||||
### 관련 문서
|
||||
- 계획: `~/.claude/plans/purring-sparking-pinwheel.md`
|
||||
|
||||
---
|
||||
|
||||
## 2026-01-02 (목) - 견적 등록 자동산출 기능 구현
|
||||
|
||||
### 작업 목표
|
||||
|
||||
Reference in New Issue
Block a user