diff --git a/SESSION.md b/SESSION.md index e21dcb5..fde5dfb 100644 --- a/SESSION.md +++ b/SESSION.md @@ -2,7 +2,7 @@ ## Current Goal -从现在开始按全自动模式持续推进交易模块主线,不再等待阶段确认,直到完成 `docs/AI_ICT_实盘辅助决策系统开发方案_v2.md` 中剩余开发目标。 +按全自动模式持续推进交易模块主线;当前已完成 `P0-2` 的实现与部署验证准备,现阶段停在唯一允许的外部阻塞点:真实账户只读凭据缺失。 ## Current Branch @@ -10,43 +10,51 @@ ## Last Updated -2026-05-07 UTC +2026-05-08 UTC ## Completed In Last Session -- 本轮尚无新增完成阶段 - -## Current Working State - -- 当前主线执行协议已固化到: - - `docs/AI_ICT_全自动开发执行流程_v1.md` -- 当前阶段队列来源于: - - `docs/AI_ICT_实盘辅助决策系统开发方案_v2.md` -- 默认不再等待用户中途确认 -- 每阶段必须完成: - - 实现 - - focused tests +- `P0-2` groundwork 已实现: + - `BrokerReadModelService` + - `/trading/broker-state` + - `RiskContext.broker_state` + - execution risk-context 接入 broker read model + - workbench 显示 broker equity / available balance / open positions / pending orders / alerts + - `run_until_blocked.py` 与相关测试已补齐 +- 本地质量门通过: - `npm run lint` - `npm run build` - `npm run visual:snapshots` - - Docker 部署 - - 远端 smoke - - 状态回写 +- 当前 `HEAD` 已部署到 Docker 服务器: + - `e9b15e1 Complete broker read model sync groundwork` + +## Current Working State + +- 远端 `/trading/broker-state` 已存在并返回 `200` +- 当前返回结果为: + - `status = broker_state_unavailable` + - `error = okx_read_credentials_missing` +- 这说明: + - 代码链路已通 + - 当前阻塞不是实现缺口 + - 当前阻塞是远端运行环境缺少 OKX 只读账户凭据 +- `scripts/deploy_server.exp` 已修正为保留远端 `.env`,避免每次部署覆盖环境文件 ## Exact Next Step -直接进入: +等待补齐远端 OKX 只读凭据后,继续执行: -### `P0-2` 真实账户与订单只读同步 +### `P0-2` final acceptance close 目标: -- 建立 `BrokerReadModelService` -- 读取真实账户余额 / 持仓 / 挂单 / 成交 -- 扩展 `RiskContext` -- 建立 reconciliation 读模型 -- 前端展示真实 `open position / pending order` -- focused smoke: `/trading/broker-state` 与 `/trading/market-state` 返回 broker state +- 让 `/trading/broker-state` 返回真实账户余额 / 持仓 / 挂单 / 成交 +- 让 `RiskGovernor` 基于真实 broker state 工作 +- 让 workbench 显示真实 `open position / pending order` + +完成后自动进入: + +### `P0-3` 盘中持续调度与运行监督 ## Validation Commands @@ -58,6 +66,6 @@ npm run visual:snapshots ## Risks Or Open Questions +- 当前唯一外部阻塞:`okx_read_credentials_missing` - 当前市场真值链路依赖本机 `192.168.3.73:10808` 持续可达;如本机关机或代理退出,远端将退化 -- 真实账户只读同步下一阶段可能需要额外凭据或账号权限;若现有环境缺失,将构成唯一允许的用户介入点 -- 当前自动化已阻塞:safe_repairs_pending_manual_apply + diff --git a/TASKS.md b/TASKS.md index 9989804..6b3363f 100644 --- a/TASKS.md +++ b/TASKS.md @@ -8,7 +8,24 @@ ## In Progress -- [ ] `P0-2` 真实账户与订单只读同步 +- [ ] `P0-2` 真实账户与订单只读同步收口 +Files: +`src/services/broker/` +`src/api/broker_state.py` +`src/services/execution/execution_service.py` +`src/services/risk/risk_context.py` +`src/web/app.js` +`tests/unit/test_broker_read_model_service.py` +Acceptance: +- `/trading/broker-state` 返回真实账户余额 / 持仓 / 挂单 / 成交 +- `RiskContext` 能接入真实 broker state +- workbench 显示真实 `open position / pending order` +- unknown position / order 触发 alerts +Current State: +- 代码已实现 +- 本地质量门已通过 +- Docker 已部署 +- 远端当前阻塞:`okx_read_credentials_missing` ## Next Up @@ -25,8 +42,11 @@ ## Blocked -- [ ] safe_repairs_pending_manual_apply +- [ ] `P0-2`:`okx_read_credentials_missing` ## Done -- [ ] 当前尚无完成阶段 +- [x] `P0-1` 实时市场真值层 +- [x] 自动执行协议已固化 +- [x] 市场真值代理已切到直连本机 v2rayN LAN 代理 `192.168.3.73:10808` + diff --git a/scripts/deploy_server.exp b/scripts/deploy_server.exp index ca5c07b..8840e0a 100755 --- a/scripts/deploy_server.exp +++ b/scripts/deploy_server.exp @@ -25,7 +25,7 @@ auth spawn scp -o StrictHostKeyChecking=accept-new $archive $user@$host:$remote_archive auth -spawn ssh -o StrictHostKeyChecking=accept-new $user@$host "rm -rf $remote_path/* && tar -xzf $remote_archive -C $remote_path && cd $remote_path && ((docker compose down || docker-compose down) >/dev/null 2>&1 || true) && ((docker compose up -d --build) || (docker-compose up -d --build)) && ((docker compose ps) || (docker-compose ps))" +spawn ssh -o StrictHostKeyChecking=accept-new $user@$host "if [ -f $remote_path/.env ]; then cp $remote_path/.env /root/ai-ict-deploy.env.bak; fi && rm -rf $remote_path/* && tar -xzf $remote_archive -C $remote_path && if [ -f /root/ai-ict-deploy.env.bak ]; then mv /root/ai-ict-deploy.env.bak $remote_path/.env; fi && cd $remote_path && ((docker compose down || docker-compose down) >/dev/null 2>&1 || true) && ((docker compose up -d --build) || (docker-compose up -d --build)) && ((docker compose ps) || (docker-compose ps))" auth file delete -force $archive