ec02a791ee
- 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 通过
6.6 KiB
6.6 KiB
需求: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)
- 策略 tab 我不想做成动态可增减修改的了,改成静态的,和全部持仓、交易记录这些一样,都是插件内置的 tab;
- 这两个策略 tab 原有的字段编辑功能,切换到主窗口的策略 tab 下面,列设置旁边,作为统一的字段配置管理。
现状核实(2026-09-10 实机,代码 + settings.yaml + store.db)
- 策略仅两个内置:
grid-supermarket(网格超市,5 字段:网格上边界/下边界/基准值/网格大小/网格交易量)、manual-t(手动做T,1 字段:T仓成本价); store.db:strategy_holdings13 / 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 |
讨论过程
- 2026-09-10 老师提出重构想法(策略 tab 静态化 + 字段编辑功能迁到策略 tab 内、列设置旁);
- AI 核实实机现状(settings.yaml 策略与字段、store.db 数据归属、tabs 顺序)→ 结论:仅两个内置策略、无自建策略,零数据迁移风险;
- AI 给出影响面分析(tab 体系 / 设置页 / 字段配置 / 约束与历史需求)+ 与迭代 22 的撞位提示(公式表单落在设置页,入口一搬即废)+ 排期建议;
- 老师逐项拍板 Q1~Q4、Q6(全采建议);Q5/Q7 为技术项由 AI 定;
- 转正定稿: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(入口条款)。