dd98b4d45b
- 新增 02-计划/计划-数据存储SQLite.md(PLAN-007) - 新增 04-迭代记录/06-数据存储SQLite/ 五份文档(迭代目标/技术实现方案/验收标准/UI交互调用分析/迭代复盘) - 归档 R-008 至 已完成/(含归档头 + 讨论记录索引),索引更新为已实现(已归档) - 设计约束更新:技术方案约束-012 标注 SQLite 变更、数据存储设计.md 第 9 节变更预告 - 需求池说明.md 新增「归档与转正规范」;迭代记录说明.md 新增「实现经验沉淀」 - 验收标准修正 db 文件名笔误(one-divine-lot.db → store.db)
28 lines
2.5 KiB
Markdown
28 lines
2.5 KiB
Markdown
# 迭代目标:06-数据存储SQLite(JSON → SQLite 存储引擎替换)
|
||
|
||
## 目标
|
||
|
||
将神之一手的数据存储从 JSON data store(store.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-01,D1-D8 全部确认);不新增其他功能域;
|
||
- 要解决的问题:JSON 全量读写无法支撑复杂查询/筛选(按 code/时间/策略),且未来交易记录/复盘等多数据集统一存储需要数据库底座(目标-003/005/006);
|
||
- 引用需求:**R-008(已定稿,2026-09-01)**;
|
||
- 实现方式:node:sqlite(Node ≥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.1,node:sqlite 可用(DatabaseSync,内置 SQLite 3.51.3),标记 Experimental;better-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)正确,删除策略/一键清零后历史保留。
|