# workflow ## 목적 / 책임 Task 생성, 조회, 목록, enqueue 가능 상태 판단 등 핵심 작업 흐름의 유스케이스를 담당한다. ## 포함 경로 - `internal/workflow/` — task 상태 모델과 workflow service ## 제외 경로 - `internal/storage/`, `internal/db/` — 영속성 구현 - `internal/http/` — HTTP 요청/응답 어댑터 - `internal/scheduler/` — River job 실행 ## 주요 구성 요소 - `TaskStatus` — task 상태 enum - `CreateTaskInput` — task 생성 입력 - `Service` — workflow 유스케이스 구현 - `TaskEnqueuer` — scheduler와의 경계 인터페이스 ## 유지할 패턴 - workflow는 storage와 scheduler를 인터페이스/서비스 경계로 호출한다. - 상태 전이 규칙은 `canEnqueue`처럼 workflow 도메인 안에서 명확하게 유지한다. ## 다른 도메인과의 경계 - **persistence**: DB query와 트랜잭션 세부사항은 persistence에 둔다. - **scheduler**: 실제 River enqueue와 worker 실행은 scheduler에 둔다. - **http-api**: HTTP status code와 JSON 응답 형식은 http-api에 둔다. ## 금지 사항 - workflow 서비스에 HTTP request/response 타입을 직접 의존시키지 않는다. - sqlc 생성 타입을 외부 API 계약으로 노출하지 않는다.