Files
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.5 KiB
Raw Permalink Blame History

迭代目标:06-数据存储SQLiteJSON → SQLite 存储引擎替换)

目标

将神之一手的数据存储从 JSON data storestore.json / store.market.json / store.schema.json)升级为 SQLite 数据库node:sqlite),仅存储引擎替换、对外行为不变:引入 strategy_holdings(持仓生命周期表)+ market_quotes_cache 两表,存储层升级为单票持仓生命周期(openHolding/addShares/reduceShares/closeHolding),策略定义仍存 DSH settings,一次性迁移 + 启动自动迁移(幂等),JSON 迁移后废弃(迁移前自动备份)。

目标描述

  • 范围:R-008(已定稿 2026-09-01D1-D8 全部确认);不新增其他功能域;
  • 要解决的问题:JSON 全量读写无法支撑复杂查询/筛选(按 code/时间/策略),且未来交易记录/复盘等多数据集统一存储需要数据库底座(目标-003/005/006);
  • 引用需求:R-008(已定稿,2026-09-01
  • 实现方式:node:sqliteNode ≥22.5,实测 22.23.1 可用)+ SqliteStore 封装隔离 experimental 风险 + 启动自动迁移(幂等)+ JSON 废弃(D1-D8);
  • 关联设计约束:技术约束-012(变更)、数据存储设计.md(第 9 节变更预告落实)。

目标讨论过程

  • 2026-09-01 老师提出需求:准备上 SQLite,现在基于 JSON 文件(T-008 入池);
  • 2026-09-01 第一轮讨论定稿(D1-D8):动机=复杂查询+未来铺路;node:sqlite(实测可用);仅引擎替换;strategy_holdings+market_quotes_cache 两表(持仓生命周期表 + 行情极简两列缓存表);存储层单票生命周期操作;策略仍存 settings;一次性迁移脚本+启动自动迁移;JSON 迁移后废弃;P1;
  • 2026-09-01 实测验证:本机 Node v22.23.1node:sqlite 可用(DatabaseSync,内置 SQLite 3.51.3),标记 Experimentalbetter-sqlite3 需编译(倾向稳妥+零依赖分发 → 选 node:sqlite);
  • 2026-09-01 三要素核对通过,转正为 R-008,进入迭代 06。

对老师的配合需求

  • 确认迭代 06 计划与验收标准(PLAN-007);
  • 构建安装后重启 DSH 配合验证(首次启动自动迁移真实数据);
  • 验证迁移结果:store.json/store.market.json 数据正确落 SQLite(备份文件留存),份额分配/行情显示不回归;
  • 验证持仓生命周期:加仓/减仓/清仓操作后当前持仓与历史(holding_id/created_at/closed_at)正确,删除策略/一键清零后历史保留。