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 通过
86 lines
6.6 KiB
Markdown
86 lines
6.6 KiB
Markdown
# 需求: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(入口条款)。
|