Files
one_divine_lot/docs/04-迭代记录/01-分仓管理工具/迭代复盘.md
T
2026-08-29 16:20:33 +08:00

41 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 迭代复盘:01-分仓管理工具
> 复盘日期:2026-08-28 | 迭代状态:已完成(R-002 验收通过)
## 迭代总结
实现了「分仓管理工具」第一个可用版本:DSH 插件(独立挂载)+ 三个策略 tab(全部持仓/网格策略持仓/做T持仓)+ 设置菜单(神之一手)+ 份额分配本地管理 + 服务端 HTTP API。
## 事实记录(做了什么)
1. S1-S8 全部完成:插件骨架、数据源适配(QMT REST 直连)、设置管理、本地存储、分仓逻辑、服务端 API、客户端 tab、宿主挂载;
2. 客户端 UI:三个 conversation.view tab + settings.section 设置菜单;
3. 响应式布局:添加持仓组件支持宽/中/窄三种布局;
4. 构建链路:tsdown 构建 + __ModuleLoader__ 包装脚本。
## 经验教训(复盘沉淀)
### 1. DSH 插件开发的「坑」(重要)
- **RPC 通道冲突**DSH 的 /api RPC 通道**只能一个 interceptor**api-gateway 占用)—— 插件不能直接 intercept('/api'),应改用 **webServer 自开路由**
- **slots.register 签名**component 必须是**第二参数**register({...}, Component)),写在 options 里会导致 React #130 崩溃;
- **客户端 bundle 格式**:必须 **window.__ModuleLoader__.load({id, factory})** 包装(CJS 格式),裸 ESM 无法加载;
- **settings schema**:必须是 **schemastery z.object()**(函数式 schema),普通对象会报 "schema is not a function"
- **ctx 属性赋值**Cordis 不允许直接给 ctx 设属性(ctx.xxx = ...),会报 "cannot set property without provide"。
### 2. 插件安装与宿主集成
-**dsh plugin add**(而非 pnpm add)—— 它会自动 reconcile bundles
- 插件的 dsh.bundle.patchcordis.patch.yml**顶层必须是 insert 操作**,不是裸插件行;
- 客户端插件需要 **exports["./client"]** 指向 bundle,且 bundle 必须 __ModuleLoader__ 包装;
- 修改宿主配置(bundles/cordis.patch.yml)在 session workspace 外,需要沙箱升级 + 用户批准。
### 3. 需求讨论的价值
- 需求从「交易管理插件」→「智能交易辅助系统」→「分仓管理工具」多轮收敛;
- 老师的关键输入:分仓=按策略(网格超市/手动做T)、份额拆分(1000股→网格600+做T400)、策略 tab 内编辑(添加/移出)、步进100+手动输入。
## 下一步建议
1. **WebSocket 数据监控**(老师已提):插件可开启 WebSocketwebServer.registerUpgrade + ws 库),实现持仓/行情实时推送;
2. **策略配置完整管理**:网格参数(区间/格距/档位)等;
3. **做T 记录**:交易过程记录与复盘;
4. **设计约束补充**:本次沉淀的 DSH 插件开发规范(RPC 冲突、ModuleLoader、slots 签名等)应写入技术方案约束,供后续迭代参考。