328 lines
16 KiB
Markdown
328 lines
16 KiB
Markdown
# AI_ICT 实盘辅助分析决策助手上线必做清单 2026-05-18 v1
|
||
|
||
## 0. 硬性主线约束
|
||
|
||
本上线清单只允许服务 `docs/ICT交易全书_出版终校版.md` 和 `docs/AI_ICT_硬性主线约束_必须遵循ICT交易全书_2026-05-21_v1.md` 定义的主线。
|
||
|
||
上线必做项必须帮助交易员更快完成:
|
||
|
||
```text
|
||
Range / Draw / Location
|
||
-> Liquidity / Sweep / Path
|
||
-> Displacement / MSS / FVG / Retest / Session
|
||
-> backtest evidence
|
||
-> plan
|
||
-> intraday focus or no-trade
|
||
-> journal feedback
|
||
```
|
||
|
||
不能服务该链路的能力,不得作为上线必做项,也不得进入交易员首屏。
|
||
|
||
## 目标边界
|
||
|
||
上线目标是:
|
||
|
||
```text
|
||
实盘决策辅助分析,不下单,不交易,不给可直接执行的买卖指令。
|
||
```
|
||
|
||
本轮上线不做以下事项:
|
||
|
||
- 不启用 `LIVE_TRADING_ENABLED`。
|
||
- 不要求 OKX trade permission。
|
||
- 不跑 submit / cancel / fills 的交易权限 smoke。
|
||
- 不把 cockpit 输出当成实盘买卖指令。
|
||
- 不改变 `execution_allowed`、`real_live_ready`、risk governor、trust bucket、operator confirmation protocol。
|
||
|
||
## 当前实测状态
|
||
|
||
截至 2026-05-18,本地 no-proxy 远端检查显示:
|
||
|
||
- `/health` 可用,数据库已配置。
|
||
- 标准 `run_remote_ops_smoke.py` 通过,`unattended_harness` 通过。
|
||
- 远端只读行情 / broker read-only proxy 已恢复,`market_truth_ready`、`broker_state_ready`、`runtime_ready` 均通过。
|
||
- `/trading/launch-readiness` 已返回 `live_analysis_assistant_ready=true`。
|
||
- 当前仍保持 `decision_support_ready=false`、`execution_assist_ready=false`、`real_live_ready=false`。
|
||
- 当前 `product_operating_mode=restricted_decision_support`,但仅可作为只读实盘分析与证据整理工作台使用。
|
||
- `/trading/shadow-paper-validation` 当前为 `collecting_paper_samples`,下一 gate 是 `paper_ticket_sample_gate`。
|
||
- R2 历史 shadow coverage 已达标,但 paper/execution 证据未满:`paper_ticket_count=0`、`paper_execution_count=0`,这不作为只读上线 blocker。
|
||
- 最新候选仍可能为 `blocked` / `executable=false`;系统必须继续把输出呈现为观察与复盘证据,而不是买卖指令。
|
||
- `/trader-mode` 已成为盘中默认速读入口;状态文案使用 `Review Now` / `Observe Only` / `Do Not Use`,避免 green/red 造成买卖信号误读。
|
||
|
||
## 上线必须实现清单
|
||
|
||
### P0-1 恢复只读实盘数据链路
|
||
|
||
必须恢复行情和只读状态的稳定读取,否则不能叫“实盘辅助分析”。
|
||
|
||
交付:
|
||
|
||
- 恢复远端 `MARKET_TRUTH_PROXY_URL=http://192.168.3.73:10808`,或把远端 `.env` 更新到可达的只读代理。
|
||
- 重新跑 `POST /trading/runtime/run-once`。
|
||
- 确认 market truth 不再 stale,market stream / REST fallback 至少有一个新鲜。
|
||
- 确认 broker read-only 失败时不会误导 operator;如果本阶段不依赖账户状态,则降级为 account-context unavailable,而不是阻断行情分析。
|
||
|
||
验收:
|
||
|
||
- no-proxy `/health` 200。
|
||
- `run_remote_ops_smoke.py` passed。
|
||
- `/trading/launch-readiness` 不再因为 proxy refused 进入 `product_operating_mode=blocked`。
|
||
- cockpit 明确显示行情 freshness、数据来源和最后更新时间。
|
||
|
||
### P0-2 增加“只读实盘分析上线口径”
|
||
|
||
当前 `decision_support_ready=false` 是严格信任门,不能为了快速上线强行改 true。需要新增或明确一个更窄的上线口径:
|
||
|
||
```text
|
||
live_analysis_assistant_ready
|
||
```
|
||
|
||
它只代表“可用于看盘、证据整理、风险提示和复盘”,不代表“可指导下单”。
|
||
|
||
交付:
|
||
|
||
- 在 launch readiness 中区分:
|
||
- `live_analysis_assistant_ready`
|
||
- `restricted_decision_support_ready`
|
||
- `decision_support_ready`
|
||
- `execution_assist_ready`
|
||
- `real_live_ready`
|
||
- `live_analysis_assistant_ready=true` 的条件只包括:
|
||
- API/runtime 可用。
|
||
- 行情数据新鲜或明确降级。
|
||
- review packet / decision packet 可生成。
|
||
- 边界提示可见。
|
||
- 执行能力仍关闭。
|
||
- broker account read-only 如果不可用,应作为“账户上下文不可用”提示,而不是阻断纯行情分析上线。
|
||
|
||
验收:
|
||
|
||
- `decision_support_ready` 仍可保持 false。
|
||
- `execution_assist_ready=false`。
|
||
- `real_live_ready=false`。
|
||
- 但 cockpit 可以显示“只读实盘分析可用”。
|
||
|
||
### P0-3 做强制边界提示和去交易化 UI
|
||
|
||
上线前必须让 operator 一眼知道:这是分析助手,不是交易系统。
|
||
|
||
交付:
|
||
|
||
- cockpit 顶部固定显示:
|
||
- `只读实盘分析`
|
||
- `不下单`
|
||
- `不构成买卖指令`
|
||
- `当前执行关闭`
|
||
- review packet / decision packet 输出必须包含边界字段。
|
||
- UI 中所有真实交易相关按钮保持禁用或隐藏:
|
||
- submit
|
||
- cancel
|
||
- semi-auto submit
|
||
- live execute
|
||
- `Build Shadow Paper` 仅作为样本采集入口,不在上线主路径突出展示。
|
||
|
||
验收:
|
||
|
||
- 任意首屏都不能让 operator 误以为系统可以下单。
|
||
- 静态检查确认 UI 文案存在。
|
||
- API 返回边界 summary。
|
||
|
||
### P0-4 上线健康页 / Cockpit 一屏可用
|
||
|
||
快速上线最怕“能跑但不知道能不能信”。必须有一个一屏健康状态。
|
||
|
||
交付:
|
||
|
||
- 在 cockpit 或独立 readiness 面板展示:
|
||
- API health。
|
||
- runtime health。
|
||
- market freshness。
|
||
- broker/account context availability。
|
||
- latest decision packet timestamp。
|
||
- latest review packet timestamp。
|
||
- current candidate count。
|
||
- current blocker。
|
||
- allowed actions。
|
||
- blocked actions。
|
||
- 一屏给出当前建议:
|
||
- `可以用于看盘分析`
|
||
- `仅可观察`
|
||
- `等待行情恢复`
|
||
- `等待真实 executable candidate`
|
||
|
||
验收:
|
||
|
||
- operator 不需要看日志就能知道系统是否可用于当下盘面分析。
|
||
- 如果数据 stale,页面明确显示 stale,而不是继续输出像实时一样的结论。
|
||
|
||
### P0-5 最小运营闭环
|
||
|
||
上线当天必须能留下证据,不能只是看页面。
|
||
|
||
交付:
|
||
|
||
- 每日自动/手动记录一条 shadow observation。
|
||
- operator 能记录 agreement / disagreement / note。
|
||
- 每日生成一个简短的 read-only session summary。
|
||
- 每周 review entry 可以保存,即便还没有 paper ticket。
|
||
|
||
验收:
|
||
|
||
- `shadow_paper_observations` 当天有记录。
|
||
- operator feedback 能写入。
|
||
- weekly review 至少有一条入口或草稿。
|
||
- 不要求 paper ticket 样本满,因为当前没有真实 executable candidate。
|
||
|
||
### P0-6 上线 smoke 脚本
|
||
|
||
上线必须有一个固定命令判断“今天能不能用”。
|
||
|
||
交付:
|
||
|
||
- 新增或整理一个 read-only launch smoke:
|
||
- `/health`
|
||
- `/trading/runtime-status`
|
||
- `/trading/launch-readiness`
|
||
- `/trading/review-packet`
|
||
- `/trading/shadow-paper-validation`
|
||
- `/trading/candidates`
|
||
- static app 文案检查
|
||
- smoke 输出明确:
|
||
- `ready_for_readonly_live_analysis`
|
||
- `blocked_reason`
|
||
- `warnings`
|
||
- `must_not_trade=true`
|
||
|
||
验收:
|
||
|
||
- 单条命令能给出上线判定。
|
||
- 不依赖 OKX trade permission。
|
||
- 不触发任何 submit / cancel / live execution。
|
||
|
||
## 2026-05-18 闭环结果
|
||
|
||
- [x] P0-1 只读实盘数据链路已恢复:远端 no-proxy `/health` 200,标准 `run_remote_ops_smoke.py` passed,`unattended_harness` passed。
|
||
- [x] P0-2 已新增 `live_analysis_assistant_ready` 与 `live_analysis_assistant_summary`;broker/account context 不可用时会降级为提示,不阻断纯行情分析上线。
|
||
- [x] P0-3 已在 API 与 cockpit 增加强制边界:`Read-only Live Analysis`、`No order submission`、`Not a buy/sell instruction`、`Execution remains disabled`、`must_not_trade=true`。
|
||
- [x] P0-4 已提供 `readonly_live_health_summary`:API health、runtime health、market freshness、broker/account context、latest decision/review packet timestamp、candidate count、current blocker、allowed/blocked actions。
|
||
- [x] P0-5 已形成最小运营闭环:runtime 已持续记录 shadow observation;operator feedback 写入入口存在;weekly review 入口可用;只读 session summary / weekly review draft 已作为允许动作暴露。
|
||
- [x] P0-6 已新增 `scripts/run_readonly_live_analysis_smoke.py`;远端 smoke passed,输出 `ready_for_readonly_live_analysis=true`、`must_not_trade=true`、`trade_permission_required=false`、`submit_cancel_or_live_execution_called=false`。
|
||
- [x] Trader Mode P0 补齐已闭环:独立 `/trader-mode` 首屏、强新鲜度时间戳/stale freeze、一键 Agree/Disagree/No Trade/Need More Evidence/Write Quick Note、状态变化提醒、R2 evidence gap surface 均已部署并通过 smoke。
|
||
|
||
验证证据:
|
||
|
||
- `python -m unittest discover tests/unit`:775 tests OK。
|
||
- `node --check src/web/app.js`:passed。
|
||
- `node --check src/web/trader_mode.js`:passed。
|
||
- `python scripts/run_script_static_checks.py`:passed。
|
||
- `python scripts/deploy_with_password.py --host 192.168.3.90 --user root --port 22`:deploy complete,deploy smoke complete。
|
||
- `python scripts/run_remote_ops_smoke.py --base-url http://192.168.3.90:8000 --attempts 2 --timeout-seconds 30`:passed。
|
||
- `python scripts/run_readonly_live_analysis_smoke.py --base-url http://192.168.3.90:8000 --attempts 2 --timeout-seconds 30 --output-json`:passed,覆盖 `trader_mode_payload`、`/trader-mode`、`/static/trader_mode.js`。
|
||
- 远端字段 smoke:`status_label=Review Now`、`data_confidence=fresh`、`freshness_status=fresh`、`primary_question_trade_action=not_a_buy_sell_instruction`、`execution_allowed=false`、`real_live_ready=false`、`r2_status=collecting_evidence`。
|
||
|
||
闭环结论:
|
||
|
||
```text
|
||
系统可作为只读实盘辅助分析工作台上线试运行。
|
||
```
|
||
|
||
仍然不能宣布:
|
||
|
||
```text
|
||
系统可指导实盘交易或执行交易。
|
||
```
|
||
|
||
## 2026-05-18 P1 Trader Mode 盘中可用性闭环
|
||
|
||
- [x] 交易员偏好模板:`/trader-mode` 支持本地 profile 模板,包含 instrument、timeframe、session filter 和 setup filter;默认提供 BTC London、BTC NY、ETH London、All Intraday,并记住上次选择。
|
||
- [x] 盘中快捷键:`R` 复核/刷新 focus,`N` 记录 No Trade,`A`/`D` 记录 Agree/Disagree,`Space` 暂停或恢复自动刷新;快捷键不在输入框内触发。
|
||
- [x] 唯一 focus 的人话解释:Trader Mode 摘要新增 `focus_quality_explanation` 和 `plain_language_reasons`,把结构、等待确认、不能贸然行动压缩成交易员能直接读的一句话。
|
||
- [x] 失败/阻塞恢复动作:`Do Not Use` 或 stale 状态下返回 `recovery_actions`,明确是 runtime、market feed、review packet 还是通用 readiness 恢复,并给出对应 smoke/恢复命令。
|
||
- [x] 真实盘中 UI 验证:P1 验收必须使用浏览器截图覆盖 13/14 寸等效宽屏、窄屏和暗色环境,确认自动刷新/长文案下不跳版、不溢出、不遮挡。
|
||
|
||
P1 不改变以下边界:
|
||
|
||
```text
|
||
execution_allowed=false
|
||
real_live_ready=false
|
||
decision_support_ready 仍由 R2/R3/R4/R5 证据门决定
|
||
不启用下单,不启用交易权限,不把 Review Now 显示为买卖信号
|
||
```
|
||
|
||
本轮本地闭环证据:
|
||
|
||
- focused unit/static tests、script static checks、`node --check`、`git diff --check`、完整 `tests/unit` 775 项已通过。
|
||
- 本地 `scripts/run_readonly_live_analysis_smoke.py --base-url http://127.0.0.1:8125` 通过,且 `must_not_trade=true`、`submit_cancel_or_live_execution_called=false`。
|
||
- 浏览器截图已覆盖暗色 13 寸等效宽屏、14 寸等效宽屏、390px 窄屏:`output/playwright/trader-mode-p1-13in-1366x768.png`、`output/playwright/trader-mode-p1-14in-1440x900.png`、`output/playwright/trader-mode-p1-narrow-390x844.png`。
|
||
|
||
远端闭环状态:
|
||
|
||
- [x] live 远端部署/smoke 已闭环:使用 `yuqei` SSH + sudo 将旧 root 部署目录中的完整只读 `.env` 安全迁移到 `/home/yuqei/project/ai-exchange/.env`,未把任何密钥写入仓库或文档。
|
||
- [x] `python scripts/deploy_with_password.py --host 192.168.3.90 --user yuqei --port 22 --remote-path /home/yuqei/project/ai-exchange --remote-archive /home/yuqei/ai-ict-deploy.tgz`:deploy complete,deploy smoke complete。
|
||
- [x] `python scripts/run_remote_ops_smoke.py --base-url http://192.168.3.90:8000 --attempts 2 --timeout-seconds 30`:passed,`unattended_harness` passed。
|
||
- [x] `python scripts/run_readonly_live_analysis_smoke.py --base-url http://192.168.3.90:8000 --attempts 2 --timeout-seconds 30 --output-json`:passed,输出 `ready_for_readonly_live_analysis=true`、`must_not_trade=true`、`trade_permission_required=false`、`submit_cancel_or_live_execution_called=false`。
|
||
|
||
## 2026-05-18 P2 Trader Mode 后续增强闭环
|
||
|
||
本轮只做当前具备条件的增强,不引入未接入的 TradingView MCP/CDP 实时控制依赖,不启用交易权限。
|
||
|
||
- [x] 图表/外部上下文实时桥 starter:Trader Mode 新增 `chart_context_bridge`,以内部 `/candles` 精确蜡烛作为主证据,外部 chart provider 作为 reference-only;若未来接入 TradingView MCP/CDP,只需把外部实时桥状态从 `not_connected` 升级为 `connected`。
|
||
- [x] 多品种速读队列:`/trader-mode` 首屏新增 Fast Queue,默认 BTC/ETH/SOL,按 `Review Now` / `Observe Only` / `Do Not Use` 排序,队列状态仍是只读观察,不是买卖信号。
|
||
- [x] 盘后自动复盘草稿:Trader Mode 新增 `post_market_review_draft` 和 After-Close Draft 面板,自动汇总盘中 observation、Agree/Disagree/No Trade 样本、weekly review carry-forward,并可一键保存为 operator note。
|
||
- [x] 上线值班面板:Trader Mode 新增 `ops_duty_panel` 和 Duty Panel,汇总数据 freshness、runtime、maintenance、unattended harness、最近错误和今日是否适合打开使用。
|
||
|
||
P2 本地验证证据:
|
||
|
||
- focused unit/static tests、script static checks、`node --check` 已通过。
|
||
- 本地 `scripts/run_readonly_live_analysis_smoke.py --base-url http://127.0.0.1:8125` 已覆盖新增 `ops_duty_maintenance`、`ops_duty_unattended_harness`、`chart_bridge_candles`,并保持 `must_not_trade=true`、`submit_cancel_or_live_execution_called=false`。
|
||
- 浏览器截图已覆盖暗色宽屏与 390px 窄屏:`output/playwright/trader-mode-p2-13in-1366x768.png`、`output/playwright/trader-mode-p2-narrow-390x844.png`。
|
||
|
||
P2 远端验证证据:
|
||
- `python scripts/deploy_with_password.py --host 192.168.3.90 --user yuqei --port 22 --remote-path /home/yuqei/project/ai-exchange --remote-archive /home/yuqei/ai-ict-deploy.tgz`:deploy complete,deploy smoke complete。
|
||
- `python scripts/run_remote_ops_smoke.py --base-url http://192.168.3.90:8000 --attempts 2 --timeout-seconds 30`:passed,`unattended_harness` passed。
|
||
- `python scripts/run_readonly_live_analysis_smoke.py --base-url http://192.168.3.90:8000 --attempts 2 --timeout-seconds 30 --output-json`:passed,覆盖 `trader_mode_payload`、`ops_duty_maintenance`、`ops_duty_unattended_harness`、`chart_bridge_candles`、`/trader-mode`、`/static/trader_mode.js`。
|
||
- 远端 live readiness 当前为 `live_analysis_assistant_ready=true`、`product_operating_mode=restricted_decision_support`、`market_stream=market_stream_connected`、`market_data_gap=market_data_gap_clear`、`readonly_account_context_status=available`、`real_live_ready=false`。
|
||
|
||
P2 仍不改变以下边界:
|
||
|
||
```text
|
||
execution_allowed=false
|
||
real_live_ready=false
|
||
decision_support_ready 仍由真实 R2/R3/R4/R5 证据门决定
|
||
图表桥和多品种队列只提升证据读取效率,不给出下单指令
|
||
```
|
||
|
||
## 暂不作为上线 blocker
|
||
|
||
以下项目重要,但不应阻塞“只读实盘辅助分析”快速上线:
|
||
|
||
- `decision_support_ready=true` 的完整 trust promotion。
|
||
- R2 paper ticket / paper execution 样本达到 5 条。
|
||
- R3 submit / query / cancel / fills sandbox smoke。
|
||
- R4 极小实盘试点。
|
||
- R5 四周稳定化运行制度。
|
||
- 外部 webhook / WeCom / email 通道完整启用。
|
||
|
||
这些属于从“只读实盘分析可用”升级到“可信辅助决策”或“执行准备”的后续阶段。
|
||
|
||
## 立即开发顺序
|
||
|
||
1. P0-1:恢复/重配只读代理和行情 freshness。
|
||
2. P0-2:新增 `live_analysis_assistant_ready`,避免用严格 `decision_support_ready` 阻塞只读上线。
|
||
3. P0-3:去交易化 UI 和强制边界提示。
|
||
4. P0-4:cockpit 一屏上线健康状态。
|
||
5. P0-6:read-only launch smoke。
|
||
6. P0-5:每日 observation / note / weekly review 最小运营闭环。
|
||
|
||
完成以上后,可以宣布:
|
||
|
||
```text
|
||
系统可作为只读实盘辅助分析工作台上线试运行。
|
||
```
|
||
|
||
仍然不能宣布:
|
||
|
||
```text
|
||
系统可指导实盘交易或执行交易。
|
||
```
|