迭代22+23: 策略tab静态化 + 计算字段(数字/判定型)+ 网格超市信号字段
- R-027 静态化:策略恒为内置两项(不可增删改名,保留显隐/排序);设置页移除「策略分组」; 字段配置入口迁到策略 tab 内「列设置」旁(FieldConfigDialog + schema-update 单策略写入) - R-026 计算字段:自写公式引擎(中文变量、四则/括号/round·abs·min·max、缺值短路→—)+ 变量目录(行情/合约/持仓/自定义字段)+ strategy-positions 逐行现算(只读内存缓存,不落库、列只读) - R-028 判定型:比较运算 + and/or + inferResultKind + 结果类型一致性校验 + 判定列 ✓/— 渲染; 网格超市落地 可下空单=涨停价>基准值+网格大小、可下多单=跌停价<基准值-网格大小 - 变量选择改标签平铺(老师反馈);公式手册 docs/99-其他材料/计算字段公式说明.md - 约束同步:产品约束-002/003/004/009/013/014、技术约束-014/015/022/023/024、UI约束-002/003/005/008 - 回归:新增 test-r026/test-r027,更新 r011/r013/r017,17 个脚本全绿;typecheck/build 通过
This commit is contained in:
@@ -0,0 +1,127 @@
|
||||
# 需求:R-026 策略计算字段(公式字段)· 已定稿
|
||||
|
||||
> 登记:2026-09-10 | 来源:老师指令(2026-09-10 功能讨论「策略组字段配置优化」)| 状态:**已定稿(2026-09-10 老师确认)**
|
||||
> 归属:**22-策略计算字段与策略tab静态化 · 第二阶段**(PLAN-019)| 实现状态:**已实现(2026-09-10 完成,typecheck/build/17 个回归脚本全绿),待老师人工验收**
|
||||
> **入口条款修订(2026-09-10,R-027 取代)**:字段配置入口由「设置页 → 策略分组 → 策略行展开」**迁至「策略 tab 内、列设置旁的『字段配置』弹层」**;本文档 §9 配置 UI 的入口位置随 R-027 变更,字段模型 / 公式语义 / 只读列 / 列机制均不变。
|
||||
> 前身:草稿 T-010(已转正,草稿文件已清理)
|
||||
|
||||
## 诉求(老师,2026-09-10)
|
||||
|
||||
> 策略组字段配置优化:添加的字段,目前仅是支持用户指定值;接下来添加新的字段类型,就是**可以计算**,
|
||||
> 目标是让用户**写一个公式**,公式中支持来自几个**服务端缓存的数据集**,然后通过计算得出结果。
|
||||
|
||||
## 背景(现状 R-013/迭代 11)
|
||||
|
||||
- 策略字段定义 = `settings.strategies[].configSchema`:`{ key, label, type(text|number|boolean|enum), enum[], def, unit }`;
|
||||
- 字段值 = `strategy_holdings.values` JSON 列(**用户手工填写**,单元格内联编辑);
|
||||
- 展示 = 持仓表列化(列显隐/顺序由 `strategyColumns` 每策略独立配置);
|
||||
- 本次扩展:新增**第五种字段类型「计算(formula)」**——值不是填的,是**算的**。
|
||||
|
||||
## 定稿结论(2026-09-10 老师逐项确认)
|
||||
|
||||
### 1. 字段类型与存储语义
|
||||
|
||||
- `configSchema.type` 增加 `'formula'`;新增 `formula` 表达式串字段(与 `unit` 同级,随策略定义存 settings);
|
||||
- **计算字段不落库**:不读写 `strategy_holdings.values`,每次读 `strategy-positions` 时**逐行实时现算**;
|
||||
- 表格内**只读**(点击不进内联编辑);列配置兼容零改动(formula 字段自动进列集,新增默认追加末尾)。
|
||||
|
||||
### 2. 公式可引用的数据集(首批 = 行情/合约 + 持仓账本 + 本行自定义字段)
|
||||
|
||||
| 数据集 | 来源(服务端缓存) | 可引用字段 | 刷新 |
|
||||
|---|---|---|---|
|
||||
| 行情盘口 | QuoteHub.quotes(内存) | 现价 / 昨收 / 今开 / 最高 / 最低 / 成交量 / 成交额 | 5s REST |
|
||||
| 合约信息 | QuoteHub.instruments(内存) | 涨停价 / 跌停价 / 昨收 | 按交易日 |
|
||||
| 持仓账本 | SQLite strategy_holdings | 策略份额 / 成本价 / 最后一笔成交价 | 交易关联驱动 |
|
||||
| 本行自定义字段值 | strategy_holdings.values | 本行手填字段(如网格间距、目标价) | 内联编辑 |
|
||||
|
||||
**后补(本期不做)**:QMT 账户域持仓(全账户 volume/可用/市值,跨策略视角)、交易记录聚合(当日已成交量/买卖笔数)——用例尚不明确。
|
||||
|
||||
### 3. 变量命名:**中文变量名**
|
||||
|
||||
- 公式形如 `(现价 - 成本价) × 份额`,可读性优先;
|
||||
- 配置时校验**变量名唯一**;配置 UI 提供**变量选择器**(按数据集分组,点击插入);
|
||||
- 引擎需支持中文标识符(自写解析器,见 §4)。
|
||||
|
||||
### 4. 公式引擎:自写小型表达式解析器(零依赖)
|
||||
|
||||
- 能力:四则运算 + 括号 + 常见函数(round / abs / min / max);
|
||||
- 选型理由:中文标识符需自定义词法,第三方库(expr-eval/mathjs/jexl)均不支持中文变量;该层未来即 T-006 数据池的表达式层,值得自有。
|
||||
|
||||
### 5. 计算位置与粒度:**服务端计算 + 仅行级**
|
||||
|
||||
- 服务端在 `strategy-positions` 返回时逐行现算随行带回(行情单一入口 QuoteHub 在服务端);前端仅渲染;
|
||||
- 行级上下文 = 本行行情 + 本行持仓账本 + 本行自定义字段值 → 一个结果;
|
||||
- **策略级聚合(跨行求和,如本策略总盈亏)留二期**。
|
||||
|
||||
### 6. 循环引用边界:公式**只允许引用非公式字段**
|
||||
|
||||
- 变量目录直接排除 formula 字段 → 不存在循环依赖(不做检测与拓扑排序)。
|
||||
|
||||
### 7. 结果类型与格式
|
||||
|
||||
- 首批结果**只做数字**(布尔型公式后续再议);
|
||||
- 复用现有 `unit`(展示拼在值后);新增**小数位**配置(默认 2 位)。
|
||||
|
||||
### 8. 缺数据与错误处理
|
||||
|
||||
- **保存时校验**:语法 + 变量存在性(服务端编译试算一次),非法公式直接拒绝保存并提示;
|
||||
- **运行期**:缺行情 / 除零 / 无法计算 → 该单元格显示 `—`(不显示 NaN、不报错、不炸整表)。
|
||||
|
||||
### 9. 配置 UI(设置页「策略分组」字段表单)
|
||||
|
||||
- 类型下拉增加「计算」→ 出现公式输入框 + 变量选择器(分组:行情 / 合约 / 持仓 / 自定义字段)+ 变量速查;
|
||||
- 加分项:**试算预览**(取一行真实持仓数据现场算出结果)。
|
||||
|
||||
### 10. 历史持仓行(已清仓)
|
||||
|
||||
- 历史 tab 的公式列统一显示 `—`:清仓行无「现价」语义,**不做历史时点计算**(属另一需求,不混入本期)。
|
||||
|
||||
### 11. 与服务端数据池(T-006)的关系
|
||||
|
||||
- 本期先落**轻量变量目录**(服务端声明:数据集 → 字段清单 → 取数函数),公式引擎跑在目录之上;
|
||||
- 该目录即 T-006「数据池中间层」的第一块砖,**不一次性建完整数据池**(避免过度设计)。
|
||||
|
||||
## 典型用例(老师视角验收样例)
|
||||
|
||||
| 字段 | 公式 |
|
||||
|---|---|
|
||||
| 浮动盈亏 | `(现价 - 成本价) × 份额` |
|
||||
| 盈亏比例 | `(现价 ÷ 成本价 - 1) × 100` |
|
||||
| 距涨停 | `(涨停价 - 现价) ÷ 现价 × 100` |
|
||||
| 网格占用(手填+计算组合) | `现价 × 份额 × 网格间距` |
|
||||
|
||||
## 决策记录
|
||||
|
||||
| 项 | 结论 | 讨论 |
|
||||
|---|---|---|
|
||||
| 字段类型 | configSchema.type 加 `formula` + `formula` 串 | 老师指令(新字段类型) |
|
||||
| 存储语义 | **不落库**,读接口时逐行现算 | 「计算」的本质;values 列不参与 |
|
||||
| 数据集范围 | 首批 行情+合约 / 持仓账本 / 本行自定义字段值 | 选择题确认(1+2+3);QMT账户域、交易聚合后补 |
|
||||
| 变量命名 | **中文变量名** + 选择器插入 | 选择题确认;配置时校验唯一 |
|
||||
| 计算粒度 | **仅行级**;策略级聚合二期 | 选择题确认 |
|
||||
| 计算位置 | 服务端(strategy-positions 现算随行返回) | 老师方向「引用服务端缓存数据集」;行情单一入口在服务端 |
|
||||
| 公式引擎 | 自写小型解析器(零依赖,支持中文标识符) | 第三方库不支持中文变量;未来即数据池表达式层 |
|
||||
| 循环引用 | 只允许引用非公式字段 | 目录层排除,无循环问题 |
|
||||
| 结果类型 | 数字 + unit + 小数位(默认 2) | 布尔型后议 |
|
||||
| 错误处理 | 保存校验拒绝 + 运行期显示 `—` | 不炸整表 |
|
||||
| 配置 UI | 公式输入 + 变量选择器(+试算预览) | 计算字段只读不内联编辑 |
|
||||
| 历史行 | 公式列显示 `—` | 不做历史时点计算 |
|
||||
| 数据池关系 | 轻量变量目录先行(T-006 第一块砖) | 避免一次性建完整中间层 |
|
||||
|
||||
## 关联
|
||||
|
||||
- 上游:R-013(自定义字段配置,字段类型与列机制)/ 迭代 11(列配置 strategyColumns);
|
||||
- 数据来源:R-015(QuoteHub 盘口内存快照)、R-014(PositionSync 账户域)、R-010(最后一笔成交价)、R-018(份额账本);
|
||||
- 延展:T-006(数据池中间层草稿)——本需求的变量目录为其起点;
|
||||
- 约束条目待实施时补充(拟:产品功能约束 / 技术方案约束 / UI交互约束 各一条,沿用 R-013 惯例)。
|
||||
|
||||
## 讨论过程
|
||||
|
||||
- 2026-09-10 老师提出功能方向(策略组字段配置优化 → 可计算公式字段);
|
||||
- AI 摸清 R-013 现状 + 盘活服务端缓存数据集清单,提出 Q1-Q10 设计问题清单(各附建议);
|
||||
- 老师「定」:Q4-Q10 按 AI 建议;
|
||||
- 选择题三项确认:Q1 数据集 1+2+3、Q2 中文变量名、Q3 仅行级计算;
|
||||
- 转正定稿:T-010 草稿 → R-026(草稿文件已清理,索引同步);
|
||||
- 2026-09-10 迭代 22 交互设计过审:老师逐项拍板 D-1~D-7(全采纳 AI 建议)→ `docs/04-迭代记录/22-策略计算字段与策略tab静态化/UI交互设计.md` 定稿;
|
||||
- 2026-09-10 老师提出重构想法(策略 tab 静态化 + 字段配置入口迁移)→ 定稿 **R-027**:本需求的**字段配置入口**随之从设置页迁到「策略 tab 内、列设置旁的『字段配置』弹层」(迭代 22 调整为「第一阶段=重构、第二阶段=本需求」);
|
||||
下一步:技术实现方案 + 验收标准(本轮按老师指令未做技术方案与编码)。
|
||||
@@ -0,0 +1,85 @@
|
||||
# 需求:R-027 策略 tab 静态化 + 字段配置入口迁移 · 已定稿
|
||||
|
||||
> 登记:2026-09-10 | 来源:老师指令(2026-09-10 功能讨论「重构想法」)| 状态:**已定稿(2026-09-10 老师逐项确认)**
|
||||
> 归属:**22-策略计算字段与策略tab静态化 · 第一阶段**(PLAN-019)| 实现状态:**已实现(2026-09-10 完成,typecheck/build/17 个回归脚本全绿),待老师人工验收**
|
||||
> 前身:草稿 T-011(已转正,草稿文件已清理)
|
||||
> **取代**:R-003(策略 CRUD)、R-011(Tab 统一管理中的「策略条目动态化」部分)、R-013(字段定义入口在设置页部分)
|
||||
|
||||
## 诉求(老师,2026-09-10)
|
||||
|
||||
> 1. 策略 tab 我不想做成动态可增减修改的了,改成静态的,和全部持仓、交易记录这些一样,都是插件内置的 tab;
|
||||
> 2. 这两个策略 tab 原有的字段编辑功能,切换到主窗口的策略 tab 下面,列设置旁边,作为统一的字段配置管理。
|
||||
|
||||
## 现状核实(2026-09-10 实机,代码 + settings.yaml + store.db)
|
||||
|
||||
- 策略仅两个内置:`grid-supermarket`(网格超市,5 字段:网格上边界/下边界/基准值/网格大小/网格交易量)、`manual-t`(手动做T,1 字段:T仓成本价);
|
||||
- `store.db`:`strategy_holdings` 13 / 3 行,`trade_orders`、`trade_order_attributions` 均只涉及这两个策略 → **无自建策略,零数据迁移风险**;
|
||||
- `settings.tabs` 现状:网格超市(0) → 手动做T(1) → 交易记录(2) → 关注列表(3,隐藏) → 全部持仓(4,隐藏);
|
||||
- 现状实现:`addStrategy/removeStrategy` 联动 `appendStrategyTab/removeStrategyTab`(R-011);字段编辑 = 设置页「策略分组」子 tab 内 `StrategyFieldsEditor`,保存走 `strategies/update` 整表。
|
||||
|
||||
## 定稿结论
|
||||
|
||||
### 1. 策略 tab 静态化(Q1)
|
||||
|
||||
- 策略**集合与名称固定**(插件内置两项,语义等同 `BUILTIN_TABS`):**不可新增、不可删除、不可重命名**;
|
||||
- **保留**「Tab 设置」里的**显隐开关 + 拖拽排序**(策略 tab 与内置 tab 同权混排)——老师现有偏好(策略 tab 置顶、全部持仓/关注列表隐藏)继续有效;
|
||||
- 策略 CRUD 能力与 `addStrategy / removeStrategy / appendStrategyTab / removeStrategyTab / generateStrategyId`(拼音 slug 一整套)**整体退役**。
|
||||
|
||||
### 2. 设置页「策略分组」子 tab 移除(Q2)
|
||||
|
||||
- 设置页收敛为两个子 tab:**Tab 设置 / QMT 连接配置**;
|
||||
- 移除策略「新增 / 重命名 / 删除」入口与删除确认弹窗。
|
||||
|
||||
### 3. 字段配置入口迁移(Q3 + Q4)
|
||||
|
||||
- 入口 = 主窗口**策略 tab 顶部、「列设置」旁的「字段配置」按钮**;每个策略 tab 管理**本策略**字段(符合「字段定义随策略」语义);
|
||||
- 点击打开**独立弹层**:字段列表(展示名 / key / 类型 / 公式或默认值 / 单位 / 操作)+ 添加/编辑/删除字段 + **保存**;
|
||||
- 与「列设置」职责分离:列设置 = 轻量即时持久化(显隐/顺序);字段配置 = 重表单 + 保存按钮;
|
||||
- 字段定义增删 → 表格列自动跟随(沿用 R-013 归一化机制,零改动)。
|
||||
|
||||
### 4. 保存机制(Q5,技术项 AI 定)
|
||||
|
||||
- 新增**单策略字段端点**(拟 `strategies/schema-update { strategyId, configSchema }`):只改本策略字段定义,避开 `strategies/update` 整表覆盖风险;
|
||||
- 保存成功 → Toast + 刷新该策略数据(列与字段同步跟随)。
|
||||
|
||||
### 5. 存储结构简化(Q7,技术项 AI 定,技术方案阶段定形)
|
||||
|
||||
- `strategies` **常量化为插件内置两项**(id/name 常量);
|
||||
- settings 只保留可变部分:**字段定义**(按 strategyId)+ **strategyColumns** 列配置覆盖;
|
||||
- 存量 settings(strategies 数组 + configSchema)读取时**归一化迁移**(不写独立迁移脚本);本次实机无自建策略,无需数据处理。
|
||||
|
||||
### 6. 排期(Q6)
|
||||
|
||||
- **并入迭代 22 作第一阶段**(静态化 + 入口迁移),计算字段(R-026)作**第二阶段**——一次改到位,公式表单直接落在新入口,避免「先按设置页做一遍再整体搬迁」的返工;
|
||||
- 迭代 22 的 `UI交互设计.md` **同步修订**(公式表单移入「字段配置」弹层)。
|
||||
|
||||
## 影响面 / 约束联动
|
||||
|
||||
- **约束修订**(实施时执行并记录):产品约束-002/003/004(标签体系 / 标签自定义 + 显示开关的场景收敛)、产品约束-009(Tab 统一管理中「策略条目动态化」条款)、UI约束-002(设置页子 tab 构成:移除策略分组)、UI约束-003(Tab 设置:策略行不再随 CRUD 增删)、UI约束-005(字段配置 UI 入口迁移);
|
||||
- **历史需求追溯**:R-003(策略 CRUD)→ 被取代退役;R-011(Tab 统一管理)→ 策略条目动态化部分被取代,显隐/排序机制保留;R-013 → 字段模型与列机制保留,**入口条款**被取代。
|
||||
|
||||
## 决策记录
|
||||
|
||||
| 项 | 结论 | 讨论 |
|
||||
|---|---|---|
|
||||
| 静态化程度 | 固定不可增删改名 + **保留**显隐/排序 | Q1(采纳建议 A)|
|
||||
| 设置页「策略分组」 | 整体移除 | Q2(A)|
|
||||
| 入口形态 | 「列设置」旁独立「字段配置」按钮 + 独立弹层 | Q3(A)|
|
||||
| 「统一」范围 | 每个策略 tab 管自己的字段 | Q4(A)|
|
||||
| 保存机制 | 单策略字段端点(AI 定,技术项)| Q5 |
|
||||
| 排期 | 并入迭代 22 第一阶段,一次改到位 | Q6(A)|
|
||||
| 存储结构 | strategies 常量 + settings 存字段/列配置(AI 定,方案阶段定形)| Q7 |
|
||||
|
||||
## 讨论过程
|
||||
|
||||
1. 2026-09-10 老师提出重构想法(策略 tab 静态化 + 字段编辑功能迁到策略 tab 内、列设置旁);
|
||||
2. AI 核实实机现状(settings.yaml 策略与字段、store.db 数据归属、tabs 顺序)→ 结论:仅两个内置策略、无自建策略,**零数据迁移风险**;
|
||||
3. AI 给出影响面分析(tab 体系 / 设置页 / 字段配置 / 约束与历史需求)+ 与迭代 22 的撞位提示(公式表单落在设置页,入口一搬即废)+ 排期建议;
|
||||
4. 老师逐项拍板 Q1~Q4、Q6(全采建议);Q5/Q7 为技术项由 AI 定;
|
||||
5. 转正定稿:T-011 草稿 → R-027(草稿文件已清理,索引同步);迭代 22 结构与交互设计同步修订。
|
||||
|
||||
## 关联
|
||||
|
||||
- 上游:T-011 草稿、实机核实(`settings.yaml` + `store.db`);
|
||||
- 联动:**R-026 / 迭代 22**(入口迁移后,计算字段的公式表单落在「字段配置」弹层内);R-013(字段模型 / 列机制沿用)、R-011(Tab 显隐排序机制沿用);
|
||||
- 取代:R-003、R-011(部分)、R-013(入口条款)。
|
||||
@@ -0,0 +1,54 @@
|
||||
# 需求:R-028 判定型计算字段 + 网格超市「可下空单 / 可下多单」· 已定稿
|
||||
|
||||
> 登记:2026-09-10 | 来源:老师指令(2026-09-10)| 状态:**已定稿(2026-09-10 老师逐项确认 Q1-Q5)**
|
||||
> 归属:**23-计算字段判定型扩展** | 实现状态:**已实现(2026-09-10),待老师人工验收**
|
||||
> 前身:草稿 T-012(已转正,草稿文件已清理)| **能力扩展**:R-026(计算字段,原「首批结果只做数字」)→ 视同修订 产品约束-014
|
||||
|
||||
## 诉求(老师,2026-09-10)
|
||||
|
||||
> 我想给网格超市添加一个计算字段,即当天涨停值 > 当前基准值 + 1 ,即可以下空单;当天跌停值 < 当前基准值 - 1,可以下多单。
|
||||
|
||||
## 现状限制(R-026 能力边界)
|
||||
|
||||
计算字段原**只产出数字**(产品约束-014「首批结果只做数字」),公式能力 = 四则 + 括号 + round/abs/min/max,
|
||||
**没有比较运算** → 上述两条规则无法直接表达为判定列。可用变量已覆盖全部原料
|
||||
(`涨停价`/`跌停价` = QuoteHub 合约信息按交易日;`基准值` = 网格超市手填字段)。
|
||||
|
||||
## 定稿结论(2026-09-10 老师拍板)
|
||||
|
||||
1. **方案 A|判定型计算字段**(Q1):引擎新增比较运算与逻辑组合,字段表单新增「结果类型:数字 / 判定」;
|
||||
2. **判定列显示**(Q2):满足 → `✓ <字段名>`(success 绿);不满足 / 缺值 → `—`(tertiary 灰);
|
||||
3. **支持 and / or 组合**(Q3,含 `&&` / `||` 与全角 `≥ ≤ ≠`);
|
||||
4. **结果类型由字段表单显式声明**(Q4),服务端校验「声明与公式形态一致」(判定=顶层比较/逻辑,数字=其余);
|
||||
5. **阈值引用「网格大小」字段**(Q5):公式写 `涨停价 > 基准值 + 网格大小`(阈值可配;当前各行网格大小=1,与写死 1 等价)。
|
||||
|
||||
**网格超市落地字段(两条)**
|
||||
|
||||
| 展示名 | 类型 | 结果 | 公式 | 单位 |
|
||||
|---|---|---|---|---|
|
||||
| 可下空单 | 计算 | 判定 | `涨停价 > 基准值 + 网格大小` | — |
|
||||
| 可下多单 | 计算 | 判定 | `跌停价 < 基准值 - 网格大小` | — |
|
||||
|
||||
## 可行性验证(2026-09-10,真实持仓 + QMT 合约信息)
|
||||
|
||||
13 只网格超市当前持仓实算:**可下空单 5 只**(积成电子 8.22>8、天海防务 7.9>7、万顺新材 7.73>7、
|
||||
大连热电 8.51>8、华智数媒 9.28>8);**可下多单 2 只**(中国化学 6.68<7、TCL中环 8.2<9);其余 6 只两条均不满足。
|
||||
|
||||
## 决策记录
|
||||
|
||||
| 项 | 结论 | 讨论 |
|
||||
|---|---|---|
|
||||
| 结果形态 | 判定型计算字段(方案 A) | Q1(老师选 A) |
|
||||
| 判定显示 | 满足 `✓ 字段名`(绿)/ 不满足 `—`(灰) | Q2 |
|
||||
| 组合条件 | 支持 and / or | Q3 |
|
||||
| 结果类型 | 表单显式声明,服务端校验一致性 | Q4 |
|
||||
| 阈值 | 引用「网格大小」字段 | Q5 |
|
||||
| 存储/现算 | 结果可为布尔(`computed[key]` 布尔直通);仍不落库 | 沿用 R-026 语义 |
|
||||
| 成本 | 引擎 + 校验 + 表单 + 渲染四处小改;无新增数据通路 | — |
|
||||
|
||||
## 关联
|
||||
|
||||
- 上游:R-026 / 迭代 22(计算字段:引擎、变量目录、现算、只读列);
|
||||
- 修订:产品约束-014(结果类型扩展为 数字 / 判定)、技术约束-022(引擎运算集)、技术约束-024(校验规则)、UI约束-008(判定 UI);
|
||||
- 迭代:23-计算字段判定型扩展(含网格超市两字段落地);
|
||||
- 使用说明(用户手册):`docs/99-其他材料/计算字段公式说明.md`(变量表 / 运算符 / 函数 / 示例 / 报错对照 / 常见问题)。
|
||||
+17
-6
@@ -25,14 +25,22 @@
|
||||
| R-011 | Tab 设置:统一管理所有 tab(内置 + 策略分组混排,显示/隐藏 + 拖动排序) | 设置页「通用设置」升级为「Tab 设置」,统一管理所有会话 tab(系统内置 + 策略分组)的唯一入口:两类混排、**拖动排序**(原生 HTML5 DnD,落点立即持久化)+ **显隐开关**;**任何 tab 均不支持重命名/删除**(策略命名/删除仍在「策略分组」子 tab);顺序/显隐统一为一份数据源(tabs 有序数组,策略行名 join strategies 自动跟随改名),删除策略联动删除对应条目;新增策略追加末尾;老配置自动迁移(旧隐藏策略迁移后显示)。**2026-09-02 定稿(Q1-Q5 确认)并完成(迭代 09 验收通过),已归档至 已完成/R-011.md** | 老师指令(2026-09-02) | P1 | 已定稿 | 2026-09-02 | 09-Tab设置统一管理 | **已实现(已归档)** |
|
||||
| R-012 | UI 适配 DSH 主题(浅色 / 深色 / 跟随系统) | 神之一手 UI 适配 DSH 浅色/深色/跟随系统主题:141 处硬编码色值替换为宿主 `--dsw-*` token,随主题自动切换;不自行维护主题偏好(**暂定跟随系统**);涨跌红涨绿跌 → 宿主 state-error/success;仅色值 token 化不动布局。**2026-09-02 定稿(暂定跟随系统)并完成(迭代 10),已归档至 已完成/R-012.md** | 老师指令(2026-09-02) | P1 | 已定稿 | 2026-09-02 | 10-UI主题适配 | **已实现(已归档)** |
|
||||
| R-013 | 策略自定义字段配置(定义随策略,值落库) | 策略可自定义、可扩展:每个策略在设置页「策略分组」子 tab 配置自定义字段(字段名/类型文本·数字·布尔·枚举/枚举项/单位 unit/默认值,configSchema 随策略定义存 settings);每个持仓行按所属策略的定义存一份键值对值(strategy_holdings 新增 values TEXT(JSON) 列);自定义字段作为持仓表列展示,列显隐/排序每策略独立配置(strategyColumns),单元格点击内联编辑。**2026-09-02 定稿(Q1-Q4 + D6)并完成(迭代 11 验收通过),已归档至 已完成/R-013.md** | 老师指令(2026-09-02) | P1 | 已定稿 | 2026-09-02 | 11-策略自定义字段配置 | **已实现(已归档)** |
|
||||
| R-014 | 持仓内存快照(服务端 10s 定时同步,请求不再穿透 QMT) | 服务端建全量持仓**内存快照**(不落库):PositionSync 启动预热 + 每 10s 全量拉 QMT → 校验 → 整体替换;同步失败保留上次快照(QMT 抖动不再白屏);空快照双重确认(/health + getAsset 账户身份)才接受为真清仓;快照为空读穿透兜底(当场拉一次并回填);**幽灵持仓自动清仓**:QMT 连续 3 轮(约 30s)消失的 code,本地全部策略当前持仓自动转历史(账户身份守卫:accountId 未知跳过、切换重置跳过;部分减持不触发);strategy-positions / unallocated / summary 三个接口改读快照,前端零改动。**2026-09-02 定稿(内存不落库 / 读穿透兜底 / 幽灵自动清仓 / 同步时间不显示,老师逐项拍板),2026-09-02 完成(回归 34/34 + r013 回归 21/21 + typecheck + build 通过),迭代 12 验收待老师人工确认** | 架构梳理讨论引出 + 老师指令(2026-09-02) | P1 | 已定稿 | 2026-09-02 | 12-持仓内存快照 | 已实现(待验收) |
|
||||
| R-015 | 盘口数据内存化(QuoteSync/QuoteHub 统一管理)+ 数据同步指示灯 | QuoteSync(取数:prime + 5s REST 刷新 + 涨停跌停按交易日缓存)/ QuoteHub(存查:内存快照 + watch 集合 + 读穿透 + 价格单一入口)替换 MarketFeed/MarketDataHub(方案 A 替换不包壳);WS 通路移除;market_quotes_cache 表退役 DROP;涨停价/跌停价字段(/data/instrument 按交易日缓存不落库);会话头部新增持仓/盘口同步指示灯(绿/黄/灰 + 悬停详情 + 点击即 syncNow)+ sync-status 端点(吸收临时诊断 market-stats);策略持仓表行情列扩展(涨停/跌停/今开/最高 4 列,默认隐藏)。**2026-09-02 定稿(五项老师逐项拍板),2026-09-02 完成(test-quote-sync 全绿 + 存量回归 34/34、21/21 + typecheck + build),迭代 13 验收待老师人工确认** | 架构演进讨论引出 + 老师指令(2026-09-02) | P1 | 已定稿 | 2026-09-02 | 13-盘口内存快照 | 已实现(待验收) |
|
||||
| R-016 | 策略 tab 历史持仓展示(显示/隐藏已清仓持仓 + 清仓时间范围筛选) | 两个策略 tab(做T/网格超市)title 旁添加:① 显示/隐藏已清仓历史持仓的开关;② 显示历史时默认展示近一周清仓的持仓,并提供 近1个月/近3个月/近半年/近1年 范围选项。背景:卖出清仓后幽灵清仓(R-014)把持仓行转历史,策略 tab 当场少行(2026-09-07 大连热电做T卖出实际发生);历史数据一直在库(strategy_holdings closed_at 非空),只缺展示入口;历史行可复用 R-010 行展开做交易复盘。**2026-09-07 定稿(Q1-Q7 老师拍板:Q2 改判「份额显示 0 就好,不改 closeHolding 语义」,其余按 AI 建议;核心目标=追溯该持仓相关的历史操作)**;历史行复用 R-010 展开做交易复盘;新增 strategy-holdings/history 端点,当前持仓路径零改动。**2026-09-07 二轮补充(Q8-Q9 老师拍板):当天(本地自然日 00:00 起)已清仓的持仓默认显示(range='today' 恒显示层),「历史持仓」开关只控制今天之前的历史(历史持仓关≠当天清仓被藏起);层间按 holdingId 去重,计数不含已清仓行维持;零写路径变更维持**。详见 R-016.md | 老师指令(2026-09-07 优化功能需求讨论) | P1 | 已定稿 | 2026-09-07 | 14-策略tab历史持仓展示 | 已实现(待验收) |
|
||||
| R-017 | 委托归属候选纳入近期清仓持仓 | 交易记录 tab 归属候选只回当前持仓——清仓后当日委托失去下拉锚点无法补关联(R-016 关联观察立项,2026-09-07 大连热电实际发生:盘中归属后被清为未关联,下拉已无做T候选)。**2026-09-07 定稿(老师指令确认方向)**:候选 = 当前持仓 + 近 7 天清仓持仓(closed 标记,选项文本「已清仓」后缀),下拉 value 改 holdingId 键控(同策略多轮不撞值),排序当前在前/清仓按 closed_at DESC;当日数据修复经 set-attribution 通道完成(非固化功能)。**2026-09-08 R-018 取代标注:7 天清仓候选退役(R-018 T2 拍板)**——归属候选改策略级 attribution-targets(迭代 16 实施),本需求「清仓后补关联」痛点根因(幽灵清仓抢先归档)已由数据域分界消除;holdingId 键控/占位安全逻辑保留。详见 R-017.md | 老师指令(2026-09-07) | P1 | 已定稿 | 2026-09-07 | 15-归属候选纳入清仓持仓 | 已实现(被 R-018 语义取代) |
|
||||
| R-014 | 持仓内存快照(服务端 10s 定时同步,请求不再穿透 QMT) | 服务端建全量持仓**内存快照**(不落库):PositionSync 启动预热 + 每 10s 全量拉 QMT → 校验 → 整体替换;同步失败保留上次快照(QMT 抖动不再白屏);空快照双重确认(/health + getAsset 账户身份)才接受为真清仓;快照为空读穿透兜底(当场拉一次并回填);**幽灵持仓自动清仓**:QMT 连续 3 轮(约 30s)消失的 code,本地全部策略当前持仓自动转历史(账户身份守卫:accountId 未知跳过、切换重置跳过;部分减持不触发);strategy-positions / unallocated / summary 三个接口改读快照,前端零改动。**2026-09-02 定稿(内存不落库 / 读穿透兜底 / 幽灵自动清仓 / 同步时间不显示,老师逐项拍板),2026-09-02 完成(回归 34/34 + r013 回归 21/21 + typecheck + build 通过),迭代 12 验收待老师人工确认** | 架构梳理讨论引出 + 老师指令(2026-09-02) | P1 | 已定稿 | 2026-09-02 | 12-持仓内存快照 | **已实现(已归档至 已完成/,2026-09-08 老师归档指令确认验收)** |
|
||||
| R-015 | 盘口数据内存化(QuoteSync/QuoteHub 统一管理)+ 数据同步指示灯 | QuoteSync(取数:prime + 5s REST 刷新 + 涨停跌停按交易日缓存)/ QuoteHub(存查:内存快照 + watch 集合 + 读穿透 + 价格单一入口)替换 MarketFeed/MarketDataHub(方案 A 替换不包壳);WS 通路移除;market_quotes_cache 表退役 DROP;涨停价/跌停价字段(/data/instrument 按交易日缓存不落库);会话头部新增持仓/盘口同步指示灯(绿/黄/灰 + 悬停详情 + 点击即 syncNow)+ sync-status 端点(吸收临时诊断 market-stats);策略持仓表行情列扩展(涨停/跌停/今开/最高 4 列,默认隐藏)。**2026-09-02 定稿(五项老师逐项拍板),2026-09-02 完成(test-quote-sync 全绿 + 存量回归 34/34、21/21 + typecheck + build),迭代 13 验收待老师人工确认** | 架构演进讨论引出 + 老师指令(2026-09-02) | P1 | 已定稿 | 2026-09-02 | 13-盘口内存快照 | **已实现(已归档至 已完成/,2026-09-08 老师归档指令确认验收)** |
|
||||
| R-016 | 策略 tab 历史持仓展示(显示/隐藏已清仓持仓 + 清仓时间范围筛选) | 两个策略 tab(做T/网格超市)title 旁添加:① 显示/隐藏已清仓历史持仓的开关;② 显示历史时默认展示近一周清仓的持仓,并提供 近1个月/近3个月/近半年/近1年 范围选项。背景:卖出清仓后幽灵清仓(R-014)把持仓行转历史,策略 tab 当场少行(2026-09-07 大连热电做T卖出实际发生);历史数据一直在库(strategy_holdings closed_at 非空),只缺展示入口;历史行可复用 R-010 行展开做交易复盘。**2026-09-07 定稿(Q1-Q7 老师拍板:Q2 改判「份额显示 0 就好,不改 closeHolding 语义」,其余按 AI 建议;核心目标=追溯该持仓相关的历史操作)**;历史行复用 R-010 展开做交易复盘;新增 strategy-holdings/history 端点,当前持仓路径零改动。**2026-09-07 二轮补充(Q8-Q9 老师拍板):当天(本地自然日 00:00 起)已清仓的持仓默认显示(range='today' 恒显示层),「历史持仓」开关只控制今天之前的历史(历史持仓关≠当天清仓被藏起);层间按 holdingId 去重,计数不含已清仓行维持;零写路径变更维持**。已归档至 已完成/R-016.md | 老师指令(2026-09-07 优化功能需求讨论) | P1 | 已定稿 | 2026-09-07 | 14-策略tab历史持仓展示 | **已实现(已归档至 已完成/,2026-09-08 老师归档指令确认验收)** |
|
||||
| R-017 | 委托归属候选纳入近期清仓持仓 | 交易记录 tab 归属候选只回当前持仓——清仓后当日委托失去下拉锚点无法补关联(R-016 关联观察立项,2026-09-07 大连热电实际发生:盘中归属后被清为未关联,下拉已无做T候选)。**2026-09-07 定稿(老师指令确认方向)**:候选 = 当前持仓 + 近 7 天清仓持仓(closed 标记,选项文本「已清仓」后缀),下拉 value 改 holdingId 键控(同策略多轮不撞值),排序当前在前/清仓按 closed_at DESC;当日数据修复经 set-attribution 通道完成(非固化功能)。**2026-09-08 R-018 取代标注:7 天清仓候选退役(R-018 T2 拍板)**——归属候选改策略级 attribution-targets(迭代 16 实施),本需求「清仓后补关联」痛点根因(幽灵清仓抢先归档)已由数据域分界消除;holdingId 键控/占位安全逻辑保留。已归档至 已完成/R-017.md(被 R-018 取代退役) | 老师指令(2026-09-07) | P1 | 已定稿 | 2026-09-07 | 15-归属候选纳入清仓持仓 | **已实现(已归档至 已完成/,被 R-018 语义取代退役,2026-09-08)** |
|
||||
| R-018 | 交易关联驱动持仓份额动态调整(归属 = 账本写操作) | 从交易记录出发给委托关联策略/持仓时自动同步调整该策略下持仓份额(关联即账本写操作):策略级候选 + 统一「份额分配器」(一笔委托拆 0..N 段 × 策略×量,余额默认全量可改小,允许部分关联)+ 买入加仓/建新仓(不复活旧行)、卖出减仓/归零清仓、仓不足自动截断续分、无仓关联失败;撤段逆操作(撤建仓买入=持仓作废第三态不产生假清仓历史、撤加仓=减回归零作废、撤卖出=恢复活动仓+份额加回,粒度=段、改归属原子);**数据域分界(老师拍板):幽灵清仓等同步机制只作用于「全部持仓」对账单域,不再写 strategy_holdings 账本**——账本生命周期只由交易关联 + 手动份额操作驱动,账本转历史唯一途径=卖出单关联 closeHolding;R-017 7 天清仓候选退役(holdingId 键控/占位保留);漏关联软提示(账本有活动行+QMT 无此 code)。影响既有定稿:技术约束-017/产品约束-011/R-014/迭代12 幽灵清仓条款修订。详见 R-018.md | 老师指令(2026-09-08 新优化需求讨论) | P1 | 已定稿 | 2026-09-08 | 16-交易关联驱动持仓份额动态调整 | **已实现(已归档至 已完成/R-018.md,2026-09-08 验收通过)** |
|
||||
|
||||
| R-019 | 策略会话:会话以策略当前数据为依据做复盘/分析讨论 | 让 AI 会话以策略为 Workspace(老师原话)→ **已定稿(2026-09-08,F1/F2 拍板)**:改造现有 DSH 对话窗口,对话视图首条消息前提供「讨论策略」选择(仿 DSH workspace chip Choose 体验:依据:做T ▾),选策略即把该策略**当前数据摘要**预注入会话上下文开始聊,会话中可换策略/刷新再注入;**不用 DSH 宿主工作区**(R3);注入 = 当前持仓明细 + 全历史关联交易聚合摘要(含已清仓,F2);只读不开放账本写(Q4=A);产物不落盘(R2-Q4,复盘管理/落库归未来 T-002)。宿主注入通道等技术调研列计划阶段待办。详见 R-019.md | 老师指令(2026-09-08) | P1 | 已定稿 | 2026-09-08 | 17-策略会话 | 已立项(迭代 17 设计阶段) |
|
||||
| R-019 | 策略会话(历史条目,已并入 R-021) | 原“会话以策略为 Workspace(数据依据版)”需求(2026-09-08 定稿)——**2026-09-08 老师指令与 R-021 合并,逻辑整合入合并后的 R-021(策略会话复盘)**;本条目保留为合并前讨论史存档,文件已归档至 已完成/R-019.md | 老师指令(2026-09-08) | P1 | 已定稿 | 2026-09-08 | 17-策略会话 | **已归档(并入 R-021 合并需求,2026-09-08)** |
|
||||
| R-020 | QMT Bridge MCP 能力内建(神之一手自注册 MCP,去三方插件依赖) | 当前 DSH 的 QMT Bridge MCP 由三方插件 dsh-skill-mcp-panel 写入 profile cordis.patch.yml 受管块。**2026-09-08 定稿(Q1-Q6 老师逐项拍板)**:神之一手 apply 内动态挂载 **DSH 官方 dsh-mcp-client**(**只挂当前激活连接**,serverName 固定 QMT_Bridge_MCP,url 自动派生 baseUrl+/mcp;挂载/切换/卸载/状态由神之一手插件内管理),MCP 能力内建;**移除对象 = 三方 dsh-skill-mcp-panel**(2026-09-08 老师澄清:卸载其插件 + 移除其宿主 cordis.patch.yml 受管块,官方 dsh-mcp-client 可依赖);MCP 生命周期随连接 CRUD/激活切换联动;状态出口 = 设置页连接卡片检查 + **会话头部指示灯区新增 MCP 状态灯**;失败重连对齐 failOnStartupError:false+reconnect;**不做通用 MCP 管理**。REST 直连不变(技术约束-003)。详见 已完成/R-020.md | 老师指令(2026-09-08) | P1 | 已定稿 | 2026-09-08 | 18-QMTBridgeMCP内建 | **已实现(已归档,2026-09-08 验收通过)** |
|
||||
| R-021 | 神之一手数据加入会话(对象目录 + 添加机制;复盘为第一用例;合并原 R-019) | **需求本质(2026-09-08 老师再定调)**:会话(agent)可获取神之一手数据,复盘只是其用法之一;本需求确定 **①数据怎么添加(暂定=A 人挑对象→只读数据上下文快照注入会话,不挂按需工具)②哪些数据可以加(对象目录候选:账户/策略/持仓(当前·历史)/轮次 round/单笔交易/持仓↔交易/行情随行/汇总…)**;首批范围 P1 策略/P2 持仓/P3 持仓↔交易/P4 单笔委托/P5 轮次(待建模)/P6 行情随行(暂定草案,老师可增删);复用为复盘/策略依据等用例;不用宿主工作区、只读、结论不落盘(未来 Phase1-3 预留)。详见 R-021.md | 老师指令(2026-09-08) | P1 | 已定稿 | 2026-09-08 | 17-策略会话 | 已立项(设计阶段) |
|
||||
| R-022 | QMT 连接健康灯自适应探测(Bridge 启动/恢复后快速回绿) | 老师反馈:启动 QMT Bridge 后持仓/行情/MCP 灯几秒点亮,QMT 灯一直不亮(自动检查没生效)。根因:QmtHealthMonitor 固定每 5 分钟探测一次 /health 并缓存,恢复感知滞后;其余灯有 5-10s 高频自愈回路。**方案(2026-09-09 AI 提议,老师确认):自适应探测节奏——健康 5 分钟稳态(不变)/ 异常未知 10s 快速重试**(与前端 10s 轮询对齐),Bridge 启动后灯 ≤20s 自动回绿;边界:API/前端零改动、不新增配置、健康稳态不空转。详见 R-022.md | 老师反馈(2026-09-09) | P1 | 讨论中(AI 提议定稿,待老师确认) | 2026-09-09 | 19-指示灯状态自适应探测 | 已实现(待验收,验收通过后定稿归档) |
|
||||
| R-023 | MCP 状态灯自适应探测(MCP 服务恢复后自动回绿) | 老师反馈:R-022 修复后复查发现 MCP 灯同样不自动恢复。根因:QmtMcpManager 状态缓存只在 挂载/切换/手动探测 时刷新、无定时回路;dsh-mcp-client 自带 reconnect 只恢复真实连接(fiber 层),不刷新插件状态缓存。**方案(2026-09-09 AI 提议,与 R-022 同模式):connected → 5 分钟稳态 / 非 connected → 10s 快速重试**,MCP 服务恢复后灯 ≤20s 自动回绿;无激活连接/dispose 不调度;探测本体与挂载/重连逻辑零改动。详见 R-023.md | 老师反馈(2026-09-09) | P1 | 讨论中(AI 提议定稿,待老师确认) | 2026-09-09 | 19-指示灯状态自适应探测 | 已实现(待验收,验收通过后定稿归档) |
|
||||
| R-024 | 策略 tab 列设置改为拖拽排序(列设计细节优化) | 老师反馈:策略 tab 列设置弹层目前 **↑↓ 箭头排序**,希望改成**鼠标选中后拖动排序**。**2026-09-10 定稿(老师确认方案 A)**:策略 tab「列设置」弹层内实现 **原生 HTML5 拖拽排序**(复用 R-011 Tab 设置已验证模式:≡ 拖拽手柄 + drop 重排);**落点立即持久化**(strategy-columns/update 整表覆盖,弹层去掉「保存」按钮只留「关闭」);**↑↓ 箭头保留作兜底**;固定列不参与排序维持现状。**2026-09-10 验收反馈修订**:落点指示从整行高亮改为**行间间隙高亮线**(按鼠标在目标行内 Y 坐标判定插入前/后)。详见 已完成/R-024.md | 老师反馈(2026-09-10) | P2 | 已定稿 | 2026-09-10 | 20-策略列设置拖拽排序 | **已实现(已归档至 已完成/R-024.md,2026-09-10 老师确认验收)** |
|
||||
| R-025 | 设置页「Tab 设置」排序落点统一为间隙高亮线 | 老师指令(迭代 20 复盘遗留第 2 项):设置页「Tab 设置」分组 tab 排序目前仍是整行高亮(overId 行淡蓝底),与列设置弹层的**行间间隙高亮线**(R-024/UI约束-007)观感不一致,统一为同款形式。**2026-09-10 定稿(老师指令)**:拖动悬停按目标行内 Y 坐标上下半区判定,间隙线画目标行上缘(插前)/下缘(插后);drop 事件内按坐标重算插入位置;拖回原位置跳过写库;onDragEnd 清理;移除整行高亮;≡ 手柄/显隐开关/立即持久化/徽标/saving 禁用全部维持不变;服务端零改动。详见 R-025.md | 老师指令(2026-09-10) | P2 | 已定稿 | 2026-09-10 | 21-Tab设置排序间隙高亮统一 | 未开始 |
|
||||
| R-026 | 策略计算字段(公式字段) | R-013 字段类型扩展:新增第五种类型「计算(formula)」——用户写公式(**中文变量名**,如 `(现价 - 成本价) × 份额`),公式引用**服务端缓存数据集**按持仓行实时算出列值。**2026-09-10 定稿(老师逐项确认)**:① 数据集首批=行情+合约信息/持仓账本(份额·成本价·最后一笔成交价)/本行自定义字段值(QMT账户域、交易记录聚合后补);② 计算位置=服务端(strategy-positions 现算随行返回);③ 粒度=仅行级(策略级聚合二期);④ 引擎=自写小型表达式解析器(零依赖、支持中文标识符、四则+括号+round/abs/min/max);⑤ 不落库(不写 values 列),列只读;⑥ 只允许引用非公式字段(零循环依赖);⑦ 结果=数字+unit+小数位(默认2);⑧ 保存时校验语法与变量(拒非法)+ 运行期缺数据显示 —;⑨ 配置UI=公式输入+变量选择器(+试算预览);⑩ 历史持仓行显示 —(不做历史时点计算);⑪ 轻量变量目录先行,作为 T-006 数据池第一块砖。已知用例:浮动盈亏/盈亏比例/距涨停/网格占用。详见 R-026.md | 老师指令(2026-09-10 功能讨论) | P1 | 已定稿 | 2026-09-10 | 22-策略计算字段与策略tab静态化(PLAN-019,第二阶段) | **已实现(2026-09-10),待老师人工验收** |
|
||||
| R-027 | 策略 tab 静态化 + 字段配置入口迁移(重构) | ① 策略 tab 从「动态增删改」改为**插件内置静态 tab**(与全部持仓/交易记录同权;**不可增删改名**,但保留 Tab 设置里的显隐+拖拽排序);② 设置页「策略分组」子 tab **整体移除**(设置页收敛为 Tab 设置 / QMT 连接配置);③ 字段编辑功能迁到**主窗口策略 tab 顶部、「列设置」旁的「字段配置」按钮 + 独立弹层**(每个策略 tab 管自己的字段),保存走新增单策略字段端点(避开整表覆盖);④ strategies 常量化为内置两项,settings 只存字段定义 + 列配置覆盖(存量归一化,实测无自建策略、零迁移风险);⑤ **并入迭代 22 作第一阶段**(计算字段为第二阶段,公式表单直接落新入口,避免返工)。**取代**:R-003(策略 CRUD)、R-011(策略条目动态化部分)、R-013(字段定义入口条款)。详见 R-027.md | 老师指令(2026-09-10 重构想法) | P1 | 已定稿 | 2026-09-10 | 22-策略计算字段与策略tab静态化(PLAN-019,第一阶段) | **已实现(2026-09-10),待老师人工验收** |
|
||||
| R-028 | 判定型计算字段 + 网格超市「可下空单 / 可下多单」 | R-026 能力扩展:计算字段新增**结果类型 = 数字 / 判定**(引擎加比较运算 `> < >= <= == !=` 与逻辑 `and / or`,含 `&& ||` 与全角 `≥ ≤ ≠`;字段表单显式声明结果类型,服务端校验「声明与公式形态一致」);判定列满足显示 `✓ <字段名>`(绿)、不满足/缺数据显示 `—`(灰)。**网格超市落地**:可下空单 = `涨停价 > 基准值 + 网格大小`;可下多单 = `跌停价 < 基准值 - 网格大小`(阈值引用字段可调)。**2026-09-10 定稿并实现**(老师拍板 Q1-Q5:方案 A 判定型 / ✓ 与 — / 支持 and·or / 结果类型显式 / 阈值引字段);真实验证:13 只持仓中可下空单 5 只、可下多单 2 只;回归 test-r026 48→71 条全绿。详见 R-028.md | 老师指令(2026-09-10) | P1 | 已定稿 | 2026-09-10 | 23-计算字段判定型扩展 | **已实现(2026-09-10),待老师人工验收** |
|
||||
|
||||
## 渐进明细规划素材
|
||||
|
||||
@@ -48,4 +56,7 @@
|
||||
| T-006 | 数据池中间层 + 策略表格动态字段配置 | 服务端数据池(数据集中间层:按 code 聚合宽表、多源字段映射、填充器架构)+ 策略持仓表格动态字段配置(列配置×池行渲染)。源自 R003 讨论(2026-08-28)拆分独立,草稿文件:`草稿/数据池中间层与策略表格动态字段配置.md` | 起草 |
|
||||
| T-007 | RSS 订阅管理 | 管理 RSS 订阅源(增删改查)+ 抓取聚合订阅内容,作为资讯/消息来源;支撑 目标-003 市场监控、目标-004 消息管理,与 T-004 同属消息链路。**2026-08-28 老师确认先放草稿**,草稿文件:`草稿/RSS订阅管理.md` | 起草 |
|
||||
| T-008 | 数据存储管理(JSON → SQLite) | 数据存储从 JSON data store 升级为 SQLite(node:sqlite)数据库 + 数据存储管理能力;**变更既有设计约束**(数据存储设计.md「无需数据库」决策)。**2026-09-01 定稿转正为 R-008 并完成(迭代 06)** | 已转需求 R-008 |
|
||||
| T-009 | 策略自定义字段配置(策略细节配置) | 每个策略支持自定义字段(键值对),不同策略按自身需要添加各自的细节配置字段(如网格超市配网格间距/单格金额、长线持有配目标价/仓位上限)。**2026-09-02 定稿转正为 R-013**,草稿文件已清理 | 已转需求 R-013 |
|
||||
| T-009 | 策略自定义字段配置(策略细节配置) | 每个策略支持自定义字段(键值对),不同策略按自身需要添加各自的细节配置字段(如网格超市配网格间距/单格金额、长线持有配目标价/仓位上限)。**2026-09-02 定稿转正为 R-013**,草稿文件已清理 | 已转需求 R-013 |
|
||||
| T-010 | 策略计算字段(公式字段) | R-013 字段类型扩展:新增「计算(formula)」类型,用户写公式引用服务端缓存数据集(行情快照/合约信息/持仓账本/自定义字段值),按持仓行实时计算列值(不落库)。源自 2026-09-10 功能讨论(老师指令),**2026-09-10 定稿转正为 R-026**,草稿文件已清理 | 已转需求 R-026 |
|
||||
| T-011 | 策略 tab 静态化 + 字段配置入口迁移 | ① 策略 tab 改为与「全部持仓/交易记录」同类的**插件内置 tab**(不再动态增删改);② 原设置页「策略分组」的字段编辑功能迁到**主窗口策略 tab 内、「列设置」旁**,作为统一的字段配置管理。实机核实:当前仅两个内置策略、无自建策略(零数据迁移风险)。与迭代 22(计算字段)强联动。源自 2026-09-10 老师重构想法,**2026-09-10 定稿转正为 R-027**,草稿文件已清理 | 已转需求 R-027 |
|
||||
| T-012 | 网格超市「可下空单 / 可下多单」判定字段 | 用计算字段把网格规则翻译成列判定:**可下空单** = 当天涨停价 > 基准值 + 1;**可下多单** = 当天跌停价 < 基准值 - 1。现状限制:R-026 计算字段**只产数字**(无比较运算)→ 需扩展「判定型」结果。已验证数据通路(涨跌停取自合约信息 + 基准值取自持仓行):13 只持仓中 5 只可下空单、2 只可下多单。源自 2026-09-10 老师指令,**2026-09-10 定稿转正为 R-028**,草稿文件已清理 | 已转需求 R-028 |
|
||||
Reference in New Issue
Block a user