Files
one_divine_lot/docs/05-需求池/需求池索引.md
T
kyugao ec02a791ee 迭代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 通过
2026-09-10 14:05:06 +08:00

62 lines
28 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 需求池索引(Backlog Index
> 所有待办需求的统一登记处。想法先进池,讨论后排优先级,再进计划。
>
> **登记格式**(按 divine-lot-dev skill v2 规范):
> 每条需求含:编号 / 标题 / 描述 / 来源 / 优先级 / **状态(起草 / 讨论中 / 已定稿)** / **更新日期** / 实现迭代 / 实现状态。
>
> **入范围门槛**:只有状态为「已定稿」的需求才可进入计划范围或迭代工作范围;起草 / 讨论中的需求停留在需求池。
>
> **需求池边界**2026-08-27 老师确认):需求池只登记「待办需求」;已演进为终极目标的内容(如原 R-001 智能交易辅助系统)不属于需求,不占需求池条目,以终极目标文档为准(见 01-终极目标)。
## 需求列表
| 编号 | 标题 | 描述 | 来源 | 优先级 | 状态 | 更新日期 | 实现迭代 | 实现状态 |
|---|---|---|---|---|---|---|---|---|
| R-002 | 分仓管理工具(持仓策略标签管理) | 验证 QMT Bridge MCP 连通(资金/持仓)。**核心逻辑(已定稿)**:① 插件设置中管理持仓策略(策略=标签,增删改 + 显示/隐藏开关);② 按设置在主窗口上方 tab 栏(对话/轨迹/上下文后)显示策略标签,每个标签下加载对应持仓数据;③ 插件处理与存储:QMT 读全量真实持仓(**插件直连 QMT Bridge RESTful 接口**,非 MCP),策略分仓数据本地保存管理。**实现方式**:独立插件,作为外部插件挂载到 DSH。第一个落地工具,源自 T-001。**2026-08-27 定稿,2026-08-28 完成,已归档至 已完成/R-002.md** | 老师指令(2026-08-27 | P0 | 已定稿 | 2026-08-28 | 01-分仓管理工具 | **已实现(已归档)** |
| R-003 | 分仓管理工具完善与优化 | 对 R-002 的完善与优化:O2 策略 tab 动态化、O3 策略 CRUD(删除弹窗确认)、O5 加载失败兜底、O6 份额快捷操作 + 设置页 tab 化(通用设置/策略分组)。**2026-08-28 定稿,2026-08-28 完成,已归档至 已完成/R-003.md** | 迭代 01 复盘 + 老师补充 | P0 | 已定稿 | 2026-08-28 | 02-分仓管理工具完善与优化 | **已实现(已归档)** |
| R-006 | 策略数据 JSON data store schema 标准化 | 策略数据集标准化为 JSON data storestore.schema.json / store.json 策略为中心 / store.market.json 行情持久化);旧 allocations.json 自动迁移。**2026-08-31 定稿,2026-09-01 完成(迭代 04 验收通过)** | 老师指令(2026-08-31 | P2 | 已定稿 | 2026-09-01 | 04-WS盘中价格实时更新 | **已实现(迭代 04 完结)** |
| R-005 | WS 盘中价格实时更新 | 3 个监控表格(全部持仓/手动做T/网格超市)盘中现价实时显示:服务端中转 + 行情缓存(store.market.json 持久化)+ 前端轮询读缓存;现价列 + 红涨绿跌 + 变化高亮。**2026-08-31 定稿,2026-09-01 完成(迭代 04 验收通过),已归档至 已完成/R-005.md** | 老师指令(2026-08-31T-005 转正) | P1 | 已定稿 | 2026-09-01 | 04-WS盘中价格实时更新 | **已实现(已归档)** |
| R-004 | QMT 连接配置(多配置管理 + 会话头部快捷切换) | 设置页「QMT 连接配置」子 tab:多配置 CRUD(卡片形式)、单选激活(数据源热切换立即生效)、默认标记(启动自动激活)、测试连接(/health 代理)、删除边界处理;会话头部(PTC 模式标签旁)快捷切换 chip。**2026-08-29 定稿(Q1-Q10)并完成实现与验收(7/7 通过),已归档至 已完成/R-004.md**。决策沉淀:产品约束-005/006、技术约束-003(变更)/008/009、UI约束-001/002 | 老师指令(2026-08-28 | P1 | 已定稿 | 2026-08-29 | 03-QMT连接配置 | **已实现(已归档)** |
| R-007 | 交易记录接入(订单与成交数据 + 时间段查询) | 交易记录 tab 接入 QMT Bridge 当日委托(/trade/orders)与当日成交(/trade/trades)**单表合并**(委托主行 + 展开成交明细)+ **时间段查询**(今日/本周/本月 + 手动起止)+ 费用计算(佣金费率+最低5元/印花税/过户费,委托级合并计费)。**2026-09-01 定稿并完成(迭代 05 验收通过),已归档至 已完成/R-007.md** | 老师指令(2026-09-01 | P1 | 已定稿 | 2026-09-01 | 05-交易记录接入 | **已实现(已归档)** |
| R-008 | 数据存储管理(JSON → SQLite | 数据存储从 JSON data store 升级为 SQLitenode:sqlite):仅存储引擎替换 + strategies/allocation/market_quotes 三表 + 一次性迁移脚本(启动自动迁移)+ JSON 废弃;策略仍存 DSH settings;不建 trades 表(R-007 时再建)。**2026-09-01 定稿(T-008 转正,D1-D8 确认),2026-09-01 完成(迭代 06 验收通过),已归档至 已完成/R-008.md** | 老师指令(2026-09-01T-008 转正) | P1 | 已定稿 | 2026-09-01 | 06-数据存储SQLite | **已实现(已归档)** |
| R-009 | 交易记录本地存储(SQLite+ 策略关联 | 在 SQLite 新增交易记录表(trade_orders + trade_fills,委托/成交两表),QMT 当日交易数据本地持久化(跨日积累成历史库);**归属由用户在交易记录 tab 手动设置(trade_orders 冗余存 strategy_id + holding_idUPSERT 不覆盖归属列,可随时改)**;本地历史查询端点(trades/history 策略过滤)+ 交易记录 tab 策略过滤与历史范围本地展示;QMT code 归一化 + tradeDate 兜底。**2026-09-01 定稿(Q1-Q8 + 二次定稿 Q1-Q4),2026-09-01 完成(迭代 07 验收通过),已归档至 已完成/R-009.md** | 老师指令(2026-09-01 | P1 | 已定稿 | 2026-09-01 | 07-交易记录本地存储SQLite与策略关联 | **已实现(已归档)** |
| R-010 | 策略持仓行展开关联交易记录(Holding → 交易汇总) | 策略持仓 tab 每个持仓行(Holding)可展开,展开显示与该 holding 关联的交易记录(仅委托汇总,不分笔成交);strategy-positions 附加 holding_id + 新增 trades/by-holding 端点 + 持仓行展开 UI + 成本价/最后一笔成交价两列 + 神之一手 tab 隐藏输入框。**2026-09-02 定稿(Q1-Q4 确认),2026-09-02 完成(老师确认),已归档至 已完成/R-010.md** | 老师指令(2026-09-02 | P1 | 已定稿 | 2026-09-02 | 08-策略持仓行展开关联交易记录 | **已实现(已归档)** |
| 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-持仓内存快照 | **已实现(已归档至 已完成/,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 账本**——账本生命周期只由交易关联 + 手动份额操作驱动,账本转历史唯一途径=卖出单关联 closeHoldingR-017 7 天清仓候选退役(holdingId 键控/占位保留);漏关联软提示(账本有活动行+QMT 无此 code)。影响既有定稿:技术约束-017/产品约束-011/R-014/迭代12 幽灵清仓条款修订。详见 R-018.md | 老师指令(2026-09-08 新优化需求讨论) | P1 | 已定稿 | 2026-09-08 | 16-交易关联驱动持仓份额动态调整 | **已实现(已归档至 已完成/R-018.md2026-09-08 验收通过)** |
| 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_MCPurl 自动派生 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.md2026-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),待老师人工验收** |
## 渐进明细规划素材
> 2026-08-27 老师确立「渐进明细」:前期目标笼统,先实现周边工具,做中学逐步明确计划。以下周边工具候选为规划素材,**状态为「起草」级**(未定稿,不进入计划/迭代范围),待讨论与实践中逐步明确并转入正式需求。
| 编号 | 周边工具候选 | 描述 | 状态 |
|---|---|---|---|
| T-001 | 分仓管理工具(数据连通验证 + 持仓/资金管理) | 验证 QMT Bridge MCP 可用性,封装持仓/资金查询;以「分仓」视角管理持仓。**已定稿为 R-002 并进入迭代 01** | 已转需求 R-002 |
| T-002 | 交易与复盘记录工具 | 将交易、复盘沉淀为 DSH 可管理的结构化文档,支撑市场复盘/交易复盘目标 | 起草 |
| T-003 | 策略配置文件骨架 | 定义策略的数据结构(YAML/JSON),支撑策略定义目标 | 起草 |
| T-004 | 消息/通知工具 | DSH 内消息路由与通知能力,支撑按策略模式管理消息目标 | 起草 |
| T-005 | 通过 ws 长连接做市场数据的实时反映 | WebSocket 长连接实现市场数据(持仓/行情)实时推送与展示;源自迭代 01 复盘。**2026-08-31 转正为 R-005(迭代 04 实施中)**,草稿文件:`草稿/通过ws长连接做市场数据的实时反映.md` | 已转需求 R-005 |
| 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 升级为 SQLitenode:sqlite)数据库 + 数据存储管理能力;**变更既有设计约束**(数据存储设计.md「无需数据库」决策)。**2026-09-01 定稿转正为 R-008 并完成(迭代 06** | 已转需求 R-008 |
| 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 |