- actions.ts: Mock 데이터 → API 연동 - types.ts: SiteStats에 suspended, pending 추가 - 문서: API 연동 상세 문서 추가
2.5 KiB
2.5 KiB
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.phpsite_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/statsbulkDestroy()- DELETE /api/v1/sites/bulk
5. 라우트 (api.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/sitesgetSiteStats()- GET /api/v1/sites/statsdeleteSite()- 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%)
- Phase 1.1 견적관리
- Phase 1.2 인수인계보고서관리
- Phase 2.1 현장관리 ← 현재 완료
- Phase 2.2 거래처관리
- Phase 2.3 자재관리
- Phase 3.1 발주관리
- Phase 3.2 재고관리
- Phase 4.1 정산관리
- Phase 4.2 급여관리