Skip to content

[Case][P0] Case·Workflow Snapshot·업무함 Projection 구현 #83

Description

@hywznn

한 줄 목표

업무함에서 여러 Task를 하나의 Case로 묶어 보고, Case를 만들 당시의 Workflow 순서와 조건을 Snapshot으로 고정합니다.

쉽게 말하면: 근로자 한 명의 “3년 만료 연장 준비”라는 큰 업무 폴더 안에 재계약·취업활동기간 연장·체류기간 연장 Task를 넣는 기능입니다.

왜 필요한가요?

현재 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 migration
  • company_id, worker_id, 제목, 상태, 우선순위, 생성자·생성시각 관리
  • Case 생성 시 Workflow Catalog의 version·단계 순서·필수조건을 Snapshot으로 저장
  • Case 목록에 근로자 표시명, 진행률, 현재 Task, D-day, 우선순위 반환
  • Projection에 Task·Checklist·Document 준비도·Approval·Worker 응답·Evidence 요약 반환
  • Task 변경 뒤 Case 진행률을 DB 중복 상태로 따로 관리하지 않고 안전하게 계산하거나 일관되게 갱신
  • 다른 사업장의 Case·Task가 섞이지 않도록 tenant 검사
  • 목록 N+1 조회와 페이지네이션 점검

대표 예시

Case: 응웬반A 3년 만료 연장
├─ Task 1: 재계약
├─ Task 2: 취업활동기간 연장
└─ Task 3: 체류기간 연장

Workflow Catalog가 나중에 바뀌어도 이미 시작한 Case는 생성 당시 Snapshot을 사용합니다.

완료 조건

  • 같은 candidate 결정을 재전송해도 Case·Task가 중복 생성되지 않습니다.
  • GET /api/v1/cases에서 업무함에 필요한 최소 요약을 조회할 수 있습니다.
  • Projection의 진행률과 실제 Task·Checklist 상태가 일치합니다.
  • 다른 사업장의 Case는 ID를 알아도 404로 처리됩니다.
  • Workflow Catalog 변경 뒤에도 기존 Case의 Snapshot이 변하지 않습니다.
  • OpenAPI와 PostgreSQL tenant 통합 테스트가 있습니다.

이번 이슈에서 하지 않는 것

  • Client 화면 구현
  • AI가 Case를 자동 승인하거나 외부기관에 제출하는 기능
  • 범용 BPMN 엔진
  • Dashboard·알림 집계

관계

Metadata

Metadata

Assignees

Labels

area:serverSpring Boot API·도메인·DB·tenant·Task Workflow 영역; Prompt·모델·Provider 구현 제외priority:P0MVP 진행을 막는 최우선 핵심 작업status:in-progress담당자가 현재 구현 중인 작업type:feature사용자 또는 Agent가 사용하는 기능 개발

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions