Files
one_divine_lot/docs/04-迭代记录/06-数据存储SQLite/验收标准.md
T
kyugao dd98b4d45b docs(迭代06): 数据存储SQLite迭代文档 + 需求归档(R-008)
- 新增 02-计划/计划-数据存储SQLite.md(PLAN-007)
- 新增 04-迭代记录/06-数据存储SQLite/ 五份文档(迭代目标/技术实现方案/验收标准/UI交互调用分析/迭代复盘)
- 归档 R-008 至 已完成/(含归档头 + 讨论记录索引),索引更新为已实现(已归档)
- 设计约束更新:技术方案约束-012 标注 SQLite 变更、数据存储设计.md 第 9 节变更预告
- 需求池说明.md 新增「归档与转正规范」;迭代记录说明.md 新增「实现经验沉淀」
- 验收标准修正 db 文件名笔误(one-divine-lot.db → store.db)
2026-09-01 18:04:28 +08:00

2.8 KiB
Raw Blame History

验收标准:06-数据存储SQLiteJSON → SQLite

验收标准线

  1. 存储介质切换:数据落 SQLitestore.db),不再生成/更新 store.json / store.market.json / store.schema.json(迁移前备份除外);
  2. 两表结构strategy_holdings + market_quotes_cache 两表存在且结构符合技术实现方案(strategy_holdings 持仓生命周期表:holding_id 自增 + strategy_id/code/shares/created_at/closed_atmarket_quotes_cache 仅 last_price/last_close 两列,无 JSON 列);
  3. 持仓生命周期正确openHolding/addShares/reduceShares/closeHolding 操作正确 —— 建仓生成 holding_id+created_at、加/减仓更新当前持仓 shares、清仓 closed_at 置位转历史;同策略同股票仅一笔当前持仓(部分唯一索引);删除策略/一键清零改为软关闭(历史保留);
  4. 行情不回归:行情缓存查询/写回不变 —— 启动首屏有价(从 SQLite 加载)、盘中防抖写回、三级命中(内存→SQLite→REST 补拉)行为一致;
  5. 自动迁移正确:旧 JSONstore.json / store.market.json / 旧 allocations.json 若存在)→ SQLite 数据一致(份额逐条核对、行情快照逐条核对),迁移前备份文件(*.json.bak)留存;
  6. 幂等:重复启动不重复迁移(SQLite 有数据即跳过);迁移失败不破坏原 JSON;
  7. JSON 废弃:迁移成功后 store.json / store.market.json 不再读写(旧文件保留为备份,新数据只写 SQLite);
  8. 策略定义位置:策略(id/name/visible/order)仍存 DSH settings,设置页交互不变;
  9. 不回归:持仓/策略/行情/连接配置/交易记录等现有功能正常;
  10. 测试隔离:回归测试在独立数据目录(ODL_TEST_DATA_DIR)执行,真实数据目录无写操作(技术约束-011)。

验收方法

  • 独立数据目录(ODL_TEST_DATA_DIR)构造旧 JSON 数据(store.json / store.market.json)→ 启动插件 → 确认自动迁移完成、SQLite 数据与 JSON 一致、备份文件留存;
  • 反复重启确认幂等(不重复迁移、数据不丢);
  • 通过 API 验证份额 CRUD 与行情读写行为与改造前一致(对照迭代 04/05 回归);
  • 手动核对真实数据目录:迁移后 store.json / store.market.json 不再更新,store.db 为数据源;
  • 回归:全部持仓 / 策略 / 行情 / QMT 连接配置 / 交易记录正常。

验收目标

  • 存储引擎替换闭环:JSON → SQLite(迁移正确 + 幂等 + 备份),对外行为零变化;
  • 为复杂查询/多数据集统一存储铺路(strategy_holdings 持仓生命周期表 + market_quotes_cache 就绪,holding_id 可作为 trades 关联锚点,trades 表 R-007 再建);
  • 设计约束同步落地:技术约束-012 与数据存储设计.md 更新为 SQLite 设计。