Skip to content

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 生命周期资源。

新功能流程 ​

  1. 判断是产品壳/跨组件业务,还是可复用 App 能力。
  2. 可复用 UI 在 apps/ 实现并发布远程制品;产品只新增 adapter 和装配项。
  3. 产品业务在 store/service/orchestration 中实现,通过契约驱动远程 Renderer。
  4. 在组件服务管理平台配置中文名称、Renderer、位置与壳菜单显示项,导出装配清单。
  5. 执行远程制品发布、装配校验和产品全量门禁。

验收标准 ​

  • [ ] 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 门禁通过。