Files
one_divine_lot/docs/05-需求池/R-027.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

6.6 KiB
Raw Blame History

需求: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(手动做T1 字段:T仓成本价);
  • store.dbstrategy_holdings 13 / 3 行,trade_orderstrade_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)

  • 设置页收敛为两个子 tabTab 设置 / 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 列配置覆盖;
  • 存量 settingsstrategies 数组 + 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
设置页「策略分组」 整体移除 Q2A
入口形态 「列设置」旁独立「字段配置」按钮 + 独立弹层 Q3A
「统一」范围 每个策略 tab 管自己的字段 Q4A
保存机制 单策略字段端点(AI 定,技术项) Q5
排期 并入迭代 22 第一阶段,一次改到位 Q6A
存储结构 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(入口条款)。