| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472 |
- [
- {
- "test": "t01-panel-catalog",
- "exitCode": 0,
- "tail": [
- "T01 检查通过:4 个模式 / 16 个面板 / 展开收放与默认展开一致 / 筛选选项(5 范围 · 5 行业)正确 / 地图服务生命周期幂等且只创建一次 / Cesium 资源基址相对 publicPath 解析正确。"
- ]
- },
- {
- "test": "t03-pole-domain-probe",
- "exitCode": 0,
- "tail": [
- " 2: east=0 north=1263937 → 0.0000,-66.6316 |Δlat|=11.4342",
- " 3: east=0 north=1263937 → 0.0000,-55.1974 |Δlat|=11.4342",
- " 4: east=0 north=1263937 → 0.0000,-43.7632 |Δlat|=11.4342",
- " 5: east=0 north=1263937 → 0.0000,-32.3290 |Δlat|=11.4342",
- " 6: east=0 north=1263937 → 0.0000,-20.8948 |Δlat|=11.4342"
- ]
- },
- {
- "test": "t03-pan-direction-probe",
- "exitCode": 0,
- "tail": [
- "== 界上东西向(应绕极轴有界移动,纬度不变) ==",
- " 1: east=-6319600 → -113.5393,85.0000",
- " 2: east=-6319600 → 132.9213,85.0000",
- " 3: east=-6319600 → 19.3820,85.0000",
- " 4: east=-6319600 → -94.1574,85.0000"
- ]
- },
- {
- "test": "t03-antimeridian-probe",
- "exitCode": 0,
- "tail": [
- "单调推进: true",
- "",
- "== 反方向(-179.9 → 179.9)==",
- "落点: -179.900 → -179.920 → -179.940 → -179.960 → -179.980 → -180.000 → 179.980 → 179.960 → 179.940 → 179.920 → 179.900",
- "总弧长 °: -0.200 (应 ≈ +0.2)"
- ]
- },
- {
- "test": "t03-camera-contract",
- "exitCode": 0,
- "tail": [
- "PASS 10b 阻尼可拖调(τ=40 走 0.018° > τ=400 走 0.002°;τ=0 直接跟手)",
- "PASS 11 DOM 绑定:三类输入接上、右键菜单与滚轮默认行为被吃掉、可完整摘除",
- "PASS 12 状态串可读:h=0.0 p=-60.0 r=10000 pivot=110.39000,28.46000 focus=ground drag=none settled=yes",
- "",
- "T03 逻辑检查通过:三键契约、中心规则、换中心动画、阻尼(帧率无关)、DOM 绑定均符合契约与维护者裁定。"
- ]
- },
- {
- "test": "t04-config",
- "exitCode": 0,
- "tail": [
- "T04 检查通过:三态(ready/missing/failed)+ 四层来源 + 宽松校验 + 载荷判定 + mock/real 同一出口 + 凭据只在适配层(8 个页面/store 文件零 Authorization/token,15 个模块文件零登录跳转)。"
- ]
- },
- {
- "test": "t05-adapter",
- "exitCode": 0,
- "tail": [
- "PASS D5-domain/overviewPanels.js-no-login-redirect — 不跳登录页",
- "PASS D5-domain/warningResponsePanels.js-no-login-redirect — 不跳登录页",
- "",
- "T05 适配层检查:283/283 项通过。",
- "T05 领域适配层全部通过。"
- ]
- },
- {
- "test": "t06-assets",
- "exitCode": 1,
- "tail": [
- " at ModuleJob.syncLink (node:internal/modules/esm/module_job:276:33) {",
- " code: 'ERR_IMPORT_ATTRIBUTE_MISSING'",
- "}",
- "",
- "Node.js v24.20.0"
- ]
- },
- {
- "test": "t07-coordinate",
- "exitCode": 0,
- "tail": [
- "PASS I4-no-reason-code-in-list-ui — 清单组件零后端原因码",
- "PASS I5-list-renders-reason-and-name — 清单渲染对象名与中文原因",
- "PASS I6-backend-summary-fields-confined — 后端汇总字段只出现在 domain/coordinate.js 与 mock",
- "",
- "T07 逻辑检查:39/39 项通过。"
- ]
- },
- {
- "test": "t08-map-summary",
- "exitCode": 0,
- "tail": [
- "PASS H2-adapter-owns-the-params — 分页与快照参数只在 mapStore 的适配翻译处拼",
- "PASS H3-shell-says-what-not-how — 外壳只说「再取一批/刷新」,不直接翻页",
- "",
- "T08 逻辑检查:44/44 项通过。",
- "T08 逻辑检查全部通过。"
- ]
- },
- {
- "test": "t09-point-status",
- "exitCode": 0,
- "tail": [
- "PASS F4-colors-read-from-tokens — 地图标记的颜色从 .cockpit-shell 的计算样式读 --lv1..--neutral",
- "PASS F4b-engine-and-domain-never-read-css — 读样式只发生在服务层一处(引擎与 domain 都不碰 DOM)",
- "PASS F5-engine-knows-shape-not-status — cesiumEngine 只认 shape/tone,不认识业务状态名",
- "",
- "T09 逻辑检查:38/38 项通过。"
- ]
- },
- {
- "test": "t10-point-detail",
- "exitCode": 0,
- "tail": [
- "PASS F5-marker-source-is-map-summary-only — mapLayerPlan 是 planPointMarkers 的唯一调用点,MapCanvas 只把计划交给 syncPointMarkersForPlan",
- "PASS F6-card-mounts-detail-store — 组件的动作全部交回 store(组件里没有自己的状态机副本)",
- "PASS F7-shell-positions-card-without-map-rebuild — 浮层是 main 的兄弟并由外壳定位:地图节点结构不变(票 02 的常驻语义;票 46 起条件含选择态暂停)",
- "",
- "T10 逻辑检查:57/57 项通过。"
- ]
- },
- {
- "test": "t11-equipment-detail",
- "exitCode": 1,
- "tail": [
- "FAIL F7-card-does-not-hold-its-own-aggregate-state — 组件把状态交给 store,自己不存一份(票 10 的 F6 立场延续)",
- "PASS F8-no-write-operations — 驾驶舱只读:本票不引入任何写操作(spec 验收第 6 条)",
- "",
- "T11 逻辑检查:60/61 项通过。",
- "未通过:F7-card-does-not-hold-its-own-aggregate-state"
- ]
- },
- {
- "test": "t12-work-order-timeline",
- "exitCode": 0,
- "tail": [
- "PASS F12-EquipmentDetailSections.vue-script-calls-are-bound — 脚本体 19 个调用点(defineProps, computed, equipmentPanels, timelineSource, trackOfOrder, if, pathOnlyTrack, rowsOf, archiveRows, metricRows, workOrderRows, eventRows, metricsSource, metricsSourceText, image, imageView, emptyList, emptyListText, isPlaceholder)都解析得到",
- "PASS F11-WorkOrderTimeline.vue-template-references-are-bound — 模板表达式引用的 7 个标识符都有 import/const/props/v-for 定义",
- "PASS F12-WorkOrderTimeline.vue-script-calls-are-bound — 脚本体 3 个调用点(defineProps, computed, pathView)都解析得到",
- "",
- "T12 逻辑检查:52/52 项通过。"
- ]
- },
- {
- "test": "t13-event-list",
- "exitCode": 0,
- "tail": [
- "PASS I4-domain/statusTones.js-no-service-import — domain 不 import service",
- "PASS I5-switch-state-lives-in-store — 分段按钮只调 store 的 setMode(组件不私藏切换状态)",
- "",
- "T13 事件列表检查:49/49 项通过。",
- "T13 事件列表全部通过。"
- ]
- },
- {
- "test": "t14-event-detail",
- "exitCode": 0,
- "tail": [
- "PASS H6-close-does-not-refetch — closeEvent 只清选择与高亮,零取数(否则「返回」会把列表滚回第 1 页)",
- "PASS H7-detail-plans-no-marker — 详情/定位层不建标记计划、不认识 Cesium",
- "",
- "T14 事件详情与设备定位检查:44/44 项通过。",
- "T14 事件详情与设备定位全部通过。"
- ]
- },
- {
- "test": "t15-websocket",
- "exitCode": 0,
- "tail": [
- "PASS H6-subscribe-directly-no-authenticate-send — 服务里只有 cockpitSubscribe 一个发送点,不再发送 authenticate 帧",
- "PASS H7-runtime-service-knows-no-data-store — 运行时服务不认识任何数据 store —— 推送异常在结构上不可能牵连数据分区",
- "",
- "T15 状态推送检查:43/43 项通过。",
- "T15 状态推送全部通过。"
- ]
- },
- {
- "test": "t16-freshness",
- "exitCode": 0,
- "tail": [
- "PASS G9-partial-state-is-consumed-by-ui — 「部分失败」被外壳真的画出来(data-freshness-partial),不是只写在 domain 里",
- "PASS G10-bridges-section-to-freshness — 分区状态与新鲜度四态之间有唯一一处显式翻译(界面不自己数数)",
- "",
- "T16 数据新鲜度检查:43/43 项通过。",
- "T16 数据新鲜度全部通过。"
- ]
- },
- {
- "test": "t17-infrastructure-panels",
- "exitCode": 1,
- "tail": [
- " at async ModuleJob.run (node:internal/modules/esm/module_job:553:5)",
- " at async node:internal/modules/esm/loader:647:26",
- " at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:101:5)",
- "",
- "Node.js v24.20.0"
- ]
- },
- {
- "test": "t18-monitoring-panels",
- "exitCode": 1,
- "tail": [
- " at async ModuleJob.run (node:internal/modules/esm/module_job:553:5)",
- " at async node:internal/modules/esm/loader:647:26",
- " at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:101:5)",
- "",
- "Node.js v24.20.0"
- ]
- },
- {
- "test": "t19-warning-response",
- "exitCode": 0,
- "tail": [
- "PASS D2-panel-view-dispatches-warning-builders",
- "PASS E1-shared-mode-and-range-controls-are-visible",
- "PASS E2-components-do-not-build-api-paths",
- "PASS E3-current-event-location-remains-detail-flow",
- "\\nT19 warning-response: 16/16"
- ]
- },
- {
- "test": "t20-overview-panels",
- "exitCode": 1,
- "tail": [
- "PASS F6c-shell-per-panel-data-sources-are-pinned — 外壳逐块分派数据源:态势总览→situationData()、基础设施→infrastructureData()、其余→section.data(与各视图函数的期望一一对应)",
- "PASS F7-domain-declares-its-own-paths-nowhere — domain 里不出现接口路径(路径归 services)",
- "PASS F8-paths-live-in-one-place — 四个端点路径只有一处声明:/overview/infrastructure / /overview/monitoring / /overview/warning-settings / /infrastructure/base-archives",
- "",
- "T20 overview-panels: 60/63"
- ]
- },
- {
- "test": "t21-terrain",
- "exitCode": 0,
- "tail": [
- "T21 检查通过:地形与叠加影像的归一化 + 计划层(默认不配、缺字段忽略、bounds/级别校验),并在本机有数据时把配置与 layer.json / meta.json 对齐核对。"
- ]
- },
- {
- "test": "t21-view-modes",
- "exitCode": 0,
- "tail": [
- "T21 视图条件检查通过:地面/管线计划(管线 pitch -18° / 距离 ×0.35 / 地形 α0.45 / 模型 α0.4)、pitch 上限放宽到 5°、切换不产中心字段(构造性不重置)、地面视图按基线还原、脏配置兜底。"
- ]
- },
- {
- "test": "t29-basemap",
- "exitCode": 0,
- "tail": [
- "T29 检查通过:默认不配底图(票 27 行为不变)/ 归一化(source 白名单、子域、级别、图层)/ 四来源计划(none · natural-earth · xyz · tianditu)/ 天地图开发代理与生产子域模板 / 缺 tk 与未知来源的失败态(invalid)。"
- ]
- },
- {
- "test": "t30-view-presets",
- "exitCode": 0,
- "tail": [
- " (已按本机配置核对:home=110.39028164, 28.4436787 label=沅陵县城 intro=true)",
- "T30 检查通过:home/intro 默认值与归一化(含错字段 issue)、预设解析与 label 文案、归位判定(容差 + heading 环绕 + 无状态),并与本机配置里的沅陵坐标对齐核对。"
- ]
- },
- {
- "test": "t34-status-summary",
- "exitCode": 0,
- "tail": [
- "PASS toolbar AST nesting, rightmost refresh, removed diagnostics, summary state cases, and overflow guards"
- ]
- },
- {
- "test": "t35-obb-distance",
- "exitCode": 0,
- "tail": [
- "T35 OBB distance: 4 cases passed"
- ]
- },
- {
- "test": "t35-tileset-loading",
- "exitCode": 0,
- "tail": [
- "T35 tileset loading: 12 scenarios passed"
- ]
- },
- {
- "test": "t36-primary-area",
- "exitCode": 0,
- "tail": [
- "T36 检查通过:四类输入(合法 · 顺序写反 · 缺字段 · 个数不对)判定一致 / 不自动翻转(甲方 [W,N,E,S] 原样判非法)/ 三条关闭路径各自留原因 / 配置问题清单记到字段名与后果 / 本部署显式值与甲方原值只差纬度对调 / 模板同步 / 静态守卫(判定唯一、无内置地理常量、无翻转、只读出口齐)。"
- ]
- },
- {
- "test": "t37-area-limits",
- "exitCode": 1,
- "tail": [
- " operator: 'match',",
- " diff: 'simple'",
- "}",
- "",
- "Node.js v24.20.0"
- ]
- },
- {
- "test": "t38-fog",
- "exitCode": 1,
- "tail": [
- " operator: 'match',",
- " diff: 'simple'",
- "}",
- "",
- "Node.js v24.20.0"
- ]
- },
- {
- "test": "t39-handover",
- "exitCode": 0,
- "tail": [
- "T39 检查通过:相位与 alpha 端点(落定必为 0/1,不留半透明卡死)/ 闸门(全球不揭示、雾不足不揭示、瓦片未就绪不揭示、边缘风险不揭示,三条件齐备才放行)/ 降级(雾不可用仍揭示但不承诺遮边、不绕过瓦片就绪)/ 瓦片失败保持隐藏优先报出 / 边缘判据与雾曲线同源(区内四角全过、证实不能照抄原型 38 km 魔数)/ 返回同步(按下返回那一帧绝不撤雾,收起后才撤)/ 过期取消与幂等 / 配置可调且脏值退回默认 / 读数不承诺已遮边 / 静态守卫(复用雾曲线、alpha 单写入口、原型互斥、隐藏用 alpha 不用 show、读数 diff) / 返回飞行(慢起、两端精确、单调、真的走 flightMs 而非阻尼;\"相机高于雾遮蔽端点而雾仍可见\"的窗口已算出并钉住已接受上限)。"
- ]
- },
- {
- "test": "t40-intro-return",
- "exitCode": 0,
- "tail": [
- "T40 检查通过:回引导态三件事齐备(相机回初始全景 + 自转恢复 + 引导层显示);粘滞开关 `spinPaused` 已被禁止;`setGlobeSpin` 不会\"没做事却报成功\";`stopSpin` 放弃意图而 `startSpin` 只停循环(不自己抹掉意图);落定后由 `resumeSpinIfWanted` 兑现意图;`resetToIntroView` 套用 `INITIAL_PANORAMA` 且已在初始全景时不排飞行;阈值复用 `SETTLE_EPSILON`;读数带 `spinWanted`。"
- ]
- },
- {
- "test": "t41-point-locate-anchor",
- "exitCode": 0,
- "tail": [
- "",
- "T41 点位定位与面板锚定检查:46/46 项通过。",
- "T41 定位与锚定全部通过。"
- ]
- },
- {
- "test": "t42-device-layer",
- "exitCode": 0,
- "tail": [
- "",
- "T42 关联设备图层检查:39/39 项通过。",
- "T42 关联设备图层全部通过。"
- ]
- },
- {
- "test": "t43-device-correspondence",
- "exitCode": 0,
- "tail": [
- "",
- "T43 设备双向对应检查:40/40 项通过。",
- "T43 设备双向对应全部通过。"
- ]
- },
- {
- "test": "t44-device-assets",
- "exitCode": 0,
- "tail": [
- "",
- "T44 设备位置符号与资产接缝检查:47/47 项通过。",
- "T44 设备位置符号与资产接缝全部通过。"
- ]
- },
- {
- "test": "t45-overlap-devices",
- "exitCode": 0,
- "tail": [
- "PASS F1-device-pick-precedes-aggregate-and-point",
- "PASS F2-aggregate-pick-is-not-device",
- "",
- "T45 重叠设备聚合检查:20/20 项通过。",
- "T45 重叠设备聚合全部通过。"
- ]
- },
- {
- "test": "t45-device-camera-height",
- "exitCode": 0,
- "tail": [
- "PASS same XY device selection still updates newly sampled Z",
- "PASS orbit drag pending selection preserves device ground height",
- "PASS service terrain sampling survives real setCameraFocus and controller",
- "PASS late terrain response cannot move camera down to previously selected device",
- "T45 device camera height: passed"
- ]
- },
- {
- "test": "t45-selection-continuity",
- "exitCode": 0,
- "tail": [
- "PASS first device selection dispatches device view at sampled ground height",
- "PASS device switching only changes center using sampled terrain",
- "PASS projected selected-entry pick retains device and group identity",
- "PASS ordinary scene pick retains the same selected-entry metadata",
- "T45 selection continuity: passed"
- ]
- },
- {
- "test": "t46-mode-layer-plan",
- "exitCode": 0,
- "tail": [
- "PASS G3-overview-monitoring-show-all — 概览/运行监测显示全部(状态未知也显示,不凭状态隐藏)",
- "PASS G4-attention-predicate-consistent — 「需要处置」两态判据一致",
- "",
- "T46 模式图层计划检查:29/29 项通过。",
- "T46 模式图层计划全部通过。"
- ]
- },
- {
- "test": "t47-device-effects",
- "exitCode": 0,
- "tail": [
- "PASS E6-no-rings-for-static-states — 正常/离线/未知**没有任何光环**(决策票 07:静态状态不参与动效)",
- "PASS E7-all-attention-states-have-rings — 三种需处置状态都是 4 层环(层数一致,差异靠节奏与色相表达)",
- "",
- "T47 设备状态动效检查:27/27 项通过。",
- "T47 设备状态动效全部通过。"
- ]
- },
- {
- "test": "t47-main-scene",
- "exitCode": 0,
- "tail": [
- "PASS default main scene MP-001: K=2, matching snapshot/detail, local coordinates, device anchors and effects",
- "PASS default main scene MP-002: K=11, matching snapshot/detail, local coordinates, device anchors and effects"
- ]
- },
- {
- "test": "t47-readability-anchor",
- "exitCode": 0,
- "tail": [
- "PASS hidden fan device has no fake parent anchor",
- "PASS effects off cancels the loop without hiding the center icon",
- "PASS wrong parent identity never resolves another device marker",
- "PASS pending device does not pretend to have a known location failure",
- "T47 readability/anchor: passed"
- ]
- },
- {
- "test": "t47-overlap-effects",
- "exitCode": 0,
- "tail": [
- "PASS same device codes with fresh status replace old ALARM rings with WORK_ORDER rings",
- "PASS replacement coordinates break overlap and old group ownership does not survive",
- "PASS effect entities cannot be picked as equipment",
- "PASS clearing the layer removes old effects, owners and scheduled callbacks",
- "T47 overlap/effects: 26 passed, 0 failed; no browser/GPU verification."
- ]
- },
- {
- "test": "t48-real-envelope",
- "exitCode": 0,
- "tail": [
- "PASS HTTP200 business failure is not a successful section",
- "PASS HTTP200 expired snapshot keeps recoverable category",
- "PASS successful envelope missing data is invalid instead of fake success",
- "PASS plain compatibility payload remains unchanged",
- "T48 real envelope: passed"
- ]
- },
- {
- "test": "t48-linkage-invariants",
- "exitCode": 0,
- "tail": [
- "PASS non-drawn device selection cancels previous terrain work",
- "PASS closing detail through level change cancels terrain work",
- "PASS hidden parent gates associated devices when abnormal linkage is unavailable",
- "PASS rapid A to B inherits an unapplied device tier",
- "T48 linkage invariants: passed"
- ]
- }
- ]
|