update roadmap milestones
This commit is contained in:
parent
d5a11df31f
commit
3e0fd2a268
6 changed files with 86 additions and 87 deletions
|
|
@ -38,12 +38,12 @@ External Integration
|
|||
|
||||
## 필수 기능
|
||||
|
||||
- [ ] Plane issue 생성, comment, status update adapter 확장
|
||||
- [ ] Jira issue 조회, comment, status transition adapter 구현
|
||||
- [ ] Mattermost 메시지 발송 adapter 구현
|
||||
- [ ] Agent Integrator 호출 경계 정의
|
||||
- [x] IOP OpenAI API Responses-compatible 경로를 NomadCode의 기본 실행 호출 경로로 정리
|
||||
- [x] direct model endpoint / Ollama fallback 표현과 설정을 IOP 경유 호출 기준으로 재분류
|
||||
- [ ] [plane-adapter-expand] Plane issue 생성, comment, status update adapter 확장
|
||||
- [ ] [jira-adapter] Jira issue 조회, comment, status transition adapter 구현
|
||||
- [ ] [mattermost-adapter] Mattermost 메시지 발송 adapter 구현
|
||||
- [ ] [agent-integrator] Agent Integrator 호출 경계 정의
|
||||
- [x] [iop-responses] IOP OpenAI API Responses-compatible 경로를 NomadCode의 기본 실행 호출 경로로 정리
|
||||
- [x] [model-reclass] direct model endpoint / Ollama fallback 표현과 설정을 IOP 경유 호출 기준으로 재분류
|
||||
|
||||
## 완료 기준
|
||||
|
||||
|
|
|
|||
|
|
@ -37,41 +37,41 @@ Work Item Provider Pipeline Design
|
|||
|
||||
## 필수 기능
|
||||
|
||||
- [x] Plane work item -> core task 생성/연결 흐름을 현재 구현 기준으로 문서화한다.
|
||||
- [x] 초기 entrypoint는 기존 `POST /api/integrations/plane/tasks`를 기준선으로 삼는다.
|
||||
- [x] 생성 단계는 Plane work item 조회와 core task 저장까지만 담당한다.
|
||||
- [x] 생성된 task는 `pending` 상태로 남기고 enqueue는 별도 단계에서 처리한다.
|
||||
- [x] Plane 연결 정보는 provider-neutral external ref와 work item metadata에 함께 저장한다.
|
||||
- [x] 자동 enqueue 여부와 사용자/운영 트리거 경계를 결정한다.
|
||||
- [x] `backlog`에서 `todo`로 옮기는 주체는 사용자로 둔다.
|
||||
- [x] `todo` 상태여도 agent 작업자가 지정된 work item만 자동 실행 후보로 본다.
|
||||
- [x] provider API 인증은 일반 사용자형 service account token을 기본으로 둔다.
|
||||
- [x] Plane dev service account token은 ignored local file `.env.plane.local`에 저장하고, NomadCode project Admin 권한으로 검증한다.
|
||||
- [x] agent 작업자 지정 신호는 provider assignee가 `AGENT` 일반 사용자형 service account인 경우로 확정한다.
|
||||
- [x] worker profile과 실행 단계는 core metadata와 label/comment prefix로 표현한다.
|
||||
- [x] webhook-first trigger와 polling fallback의 세부 조건을 확정한다.
|
||||
- [x] `worker:*`, `agent:*`, `phase:*` label은 실행 조건이 아니라 worker profile/실행 상태 표시용으로 둔다.
|
||||
- [x] work item provider adapter interface를 설계한다.
|
||||
- [x] core pipeline이 사용할 provider-neutral DTO를 정의한다.
|
||||
- [x] work item 조회, comment 작성, status/state 변경, label projection 경계를 interface로 분리한다.
|
||||
- [x] Plane adapter와 Jira adapter가 같은 interface를 구현할 수 있는지 검증한다.
|
||||
- [x] provider별 상태/라벨/comment 매핑은 adapter 설정으로 분리한다.
|
||||
- [ ] 현재 Plane 고정 진입부를 provider-neutral 구조로 리팩토링한다.
|
||||
- [ ] `POST /api/integrations/plane/tasks`의 Plane 전용 흐름을 generic pipeline service 아래로 옮긴다.
|
||||
- [x] HTTP handler가 Plane 타입과 직접 결합하지 않도록 요청 DTO와 변환 책임을 분리한다.
|
||||
- [x] `buildPlaneCreateTaskInput`의 core task 생성 로직을 provider-neutral mapper로 분리한다.
|
||||
- [x] 기존 Plane endpoint는 compatibility entrypoint로 유지하거나 generic endpoint로 대체할지 결정한다.
|
||||
- [ ] provider-neutral 상태와 projection 계약을 확정한다.
|
||||
- [x] board state는 `backlog`, `todo`, `in_progress`, `testing`, `complete`, `cancel`로 둔다.
|
||||
- [x] `in_progress` 내부 agent 상태는 core task metadata를 canonical source로 둔다.
|
||||
- [x] Plane/Jira provider projection은 label-first로 둔다.
|
||||
- [x] provider 본문(description)은 agent 실행 상태 저장소로 쓰지 않는다.
|
||||
- [ ] core task metadata schema와 provider label mapping을 구현 대상으로 확정한다.
|
||||
- [ ] 완료/실패 결과의 provider comment/status update 정책을 정한다.
|
||||
- [x] agent 단계 완료 기록은 prefix와 이모지가 있는 comment로 남기는 방향을 샘플 검증한다.
|
||||
- [ ] comment prefix 세트와 작성 타이밍을 확정한다.
|
||||
- [ ] 중복 생성 방지와 재시도 시 식별 기준을 정한다.
|
||||
- [ ] Workflow Core에서 처리할 lifecycle, retry, timeout, notification 요구사항을 정리한다.
|
||||
- [x] [create-flow] Plane work item -> core task 생성/연결 흐름을 현재 구현 기준으로 문서화한다.
|
||||
- [x] [create-entrypoint] 초기 entrypoint는 기존 `POST /api/integrations/plane/tasks`를 기준선으로 삼는다.
|
||||
- [x] [create-scope] 생성 단계는 Plane work item 조회와 core task 저장까지만 담당한다.
|
||||
- [x] [create-pending] 생성된 task는 `pending` 상태로 남기고 enqueue는 별도 단계에서 처리한다.
|
||||
- [x] [create-metadata] Plane 연결 정보는 provider-neutral external ref와 work item metadata에 함께 저장한다.
|
||||
- [x] [enqueue-trigger] 자동 enqueue 여부와 사용자/운영 트리거 경계를 결정한다.
|
||||
- [x] [user-todo] `backlog`에서 `todo`로 옮기는 주체는 사용자로 둔다.
|
||||
- [x] [todo-assignee] `todo` 상태여도 agent 작업자가 지정된 work item만 자동 실행 후보로 본다.
|
||||
- [x] [service-token] provider API 인증은 일반 사용자형 service account token을 기본으로 둔다.
|
||||
- [x] [token-local] Plane dev service account token은 ignored local file `.env.plane.local`에 저장하고, NomadCode project Admin 권한으로 검증한다.
|
||||
- [x] [assignee-agent] agent 작업자 지정 신호는 provider assignee가 `AGENT` 일반 사용자형 service account인 경우로 확정한다.
|
||||
- [x] [profile-metadata] worker profile과 실행 단계는 core metadata와 label/comment prefix로 표현한다.
|
||||
- [x] [trigger-webhook] webhook-first trigger와 polling fallback의 세부 조건을 확정한다.
|
||||
- [x] [labels-display] `worker:*`, `agent:*`, `phase:*` label은 실행 조건이 아니라 worker profile/실행 상태 표시용으로 둔다.
|
||||
- [x] [adapter-interface] work item provider adapter interface를 설계한다.
|
||||
- [x] [dto-contract] core pipeline이 사용할 provider-neutral DTO를 정의한다.
|
||||
- [x] [provider-facets] work item 조회, comment 작성, status/state 변경, label projection 경계를 interface로 분리한다.
|
||||
- [x] [adapter-mapping] Plane adapter와 Jira adapter가 같은 interface를 구현할 수 있는지 검증한다.
|
||||
- [x] [provider-config] provider별 상태/라벨/comment 매핑은 adapter 설정으로 분리한다.
|
||||
- [ ] [generic-pipeline] 현재 Plane 고정 진입부를 provider-neutral 구조로 리팩토링한다.
|
||||
- [ ] [route-service] `POST /api/integrations/plane/tasks`의 Plane 전용 흐름을 generic pipeline service 아래로 옮긴다.
|
||||
- [x] [handler-dto] HTTP handler가 Plane 타입과 직접 결합하지 않도록 요청 DTO와 변환 책임을 분리한다.
|
||||
- [x] [task-mapper] `buildPlaneCreateTaskInput`의 core task 생성 로직을 provider-neutral mapper로 분리한다.
|
||||
- [x] [compat-route] 기존 Plane endpoint는 compatibility entrypoint로 유지하거나 generic endpoint로 대체할지 결정한다.
|
||||
- [ ] [projection-contract] provider-neutral 상태와 projection 계약을 확정한다.
|
||||
- [x] [board-states] board state는 `backlog`, `todo`, `in_progress`, `testing`, `complete`, `cancel`로 둔다.
|
||||
- [x] [agent-metadata] `in_progress` 내부 agent 상태는 core task metadata를 canonical source로 둔다.
|
||||
- [x] [label-first] Plane/Jira provider projection은 label-first로 둔다.
|
||||
- [x] [desc-readonly] provider 본문(description)은 agent 실행 상태 저장소로 쓰지 않는다.
|
||||
- [ ] [metadata-schema] core task metadata schema와 provider label mapping을 구현 대상으로 확정한다.
|
||||
- [ ] [result-policy] 완료/실패 결과의 provider comment/status update 정책을 정한다.
|
||||
- [x] [comment-prefix-sample] agent 단계 완료 기록은 prefix와 이모지가 있는 comment로 남기는 방향을 샘플 검증한다.
|
||||
- [ ] [comment-timing] comment prefix 세트와 작성 타이밍을 확정한다.
|
||||
- [ ] [idempotency] 중복 생성 방지와 재시도 시 식별 기준을 정한다.
|
||||
- [ ] [workflow-handoff] Workflow Core에서 처리할 lifecycle, retry, timeout, notification 요구사항을 정리한다.
|
||||
|
||||
## 완료 기준
|
||||
|
||||
|
|
|
|||
|
|
@ -33,25 +33,25 @@ Plane Communication Foundation
|
|||
|
||||
## 필수 기능
|
||||
|
||||
- [x] Plane 연결 설정과 인증 계약을 정한다.
|
||||
- [x] `PLANE_BASE_URL=https://plane.toki-labs.com` 기준 endpoint prefix를 확인한다.
|
||||
- [x] Plane API key를 `PLANE_TOKEN`으로 주입하고 `X-Api-Key` header로 호출한다.
|
||||
- [x] Plane adapter의 최소 통신 기능을 구현한다.
|
||||
- [x] work item detail 조회
|
||||
- [x] work item comment 생성
|
||||
- [x] work item state update
|
||||
- [x] non-2xx 응답과 설정 누락 오류를 진단 가능하게 반환
|
||||
- [x] core task에 외부 참조 저장 토대를 둔다.
|
||||
- [x] `external_provider`, `external_id`, `external_url`, `external_metadata` 등 provider-neutral 필드를 둔다.
|
||||
- [x] Plane workspace/project/work item id와 external URL을 metadata에 보존할 수 있게 한다.
|
||||
- [x] Plane state id를 metadata에 보존할 수 있게 한다.
|
||||
- [x] 실제 Plane 통신 smoke를 검증한다.
|
||||
- [x] 인증 성공/실패를 구분해 확인한다.
|
||||
- [x] 테스트용 Plane work item에 comment를 남길 수 있다.
|
||||
- [x] 테스트용 Plane work item state를 변경할 수 있다.
|
||||
- [x] 문서에 현재 통신 토대의 사용법과 한계를 정리한다.
|
||||
- [x] `services/core/README.md`에 Plane 설정, 수동 task 생성 예시, 현재 endpoint 한계를 정리한다.
|
||||
- [x] 실제 smoke 절차를 운영 문서에 보강한다.
|
||||
- [x] [plane-auth] Plane 연결 설정과 인증 계약을 정한다.
|
||||
- [x] [plane-endpoint] `PLANE_BASE_URL=https://plane.toki-labs.com` 기준 endpoint prefix를 확인한다.
|
||||
- [x] [plane-token] Plane API key를 `PLANE_TOKEN`으로 주입하고 `X-Api-Key` header로 호출한다.
|
||||
- [x] [plane-adapter] Plane adapter의 최소 통신 기능을 구현한다.
|
||||
- [x] [plane-read] work item detail 조회
|
||||
- [x] [plane-comment] work item comment 생성
|
||||
- [x] [plane-state] work item state update
|
||||
- [x] [plane-errors] non-2xx 응답과 설정 누락 오류를 진단 가능하게 반환
|
||||
- [x] [external-ref] core task에 외부 참조 저장 토대를 둔다.
|
||||
- [x] [external-fields] `external_provider`, `external_id`, `external_url`, `external_metadata` 등 provider-neutral 필드를 둔다.
|
||||
- [x] [plane-metadata] Plane workspace/project/work item id와 external URL을 metadata에 보존할 수 있게 한다.
|
||||
- [x] [plane-state-meta] Plane state id를 metadata에 보존할 수 있게 한다.
|
||||
- [x] [plane-smoke] 실제 Plane 통신 smoke를 검증한다.
|
||||
- [x] [smoke-auth] 인증 성공/실패를 구분해 확인한다.
|
||||
- [x] [smoke-comment] 테스트용 Plane work item에 comment를 남길 수 있다.
|
||||
- [x] [smoke-state] 테스트용 Plane work item state를 변경할 수 있다.
|
||||
- [x] [plane-docs] 문서에 현재 통신 토대의 사용법과 한계를 정리한다.
|
||||
- [x] [readme-plane] `services/core/README.md`에 Plane 설정, 수동 task 생성 예시, 현재 endpoint 한계를 정리한다.
|
||||
- [x] [ops-smoke] 실제 smoke 절차를 운영 문서에 보강한다.
|
||||
|
||||
## 완료 기준
|
||||
|
||||
|
|
@ -78,7 +78,7 @@ Plane Communication Foundation
|
|||
|
||||
- 관련 경로: `services/core/internal/adapters/plane/`, `services/core/internal/storage/`, `services/core/internal/workflow/`, `services/core/migrations/`, `services/core/queries/`, `services/core/README.md`
|
||||
- 선행 작업: Server Skeleton
|
||||
- 후속 작업: Plane Task Pipeline Design, Workflow Core
|
||||
- 후속 작업: Work Item Provider Pipeline Design, Workflow Core
|
||||
- 확인된 dev Plane:
|
||||
- Base URL: `https://plane.toki-labs.com`
|
||||
- workspace slug: `general`
|
||||
|
|
@ -91,8 +91,7 @@ Plane Communication Foundation
|
|||
- HTTP endpoint는 Plane work item 조회 후 pending task와 external ref를 수동 생성하는 얇은 경로만 제공한다.
|
||||
- 실제 Plane smoke 절차와 설정 예시는 `services/core/README.md`에 남아 있다.
|
||||
|
||||
## 메모
|
||||
|
||||
- 이 마일스톤은 Plane과의 통신 경계와 데이터 토대만 안정화한다.
|
||||
- pipeline 설계가 정리되기 전까지 scheduler/workflow에 Plane 자동 발행 정책을 더 넣지 않는다.
|
||||
- 이미 구현된 코드가 이 범위를 넘어간 경우, 리뷰 단계에서 유지/축소/후속 분리 여부를 판단한다.
|
||||
- 메모:
|
||||
- 이 마일스톤은 Plane과의 통신 경계와 데이터 토대만 안정화한다.
|
||||
- pipeline 설계가 정리되기 전까지 scheduler/workflow에 Plane 자동 발행 정책을 더 넣지 않는다.
|
||||
- 이미 구현된 코드가 이 범위를 넘어간 경우, 리뷰 단계에서 유지/축소/후속 분리 여부를 판단한다.
|
||||
|
|
|
|||
|
|
@ -37,12 +37,12 @@ Project Workspace Management UX
|
|||
|
||||
## 필수 기능
|
||||
|
||||
- [ ] 프로젝트 단위 제어 화면의 공통 capability를 정의한다.
|
||||
- [ ] mobile 상단탭 기반 프로젝트 관리 구조를 정의한다.
|
||||
- [ ] desktop 탭 기반 프로젝트 관리 구조를 정의한다.
|
||||
- [ ] desktop 프로젝트 단위 새창을 code-server와 Agent Chat을 포함한 프로젝트 제어 확장 표면으로 정의한다.
|
||||
- [ ] desktop은 mobile에서 가능한 프로젝트 관리 기능을 모두 포함한다는 parity 기준을 정한다.
|
||||
- [ ] IOP OpenAI API Responses-compatible 호출 결과, task 상태, 파일 변경 결과를 UX에 표시하는 기준을 정한다.
|
||||
- [ ] [common-capability] 프로젝트 단위 제어 화면의 공통 capability를 정의한다.
|
||||
- [ ] [mobile-tabs] mobile 상단탭 기반 프로젝트 관리 구조를 정의한다.
|
||||
- [ ] [desktop-tabs] desktop 탭 기반 프로젝트 관리 구조를 정의한다.
|
||||
- [ ] [desktop-window] desktop 프로젝트 단위 새창을 code-server와 Agent Chat을 포함한 프로젝트 제어 확장 표면으로 정의한다.
|
||||
- [ ] [parity] desktop은 mobile에서 가능한 프로젝트 관리 기능을 모두 포함한다는 parity 기준을 정한다.
|
||||
- [ ] [iop-result-ux] IOP OpenAI API Responses-compatible 호출 결과, task 상태, 파일 변경 결과를 UX에 표시하는 기준을 정한다.
|
||||
|
||||
## 완료 기준
|
||||
|
||||
|
|
|
|||
|
|
@ -31,15 +31,15 @@ Server Skeleton
|
|||
|
||||
## 필수 기능
|
||||
|
||||
- [x] Go HTTP server 실행 골격
|
||||
- [x] health / readiness endpoint
|
||||
- [x] task 생성, 조회, 목록, enqueue API
|
||||
- [x] PostgreSQL 기반 task 저장
|
||||
- [x] goose migration과 sqlc 기반 DB query 생성 구조
|
||||
- [x] River 기반 task job
|
||||
- [x] 초기 외부 실행 호출 경계
|
||||
- [x] Plane Adapter stub
|
||||
- [x] Mattermost Adapter stub
|
||||
- [x] [server-run] Go HTTP server 실행 골격
|
||||
- [x] [health-ready] health / readiness endpoint
|
||||
- [x] [task-api] task 생성, 조회, 목록, enqueue API
|
||||
- [x] [task-storage] PostgreSQL 기반 task 저장
|
||||
- [x] [db-codegen] goose migration과 sqlc 기반 DB query 생성 구조
|
||||
- [x] [river-job] River 기반 task job
|
||||
- [x] [external-boundary] 초기 외부 실행 호출 경계
|
||||
- [x] [plane-stub] Plane Adapter stub
|
||||
- [x] [mattermost-stub] Mattermost Adapter stub
|
||||
|
||||
## 완료 기준
|
||||
|
||||
|
|
|
|||
|
|
@ -36,11 +36,11 @@ Workflow Core
|
|||
|
||||
## 필수 기능
|
||||
|
||||
- [ ] task lifecycle 상태 모델 점검
|
||||
- [ ] scheduler와 workflow service의 상태 전이 책임 정리
|
||||
- [ ] 실패 task 처리 기준
|
||||
- [ ] retry와 timeout의 최소 정책
|
||||
- [ ] notification event 모델과 발행 지점
|
||||
- [ ] [lifecycle-model] task lifecycle 상태 모델 점검
|
||||
- [ ] [transition-ownership] scheduler와 workflow service의 상태 전이 책임 정리
|
||||
- [ ] [failure-policy] 실패 task 처리 기준
|
||||
- [ ] [retry-timeout] retry와 timeout의 최소 정책
|
||||
- [ ] [notification-model] notification event 모델과 발행 지점
|
||||
|
||||
## 완료 기준
|
||||
|
||||
|
|
@ -60,6 +60,6 @@ Workflow Core
|
|||
|
||||
- 이전 출처: `services/core/README.md`의 `## 단계별 다음 작업`
|
||||
- 주요 작업 영역: `services/core/internal/workflow/`, `services/core/internal/scheduler/`, `services/core/internal/notification/`
|
||||
- 선행 작업: Plane Communication Foundation, Plane Task Pipeline Design
|
||||
- 선행 작업: Plane Communication Foundation, Work Item Provider Pipeline Design
|
||||
- 후속 작업: External Integration
|
||||
- 검증 기준: scheduler, persistence, adapter behavior를 크게 바꾸면 관련 테스트를 함께 갱신한다.
|
||||
|
|
|
|||
Loading…
Reference in a new issue