spec.md 4.6 KB

Cockpit shell panel layout spec

Status: ready-for-agent

Problem Statement

Web 驾驶舱此前把 14 个二级视图设计成 mode/subview 切换,但这与 UE 原型的实际交互不符。值班人员需要在一个一级模式内同时看到全部相关二级面板,而不是在多个子视图之间来回切换。

Solution

使用一个 /cockpit 外壳承载全部业务模式。中央一张图常驻;用户只切换四个一级模式。进入某个一级模式后,该模式下的全部二级面板同时出现在左右两栏;每个面板通过标题栏展开或收起。

User Stories

  1. 作为指挥中心领导,我希望切换一级模式时中央地图不重建,以便保持空间上下文连续。
  2. 作为值班人员,我希望进入一级模式后看到该模式下的全部二级面板,以便快速比较相关信息。
  3. 作为值班人员,我希望点击面板标题栏可以收起或展开面板,以便把注意力集中在地图或其他信息上。
  4. 作为值班人员,我希望切换一级模式时全部面板恢复默认展开,以便每次进入新场景都有完整上下文。
  5. 作为值班人员,我希望左右两栏的面板结构稳定,以便在连续值守时快速定位信息。
  6. 作为值班人员,我希望驾驶舱保持只读,以便避免误操作业务状态。
  7. 作为设计人员,我希望首期使用功能占位 UI,以便后续只替换视觉资源而不重排信息架构。
  8. 作为维护者,我希望驾驶舱代码独立于 TvT 插件目录,以便最终交付边界清晰。
  9. 作为测试人员,我希望只通过 CockpitShell 这个公共契约验证外壳行为,以便避免陷入内部实现细节。
  10. 作为集成人员,我希望接口、WebSocket、Cesium 和 Three.js 都通过服务层访问,以便页面不直接依赖底层实现。
  11. 作为值班人员,我希望每个详情分区可以独立成功、失败或过期,以便某一分区异常时仍能看到其他数据。
  12. 作为值班人员,我希望无坐标对象不上图但保留在列表中,以便仍能查看业务信息。
  13. 作为运维人员,我希望凭据由部署环境注入,以便前端不保存账号或密钥。
  14. 作为验收人员,我希望先用契约化 mock 验证外壳行为,再联调真实接口,以便降低联调风险。

Implementation Decisions

  • /cockpit 是唯一外壳路由;二级面板不是路由,也不使用 subview。
  • 一级模式使用 mode 状态,包含总体概览、基础设施、运行监测、预警处置。
  • 不再使用 subview 状态;模式内的二级面板同时展示。
  • 面板展开状态使用 expandedPanelIds 表示;点击标题栏切换展开/收起。
  • 切换一级模式时重置为默认展开。
  • CockpitShell 是本次唯一公共测试 seam。
  • 中央地图通过 MapCanvas 常驻,不因模式或面板切换重建。
  • 左右两栏的面板数量固定为每个一级模式 4 个:总体概览(态势总览、基础设施、运行监测、预警设置),基础设施(基础档案、运行信息、管理信息、应急保障),运行监测(监测概览、监测分布、运行概况、监测点台账),预警处置(当前预警、历史分析、预警效率、预警分析)。
  • 首期代码默认 JavaScript,不引入 TypeScript 作为项目规范。
  • 驾驶舱入口为 src/pages/cockpit/index.vue(薄,只挂载外壳),全部代码收在 src/modules/cockpit。不使用 src/pages/cockpit.vue,不使用 layout.vue,也不在 .fes.js 写 router.routes。
  • 静态资产位于 public/cockpit。
  • 接口、WebSocket、Cesium、Three.js 均通过服务层访问。
  • 契约化 mock 与真实接口走同一适配层。
  • Cesium、天地图和后端凭据由部署环境或后端配置注入,前端不硬编码。

Testing Decisions

  • 通过 CockpitShell 验证模式到面板集合的映射。
  • 通过 CockpitShell 验证面板展开/收起行为。
  • 通过 CockpitShell 验证切换模式时地图保持常驻。
  • 不在本次 spec 中测试单个面板的业务内容。
  • 使用人工走查和少量纯逻辑单测;不引入新测试框架。

Out of Scope

  • 管理端写操作、登录、权限管理和工单处置。
  • 单个业务面板的详细数据契约和视觉终稿。
  • UE5 场景改造、Pixel Streaming、Docker 部署和国产化认证。
  • CAD 数据转换、坐标精化和高精度模型制作。
  • 竖屏、移动端、超宽屏和多屏拼接。

Further Notes

  • 本 spec 修正了此前 mode/subview 的表述。
  • ADR 0003 和 0007 已同步更新。