Appearance
tactics-sim-engine 开发规范
适用于
products/tactics-sim-engine。产品采用“产品基座 + 产品业务内核 + 装配清单 + 远程 App”模式。
定位
战术仿真引擎是基于 Vue、Pinia、Cesium 和 Dockview 的桌面级产品。产品自身负责 Header、Ribbon、StatusBar、主题、布局基座、跨组件状态与业务编排;中间工作区中的地球、场景树、实体列表、属性、时间轴等功能由远程 App 提供。
当前目录职责
text
products/tactics-sim-engine/
├── public/composition/ # 产品装配清单(精确版本与不可变制品地址)
└── src/
├── bootstrap/ # 清单加载、校验和启动
├── components/runtime/ # 远程 Renderer 宿主、加载/错误状态
├── layouts/ # 产品壳与 Dockview 布局
├── runtime/ # Host Globals、制品加载器、产品 Adapter
├── stores/ # 产品级 Pinia 状态
├── services/ # GIS/仿真业务服务
├── core/ # 事件总线等产品内核
└── components/ # Header、Ribbon、StatusBar 等产品壳 UI远程 App 唯一实现规则
- 已进入装配清单的功能 App,产品中不得保留同功能 Vue 面板、wrapper、源码 alias 或 workspace 运行时依赖。
- 产品不得从
apps/*/src导入实现,也不得静态 import 对应 App 包。 - 远程组件只能通过装配清单和 Runtime 加载;版本必须精确锁定,制品地址必须不可变。
- App 只负责能力与 Renderer,不直接访问产品 Store、产品内部路径或客户 API。
- 产品差异通过
src/runtime/*Adapter.ts转换为稳定 props、事件和 Capability Port。 - 跨组件事务、权限、联动、状态总控和事件总发必须留在产品代码中,不能塞入 JSON 配置。
布局规则
- Header、Ribbon、StatusBar 属于产品壳,其菜单项和显示项由装配配置控制。
- 中间区域采用 Dockview,位置由装配清单 placement 决定,并支持运行时拖拽、关闭和重新创建。
- 弹窗、覆层等同样作为远程 Renderer 挂载到产品提供的扩展点。
- 产品不得恢复旧
components/panels本地面板注册表或第二套窗口 Store。
状态与服务
- 全局业务状态使用产品 Pinia Store。
- 跨 App 通信通过产品事件总线、ServiceRegistry 或版本化 Capability Port。
- Cesium Viewer 由远程 Earth Viewer 创建,经产品 adapter 注入 Store 与 GIS Service;其他远程 App 不得从全局变量偷取 Viewer。
- Renderer 卸载时必须由对应 adapter 释放监听、计时器和 GIS 生命周期资源。
新功能流程
- 判断是产品壳/跨组件业务,还是可复用 App 能力。
- 可复用 UI 在
apps/实现并发布远程制品;产品只新增 adapter 和装配项。 - 产品业务在 store/service/orchestration 中实现,通过契约驱动远程 Renderer。
- 在组件服务管理平台配置中文名称、Renderer、位置与壳菜单显示项,导出装配清单。
- 执行远程制品发布、装配校验和产品全量门禁。
验收标准
- [ ]
src/components/panels不存在远程 App 的本地副本。 - [ ] 产品
package.json不依赖已远程化的 App workspace 包。 - [ ] Vite 不包含指向
apps/*/src的 alias。 - [ ] 远程 App 均从装配清单锁定的制品地址加载。
- [ ] 原业务交互由产品 adapter/store/service 保持,关闭与重新创建生命周期正常。
- [ ] Header、Ribbon、StatusBar 配置和 Dockview 拖拽行为正常。
- [ ] 全仓 lint、typecheck、build、test、architecture、composition 门禁通过。