oto/agent-roadmap/archive/phase/control-plane-product-surface/milestones/control-plane-operator-actions.md

4.9 KiB

Milestone: Control Plane 운영 액션 표면

위치

  • Roadmap: agent-roadmap/ROADMAP.md
  • Phase: agent-roadmap/phase/control-plane-product-surface/PHASE.md

목표

Flutter 콘솔의 read-only 화면 위에 기존 OTO Core write endpoint를 사용하는 운영 액션 표면을 얹는다. 완료 후 사용자는 job 생성, execution 취소/상태 갱신 후보, runner maintenance 요청 같은 쓰기 동작을 명확한 확인/진행/성공/실패 상태로 다룰 수 있어야 하며, 새로운 API/schema/proto 변경은 기본 범위에서 제외한다.

상태

[완료]

승격 조건

  • 없음

구현 잠금

  • 상태: 해제
  • SDD: 필요
  • SDD 문서: agent-roadmap/sdd/control-plane-product-surface/control-plane-operator-actions/SDD.md
  • SDD 사유: UI에서 Core write endpoint를 호출하며 job/execution/runner lifecycle 상태 전이, 중복 요청, 실패/재시도, 사용자 확인 UX 경계를 먼저 고정해야 한다.
  • 잠금 해제 조건:
    • SDD 상태가 [승인됨]이고 SDD 잠금이 해제되어 있다.
    • SDD USER_REVIEW.md가 없거나 승인/해결되었다.
  • 결정 필요: 없음

범위

  • apps/client의 Core write adapter와 packages/flutter/oto_console의 action surface contract 경계를 정의한다.
  • 기존 Core HTTP endpoint를 소비하는 UI/adapter 작업으로 한정하고, 새로운 Core API/schema/proto 변경은 기본 범위에서 제외한다.
  • action별 loading, disabled, confirmation, success, error state를 화면별로 구분한다.
  • destructive 또는 lifecycle-changing action은 SDD에서 idempotency/retry/confirmation 기준을 고정한 뒤 구현한다.

기능

Epic: [ops-actions] Core write action binding

기존 Control Plane read surface 위에 운영자가 실행할 수 있는 쓰기 액션의 안전한 UI/adapter 경계를 만든다.

  • [action-sdd] job/execution/runner write action의 source of truth, 상태 전이, 실패/재시도, 사용자 확인 UX, 검증 evidence를 SDD로 고정한다. 검증: agent-roadmap/sdd/control-plane-product-surface/control-plane-operator-actions/SDD.md가 승인되고 사용자 리뷰가 남아 있지 않다.
  • [job-create] 기존 POST /api/v1/jobs 계약을 사용하는 job 생성 action adapter와 UI 상태를 연결한다. 검증: cd apps/client && flutter test, cd packages/flutter/oto_console && flutter test에서 job create action 상태 테스트가 통과한다.
  • [execution-actions] 기존 execution/runner write endpoint를 사용하는 취소, report/log/artifact action 진입 상태를 연결한다. 검증: cd apps/client && flutter test, cd packages/flutter/oto_console && flutter test에서 execution action 상태 테스트가 통과한다.
  • [runner-actions] 기존 runner self-update/status action 표면을 연결하고 실패/대기/완료 상태를 표시한다. 검증: cd apps/client && flutter test, cd packages/flutter/oto_console && flutter test에서 runner action 상태 테스트가 통과한다.

완료 리뷰

  • 상태: 통과
  • 요청일: 2026-06-19
  • 완료 근거:
    • apps/client의 Core write adapter와 OtoClientApp action wiring이 job create, execution cancel/report/log/artifact, runner self-update 상태를 연결한다.
    • packages/flutter/oto_console의 jobs/executions/runners surface가 action 입력, disabled/submitting/success/error/deferred 상태를 렌더링한다.
    • cd apps/client && flutter test, cd packages/flutter/oto_console && flutter test, git diff --check가 통과했다.
  • 검토 항목: archive 가능.
  • 리뷰 코멘트: 코드레벨 검토에서 작은 endpoint fallback/test analyzer 이슈를 수정했고, 남은 구현 잠금 또는 결정 필요 항목 없음.

범위 제외

  • 신규 Core API/schema/proto 계약을 기본 구현 범위로 삼지 않는다. 필요하면 SDD에서 별도 Milestone 또는 계약 변경으로 분리한다.
  • auth, 권한, 감사 로그, durable persistence UI를 완성하지 않는다.
  • runner가 실제 production job을 수행하는 end-to-end 운영 정책을 완성하지 않는다.

작업 컨텍스트

  • 관련 경로: apps/client/**, packages/flutter/oto_console/**, services/core/internal/httpserver/**
  • 표준선(선택): OtoConsoleConfig.serverHttpUrl을 API base URL로 유지하고, UI 패키지는 transport 구현보다 상태/표현 contract에 집중한다.
  • 표준선(선택): Core write endpoint는 기존 route와 DTO를 우선 소비하고, schema 확장이 필요하면 SDD에서 후속 계약 변경으로 분리한다.
  • 진행 메모: [action-sdd] agent-roadmap/sdd/control-plane-product-surface/control-plane-operator-actions/SDD.md[승인됨], SDD 잠금 해제, 사용자 리뷰 없음으로 작성했다. (2026-06-18)
  • 선행 작업: Control Plane API 데이터 바인딩
  • 후속 작업: 인증/권한, 감사 로그, 운영 대시보드 고도화
  • 확인 필요: 없음