4.9 KiB
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로 남긴다.