배경
fowoco/server에 Worker API가 실제로 구현·병합됐다 (#5). WorkerListPage/WorkerDetailPage는 지금 정적 demo 데이터(workerListData.ts)를 쓴다.
실제 서버 API
GET /api/v1/workers (검색·페이지네이션)
POST /api/v1/workers (등록)
GET /api/v1/workers/{workerId} (상세)
PATCH /api/v1/workers/{workerId} (부분 수정, expected_version 필요)
WorkerResponse 필드: worker_id, company_id, display_name, nationality_code, preferred_language, work_status, stay_expiry_date, contract_start_date, contract_end_date, created_at, updated_at, version
주의할 점
phone, employee_id가 응답에 없다. 개인정보 분리 원칙에 따라 worker_sensitive_data로 별도 관리되며, 그 API(#48 근로자 민감정보 분리 저장·접근 제어)는 아직 서버에 구현 전이다. 지금 WorkerListPage/WorkerDetailPage가 보여주는 전화번호·사번은 #48 없이는 채울 수 없다 — 우선 해당 필드를 숨기거나 "준비 중"으로 표시하고, #48 완료 후 별도 연동한다.
PATCH는 낙관적 잠금(expected_version)을 요구한다. 최신 WorkerResponse.version을 반드시 함께 보내야 하고, 오래된 값이면 409.
deadlineDays/deadlineLabel(기한 임박 표시)은 서버 응답에 없다 — stay_expiry_date로 클라이언트에서 직접 계산해야 한다 (이미 있는 getUrgencyTier 유틸 재사용 가능).
완료 조건
배경
fowoco/server에 Worker API가 실제로 구현·병합됐다 (#5).WorkerListPage/WorkerDetailPage는 지금 정적 demo 데이터(workerListData.ts)를 쓴다.실제 서버 API
WorkerResponse필드:worker_id, company_id, display_name, nationality_code, preferred_language, work_status, stay_expiry_date, contract_start_date, contract_end_date, created_at, updated_at, version주의할 점
phone,employee_id가 응답에 없다. 개인정보 분리 원칙에 따라worker_sensitive_data로 별도 관리되며, 그 API(#48 근로자 민감정보 분리 저장·접근 제어)는 아직 서버에 구현 전이다. 지금WorkerListPage/WorkerDetailPage가 보여주는 전화번호·사번은 #48 없이는 채울 수 없다 — 우선 해당 필드를 숨기거나 "준비 중"으로 표시하고, #48 완료 후 별도 연동한다.PATCH는 낙관적 잠금(expected_version)을 요구한다. 최신WorkerResponse.version을 반드시 함께 보내야 하고, 오래된 값이면409.deadlineDays/deadlineLabel(기한 임박 표시)은 서버 응답에 없다 —stay_expiry_date로 클라이언트에서 직접 계산해야 한다 (이미 있는getUrgencyTier유틸 재사용 가능).완료 조건
WorkerListPage가GET /api/v1/workers로 실제 목록을 불러옴 (loading/empty/error 상태 포함,useApiQuery재사용)WorkerDetailPage가GET /api/v1/workers/{id}로 실제 상세를 불러옴