한 줄 목표
업무함에서 여러 Task를 하나의 Case로 묶어 보고, Case를 만들 당시의 Workflow 순서와 조건을 Snapshot으로 고정합니다.
쉽게 말하면: 근로자 한 명의 “3년 만료 연장 준비”라는 큰 업무 폴더 안에 재계약·취업활동기간 연장·체류기간 연장 Task를 넣는 기능입니다.
왜 필요한가요?
현재 Task에는 case_id가 있지만 Case 자체의 테이블·상태·조회 API가 없습니다. 그래서 화면은 같은 Case의 Task 목록은 찾을 수 있어도, 전체 진행률·현재 할 일·처음 확정된 Workflow를 신뢰성 있게 보여 줄 수 없습니다.
API 범위
MVP에서는 별도 POST /cases를 만들지 않습니다. #24의 candidate 채택 시 Server가 Case와 Task를 한 Transaction에서 생성하거나 기존 Case에 연결합니다.
구현 범위
대표 예시
Case: 응웬반A 3년 만료 연장
├─ Task 1: 재계약
├─ Task 2: 취업활동기간 연장
└─ Task 3: 체류기간 연장
Workflow Catalog가 나중에 바뀌어도 이미 시작한 Case는 생성 당시 Snapshot을 사용합니다.
완료 조건
이번 이슈에서 하지 않는 것
- Client 화면 구현
- AI가 Case를 자동 승인하거나 외부기관에 제출하는 기능
- 범용 BPMN 엔진
- Dashboard·알림 집계
관계
한 줄 목표
업무함에서 여러 Task를 하나의 Case로 묶어 보고, Case를 만들 당시의 Workflow 순서와 조건을 Snapshot으로 고정합니다.
왜 필요한가요?
현재 Task에는
case_id가 있지만 Case 자체의 테이블·상태·조회 API가 없습니다. 그래서 화면은 같은 Case의 Task 목록은 찾을 수 있어도, 전체 진행률·현재 할 일·처음 확정된 Workflow를 신뢰성 있게 보여 줄 수 없습니다.API 범위
GET /api/v1/cases— 업무함 Case 목록GET /api/v1/cases/{caseId}/projection— 선택한 Case의 전체 진행 상황MVP에서는 별도
POST /cases를 만들지 않습니다. #24의 candidate 채택 시 Server가 Case와 Task를 한 Transaction에서 생성하거나 기존 Case에 연결합니다.구현 범위
Case모델과 Flyway migrationcompany_id,worker_id, 제목, 상태, 우선순위, 생성자·생성시각 관리대표 예시
Workflow Catalog가 나중에 바뀌어도 이미 시작한 Case는 생성 당시 Snapshot을 사용합니다.
완료 조건
GET /api/v1/cases에서 업무함에 필요한 최소 요약을 조회할 수 있습니다.이번 이슈에서 하지 않는 것
관계