# Phase 2.1 현장관리 API 연동

**날짜**: 2026-01-09
**작업**: 현장관리 Mock → API 연동

## 개요

시공사 페이지 API 연동 계획 Phase 2.1 - 현장관리(site-management) API 연동 완료.

## 변경 사항

### Backend (API)

#### 1. 마이그레이션
- `2026_01_09_162534_add_construction_fields_to_sites_table.php`
  - `site_code` (VARCHAR 50) - 현장코드
  - `client_id` (FK → clients) - 거래처 연결
  - `status` (ENUM) - unregistered/suspended/active/pending
  - 인덱스: tenant_id + site_code, tenant_id + status

#### 2. 모델 (Site.php)
- 상태 상수 추가: STATUS_UNREGISTERED, STATUS_SUSPENDED, STATUS_ACTIVE, STATUS_PENDING
- fillable 확장: site_code, client_id, status
- Client 관계 추가

#### 3. 서비스 (SiteService.php)
- `index()` - 필터 확장 (status, client_id, start_date, end_date)
- `stats()` - 상태별 통계 조회 (신규)
- `bulkDestroy()` - 일괄 삭제 (신규)

#### 4. 컨트롤러 (SiteController.php)
- `stats()` - GET /api/v1/sites/stats
- `bulkDestroy()` - DELETE /api/v1/sites/bulk

#### 5. 라우트 (api.php)
```php
Route::get('/stats', [SiteController::class, 'stats']);
Route::delete('/bulk', [SiteController::class, 'bulkDestroy']);
```

### Frontend (React)

#### 1. types.ts
- SiteStats에 suspended, pending 필드 추가

#### 2. actions.ts
- Mock 데이터 제거
- API 연동 구현
  - `getSiteList()` - GET /api/v1/sites
  - `getSiteStats()` - GET /api/v1/sites/stats
  - `deleteSite()` - DELETE /api/v1/sites/{id}
  - `deleteSites()` - DELETE /api/v1/sites/bulk

## API 매핑

| Frontend | Backend | 비고 |
|----------|---------|------|
| id | id | string ↔ int |
| siteCode | site_code | |
| partnerId | client_id | |
| partnerName | client.name | 관계 eager load |
| siteName | name | |
| address | address | |
| status | status | 동일 |
| createdAt | created_at | |
| updatedAt | updated_at | |

## 설계 결정

### is_active vs status
- `is_active` (boolean): 사용 여부 (활성화/비활성화)
- `status` (enum): 상태값 (미등록/중지/사용/보류)
- 두 필드는 다른 용도로 둘 다 유지

### 기존 API 활용
- `/api/v1/sites` 기존 엔드포인트 확장 사용
- `/api/v1/construction/sites` 별도 생성하지 않음

## 진행률

시공사 API 연동: 3/9 (33%)
- [x] Phase 1.1 견적관리
- [x] Phase 1.2 인수인계보고서관리
- [x] Phase 2.1 현장관리 ← 현재 완료
- [ ] Phase 2.2 거래처관리
- [ ] Phase 2.3 자재관리
- [ ] Phase 3.1 발주관리
- [ ] Phase 3.2 재고관리
- [ ] Phase 4.1 정산관리
- [ ] Phase 4.2 급여관리