init
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
# R-003 分仓管理工具完善与优化 · 已完成
|
||||
|
||||
> 归档日期:2026-08-28 | 需求状态:**已完成**
|
||||
> 原索引:docs/05-需求池/需求池索引.md(主索引保留 R-003 条目,指向本归档)
|
||||
> 讨论记录:docs/05-需求池/R-003.md(完整讨论过程保留于此)
|
||||
|
||||
## 需求摘要
|
||||
|
||||
对 R-002(分仓管理工具)进行完善与优化,本期范围 = **O2 + O3 + O5 + O6**:
|
||||
|
||||
- **O2 策略 tab 动态化**:tab 由服务端策略配置驱动,增删改/显示开关实时同步(隐藏策略的 tab 不显示;策略变更提示手动刷新)
|
||||
- **O3 设置界面完善(策略 CRUD)**:新增(自动英文 id)/ 重命名(不影响分配)/ 删除(弹窗确认 + 份额回未分配)/ 排序(上移下移)/ 显隐;预置策略可删(彻底自由)
|
||||
- **O5 数据加载失败兜底**:加载失败提示(含原因)+ 重试按钮;自动重试 2 次;超时提示(**非数据源状态监控**)
|
||||
- **O6 份额编辑体验**:单票「全部移入」(未分配全部进当前策略)+ 策略「一键清零」(弹窗确认)+ 操作 Toast 反馈
|
||||
|
||||
**实现期间追加(2026-08-28)**:设置页 tab 化(通用设置 / 策略分组两个子 tab);通用设置三个 switch(全部持仓 / 交易记录 / 关注列表,控制会话 tab 显隐);策略显示开关改用 switch 控件。
|
||||
|
||||
## 核心逻辑(定稿版)
|
||||
|
||||
1. **策略 tab 动态化**:客户端启动时拉取策略配置,按 visible 策略动态注册 conversation.view tabs(slots.register 返回 disposer,可注销重注册);全部持仓固定保留;
|
||||
2. **策略 CRUD**:设置页「策略分组」子 tab 提供新增/重命名/删除/排序/显隐;删除弹窗确认 + 份额回未分配(产品约束-004);预置策略可删;
|
||||
3. **加载失败兜底**:LoadState 三态组件(loading/error+重试/success),自动重试 2 次(间隔 2s),超时(15s 可配置)提示;
|
||||
4. **份额快捷操作**:单票全部移入(move-all-shares 端点)、策略一键清零(remove-all-shares 端点,弹窗确认);
|
||||
5. **设置 tab 化**:通用设置(三个 switch 控制通用 tab 显隐)+ 策略分组;切换后提示「刷新页面后生效」。
|
||||
|
||||
## 实现记录
|
||||
|
||||
| 项 | 内容 |
|
||||
|---|---|
|
||||
| 实现迭代 | 02-分仓管理工具完善与优化 |
|
||||
| 实现方式 | 沿用独立插件 one-divine-lot(服务端 + 客户端改造) |
|
||||
| 服务端 | S1-S4:settings.js(策略 CRUD + tabs 配置)、storage.js(清份额)、manager.js(全部移入/清零)、api.js(strategies/add/remove/move + move-all-shares/remove-all-shares + tabs/tabs-update 端点) |
|
||||
| 客户端 | S5-S8:LoadState/Toast 基础组件、SettingsSection 设置 tab 化 + CRUD、client/index.js 动态 tab 注册、StrategyTab 快捷操作 |
|
||||
| 构建安装 | S9:pnpm build + 宿主动态加载(无需重启即更新客户端 bundle) |
|
||||
|
||||
## 验收结果(2026-08-28 老师确认)
|
||||
|
||||
- ✅ 策略隐藏/显示(switch 控件)验证 OK
|
||||
- ✅ 新增策略正常,tab 增加正常
|
||||
- ✅ 删除策略正常,tab 消失正常
|
||||
- ✅ 策略排序调整正常(getStrategies 按 order 排序修复后)
|
||||
- ✅ 全部持仓/策略 tab 表格正常显示(React 空值崩溃修复后)
|
||||
- ✅ 三个通用 tab(全部持仓/交易记录/关注列表)+ 策略 tabs 按配置注册
|
||||
- ✅ 设置页两个子 tab(通用设置/策略分组)
|
||||
- ✅ 服务端 API 全链路验证通过(tabs、strategies CRUD、快捷操作)
|
||||
|
||||
## 经验沉淀
|
||||
|
||||
- **React JSX 空值崩溃**:LoadState 的 children 立即求值,positions 为 null 时崩溃被 slot 边界静默吞掉 → 必须空值保护((positions ?? []).map)
|
||||
- **useRpc 引用稳定性**:每次渲染返回新函数导致 effect 无限循环 → useCallback 稳定化
|
||||
- **getStrategies 排序一致性**:设置页/tab 栏/move 逻辑必须共用同一 order 排序,否则顺序不一致
|
||||
- **服务端 API 需重启生效**:客户端 bundle 宿主动态读取,但服务端模块(api.js 等)需重启 DSH 才加载新代码
|
||||
|
||||
## 关联文档
|
||||
|
||||
- 讨论记录(完整):docs/05-需求池/R-003.md
|
||||
- 迭代记录:docs/04-迭代记录/02-分仓管理工具完善与优化/
|
||||
- 设计约束:产品约束-004(删除策略份额回未分配)
|
||||
Reference in New Issue
Block a user