배경
fowoco/server에 Task Workflow API가 실제로 구현·병합됐다 (#6). WorkListPage/CaseDetailPage/CreateWorkPage는 지금 정적 demo 데이터(workListData.ts, caseDetailData.ts)를 쓴다.
실제 서버 API
GET /api/v1/workflow-catalogs
POST /api/v1/tasks
GET /api/v1/tasks
GET /api/v1/tasks/{taskId}
PATCH /api/v1/tasks/{taskId}
PATCH /api/v1/tasks/{taskId}/checklist-items/{itemId}
POST /api/v1/tasks/{taskId}/cancel
TaskStatus: DRAFT, NEEDS_INFO, READY_FOR_REVIEW, APPROVED, WAITING_WORKER, WAITING_EXTERNAL, COMPLETED, CANCELLED
주의할 점
- 상태값 매핑 설계가 먼저 필요하다. 지금
WorkListPage(WORK_TABS: 전체/내 업무/내가 승인할 업무/후속조치)와 CaseDetailPage(현재 단계/체크리스트/문서/소통/활동이력 탭, 진행 단계 UI)는 서버의 8개 TaskStatus와 1:1로 대응하지 않는다. 연동 전에 상태값→화면 표시 매핑표를 먼저 정리해야 한다.
PATCH는 expected_version 필요 (낙관적 잠금), 오래된 값이면 409 CONCURRENT_MODIFICATION.
- 필수 slot이 부족하면 서버가 자동으로
NEEDS_INFO, 충분하면 DRAFT로 생성한다 — CreateWorkPage의 "부족한 정보" 표시(ReviewWorkPage)와 연결 지점.
- 승인된 값(날짜·금액 등 핵심 필드) 수정 시 서버가 기존 승인을 자동 무효화하고 재승인 상태로 전환한다 —
content_revision으로 판단.
business_data는 자유 형식 Map<String, Object> — Workflow별 필드 스키마는 fowoco/knowledge가 소유하므로, 화면에 렌더링할 필드 목록은 별도 확인 필요.
완료 조건
배경
fowoco/server에 Task Workflow API가 실제로 구현·병합됐다 (#6).WorkListPage/CaseDetailPage/CreateWorkPage는 지금 정적 demo 데이터(workListData.ts,caseDetailData.ts)를 쓴다.실제 서버 API
TaskStatus:DRAFT, NEEDS_INFO, READY_FOR_REVIEW, APPROVED, WAITING_WORKER, WAITING_EXTERNAL, COMPLETED, CANCELLED주의할 점
WorkListPage(WORK_TABS: 전체/내 업무/내가 승인할 업무/후속조치)와CaseDetailPage(현재 단계/체크리스트/문서/소통/활동이력 탭, 진행 단계 UI)는 서버의 8개TaskStatus와 1:1로 대응하지 않는다. 연동 전에 상태값→화면 표시 매핑표를 먼저 정리해야 한다.PATCH는expected_version필요 (낙관적 잠금), 오래된 값이면409 CONCURRENT_MODIFICATION.NEEDS_INFO, 충분하면DRAFT로 생성한다 —CreateWorkPage의 "부족한 정보" 표시(ReviewWorkPage)와 연결 지점.content_revision으로 판단.business_data는 자유 형식Map<String, Object>— Workflow별 필드 스키마는fowoco/knowledge가 소유하므로, 화면에 렌더링할 필드 목록은 별도 확인 필요.완료 조건
WorkListPage가GET /api/v1/tasks로 실제 목록을 불러옴CreateWorkPage가POST /api/v1/tasks로 실제 생성 (workflow_id/catalog_version 포함)CaseDetailPage가GET/PATCH /api/v1/tasks/{id}로 실제 상세·수정PATCH .../checklist-items/{itemId}호출POST .../cancel호출