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

2.8 KiB
Raw Blame History

迭代复盘: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 通道只能一个 interceptorapi-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 签名等)应写入技术方案约束,供后续迭代参考。