Files
one_divine_lot/docs/04-迭代记录/12-持仓内存快照/验收标准.md
T
kyugao 245fcad95c 迭代12: 持仓内存快照(PositionSync 10s 定时同步,请求不再穿透 QMT)
- PositionSync: 内存快照 + 10s 定时全量同步 + 失败保留旧快照 + 空快照双重确认
  (/health + getAsset 账户身份)+ 幽灵持仓自动清仓(连续3轮消失 + 账户身份守卫防误清)
- PositionManager.getAllPositions 改读快照,空则读穿透兜底;未注入 sync 时兼容旧穿透
- 回归 test-position-sync.mjs 35 项(纯内存 mock,含 kept 分支刷新 syncedAt 防灯灰)
- 文档链: R-014 + PLAN-013 + 迭代三件套 + 数据存储设计 §11(内存不落库决策与三问标准)

需求: R-014(老师拍板: 内存不落库/读穿透兜底/幽灵自动清仓/不显示同步时间)
2026-09-03 13:25:50 +08:00

2.0 KiB
Raw Blame History

验收标准:12-持仓内存快照

迭代编号:12 | 依据:PLAN-013 验收要点 + R-014

验收标准线

  1. 自动化typecheck + build 通过;回归脚本 test-position-sync.mjs 全绿(34 项:基本流 / 失败保留快照 / 空快照双重确认四分支 / 幽灵清仓防抖与账户守卫 / 读穿透兜底 / 未注入兼容 / 组装回归 / 定时冒烟);既有回归 test-r013-custom-fields.mjs 全绿(21 项,兼容性证明);
  2. 读路径:插件启动日志出现「PositionSync 启动」;QMT 正常时打开策略持仓 / 全部持仓 tab,数据与改造前一致(行集合 / 份额 / 成本价 / 最后一笔成交价 / 自定义字段值);连续切 tab 不产生对 QMT 的 /trade/positions 新调用(服务端日志无新增穿透请求);
  3. 抗抖:停掉 QMT Bridge 后刷新页面,持仓 tab 仍显示最后一次快照数据(不再白屏);恢复 QMT 后 ≤10s 快照自动恢复最新;
  4. 幽灵自动清仓:在券商端卖出某只票全部持仓后,约 30s(3 轮同步)内,该票在全部策略下的当前持仓自动转历史(strategy_holdings 出现 closed_at,不物理删除);服务端日志出现「PositionSync 幽灵清仓」warn
  5. 防误清:QMT 短暂返回空(如未登录)时本地持仓不被清空(保留旧快照);连接热切换到另一账户时旧计数重置,无误清;
  6. 零 schema 变更SQLite 无新表、strategy_holdings 结构不变;前端代码零改动。

验收方法

  • 自动化项由 AI 执行并出具结果(已完成:34/34 + 21/21 + typecheck + build);
  • 2~5 项老师真实环境人工验收:重载插件 → 正常浏览持仓 tab → 停 QMT 验证抗抖 → 恢复 → 券商端清仓一票验证幽灵自动转历史;
  • 全部通过后:迭代 12 标记「验收通过」,R-014 归档至 已完成/。

验收目标

  • 6 条验收线通过,迭代 12 标记「验收通过」,R-014 更新实现状态(已实现)并归档。