Type: grilling Status: resolved Labels: wayfinder:grilling Blocked by: None
已收口(2026-09-18,维护者「确认,同意收口」)。第 1–3 轮 Q1–Q9 全部落 ## Answer。下游:02(相机限位数值)与 07(视距雾气规格)随本票解除阻塞;实现票按地图约定接在 .scratch/cockpit-shell-panel-layout/issues/ 的 30 之后。
以下保留本票启动时的问题与候选;当前有效结论以 ## Answer 为准。
「主场景区」(map.primaryArea)在配置里的字段形状、坐标口径与兜底来源是什么?
甲方已裁定(Q1=C):用新配置字段显式给出,本部署取值=甲方框定的沅陵县城范围。但下面三件事还没定死:
map.primaryArea.bounds=[west, south, east, north](度)?还是中心+半径、或 GeoJSON?仓库既有约定是四元数组(map.overlays[].bounds、Rectangle.fromDegrees(bounds[0..3]))。[110.32874994141685, 28.491303899290685, 110.46577922666275, 28.3917230659234] 是 [W, N, E, S](纬度降序)。归一化到仓库约定后是 [110.328749941417, 28.3917230659234, 110.465779226663, 28.4913038992907]。要不要在配置里就写归一化后的顺序,还是允许写 [W, N, E, S] 由代码翻?layer.json(D:\GIS\GIS\yuanlingDEM)valid_bounds = [110.000, 28.000, 111.000, 29.000],与影像 bounds(map.overlays[0].bounds)求交后 B ≈ 97.8 × 111.3 km;按每边折半收紧 50% 后 ≈ 48.9 × 55.8 km,仍是框定范围的 ≈18.5 倍面积(含城区以外的山区森林)。另经 Cesium 1.145 运行时核对:Cesium 不读 DEM 的 valid_bounds(只读 layer.json 的 available 与 metadataAvailability)—— 也就是说「DEM 有效范围」在运行时无法从 Cesium API 取得;前端自行 fetch map.terrain.url 的 layer.json 则另说。那么兜底到底怎么算?候选:
map.overlays[0].bounds),再按比例收紧 50%(可运行时取得,无需读 DEM)。primaryArea 就整段功能关闭(不锁、不雾),并在引擎浮标上如实报状态。维护者确认:Q1=A; Q2=A; Q3=A; Q4=(i)。下述编号对应本票访谈,不对应决策地图早期的 Q 编号。
map.primaryArea 本期只设 bounds,取四元数组 [west, south, east, north],单位为度。无需另存几何中点,不增加中心+半径、GeoJSON 或名称字段。此处的几何中点不改变 ADR 0008 中相机旋转中心的既有定义;相机契约合成仍由 03 裁决。[W, S, E, N]。甲方提供的 [W, N, E, S] 在准备配置时转换;运行时代码不自动翻转。校验要求 west < east、south < north;错误记入配置问题并进入 Q3 确认的关闭路径。B = 影像 bounds ∩ DEM 有效范围,收紧后写入同一个 map.primaryArea.bounds 字段。运行时直接消费配置,不为此额外读取 DEM 元数据、不自行计算 B、不内置沅陵地理常量。未配置时关闭本 effort 中依赖主场景区的限位与自建雾气,并由引擎浮标如实提示;顺序非法也进入关闭路径,并保留配置错误原因。Q3 替代决策地图早先“未配置时由内置兜底自动得到 B 收紧 50%”的描述。部署期生成候选值不等于前端构建期写死源码,也不要求为修改区域重建应用;结果进入既有部署配置。
valid_bounds ⊂ 影像 bounds,无实际越界。map.home 预设经纬度(相机路径由 .scratch/cockpit-shell-panel-layout/issues/03 相机控制契约锁定,该票已 resolved、维护者 2026-09-17 验收)。数值随部署配置 map.home.lon/lat 走;本机为 lon 110.39028164 / lat 28.4436787。维护者澄清:此处 T03 指外壳与面板布局(执行索引)的 #3 相机控制契约,不是本 effort 的 03 —— 引用目标已 resolved,无相互参照、无死锁,不需要加 Blocked by 边。map.home.lon/lat 后重算候选值。本部署显式值不做重定位(其几何中点与 map.home 相差约 0.7 km,由 02/03 的限位口径自理)。据此,部署期候选值公式补全为:B = 影像 bounds ∩ DEM layer.json 的 valid_bounds;候选值 = B 围绕 map.home 经纬度、东西/南北各折半。用本机数据算得示例 ≈ [110.1402, 28.1936, 110.6404, 28.6938](约 48.9 × 55.7 km,仍完整包含甲方框定范围);部署时按实际数据重算,不内置该常量。
本部署仍采用甲方框定的沅陵县城范围,不用更大的 B 收紧结果替换它:
{
"map": {
"primaryArea": {
"bounds": [110.328749941417, 28.3917230659234, 110.465779226663, 28.4913038992907]
}
}
}
以上是已确认的契约示例,尚未修改运行配置或实现代码。
目标:提供一个明确的主场景区配置,供后续限位、雾气与过渡票共同引用。
边界:本票确定区域配置与不可用时的处理;限位数值归 02,相机中心、home 预设及进出状态机合成归 03,雾气曲线归 07,过渡手段归 08。
取舍:四元数组沿用仓库现有矩形约定;写入时归一化、运行时拒绝反向顺序,使配置错误可见。部署期计算把数据覆盖责任放在部署侧,减少运行时依赖;相应代价是配置遗漏后不会自动恢复区域保护,必须通过明确状态提示发现并修正。
剩余风险:契约各条已全部确认;待维护者过目最终 Answer 全文并确认 resolved 收口。长期注意点:若本 effort 的 03 将来改动 home 的 lon/lat(当前冲突只涉及 range/pitch),需回本票更新 Q5 的中心口径。
事实核实(已改正题面):
layer.json 实测 valid_bounds = [109.99967, 27.99977, 111.00011, 29.00022](≈ [110, 28, 111, 29])。影像 bounds ∩ 它 ≈ 97.8 × 111.3 km;原题面「B = 48.9 × 55.8 km」实为每边折半收紧后的数字,已按实测改正。Build/CesiumUnminified/Cesium.js)只读 layer.json 的 available 与 metadataAvailability,valid_bounds 零引用 —— 「DEM 有效范围运行时从 Cesium API 拿不到」成立。原题面把该结论归给调研 05,实际 05 的产物未含此项,已改为直接溯源。services/cockpitConfig.js):内置默认 → 构建期环境变量 → 运行时文件(gitignored、部署侧维护)→ 宿主注入。内置默认层里 terrain.url 为空、overlays 为空 —— mock/无配置部署没有影像也没有 DEM,B 在该世界无从谈起。normalizeConfig 现状:overlays[].bounds 只校验「四个数字」,不校验顺序;主场景区若要防「纬度降序」抄错,需要新校验。第 1 轮四问已发维护者:Q1 字段形状 / Q2 坐标口径(含顺序校验)/ Q3 兜底机制 / Q4「收紧 50%」语义。结论待答复后写进 ## Answer。
维护者答复:Q1=A; Q2=A; Q3=A; Q4=(i)。已写入 ## Answer,并同步更新 map.md 第 1 条裁定(原「内置兜底自动得到 B 收紧 50%」已被 Q3=A 取代)。
补充事实(继承第 1 轮子代理简报并已复核):
cockpitConfig.js 单次加载、进程内缓存;主场景区沿用该生命周期,不新增热更新。valid_bounds ⊂ 影像 bounds,当前无实际越界。[110.250, 28.250, 110.750, 28.750],仍完整包含甲方框定范围。第 2 轮两问已发维护者:Q5 收紧中心、Q6 数据越界条款。结论待答复后并入 ## Answer。
维护者答复:Q5=以在地球视角点击进入系统后的默认位置与归位按钮进入的同位置(T03中完成)为中心点,方形边界区域跟随这个中心点变化;Q6=A。
核实事实:
Blocked by: 01,02,open —— 若 01 的结论依赖 T03 将锁定的进入默认位置,01↔03 出现相互参照,需按本轮 Q9 选收口方式。mapService.flyToHome / CockpitShell.vue 归位按钮);本机 home 预设 lon 110.39028164 / lat 28.4436787 / pitch −55 / range 12000。Status: open、进度 38%;01 claimed、02/03/07/08 open、04/05/06 resolved。Q5 的 T03 耦合使 01 的 resolved 需先定 Q9 的收口方式。第 3 轮三问已发维护者:Q7 作用域 / Q8 形状 / Q9 依赖收口方式。
维护者答复:Q7=A; Q8=描述有误,选(a)沿用矩形; Q9=描述有误,T03 指外壳与面板布局(执行索引)的 #3 相机控制契约。
核实事实:
.scratch/cockpit-shell-panel-layout/issues/03-camera-control-contract.md:Status: resolved,2026-09-17 维护者人工验收结票(三键契约、阻尼、旋转中心语义,来源 ADR 0008)。map.home 预设 lon 110.39028164 / lat 28.4436787。Blocked by 边、无死锁,Q9 消解。map.home 经纬度、每边折半 ≈ [110.1402, 28.1936, 110.6404, 28.6938],完整包含甲方框定范围。下一动作:等维护者确认最终 Answer 全文后,本票 resolved + 写 map Decisions-so-far 索引。
维护者确认「确认,同意收口」。已执行:Status: claimed → resolved、进度 100%、map.md 的 Decisions-so-far 与任务清单同步、map 进度由 38% 更新为 50%。下游 02、07 随之解除阻塞。