Files
kyugao bb3f8bd28d feat: 迭代03-05 交易记录接入、行情实时、QMT连接配置、data store 标准化
- R-004 QMT连接配置:多配置管理 + 会话头部快捷切换(03-QMT连接配置)
- R-005 WS盘中价格实时更新:服务端中转+缓存+前端轮询(04-WS盘中价格实时更新)
- R-006 策略数据 JSON data store 标准化(store.json/market.json/schema.json)
- R-007 交易记录接入:当日订单+成交单表合并(委托主行+展开成交明细)、时间段查询(今日/本周/本月+手动起止)、费用计算(佣金费率万m_dCommission+最低5元、印花税卖出万5、过户费双向万0.1)
- 架构治理:api 按领域拆分、component 目录、QmtHealthMonitor
2026-09-01 13:21:49 +08:00

3.9 KiB
Raw Permalink Blame History

迭代 04 复盘:WS 盘中价格实时更新(2026-09-01)

复盘日期:2026-09-01 | 迭代状态:已完成(验收通过) 关联需求:R-005(WS 盘中价格实时更新,已定稿)、R-006(策略数据 JSON data store schema,已定稿) 关联计划:PLAN-004(WS 盘中价格实时更新)、PLAN-005(策略数据 JSON 标准化)

结果

迭代 04 达成:3 个监控表格(全部持仓 / 手动做T / 网格超市)实现盘中现价实时显示(服务端缓存 + 前端轮询),数据层标准化为 JSON data store(份额 + 行情持久化),并完成多项架构治理(api 拆分、component 目录、健康检查、膨胀修复)。

过程事实

  1. R-005 WS 实时价格:经历多次架构演进——
    • 初版前端直连 WS(老师拍板)→ 实测发现 QMT Bridge REST 无 CORS 头、前端直连订阅被跨域拦截;
    • 改服务端代理订阅/快照 → 前端轮询;再演进为「服务端中转 + 行情缓存」(老师定);
    • 行情持久化(store.market.json)解决首屏无价;MarketFeed 启动 prime 主动拉持仓盘口;
  2. R-006 JSON data store:策略数据集标准化(store.schema.json / store.json / store.market.json),旧 allocations.json 自动迁移(保留 .bak);
  3. 架构治理
    • src/api.js377 行)按领域拆分 → src/api/ 目录(positions / strategies / qmt-connections / market / common);
    • 创建 src/component/ 目录,market-cache 拆分为 MarketDataHub(缓存)+ MarketFeed(获取),业务模块陆续迁入;
    • 移除冗余端点(subscribe-ws/unsubscribe-ws/tick-snapshot)、前端去重(表格上报 code 替代 Provider 自拉);
  4. QMT 健康检查:服务端定时探测(5 分钟)+ 缓存,前端 QMT chip 右侧圆点(绿/红),点击触发即时探测;
  5. 数据误删事故(严重教训):回归测试脚本误在真实数据执行写操作,导致大连热电/万顺新材份额丢失——已恢复 + 建立测试隔离机制(ODL_TEST_DATA_DIR)并沉淀技术约束-011
  6. 行情缓存膨胀 bug(38MB):WS 全市场推送无过滤 + setMarketQuotes 合并残留——三层修复(watchCodes 过滤 / warmup 不认可全市场 / 整体替换),最终 store.market.json 13 条 11KB
  7. WS 推送稳定性:实测 QMT Bridge WS 推送是会话级/有状态(连接后 wsPushCount=0,纯 REST 轮询供数)——归属 QMT Bridge 工作空间;
  8. 全市场缓存:实测 whole 推送 26,751 条中标准 A股仅 2,775 只(其余为期权/衍生品代码段)——方案搁置,保持 watchCodes。

经验(已沉淀)

  • 服务端重启 vs 客户端刷新:服务端模块宿主启动时加载(改动需重启),客户端 bundle 刷新即载——版本差排查先看两侧加载时机(迭代 03 经验复用);
  • 前端对行情状态应无感:行情刷新/获取是服务端职责,前端只拿结果——移除状态条,避免误报;
  • 测试隔离:回归/测试脚本禁止在真实数据上执行写操作(技术约束-011,数据误删事故沉淀);
  • 缓存膨胀三要素:全量数据源(WS 全市场)必须过滤(watchCodes)、加载不认可历史全量(warmup)、写盘必须整体替换(setMarketQuotes);
  • WS 推送不可靠QMT Bridge WS 为会话级行为(连接后可能 0 推送),实时数据需 REST 轮询兜底;
  • 代码段过滤QMT whole 推送含大量非 A股品种(89%),全市场类操作需按标准股票代码过滤。

遗留/后续

  1. WS 推送稳定性:归属 QMT Bridge 工作空间(老师另开筛选解决);
  2. 全市场缓存:搁置(需先解决 WS 稳定 + 只缓存标准 A股);
  3. 临时诊断端点 market-stats:可保留观测或后续移除;
  4. 数据存储设计文档:docs/03-设计约束/数据存储设计.md(已沉淀,后续存储变更以此为据)。