alt/agent-roadmap/archive/phase/operator-surface/milestones/operator-headless-workflow-validation.md

4.9 KiB

Milestone: Operator Headless Workflow Validation

위치

  • Roadmap: agent-roadmap/ROADMAP.md
  • Phase: agent-roadmap/phase/operator-surface/PHASE.md

목표

Flutter 화면 없이 ALT 운영 흐름을 terminal/YAML/log/test fixture 기반으로 먼저 검증한다. market data와 backtest 조회/실행 경로가 화면 없이도 구성, 실행, 결과 확인이 가능해진 뒤에만 operator dashboard 화면 구현 후보로 넘긴다.

상태

[완료]

구현 잠금

  • 상태: 해제
  • 결정 필요: 없음

범위

  • YAML 또는 동등한 파일 기반 operator scenario 정의
  • CLI/terminal entrypoint에서 scenario 실행 또는 조회
  • market data status/import 결과 확인
  • backtest list/detail/result/start 요청 결과 확인
  • unavailable/error/disconnected 결과의 machine-readable 또는 grep 가능한 출력
  • 화면 구현 전 검증 evidence 산출 방식
  • api_connection_smoke, market_data_status_query, backtest_run_request, backtest_run_polling, backtest_result_summary, invalid_request_matrix 시나리오의 command/input/output/exit code 기준 확정

기능

Epic: [headless-op] Headless operator workflow validation

운영 화면을 만들기 전에 같은 API/worker 경계를 화면 없이 검증한다.

  • [scenario-format] operator scenario를 YAML 또는 동등한 파일 형식으로 표현한다. 검증: 예시 scenario가 parser 또는 dry-run 검증을 통과한다.
  • [terminal-run] terminal에서 scenario를 실행하거나 대표 조회를 수행할 수 있다. 검증: CLI 또는 script가 exit code와 요약 출력을 남긴다.
  • [market-check] market data status/import 관련 결과를 화면 없이 확인할 수 있다. 검증: fixture 또는 local smoke가 상태 출력을 확인한다.
  • [backtest-check] backtest list/detail/result/start 관련 결과를 화면 없이 확인할 수 있다. 검증: fixture 또는 local smoke가 성공/실패 결과를 확인한다.
  • [error-output] unavailable/error/disconnected 상태가 화면 없이도 판별 가능한 출력으로 남는다. 검증: typed error 또는 상태 코드 출력 테스트가 통과한다.
  • [handoff] Flutter 화면 MVP로 넘길 수 있는 검증 evidence와 남은 wireframe 의존성을 정리한다.

완료 리뷰

  • 상태: 승인됨
  • 요청일: 2026-06-01
  • 완료 근거: apps/cli/internal/operator/scenario.go, apps/cli/internal/cli/cli.go, apps/cli/internal/operator/runner.go가 YAML scenario validate/run과 text/jsonl 출력을 제공한다.
  • 완료 근거: apps/cli/testdata/operator/*.yaml, apps/cli/testdata/operator/expected/*.jsonl, apps/cli/testdata/operator/headless_validation.md가 market data, backtest, invalid request matrix의 command/input/output/exit code evidence를 정리한다.
  • 완료 근거: 원격 ALT checkout에서 go test ./apps/cli/...가 통과했다.
  • 리뷰 필요:
    • 사용자가 완료 결과를 확인했다
    • archive 이동을 승인했다
  • 리뷰 코멘트: 2026-06-01 사용자 요청으로 완료 승인 및 archive 이동을 수행했다. bin/test 전체 smoke는 원격 checkout에서 protoc-gen-go 미설치로 차단되었으며, 필요하면 원격 toolchain 보강 후 재실행한다.

범위 제외

  • Flutter 실화면 구현
  • dashboard layout, chart, form visual design 확정
  • push notification
  • production 운영 자동화

작업 컨텍스트

  • 관련 경로: apps/cli/, bin/, services/api/, services/worker/, packages/contracts/
  • 표준선(선택): 화면 구현보다 CLI/YAML/headless smoke를 먼저 만들고, 결과는 exit code와 machine-readable 또는 grep 가능한 출력으로 남긴다.
  • 선행 작업: Flutter Operator Console UX Plan
  • 후속 작업: Flutter Operator Console MVP
  • 확인 필요: 없음

UX Plan handoff 기준

Flutter Operator Console UX Plan에서 넘기는 headless validation 후보는 다음 실행 단위로 구체화한다.

Scenario 입력 확인 결과
api_connection_smoke API socket host/path와 optional reconnect 설정 handshake/capability, disconnected/reconnect 실패, exit code
market_data_status_query symbol, date range, provider/capability option availability, empty, unavailable 상태와 grep 가능한 status key
backtest_run_request strategy, symbol universe, date range, initial capital validation success/failure, run id, typed error key
backtest_run_polling run id, polling timeout queued/running/completed/failed 전이와 실패 사유
backtest_result_summary completed run id summary metrics, empty result, missing run id error
invalid_request_matrix 필수 입력 누락 또는 잘못된 symbol/date/capital/capability validation error, unavailable/error 구분, non-zero exit code

각 scenario는 command, YAML 또는 동등 fixture, expected terminal/log output, exit code, 확인할 protobuf 또는 view-model field를 evidence로 남긴다.