docs(迭代09/10): Tab 设置统一管理 + UI 主题适配 全量文档
迭代09 (R-011 Tab 设置统一管理): - 需求 R-011 (定稿 Q1-Q5) + 需求池索引 - 计划 PLAN-010 + 迭代09 四件套 (目标/技术方案/验收/复盘) - 约束: 产品约束-009 / UI约束-003 / 技术约束-014 - UI约束-002 修订: 通用设置→Tab 设置 迭代10 (R-012 UI 适配 DSH 主题): - 需求 R-012 (定稿: 暂定跟随系统) + 需求池索引 - 计划 PLAN-011 + 迭代10 四件套 - 约束: UI约束-004 (主题适配约定)
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
# 计划:Tab 设置——统一管理所有会话 tab(内置 + 策略分组,显示/隐藏 + 拖动排序)(阶段航点)
|
||||
|
||||
> 编号:PLAN-010 | 粒度:阶段航点(大粒度) | 创建:2026-09-02 | 状态:**执行中**
|
||||
> 派生自终极目标:目标-002(分仓管理工具)、目标-003(按策略监控市场)
|
||||
> 依据需求:**R-011(已定稿,2026-09-02,Q1-Q5 确认)** —— 符合入范围门槛
|
||||
> 设计约束:产品约束-009、UI约束-003、技术约束-014(R-011 新增沉淀)、技术约束-004/005/006(沿用)
|
||||
|
||||
## 目标
|
||||
|
||||
将设置页「通用设置」升级为 **「Tab 设置」**,成为所有会话 tab(系统内置 + 策略分组)**唯一的顺序与显隐入口**:两类 tab 混排一张表,每行 = 拖动手柄 + 名称 + 显示/隐藏开关;**任何 tab 均不支持重命名与删除**;拖动落点立即持久化。
|
||||
|
||||
## 范围
|
||||
|
||||
**做**:
|
||||
1. **数据模型统一**(src/settings.js):settings.tabs 从布尔对象 → 有序数组 [{id, kind: builtin|strategy, refKey|refId, name, visible, order}];strategies 收窄为 {id, name};读取时旧格式静默归一化(旧 tabs 布尔对象 → 三个内置条目保留原显隐;旧策略按 order 接续追加,旧隐藏策略迁移后 visible=true);新增整表更新(顺序 + 显隐);DEFAULT_TABS 升级为默认数组;
|
||||
2. **API 层**(src/api/strategies.js):tabs/update 语义改为整表更新(顺序 + 显隐);strategies/add 联动追加 tab 条目(末尾);strategies/remove 联动删除对应 tab 条目;废弃 strategies/move;strategies/update 仅剩重命名;
|
||||
3. **客户端注册**(src/client/index.js):合并 registerGeneralTabs + registerStrategyTabs 为统一注册(读 tabs 数组按 order 排序、过滤 visible;builtin 走内置 render、strategy 走 StrategyTab),移除硬编码 order 间隔(10/11/12 与 13+);
|
||||
4. **设置页 UI**(src/client/views/SettingsSection.jsx):
|
||||
- 「Tab 设置」子 tab 取代「通用设置」:混排表格,内置行「内置」徽标、策略行「策略」徽标;每行 = 拖动手柄 + 名称 + 显隐开关;无任何重命名/删除按钮;
|
||||
- 拖动:原生 HTML5 Drag & Drop,落点重排 → 立即调 tabs/update 持久化 → 提示「刷新页面后生效」;
|
||||
- 「策略分组」子 tab 瘦身:只留 新增/重命名/删除,移除排序箭头与显隐开关,加提示「顺序与显示请在「Tab 设置」中调整」。
|
||||
|
||||
**不做**:
|
||||
- 策略的命名/删除入口迁移(仍在「策略分组」子 tab);
|
||||
- 内置 tab 的重命名/删除(禁);
|
||||
- tab 注册热更新(沿用「刷新页面后生效」机制,无事件机制);
|
||||
- 其他设置子 tab(QMT 连接配置)改动(仅 UI约束-002 文案「通用设置」→「Tab 设置」对齐)。
|
||||
|
||||
## 程序结构
|
||||
|
||||
```
|
||||
src/
|
||||
├── settings.js # 改:tabs 有序数组 + 归一化迁移 + 整表更新;strategies 收窄
|
||||
├── api/strategies.js # 改:tabs/update 整表;add/remove 联动 tabs;废弃 move
|
||||
src/client/
|
||||
├── index.js # 改:统一注册(读 tabs 数组)
|
||||
└── views/SettingsSection.jsx # 改:「Tab 设置」子 tab + 拖动排序 + 策略分组瘦身
|
||||
```
|
||||
|
||||
## 实现步骤
|
||||
|
||||
1. **文档骨架**:PLAN-010 + 迭代 09 文档(本步);
|
||||
2. **settings.js**:tabs 有序数组 schema + DEFAULT_TABS + 归一化(getTabs 旧格式转新)+ updateTabs 整表 + strategies 收窄(去 visible/order 读写);
|
||||
3. **api/strategies.js**:tabs/update 整表语义;strategies/add 追加 tab;strategies/remove 联动删 tab;废弃 move(API 表 + handler);
|
||||
4. **client/index.js**:统一注册函数(读 tabs 数组),移除硬编码 order;
|
||||
5. **SettingsSection.jsx**:「Tab 设置」子 tab(混排表格 + 徽标 + 显隐开关 + 拖动排序 + 立即持久化);策略分组子 tab 瘦身;
|
||||
6. **构建测试**:pnpm run build + typecheck + 独立数据目录回归(技术约束-011,注意只读端点可直连、写操作走临时目录);
|
||||
7. **验收 + 复盘**。
|
||||
|
||||
## 验收要点
|
||||
|
||||
- 「通用设置」子 tab 更名为「Tab 设置」,表格混排内置 + 策略全部 tab;
|
||||
- 内置行带「内置」徽标、策略行带「策略」徽标;
|
||||
- 每行可拖动排序,落点立即持久化(刷新页面后生效);
|
||||
- 每行有显示/隐藏开关,切换立即持久化;
|
||||
- 任何行均无重命名/删除按钮;
|
||||
- 策略分组子 tab 只留 新增/重命名/删除,无排序箭头/显隐开关,有指引提示;
|
||||
- 新增策略出现在 Tab 设置列表末尾;删除策略后对应 tab 条目消失;
|
||||
- 老配置(布尔对象 tabs + 策略 order/visible)读取时自动归一化,无报错、无数据丢失;
|
||||
- 会话 tab 栏按新顺序与显隐注册(内置与策略可交错);
|
||||
- 现有功能不回归(全部持仓/交易记录/策略持仓/QMT 切换)。
|
||||
Reference in New Issue
Block a user