Repository navigation
Feat: 새 계획 흐름 — 기능 명세 → API 계약 → 태스크 나누기 (022·023, CLI 0.1.11) - #47
Merged
Merged
Conversation
- plans.kind(feature | tasks): 호출·교정·예산·중계·적용 흐름은 한 벌, 종류마다 지침·출력 형식·검증·적용 입력만 다르다(KINDS). - POST /projects/:id/pm/features: 대표의 자연어 요구 → 화면·동작·수용 기준 + 기능마다 API 필요 여부와 오가는 데이터(사람 말로). 수정 요청·반려·확정은 기존 plans API. 확정하면 명세만 생긴다(태스크 없음). - specs.needs_api·api_needs(specs_api_needs_chk) — API가 필요한 기능만 다음 단계(BE 계약)로 간다. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- contracts 테이블(pending → draft → approved, failed → 수정 요청으로 다시). 수정 요청 3회까지
- 기능 명세를 확정하면 API가 필요한 기능마다 작성 대기 계약이 생기고, 에이전트 스트림에 { type: 'contracts' } 신호
- BE 에이전트: GET /agents/me/contract-jobs, POST /contracts/:id/draft·failure. 서버가 OpenAPI 조각 형식을 검사(422 CONTRACT_INVALID)
- 확정·수정 요청은 BE 담당, BE 담당이 없을 때만 대표
- Executor: 상담과 같은 읽기 전용 실행으로 계약 초안 작성, 형식 위반이면 한 번만 고쳐 쓰고 아니면 실패 보고. 프롬프트는 stdin
- 룸(모든 룸)에 계약 요청·초안·수정 요청·확정·실패 줄, 화면 토픽 contracts
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- POST /pm/plans = 태스크 나누기. 지시는 선택, PM은 명세를 만들지 않는다(만들면 교정 위반)
- 전제: 확정한 기능 명세가 있어야 하고(409 NO_FEATURE_SPECS), API가 필요한 기능의 계약이 전부 확정돼야 한다(409 CONTRACTS_NOT_APPROVED { featureKeys })
- PM에게 명세 본문·확정한 계약·이미 붙은 태스크를 준다. 지침을 태스크 분할 전용으로 바꿈
- 태스크를 만들 때 그 명세의 확정한 계약을 tasks.contract_id로 붙인다(모든 작성 경로)
- 시작 조건: 끝나지 않은 태스크가 붙은 API 기능의 계약이 확정되지 않았으면 422
- 브리핑 contract(FE·BE 같은 계약), Executor 프롬프트에 "확정한 API 계약" 절
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
요약
대표의 자연어 요구 → PM 기능 명세(개발 용어 없이) → BE 노트북 에이전트가 API 계약 초안 → BE 담당 확정 → 대표가 누르면 PM이 태스크 나누기.
plans.kind(feature|tasks),specs.needs_api·api_needs,POST /pm/featurescontracts(pending → draft → approved / failed), BE 에이전트 작업 API·초안 제출·실패 보고, BE 담당 확정·수정 요청(3회), OpenAPI 조각 형식 검사, 웹소켓{ type: 'contracts' }, 룸 줄POST /pm/plans): 확정 명세 필수(409NO_FEATURE_SPECS), API 기능 계약 전부 확정 필수(409CONTRACTS_NOT_APPROVED), PM은 명세를 만들지 않는다contract_id, 시작 조건에 계약 확정, 브리핑contract·Executor 프롬프트 절runReadOnlyClaude, 프롬프트 stdin), 계약 작성 작업(형식 위반 시 1회 교정)확인
npm run typecheck, 전체 테스트 724 통과🤖 Generated with Claude Code