docs(结构约束同步): 活动文档路径对齐新目录结构
归类重构(技术约束-016)落地后同步活动文档旧路径: - 数据存储设计.md: 三处对应实现表 12 处 src/component/* → storage/position/market/trades - R-013 / PLAN-012 / 迭代11技术实现方案: SqliteStore/PositionManager 路径更新 - 迭代11程序结构设计: 补后续动作记录(历史档案按追加式原则不改写)
This commit is contained in:
@@ -31,7 +31,7 @@
|
|||||||
```
|
```
|
||||||
src/
|
src/
|
||||||
├── settings.js # strategySchema 扩展 configSchema + 归一化
|
├── settings.js # strategySchema 扩展 configSchema + 归一化
|
||||||
├── component/SqliteStore.js # _ensureHoldingValuesColumn + readValues/writeValues
|
├── storage/SqliteStore.js # _ensureHoldingValuesColumn + readValues/writeValues
|
||||||
├── api/strategies.js # strategy-positions 附加 values + holdings/values-update 端点
|
├── api/strategies.js # strategy-positions 附加 values + holdings/values-update 端点
|
||||||
├── client/views/SettingsSection.jsx # 「策略分组」子 tab 策略行展开配置字段
|
├── client/views/SettingsSection.jsx # 「策略分组」子 tab 策略行展开配置字段
|
||||||
└── client/views/StrategyTab.jsx # 持仓行展开区「自定义字段」编辑
|
└── client/views/StrategyTab.jsx # 持仓行展开区「自定义字段」编辑
|
||||||
@@ -55,4 +55,4 @@ scripts/
|
|||||||
- 同策略多行各有各的值;不同策略字段集互不影响;
|
- 同策略多行各有各的值;不同策略字段集互不影响;
|
||||||
- 旧策略(无 configSchema)持仓行不出现字段区,现有操作(加仓/减仓/清仓/展开交易记录)不受影响;
|
- 旧策略(无 configSchema)持仓行不出现字段区,现有操作(加仓/减仓/清仓/展开交易记录)不受影响;
|
||||||
- 服务端校验生效:数字填非数字、枚举填选项外拒绝并提示;
|
- 服务端校验生效:数字填非数字、枚举填选项外拒绝并提示;
|
||||||
- typecheck + build 通过;回归脚本全绿。
|
- typecheck + build 通过;回归脚本全绿。
|
||||||
+12
-12
@@ -135,10 +135,10 @@
|
|||||||
|
|
||||||
| 模块 | 职责 | 文件 |
|
| 模块 | 职责 | 文件 |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| DataStore | 份额分配 + 行情持久化读写、迁移、schema | src/component/DataStore.js |
|
| DataStore | 份额分配 + 行情持久化读写、迁移、schema | src/storage/DataStore.js |
|
||||||
| PositionManager | 份额业务逻辑(依赖 DataStore) | src/component/PositionManager.js |
|
| PositionManager | 份额业务逻辑(依赖 DataStore) | src/position/PositionManager.js |
|
||||||
| MarketDataHub | 行情缓存(内存 + 磁盘持久化 + 查询) | src/component/MarketDataHub.js |
|
| MarketDataHub | 行情缓存(内存 + 磁盘持久化 + 查询) | src/market/MarketDataHub.js |
|
||||||
| MarketFeed | 行情获取(WS + REST 定时刷新 + 启动 prime) | src/component/MarketFeed.js |
|
| MarketFeed | 行情获取(WS + REST 定时刷新 + 启动 prime) | src/market/MarketFeed.js |
|
||||||
|
|
||||||
## 8. 约束条目(引用)
|
## 8. 约束条目(引用)
|
||||||
|
|
||||||
@@ -254,11 +254,11 @@ CREATE TABLE IF NOT EXISTS market_quotes_cache (
|
|||||||
|
|
||||||
| 模块 | 职责 | 文件 |
|
| 模块 | 职责 | 文件 |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| SqliteStore | SQLite 存储层封装(node:sqlite:init/迁移/持仓生命周期/行情读写/close) | src/component/SqliteStore.js |
|
| SqliteStore | SQLite 存储层封装(node:sqlite:init/迁移/持仓生命周期/行情读写/close) | src/storage/SqliteStore.js |
|
||||||
| DataStore | 持仓 + 行情持久化(委托 SqliteStore,对外 API 升级为生命周期语义) | src/component/DataStore.js |
|
| DataStore | 持仓 + 行情持久化(委托 SqliteStore,对外 API 升级为生命周期语义) | src/storage/DataStore.js |
|
||||||
| PositionManager | 份额业务(适配单票生命周期:openHolding/addShares/reduceShares/closeHolding) | src/component/PositionManager.js |
|
| PositionManager | 份额业务(适配单票生命周期:openHolding/addShares/reduceShares/closeHolding) | src/position/PositionManager.js |
|
||||||
| MarketDataHub | 行情缓存(内存 + SQLite 持久化 + 查询) | src/component/MarketDataHub.js |
|
| MarketDataHub | 行情缓存(内存 + SQLite 持久化 + 查询) | src/market/MarketDataHub.js |
|
||||||
| MarketFeed | 行情获取(WS + REST 定时刷新 + 启动 prime) | src/component/MarketFeed.js |
|
| MarketFeed | 行情获取(WS + REST 定时刷新 + 启动 prime) | src/market/MarketFeed.js |
|
||||||
| migrate 脚本 | 一次性迁移脚本 | scripts/migrate-json-to-sqlite.mjs |
|
| migrate 脚本 | 一次性迁移脚本 | scripts/migrate-json-to-sqlite.mjs |
|
||||||
|
|
||||||
## 10. 交易记录存储设计(R-009 落实,2026-09-01 迭代 07 实施)
|
## 10. 交易记录存储设计(R-009 落实,2026-09-01 迭代 07 实施)
|
||||||
@@ -346,9 +346,9 @@ CREATE INDEX IF NOT EXISTS idx_trade_fills_date ON trade_fills (trade_date);
|
|||||||
|
|
||||||
| 模块 | 职责 | 文件 |
|
| 模块 | 职责 | 文件 |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| SqliteStore | +trade_orders/trade_fills 建表 + 交易 UPSERT/历史查询 + 策略归属推导 | src/component/SqliteStore.js |
|
| SqliteStore | +trade_orders/trade_fills 建表 + 交易 UPSERT/历史查询 + 策略归属推导 | src/storage/SqliteStore.js |
|
||||||
| DataStore | +交易记录方法(upsertTradeOrders/upsertTradeFills/queryTradeHistory) | src/component/DataStore.js |
|
| DataStore | +交易记录方法(upsertTradeOrders/upsertTradeFills/queryTradeHistory) | src/storage/DataStore.js |
|
||||||
| TradeSync | 服务端定时同步(启动预热 + 60s + UPSERT 幂等) | src/component/TradeSync.js |
|
| TradeSync | 服务端定时同步(启动预热 + 60s + UPSERT 幂等) | src/trades/TradeSync.js |
|
||||||
| api/trades.js | +trades/history 端点 | src/api/trades.js |
|
| api/trades.js | +trades/history 端点 | src/api/trades.js |
|
||||||
|
|
||||||
## 11. 约束条目(引用)
|
## 11. 约束条目(引用)
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ strategies: z.array(z.object({
|
|||||||
- addStrategy 返回值默认带 configSchema: [];renameStrategy / updateStrategies 整表更新天然携带;
|
- addStrategy 返回值默认带 configSchema: [];renameStrategy / updateStrategies 整表更新天然携带;
|
||||||
- 兼容:settings 旧数据({id,name})经 schemastery default/union 归一化,无迁移脚本。
|
- 兼容:settings 旧数据({id,name})经 schemastery default/union 归一化,无迁移脚本。
|
||||||
|
|
||||||
### 1.2 strategy_holdings 新增 values 列 + 读写(src/component/SqliteStore.js)
|
### 1.2 strategy_holdings 新增 values 列 + 读写(src/storage/SqliteStore.js)
|
||||||
|
|
||||||
```js
|
```js
|
||||||
// init() 内补列(幂等,沿用 _ensureTradeAttributionColumns 模式;只读连接容忍)
|
// init() 内补列(幂等,沿用 _ensureTradeAttributionColumns 模式;只读连接容忍)
|
||||||
@@ -52,7 +52,7 @@ case 'holdings/values-update':
|
|||||||
```
|
```
|
||||||
|
|
||||||
```js
|
```js
|
||||||
// PositionManager.updateHoldingValues(holdingId, values):
|
// src/position/PositionManager.js —— updateHoldingValues(holdingId, values):
|
||||||
// 1) 定位 holdings 行(须存在且当前持仓 closed_at IS NULL;否则 404)
|
// 1) 定位 holdings 行(须存在且当前持仓 closed_at IS NULL;否则 404)
|
||||||
// 2) 服务端校验(按所属策略 configSchema):
|
// 2) 服务端校验(按所属策略 configSchema):
|
||||||
// number → Number.isFinite(Number(v));enum → enum.includes(v);boolean → typeof v === 'boolean'
|
// number → Number.isFinite(Number(v));enum → enum.includes(v);boolean → typeof v === 'boolean'
|
||||||
@@ -86,4 +86,4 @@ case 'holdings/values-update':
|
|||||||
## 6. 验证
|
## 6. 验证
|
||||||
|
|
||||||
- build + typecheck 通过;
|
- build + typecheck 通过;
|
||||||
- 老师人工验收(见验收标准)。
|
- 老师人工验收(见验收标准)。
|
||||||
@@ -64,3 +64,12 @@ src/client/views/SettingsSection.jsx # 「策略分组」策略行展开配置
|
|||||||
src/client/views/StrategyTab.jsx # 持仓行展开区「自定义字段」编辑
|
src/client/views/StrategyTab.jsx # 持仓行展开区「自定义字段」编辑
|
||||||
scripts/test-r013-custom-fields.mjs # 回归脚本(独立数据目录)
|
scripts/test-r013-custom-fields.mjs # 回归脚本(独立数据目录)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## 后续动作(2026-09-02 结构约束对齐)
|
||||||
|
|
||||||
|
归类重构落地后,将活动文档中的旧路径引用同步到新结构(历史档案按追加式原则不改写):
|
||||||
|
- docs/03-设计约束/数据存储设计.md:三处「对应实现」表 12 处 src/component/* → 新域目录(storage/position/market/trades);
|
||||||
|
- docs/05-需求池/R-013.md:涉及改动面 SqliteStore → src/storage/;
|
||||||
|
- docs/02-计划/计划-策略自定义字段配置.md:文件树 → storage/SqliteStore.js;
|
||||||
|
- 本迭代技术实现方案:1.2 节标题路径 + §2 PositionManager 路径标注 → 新目录;
|
||||||
|
- 保留不改:迭代 04 说明/复盘、R-008 归档、旧计划中的 component/ 描述(历史事实)。
|
||||||
|
|||||||
@@ -177,7 +177,7 @@ function validateField(f, v) {
|
|||||||
## 涉及改动面(技术方案,定稿)
|
## 涉及改动面(技术方案,定稿)
|
||||||
|
|
||||||
1. **src/settings.js**:strategySchema 的 strategies 项扩展 configSchema(schemastery array of object,type union text|number|boolean|enum);读取归一化(旧项缺省 []);strategies/update 沿用整表更新语义。
|
1. **src/settings.js**:strategySchema 的 strategies 项扩展 configSchema(schemastery array of object,type union text|number|boolean|enum);读取归一化(旧项缺省 []);strategies/update 沿用整表更新语义。
|
||||||
2. **src/component/SqliteStore.js**:init() 增加 _ensureHoldingValuesColumn(PRAGMA table_info → ALTER,幂等,只读容忍同 trade_orders 先例);openHolding / addShares / reduceShares / closeHolding 保持既有列行为(values 不随份额操作变动);新增 readValues(holdingId) / writeValues(holdingId, values)。
|
2. **src/storage/SqliteStore.js**:init() 增加 _ensureHoldingValuesColumn(PRAGMA table_info → ALTER,幂等,只读容忍同 trade_orders 先例);openHolding / addShares / reduceShares / closeHolding 保持既有列行为(values 不随份额操作变动);新增 readValues(holdingId) / writeValues(holdingId, values)。
|
||||||
3. **src/api/strategies.js**:strategy-positions 返回项附加 values;新增端点 holdings/values-update {holdingId, values} 写回;strategies/update 已可携带 configSchema(整表更新天然支持)。
|
3. **src/api/strategies.js**:strategy-positions 返回项附加 values;新增端点 holdings/values-update {holdingId, values} 写回;strategies/update 已可携带 configSchema(整表更新天然支持)。
|
||||||
4. **src/client/views/SettingsSection.jsx**:「策略分组」子 tab 策略行加展开手柄:展开区 = 字段列表(label/key/type/enum/def)+ 添加/删除/编辑字段表单;保存走 strategies/update。
|
4. **src/client/views/SettingsSection.jsx**:「策略分组」子 tab 策略行加展开手柄:展开区 = 字段列表(label/key/type/enum/def)+ 添加/删除/编辑字段表单;保存走 strategies/update。
|
||||||
5. **src/client/views/StrategyTab.jsx**:持仓行展开区(R-010 基础)增加「自定义字段」区块:按该策略 configSchema 渲染输入控件(文本/数字/布尔/枚举),值来自该行 values,编辑保存调 values-update;行内表格可选加字段列。
|
5. **src/client/views/StrategyTab.jsx**:持仓行展开区(R-010 基础)增加「自定义字段」区块:按该策略 configSchema 渲染输入控件(文本/数字/布尔/枚举),值来自该行 values,编辑保存调 values-update;行内表格可选加字段列。
|
||||||
|
|||||||
Reference in New Issue
Block a user