Files
sam-react-prod/claudedocs/construction/[IMPL-2026-01-09] site-management-api-integration.md
kent 273d5709cd feat(시공사): 2.1 현장관리 - Frontend API 연동
- actions.ts: Mock 데이터 → API 연동
- types.ts: SiteStats에 suspended, pending 추가
- 문서: API 연동 상세 문서 추가
2026-01-09 16:35:12 +09:00

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.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)

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%)

  • 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 급여관리