# 수주 관리 Frontend API 연동

**날짜:** 2025-01-08
**Phase:** Phase 2 - Frontend 연동
**관련 Plan:** docs/plans/order-management-plan.md

## 변경 개요

수주 관리 React 페이지들을 백엔드 API와 연동 완료. Mock 데이터를 제거하고 실제 API 호출로 대체.

## 수정된 파일

### 1. `src/components/orders/actions.ts` (신규 생성)
- Server Actions 패턴으로 API 클라이언트 구현
- 주요 함수:
  - `getOrders()`: 수주 목록 조회
  - `getOrderById(id)`: 수주 상세 조회
  - `createOrder(data)`: 수주 등록
  - `updateOrder(id, data)`: 수주 수정
  - `deleteOrder(id)`: 수주 삭제
  - `deleteOrders(ids)`: 수주 일괄 삭제
  - `updateOrderStatus(id, status)`: 수주 상태 변경
  - `getOrderStats()`: 통계 조회
- 데이터 변환: API snake_case → Frontend camelCase
- 상태 매핑: API 상태(DRAFT, CONFIRMED 등) → Frontend 상태(order_registered, order_confirmed 등)

### 2. `src/components/orders/index.ts` (수정)
- actions.ts export 추가
- 타입 충돌 해결 (OrderItem → OrderItemApi)

### 3. `src/app/[locale]/(protected)/sales/order-management-sales/page.tsx` (수정)
- SAMPLE_ORDERS (~115줄) 제거
- API 연동 state 추가: `orders`, `apiStats`, `isLoading`, `isDeleting`
- `loadData()` 함수로 API 호출 (getOrders, getOrderStats)
- 삭제 핸들러에 API 호출 추가 (deleteOrder, deleteOrders)
- 로딩 UI 추가

### 4. `src/app/[locale]/(protected)/sales/order-management-sales/[id]/page.tsx` (수정)
- SAMPLE_ITEMS, SAMPLE_ORDERS (~250줄) 제거
- useEffect에서 getOrderById API 호출
- handleConfirmCancel에서 updateOrderStatus API 호출
- isCancelling 로딩 상태 적용

### 5. `src/app/[locale]/(protected)/sales/order-management-sales/[id]/edit/page.tsx` (수정)
- SAMPLE_ORDER (~50줄) 제거
- useEffect에서 getOrderById API 호출
- handleSave에서 updateOrder API 호출

### 6. `src/app/[locale]/(protected)/sales/order-management-sales/new/page.tsx` (수정)
- handleSave에서 createOrder API 호출

## 기술 패턴

### Server Actions 패턴
```typescript
"use server";
import { serverFetch } from "@/lib/api/serverFetch";

export async function getOrders() {
  const response = await serverFetch("/orders");
  // 데이터 변환 로직
}
```

### 데이터 변환
- API: `order_no`, `client_name`, `site_name`
- Frontend: `orderNo`, `clientName`, `siteName`

### 상태 매핑
| API | Frontend |
|-----|----------|
| DRAFT | order_registered |
| CONFIRMED | order_confirmed |
| IN_PROGRESS | production_ordered |
| COMPLETED | shipped |
| CANCELLED | cancelled |

## 테스트 체크리스트

- [ ] 수주 목록 로드
- [ ] 수주 상세 조회
- [ ] 수주 등록 (견적 선택 후)
- [ ] 수주 수정
- [ ] 수주 개별 삭제
- [ ] 수주 일괄 삭제
- [ ] 수주 취소
- [ ] 통계 카드 표시

## 연관 작업

- Phase 1: Order API 백엔드 구현 (커밋: de19ac9)
- Phase 1.1: OrderController/Service 구현 (진행 중)
