# 공정관리 공정 복제(복사) 기능 추가

**날짜:** 2026-03-21
**작업자:** Claude Code

## 변경 개요

공정 상세 페이지에서 기존 공정을 그대로 복제하는 기능을 추가한다. 하단 액션 바의 수정 버튼 왼쪽에 복사 버튼을 배치하며, 클릭 시 기본정보·분류규칙·품목연결·공정단계를 모두 복제한 새 공정을 생성한다.

---

## 수정된 파일

| 파일 | 변경 내용 |
|------|----------|
| `api/app/Services/ProcessService.php` | `duplicate()` 메서드 추가 (공정+규칙+품목+단계 복제) |
| `api/app/Http/Controllers/V1/ProcessController.php` | `duplicate()` 액션 추가 |
| `api/routes/api/v1/production.php` | `POST /processes/{id}/duplicate` 라우트 등록 |
| `react/src/components/process-management/actions.ts` | `duplicateProcess()` 서버 액션 추가 |
| `react/src/components/process-management/ProcessDetail.tsx` | 복사 버튼 UI 추가 (수정 버튼 왼쪽) |

---

## 상세 변경 사항

### 1. API 엔드포인트

```
POST /api/v1/processes/{id}/duplicate
```

| 항목 | 내용 |
|------|------|
| 인증 | Bearer Token 필수 |
| 파라미터 | `id` (복제 대상 공정 ID) |
| 응답 | 새로 생성된 공정 데이터 (관계 포함) |

### 2. 복제 대상

| 항목 | 복제 여부 | 비고 |
|------|:--------:|------|
| 기본정보 | O | 공정명에 "(복사)" 접미사 추가 |
| 공정코드 | 신규 | `generateProcessCode()`로 새 코드 자동 생성 |
| 분류규칙 (pattern) | O | `process_classification_rules` 전체 복제 |
| 품목연결 (individual) | O | `process_items` 전체 복제 |
| 공정단계 | O | `process_steps` 전체 복제 (순서·옵션 포함) |

### 3. UI 변경

하단 sticky 액션 바 버튼 순서:

```
[목록으로]                    [삭제] [복사] [수정]
```

- `Copy` 아이콘 사용 (lucide-react)
- 복사 중 로딩 상태 표시 (`isDuplicating`)
- 복사 완료 시 새 공정 상세 페이지로 이동

---

## 관련 문서

- 공정관리 라우트: `api/routes/api/v1/production.php`
