# 작업 요청 게시판 ## 목적 작업 요청 게시판은 게시글 1건 안에 여러 하위 요청을 묶어 등록하고, 각 하위 요청이 자동화 작업으로 어떻게 접수되고 완료되는지 추적하는 화면입니다. ## 핵심 구조 - 게시글 1건은 공통 제목, 공통 메모, 공통 첨부 파일을 가집니다. - 게시글 안에는 하위 요청을 1건 이상 둘 수 있습니다. - 각 하위 요청은 별도 Plan 항목으로 등록될 수 있고, 상태도 개별로 추적됩니다. - 공통 메모와 첨부 파일 경로는 하위 요청별 자동화 메모에 함께 포함됩니다. ## 데이터 모델 - 게시글 테이블: `board_posts` - 하위 요청 테이블: `board_post_requests` - 주요 서버 구현: - 라우트: `etc/servers/work-server/src/routes/board.ts` - 서비스: `etc/servers/work-server/src/services/board-service.ts` - 주요 프런트 구현: - 화면: `src/features/board/BoardPage.tsx` - API 클라이언트: `src/features/board/api.ts` - 타입: `src/features/board/types.ts` ## 실행 방식 하위 요청 등록 방식은 게시글 단위로 선택합니다. - `all_at_once`: 접수 가능한 하위 요청을 한 번에 모두 Plan으로 등록합니다. - `after_previous_finished`: 앞 요청이 성공/실패와 무관하게 종료되면 다음 요청을 등록합니다. - `after_previous_success`: 앞 요청이 성공으로 완료된 경우에만 다음 요청을 등록합니다. 실패하면 뒤 요청은 `blocked` 상태로 남습니다. ## 상태 추적 각 하위 요청은 아래 정보를 기준으로 상태를 계산합니다. - 게시판 워크플로 상태: `pending`, `waiting`, `registered`, `completed`, `failed`, `blocked` - 연결된 Plan 상태: `status`, `workerStatus`, `lastError` 화면에서는 이를 바탕으로 다음처럼 보여줍니다. - `미접수`: 아직 Plan 등록 전 - `선행 대기`: 순차 실행에서 앞 요청 완료를 기다리는 상태 - `대기열`: Plan 등록은 됐지만 아직 본격 처리 전 - `진행중`: worker가 작업 중 - `완료`: Plan 완료 반영 - `실패`: worker 실패 또는 오류 기록 존재 - `차단`: 성공 의존 순차 모드에서 앞 요청 실패로 후속 요청 중단 ## 화면 동작 - 목록 화면에서 게시글별로 `완료 x/y`, 실패 수, 진행 수를 요약해 보여줍니다. - 상세 화면에서 하위 요청을 추가, 삭제, 순서 변경할 수 있습니다. - 자동화 접수 후에는 게시글과 하위 요청 편집이 잠기고 읽기 전용으로 전환됩니다. - 하위 요청별로 연결된 Plan 링크를 바로 열 수 있습니다. - 여러 게시글을 선택해 일괄 접수할 수 있지만, 실제 순차 흐름은 각 게시글의 실행 옵션을 따릅니다. ## 자동화 연동 - 접수 시 `receiveBoardPostAutomation()`이 하위 요청별 Plan을 생성합니다. - Plan worker가 완료/실패를 기록하면 `progressBoardPostAutomationByPlanResult()`가 다음 하위 요청 등록 여부를 결정합니다. - 레거시 호환용 `board_posts.automation_plan_item_id`, `automation_received_at`도 첫 접수 요청 기준으로 함께 동기화합니다. ## 검증 포인트 - 새 게시글 저장 시 하위 요청이 1건 이상 생성되는지 확인 - 실행 옵션별로 다음 요청 등록 시점이 의도대로 달라지는지 확인 - 앞 요청 실패 시 `after_previous_success` 모드에서 후속 요청이 `차단`으로 남는지 확인 - 자동화 접수 후 편집/삭제가 막히는지 확인 - 하위 요청별 Plan 링크가 올바른 항목으로 연결되는지 확인