Files
one_divine_lot/docs/03-设计约束/技术方案约束.md
T
2026-08-29 16:20:33 +08:00

3.5 KiB
Raw Blame History

技术方案约束(Technical Constraints

技术方案层面的约束:技术栈、架构、实现规范、依赖原则。后续迭代进行技术实现时以此为依据。

记录格式:每条约束包含「编号 / 约束说明 / 添加日期 / 生效状态 / 失效日期 / 最后一次变更描述」。新增追加、变更更新、失效标记状态(不删除记录)。引用用编号,如 技术约束-001最后一次变更描述:概括该约束最近一次变更(新增 / 变更 / 失效)讨论的最后一层结论;新增时写新增结论,变更/失效时更新为当次结论。

约束列表

编号 约束说明 添加日期 生效状态 失效日期 最后一次变更描述
技术约束-002 分仓管理采用「全量持仓 + 标签」模型:持仓数据为账户真实持仓(来自数据源适配器),标签为逻辑分组元数据(独立于持仓存储,可增删改),聚合视图按标签汇总仓位 2026-08-27 生效 - 讨论确认(R-002):全量持仓为基础,标签体系做逻辑分仓
技术约束-001 行情/交易数据源必须通过统一接口抽象(定义统一的数据模型与操作接口),实现层为具体数据源适配器;当前限定实现 QMT Bridge 适配器,未来可新增其他行情/交易接口适配器,业务层不感知具体数据源 2026-08-27 生效 2026-08-27 变更(2026-08-27 R-002 讨论):原为「QMT Bridge MCP 适配器」,修正为直接调用 QMT Bridge RESTful 接口http://192.168.3.43:8610),MCP 仅作为 Agent 侧封装层,插件侧直连 REST
技术约束-003 QMT Bridge 数据源通过其 RESTful HTTP 接口接入(基础地址 http://192.168.3.43:8610OpenAPI v3 规范),不经过 MCP 层;MCP 是给 Agent 用的封装,插件内部直连 REST 2026-08-27 生效 - 讨论确认(R-002 第 7 轮):老师指出 MCP 是给智能体用的,插件应直连同一服务端口的 RESTful 接口
技术约束-004 插件服务端 API 用 webServer 自开路由(如 /odl/api/*),不直接使用 connection.rpc.intercept('/api') —— DSH 的 /api 通道只能一个 interceptorapi-gateway 已占用),重复 intercept 会抛错导致插件 apply 失败 2026-08-28 生效 - 迭代 01 复盘沉淀:RPC 冲突导致服务端插件 apply 失败、RPC 404
技术约束-005 客户端插件 bundle 必须是 CJS + window.ModuleLoader.load({id, factory}) 包装(tsdown 构建 + wrap 脚本),裸 ESM 无法被 DSH 客户端模块系统加载 2026-08-28 生效 - 迭代 01 复盘沉淀:客户端 bundle 未包装导致 loaded without registering via ModuleLoader.load
技术约束-006 客户端 slots.register 的 component 必须是第二参数(register({...}, Component));settings schema 必须用 schemastery z.object() 函数式定义 2026-08-28 生效 - 迭代 01 复盘沉淀:component 位置错误致 React #130;普通对象 schema 报 schema is not a function
技术约束-007 插件安装用 dsh plugin add(自动 reconcile bundles),不直接用 pnpm addbundle patch 顶层必须是 insert 操作 2026-08-28 生效 - 迭代 01 复盘沉淀:pnpm add 不会更新 dsh.profile.bundles