22ec732607
- 交易记录 tab 归属候选只回当前持仓 → 清仓后当日委托失去下拉锚点无法补关联 (2026-09-07 大连热电实际发生: 盘中归属后被清为未关联,下拉已无做T候选) - SqliteStore.getAttributionCandidates: 候选 = 该 code 当前持仓 + 近 7 天清仓的持仓 (closed 标记 + closedAt,排序 当前持仓在前 → 清仓行 closed_at DESC) - AttributionSelect: 下拉 value 改 holdingId 键控(同策略多轮持仓不撞值)、 清仓选项「(已清仓 MM-DD)」后缀、已归属但候选缺失显示「当前归属」占位 - 回归: test-r017-candidates 12/12 + 存量回归全绿
16 KiB
16 KiB
需求池索引(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 store(store.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-31,T-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 升级为 SQLite(node: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-01,T-008 转正) | P1 | 已定稿 | 2026-09-01 | 06-数据存储SQLite | 已实现(已归档) |
| R-009 | 交易记录本地存储(SQLite)+ 策略关联 | 在 SQLite 新增交易记录表(trade_orders + trade_fills,委托/成交两表),QMT 当日交易数据本地持久化(跨日积累成历史库);归属由用户在交易记录 tab 手动设置(trade_orders 冗余存 strategy_id + holding_id,UPSERT 不覆盖归属列,可随时改);本地历史查询端点(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-持仓内存快照 | 已实现(待验收) |
| 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 通道完成(非固化功能)。详见 R-017.md | 老师指令(2026-09-07) | P1 | 已定稿 | 2026-09-07 | 15-归属候选纳入清仓持仓 | 已实现(待验收) |
渐进明细规划素材
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 升级为 SQLite(node:sqlite)数据库 + 数据存储管理能力;变更既有设计约束(数据存储设计.md「无需数据库」决策)。2026-09-01 定稿转正为 R-008 并完成(迭代 06) | 已转需求 R-008 |
| T-009 | 策略自定义字段配置(策略细节配置) | 每个策略支持自定义字段(键值对),不同策略按自身需要添加各自的细节配置字段(如网格超市配网格间距/单格金额、长线持有配目标价/仓位上限)。2026-09-02 定稿转正为 R-013,草稿文件已清理 | 已转需求 R-013 |