feat(시공사): 2.1 현장관리 - Frontend API 연동

- actions.ts: Mock 데이터 → API 연동
- types.ts: SiteStats에 suspended, pending 추가
- 문서: API 연동 상세 문서 추가
This commit is contained in:
2026-01-09 16:35:12 +09:00
parent 78e193c8df
commit 273d5709cd
3 changed files with 308 additions and 135 deletions

View File

@@ -0,0 +1,90 @@
# 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 급여관리