|
|
@@ -0,0 +1,58 @@
|
|
|
+# Parallel Web Cockpit Spec
|
|
|
+
|
|
|
+## Problem Statement
|
|
|
+
|
|
|
+沅陵县城市生命线驾驶舱目前主要依赖 UE5 交付。需要并行开发一个可替代 UE5 的 Web 驾驶舱,保持既定业务结构、只读边界和后端契约,同时降低部署与国产化适配风险。
|
|
|
+
|
|
|
+## Solution
|
|
|
+
|
|
|
+建立独立 Web 前端驾驶舱工程,复用当前 TvT.js / Fes.js 生态,新增 CesiumJS 作为地理空间主引擎,Three.js 只做局部增强。首期覆盖一张图和总体概览、基础设施、运行监测、预警处置四个只读模式。每个一级模式固定 4 个二级面板同时展示,共 16 个面板;另有 9 个共享详情视图和 5 个预警/报警模式变体。页面采用功能占位 UI,待设计公司资源交付后再替换视觉资产。
|
|
|
+
|
|
|
+## User Stories
|
|
|
+
|
|
|
+1. 作为指挥中心领导,我可以通过一张图查看城市生命线总体态势,以便快速掌握整体风险。
|
|
|
+2. 作为值班人员,我可以在四个业务模式之间切换并保持中央地图不重建,以便持续跟踪空间上下文。
|
|
|
+3. 作为值班人员,我可以在一个一级模式内同时看到全部相关二级面板,以便快速比较信息而不破坏地图状态。
|
|
|
+4. 作为值班人员,我可以点击监测点查看点位摘要和关联设备卡片,以便快速定位问题对象。
|
|
|
+5. 作为值班人员,我可以从设备卡片进入设备详情,以便查看档案、最新指标、预警、报警、工单状态和图片。
|
|
|
+6. 作为值班人员,我可以看到后端解析后的点位状态和原因,以便判断当前风险优先级。
|
|
|
+7. 作为值班人员,我可以在数据过期或分区失败时看到明确状态,以便不误把旧数据当作实时数据。
|
|
|
+8. 作为值班人员,我可以通过 WebSocket 更新和手动刷新获得最新设备状态,以便持续值守。
|
|
|
+9. 作为运维人员,我可以通过部署环境注入凭据和接口地址,以便前端不保存账号或密钥。
|
|
|
+10. 作为验收人员,我可以按契约化 mock 和真实接口两种模式验证页面结构,以便先确认交互再联调数据。
|
|
|
+
|
|
|
+## Implementation Decisions
|
|
|
+
|
|
|
+- 技术栈沿用 TvT.js 生态:Vue 3、Fes.js、TresJS、Three.js、Pinia、UnoCSS、Fes Design / Naive UI;新增 CesiumJS。
|
|
|
+- 驾驶舱入口为 `src/pages/cockpit/index.vue`(薄,只挂载 `CockpitShell`),全部代码收在 `src/modules/cockpit`,不做成 TvT 插件,也不使用 `pluginMaker` 交付。不使用 `layout.vue`,不在 `.fes.js` 写 `router.routes`。
|
|
|
+- 新增代码默认 JavaScript,不把 TypeScript 增设为项目新规范。
|
|
|
+- Cesium 承担底图、地形、3D Tiles、监测点、未关联设备和管线主图;Three.js 只用于重点管线、构件、断面和局部增强。
|
|
|
+- `/cockpit` 是唯一外壳路由;四个一级模式通过 `mode` 内部状态切换。模式内的全部二级面板同时出现在左右两栏,展开状态由 `expandedPanelIds` 维护,中央地图常驻。
|
|
|
+- Pinia 按领域拆分:`mapStore`、`filterStore`、`detailStore`、`runtimeStore`、`uiStore`。
|
|
|
+- API、WebSocket、Cesium、Three.js 均通过服务层访问;页面组件不直接依赖接口字段。
|
|
|
+- 后端契约以现有 `/api/cockpit/v1/...` 控制器、响应结构、演示文档和 `/ws/deviceStatus` 行为为准;当前后端未提供可用 OpenAPI 文档,前端不要求先补 OpenAPI。
|
|
|
+- 契约化 mock 放在 `src/modules/cockpit/mocks`,与真实接口走同一适配层。
|
|
|
+- 静态资产放 `public/cockpit`,不直接依赖 `public/plugins`。
|
|
|
+- Cesium、天地图和后端凭据由部署环境或后端配置注入,前端不硬编码。
|
|
|
+- 非法、缺失、零值、超范围或未校验坐标不上图,但保留在列表和详情中并显示原因。
|
|
|
+- 首期按 4K 主屏、万级点位以内、20 万级管线段以内设计;地图骨架和摘要先显示,点位与管线渐进加载。
|
|
|
+
|
|
|
+## Testing Decisions
|
|
|
+
|
|
|
+- 首期以人工走查为主,验证地图摘要、两级详情、模式切换、状态更新、过期与失败分区。
|
|
|
+- 对坐标校验、状态映射、快照合并、领域适配器等纯逻辑补充少量单测。
|
|
|
+- 不因测试引入新测试框架;不重排现有工程结构。
|
|
|
+
|
|
|
+## Out of Scope
|
|
|
+
|
|
|
+- 管理端写操作、登录、权限管理、工单处置、阈值配置和规则管理。
|
|
|
+- UE5 场景改造、Pixel Streaming 服务端和 Docker 部署。
|
|
|
+- CAD 管线数据转换、坐标精化、GIS 数据生产和高精度模型制作。
|
|
|
+- 竖屏、移动端、超宽屏和多屏拼接。
|
|
|
+- 预警真伪、误报率或准确率判断。
|
|
|
+
|
|
|
+## Further Notes
|
|
|
+
|
|
|
+- 首期验收顺序:地图摘要 → 两级详情 → 14 面板信息结构 → WebSocket/新鲜度 → 3D Tiles/管线增强。
|
|
|
+- 后端接口变更时,先更新适配器和字段字典,不直接改页面结构。
|
|
|
+- 稳定通用插件能力可继续复用,但驾驶舱主体页面和状态流程必须由自有代码承载。
|