Forráskód Böngészése

docs(cockpit): 更新部署资产与免鉴权说明

ChenJZ 15 órája
szülő
commit
7d1bbe9d86
2 módosított fájl, 18 hozzáadás és 11 törlés
  1. 17 10
      docs/cockpit-deployment.md
  2. 1 1
      public/cockpit/config.example.json

+ 17 - 10
docs/cockpit-deployment.md

@@ -140,12 +140,11 @@
 - 清单请求或后续内容请求失败只记状态、不影响其它图层:状态行显示 `3D Tiles 加载失败(…)`;内容阶段错误由 `tileFailed` 事件捕获,不能只用根 `fromUrl()` 成功判断。
 - `geometricError` 应按数据层级和实际误差设置。旧版把一次未加载现象直接归因于数值0,未隔离相机/视锥等变量,不能作为格式硬约束。
 - 地面视图需开启 `globe.depthTestAgainstTerrain`。本轮已修复默认值;地面与管线半透明来回切换由像素回归验证,不能用“模型已加载”替代遮挡验收。
-- 当前模型状态:
-  1. **旧程序化体块已被否决,禁止默认启用**:`D:\GIS\GIS\cityMassing\` 保留作历史资料,`map.tilesets` 留空。新 Blender 资产库与示范街区在 `tools/city-massing/house-library/` 和 `tools/city-massing/district/generated/`,仅通过本机 `serve-review.mjs` 提供效果审查,不进入生产包,也未获得完整县城验收。
-     所有立面/楼层为估计,影像描绘存在视差;**非测绘建筑,不得用于量测/统计/应急决策**。复现、资产与覆盖清单见 `tools/city-massing/README.md`。
-  2. **甲方原始 3D Tiles**:`D:\GIS\GIS\yuanlingSHP`(cesiumlab `model2tiles` 导出)**缺根
-     `tileset.json`**、分块是局部坐标;曾补过一版合成根文件,经目测**错位且是白模,不采用**
-     (合成文件已删除)。若日后用 cesiumlab 重导并勾选生成根 tileset,直接填 `map.tilesets` 即可替换示意模型。
+- 当前模型状态(2026-11-02 部署盘点口径):
+  1. **旧资产继续禁用**:`D:\GIS\GIS\cityMassing\` 的旧程序化体块与 `D:\GIS\GIS\yuanlingSHP\` 的错位白模不得恢复启用;`tools/city-massing/house-library/`、`district/generated/` 与 `serve-review.mjs` 仅用于效果审查,不进入生产。
+  2. **当前配置选择 `city-regions-v10-cs1`,但它只是生产候选,不是已验收正式版本**:完整建模 `manifest.json` 仍记录 `runtimeValidated:false`。正式启用必须由维护者批准,并完成预发布冷暖加载、五档外观、连续运动及业务联调验收;不得以文件存在或局部测试替代批准。
+  3. **上传必须是完整运行载荷**:包含 `coarse-tileset.json`、`runtime-manifest.json`、113 个区域目录,以及 `region-84/85/86` 引用的 `../lod-near-estate-pilot-v6/streaming-v14/` 下 3 个 GLB。两个模型目录必须保持同一个 `cad-bim` 父目录;只上传 `city-regions-v10-cs1` 会漏 3 片内容。DEM 的 `.tmp`、历史模型和审计报告不上传。
+  4. GIS 仍外置静态服务,不打入前端 dist。当前模型 URL 前缀为 `/gis/cad-bim/`,不是旧示例的 `/gis/model/`;生产 nginx 必须按实际配置补 alias。
 
 ### 2.6 「目标城市」与进入引导
 
@@ -459,22 +458,30 @@ location /gis/pic3/ {
     add_header Cache-Control "public, max-age=86400";
 }
 
-# 3D Tiles(若启用)
+# 3D Tiles(若启用旧 /gis/model/ 配置)
 location /gis/model/ {
     alias /data/gis/model/;
     add_header Cache-Control "public, max-age=86400";
     types { model/gltf-binary glb; application/json json; }
 }
+
+# 当前 CAD/BIM 候选资产(启用前须确认配置与资产批准)
+location /gis/cad-bim/ {
+    alias /data/gis/cad-bim/;
+    add_header Cache-Control "public, max-age=86400";
+    types { model/gltf-binary glb; application/json json; }
+}
 ```
 
 **两条硬要求**:
 
-1. **别让 `.terrain` / `.png` / `.glb` / `layer.json` 走 SPA 回退**。回退成 `index.html` 时,
+1. **别让 `.terrain` / `.png` / `.glb` / `layer.json` / `runtime-manifest.json` / 区域 `tileset.json` 走 SPA 回退**。回退成 `index.html` 时,
    Cesium 会报 `Unexpected token '<'`(地形)或整片瓦片加载失败。上面的 `location` 前缀即是隔离手段。
-2. **允许跨域**(前端与数据不同源时):
+2. **优先同源,确需跨域时按实际来源放行**(前端与数据不同源时):
    ```nginx
-   add_header Access-Control-Allow-Origin "*";
+   add_header Access-Control-Allow-Origin "https://驾驶舱实际内网域名";
    ```
+   不要为了排障直接对公网开放后端端口或长期使用 `*`;驾驶舱 REST/WS 免鉴权的安全边界是网络层内网隔离。
 
 **目录搬走/换机器**:只改 `config.json` 里对应的 `url`,**不用改前端、不用重建**。
 

+ 1 - 1
public/cockpit/config.example.json

@@ -4,7 +4,7 @@
     "分层覆盖顺序(后者覆盖前者):内置默认 → 构建期 VITE_COCKPIT_* → 本文件 → 宿主注入的 globalThis.__COCKPIT_CONFIG__。",
     "启用本文件(默认不探测,免得每页刷 404):宿主页加一行 window.__COCKPIT_CONFIG_URL__ = 'auto',或构建期设 VITE_COCKPIT_CONFIG_URL=auto(也可以给绝对 URL 从后端拉)。",
     "dataSource 默认 mock:只有显式写 real 才会请求真实后端,mock 与真接口走同一个适配层(services/cockpitApi.js)。",
-    "api.token / ws.token 是给开发与联调用的只读令牌;生产环境应由网关/反向代理在转发时补 Authorization 头,这里留空即可。",
+    "api.token / ws.token 已废弃:驾驶舱 REST 与 /ws/deviceStatus 自 2026-09-28 起免鉴权,这里留空即可,旧值会被忽略;安全边界是网关和应用直连端口均只在内网可达,其它业务 API 仍按原认证规则。",
     "本项目优先用内网离线数据:底图默认 natural-earth(Cesium 自带离线影像,无需账号/外网/密钥)。在线源(tianditu 需 tk、arcgis-imagery 免 key)只作为可选项。",
     "map.basemap.source 取值:none(不配底图)/ natural-earth(离线,推荐)/ xyz(任意 {z}/{x}/{y} 模板,本地或自建瓦片)/ tianditu(需 tk)/ arcgis-imagery(在线,免 key)。",
     "map.terrain.url 指向量化网格 DEM 目录(内含 layer.json);map.overlays[] 叠本地精细影像(TMS 用 {reverseY},bounds 填数据实际范围)。",