Skip to content

GIS引擎底座 测试与验证报告 ​

文档版本:1.04 | 最近核对日期:2026-11-08

状态维度当前记录

本报告记录 2026-10-23 开发环境实际执行的构建、静态检查和页面操作,不替代业务验收或生产验证。

阅读说明:第 1~6 节是 2026-10-23 清理前的历史证据,其中提到的旧图纸、旧菜单、图纸级配准、节点本地兼容成果等对象已在当日晚些时候退出或重置。当前有效基线和清理轮结果以第 7 节为准;旧段与本轮冲突时,不把旧结果当作当前通过证据。本文历史记录中的“监管中心”均指现“线网地图”。

1. 环境与范围 ​

项目内容
代码基线当前工作树(未提交),分支 main
后端本地 spring-boot:run,端口 8080;开发库 DM8 1.12.68.9:5236
前端本地 Vite dev,端口 80;浏览器 1920×911 CSS 视口
对象存储开发 MinIO(oss 配置),桶与凭据按环境配置
角色超级管理员(汤雨聪)
数据(历史)当时 15/24/27 号线三张已有图纸和 P2 验证版本;这些旧试验成果已在清理轮重置,当前开发库无图纸/版本/任务/图层/要素记录

2. 构建与静态检查 ​

检查命令入口结果
后端编译.agents/tools/dev.ps1 maven -pl digital-construction-modules/digital-construction-gis -am compileBUILD SUCCESS
后端打包.agents/tools/dev.ps1 maven -pl digital-construction-admin -am -DskipTests packageBUILD SUCCESS
前端生产构建.agents/tools/dev.ps1 pnpm --dir ./digital-construction-ui build✓ built in 20.27s
前端 lintverify.ps1 -Check FrontendLint -LintPath 'src/views/gis'28 个文件,0 warning / 0 error
前端类型vue-tsc --noEmit本次改动文件 0 错误;未改页面仍有存量 DefaultRow 类型错误(transform、authorization、base-map、topic、scene-config、layer、calibrate)

3. 页面验证 ​

3.1 监管中心 ​

  • 打开 /gis/scene/index:3 张图纸、27 号线默认展开 38 层,天地图影像状态“底图已加载”。
  • 检索“15”:列表只剩 15 号线;清空后恢复 3 张图纸。
  • 刷新:27-左线和左线初支的勾选保留,无目录错误。
  • “查看全部图纸范围”:镜头缩放 11.6,三个勾选保持不变。
  • 注记层在 11.6 级显示 ≥15;点击放大后到 15 级,状态变为“显示中”。
  • 点击线路:弹出详情“27-左线 / 27号线施工图设计平面线路图 / 源图元 5B3A(合并 4551 段)”。

3.2 数据管理 ​

  • 树节点显示“整线 / 本工点”徽标;页签为“图纸”;操作列为“详情 / 检查 / 更多”,更多含版本和配准。
  • 选择 15 号线、切换图层页签,去监管中心后返回数据管理:范围“重庆轨道交通15号线 · 全部工点”和图层页签均恢复。
  • 上传弹窗顺序为“图纸文件 → 成果范围 → 工程线路 → 名称/编码 → 图层范围 → 备注”;文件提示为“DWG/DXF · ≤100MB · 可离页”。(本轮后续已移除“坐标方案”,见第 5 节)

3.3 成果检查 ​

  • 打开 15 号线 V1 检查页:显示 V1、已检查、未核对、当前版和“统计核对”。
  • “换版将失效”显示图层公共样式 18、目录归属 1。
  • 当前版显示“不可生效:该版本已是当前有效版本”。

3.4 图层样式 ​

  • 打开 15 号线图层“样式”弹窗:左侧字段,右侧“临时预览 / 公共”显示颜色、线宽、显隐和层级;按钮为“保存公共配置”。
  • 未修改、未保存,直接关闭。

3.5 图纸配准(旧图纸级,历史记录) ​

  • 打开 15 号线配准:左侧“图纸视图”显示未校正图纸,右侧“地图”显示底图;右侧预览前不显示原始图形。
  • 左侧取点成功,步骤切到“第 1 对 · 地图位置”;右侧点选后控制点表新增一对(CAD 106.771309, 29.661114,底图 106.525756, 29.635392),自动进入第 2 对。
  • 未保存,取消关闭,无测试配准残留。
  • 三对拟合与保存预览未在本轮完成。
  • “确认定位”页面验证:先写入一组三点参考配准(与界面保存结果一致,修订号 5、状态未核对),再打开 15 号线配准弹窗,控制点三对正常回显;点击“确认定位”出现确认提示,确认后提示“已人工确认定位”,列表状态变为“已人工确认”,修订号 6、状态 CONFIRMED。
  • 随后在弹窗点击“清除配准”并确认,修订号 7,配准参数和状态清空;重新加载数据管理后 15 号线不再显示坐标状态标签,未残留测试配准。

3.6 对象存储 ​

  • 启动迁移后,3 个版本源文件路径均为 oss:gis/versions/<versionId>.dwg。
  • 版本下载接口返回 200,1,457,541 字节,Content-Disposition 文件名与原文件一致。
  • 新版本完整链路:向 P2 配准测试图纸追加 p2_sample.dxf(19,539 字节),接收接口返回 QUEUED,任务 SUCCEEDED,耗时 1 秒,源图层 6、输出 4、问题 0。
  • 版本列表显示 V2 为“未核对 / 解析成功”,未自动成为当前版本;V1 仍为当前版本。
  • V2 下载返回 200、19,539 字节,SHA-256 与源文件一致(fa73416f…93cef9)。
  • 本地 .tmp/gis 下没有该版本源文件,Worker 临时目录在任务结束后为空,说明源文件经对象存储读取与清理。
  • 页面“图纸版本”弹窗显示 V2 的“配准 / 检查并生效”,V1 标记为当前。

3.7 底图与坐标表单 ​

  • 底图“修改”天地图影像:显示“底图/注记”两组结构化字段(服务地址、图层、矩阵集、样式、格式、层级)和“高级(只读)”JSON。
  • 底图“修改”OpenFreeMap:显示样式地址、隐藏图层列表、隐藏 POI 类别列表和高级只读 JSON;旧配置中的未知字段在保存时保留。
  • 坐标定义表单增加“定义资料 / 单位与轴序 / 适用范围”分组;未保存。

3.8 场景图层组合 ​

  • 在“地图场景配置”为系统默认场景(SYSTEM_DEFAULT)加入 XL-线路并保存,场景版本 1、图层数 1、默认底图天地图矢量。
  • 以 /gis/scene/index?sceneId=2093000000000000001 打开监管中心:标题为“系统默认地图”,场景接口返回 1 个图层;仅 XL-线路自动勾选,行状态“显示中 13”,底图加载后该线位和车站轮廓正常渲染。
  • 移除验证图层后保留三项允许底图(天地图矢量、OpenFreeMap、天地图影像)和默认矢量底图;再次从同一入口打开,底图下拉为 3 项,场景无固定图层时按默认规则启用主图层 6 个。
  • 验证图层未保留,系统默认场景当前没有固定图层组合。

4. 未覆盖与已知问题 ​

  • 场景图层的透明度、可选性等覆盖属性尚未在运行时生效。
  • 天地图影像在 11.6–13.6 级观察到“部分瓦片加载失败(28→131)”,影像仍部分出图;根因未查明。
  • 全工程类型检查仍有未改页面的存量错误,不能表述为全量类型通过。
  • 未访问生产,未执行生产部署或数据库同步;未提交、未推送。

5. 2026-10-23 高德配准新路线本轮验证 ​

5.1 构建、数据库与自动化 ​

检查实际执行结果
后端编译dev.ps1 maven -Pdev -Dmaven.test.skip=false -pl digital-construction-modules/digital-construction-gis -am compileBUILD SUCCESS
定向测试同上 test,GisCadTaskRunnerTest、GisRawGeorefCalculatorTest、GisVersionGeorefServiceImplTest、GisDrawingServiceImplTest、GisDrawingLifecycleServiceImplTest、GisSceneServiceImplTest33 项通过,0 失败/0 错误
后端打包dev.ps1 maven -Pdev -pl digital-construction-admin -am package -Dmaven.test.skip=trueBUILD SUCCESS,生成 digital-construction-admin.jar
前端生产构建dev.ps1 pnpm --dir ./digital-construction-ui build成功
前端类型vue-tsc --noEmit本次改动文件 0 错误;未改页面仍有存量 DefaultRow 类型错误
前端 lintoxlint 本次文件0 warning / 0 error
开发库结构项目 DM8 MCP 只读回查 + 纳管 ALTER/回读COORDINATE_PIPELINE、GEOREF_CONFIG、GEOREF_REVISION、DRAWING_VERSION_ID 和索引均存在;旧 3 版本 GEOREF_REVISION=0
解析器真实性合成 DXF 通过 cad_import.py 实进程解析,含 LINE/POINT/LWPOLYLINE/TEXT/INSERT/虚拟实体原始 sourceCount=6、supported=5、container=1、layerCount=3、unit=METER;原始坐标为 CAD x/y,块实例键含路径;兼容成果 POINT 已输出

5.2 真实浏览器流程 ​

环境:本地 Vite(80)+ 本地后端(8080)+ 开发 DM8/MinIO;超级管理员;浏览器 IAB 1280×720。

步骤实际观察
上传上传控件在 IAB 不支持文件选择,按例外直接调用同会话 POST /gis/drawings/receive;返回 drawingId 2113352639804149760、versionId 2113352640332632064、attemptId 2113352645160275968,状态 QUEUED
解析任务 SUCCEEDED;原始清单 3 层/5 图元,单位 METER;版本列表显示“配准 / 检查并生效”
打开工作台左侧原始 CAD 三角形/线/点可见,右侧高德 JS API 成功加载(AutoNavi 版权、石马河立交地图),线路名自动带入 4 号线西延
搜索“石马立交站”组合查询返回 7 个“石马河立交地铁站”候选(4A/4B/2号/1号/3A/3B 出入口和站 POI),按 POI 区分;选用 4A 口后状态“底图已选,请在 CAD 上点同一位置”
配对选候选后点 CAD 形成 P1;地图手工点 + CAD 点形成 P2/P3;共 3 对,来源分别高德候选/地图取点/地图取点;可预览
预览服务端返回 SIMILARITY 参数,RMS 239.5 米、最大残差 323.3 米;页面提示残差为配准平面值,不代表地面精度
保存版本 georefRevision=1、coordinateStatus=REFERENCE、configured=true;提示“已保存,尚未人工确认”
确认版本 revision=2、coordinateStatus=VERIFIED、confirmedAt 记录;版本列表显示“已人工确认”
检查检查页显示 3 层、源对象 6、输出图元 5、错误 0、警告 0、提示 1(工程范围待确认),可生效
生效提示“已设为当前有效版本”;图纸列表显示当前 V1、3 层/5 图元、已人工确认;监管中心出现该图纸 3 层,左线 3 图元显示,派生线/点落在地图上
当前版清除工作台清除后 revision=3、UNVERIFIED、配置清空、点对清空;监管中心显示“0 个图元 / 该图纸没有可显示图层”,不再显示旧几何

5.3 本轮发现并修复的问题 ​

问题根因修复复验
工作台左侧 CAD 空白SVG 用 v-if="view.ready",但 view.ready 依赖 SVG 测量,形成死循环始终渲染 SVG,由 fitView 计算变换重新打开后三角形/线/点可见,缩放平移可用
当前版清除后监管中心仍显示旧几何清除只改版本配置,未删除地图输出clearCurrentVersionDisplay 删除当前图层/要素、清零计数和 bbox;清除与版本变更同事务清除后监管中心显示 0 图元/无可显示图层
当前版确认后图纸缓存仍为“未核对”确认只更新版本状态,未镜像图纸缓存确认事务内同步 GIS_DRAWING.GEOREF_STATUS=CONFIRMED/note/revision版本和图纸均显示已人工确认
DWG 临时文件无扩展名导致 dwg2dxf 被绕过materializeSource 临时名无后缀,Python 只认 .dwg白名单保留后缀;Python 增加签名识别;失败清理临时文件单元测试 4 项 + 解析器签名检查通过;真实 DWG 全链未执行
解析源/输出统计相同Runner 把 sourceCount 赋为 outputCount解析器输出 source/filtered/unsupported/container/optimized 计数,Runner 只读真实 sourceCount合成 DXF 显示源 6、输出 5
上传仍要求坐标方案、图纸级配准可绕过版本旧 UI 未收敛移除上传“坐标方案”和图纸行“配准”;版本行保留“配准”类型检查/lint 通过;需再次页面回归

5.4 未覆盖与剩余风险 ​

  • 未使用真实 DWG 样本执行 dwg2dxf 全链;只验证了合成 DXF 和签名/后缀单元测试。
  • 未在真实生产办公终端验证高德 SDK、搜索、瓦片可达;生产后端无网前提未做等效隔离测试。
  • 未验证大图原始清单的按层分页性能;当前实现仍单 JSON 整对象读取。
  • 未实现旧版快照/要素稳定 ID/版本关系、要素详情/导出/绑定/场景覆盖的 V2 切换;生效仍按 drawingId 删除/重建当前显示层。
  • 旧坐标/转换菜单、底图通用 CRS 依赖、上传后端旧写入口在写作时尚未退出;已于清理轮退出,见第 7 节。
  • 未验证任务并发、幂等、租约、启动恢复和历史源迁移的失败场景。
  • 页面验证使用合成图纸和手工地图点,拟合残差较大,不代表真实工程配准质量。

5.5 DEV 发布与复验(2026-10-23 04:00–04:50) ​

项目实际执行结果
后端发布上传新 jar 到 /opt/digital-construction-platform/backend/,备份后替换,systemd 重启jar SHA-256 本地/远端一致;服务 active,http://127.0.0.1:8080/ 返回 200
前端发布新 frontend-release-20261023-0440,Nginx 两个配置的 root 全部切换,nginx -t + reload替换 1+2 处;Host tangyucong.top 返回 200
DEV 登录(历史)https://tangyucong.top/ 超级管理员登录当时进入个人中心,GIS 菜单可见;旧“坐标系与转换方案”已在清理轮删除
工作台打开 V2 配准全屏三栏;右侧 480px;CAD 与高德加载;P1/P2/P3 同号标记;点对表 P1/P2/P3;“改CAD/改底图/删除”单行;底部操作栏单行可见
微调对 P1“改底图”,点击地图附近位置P1 来源变“人工调整”;标签“有未保存修改”;提示“保存后需重新确认”;地图标记同步
保存/确认保存后确认保存后 georefRevision 递增、状态 REFERENCE、确认清空;确认后 VERIFIED、图纸/版本显示已人工确认
检查页问题首次检查 V2 显示 0 图层、无 bbox、不可生效根因:V2 任务清单在本地开发节点 .tmp/gis/imports,DEV 后端读取自己的本地目录;已改为 V2 优先读对象存储派生清单,无派生时读原始清单
检查页复验后端重新打包发布后刷新检查页3 个图层、源对象 6、输出图元 5、错误 0、警告 0、提示 1(工程范围),可生效
生效/监管中心设为当前有效版本并打开监管中心图纸显示“5 个图元/已人工确认”,左线 3、注记 1、车站 1;地图出图

本轮新增修复:

问题根因修复复验
检查页 V2 读到 0 图层checkVersion 只读 GIS_CAD_TASK.MANIFEST_STORAGE_PATH 指向的节点本地兼容成果,候选版本由另一节点生成时文件不存在V2 优先读 GEOREF_CONFIG.displayManifest,其次 rawManifest,均从对象存储读取并校验 SHA;legacy 仍读本地DEV 检查页 3 层/5 图元/可生效,随后生效成功
检查页输出数仍是粗转换的 4输出数取任务 OUTPUT_COUNT,未取派生/原始清单统计V2 用清单 featureCount,源数优先原始统计检查页显示源 6/输出 5
工作台未全屏、操作区窄、按钮换行对话框固定 1600px/80vh,侧栏 400px,底部 flex-wrap全屏、侧栏 480px、底部固定不换行、点对表操作列压缩DEV 1280×720 验证
不知道正在操作哪个点只有单个临时标记,完整点对无编号CAD/高德/点对表统一 P1/P2/P3;编辑行高亮;微调标记显示当前编号DEV 验证
候选选中后不能直接微调有 pendingTarget 时地图点击被忽略,标记不可拖动标记可拖动;点击地图或拖动均转为 POI_ADJUSTED,保留原 POI;修改后显示未保存状态DEV 验证

DEV 复验后遗留:

  • 旧“坐标系与转换方案”菜单和上传后端旧写入口当时未收口;清理轮已删除(见第 7 节)。
  • 检查页 V2 的图层摘要来自派生清单,但“换版将失效”统计仍按 drawingId 汇总,旧版历史/绑定未细分(P6/P8)。
  • DEV 后端仍依赖节点本地 imports 作为 legacy 兼容成果;V2 已改为对象存储,V1 遗留版本仍可能受节点影响。
  • 生产环境未发布,生产办公终端网络未实测。

6. 2026-10-23 P5–P8 增量验证 ​

检查实际执行结果
后端定向测试46 项(要素、图纸、生命周期、版本配准、场景、拟合、任务)全部通过,0 失败/0 错误
后端编译/打包GIS 模块 compile;admin packageBUILD SUCCESS
前端 lintscene、vector、base-map、scene types0 warning / 0 error
前端类型vue-tsc --noEmit 本次文件0 错误
前端构建pnpm build成功
开发库索引UK_GIS_TASK_USER_REQUEST(CREATE_BY, REQUEST_ID)、UK_GIS_VER_DRAWING_NO(DRAWING_ID, VERSION_NO)先查重 0 组,创建后回读 UNIQUE
旧坐标菜单(历史)当时 SYS_MENU 旧菜单 VISIBLE=1当时仅隐藏;清理轮已删除菜单及角色关联(见第 7 节)
底图配置打开 DEV 底图服务配置列表显示 Web Mercator(EPSG_3857),表单不再请求 CRS 列表;页面无 403
场景运行GET /gis/scene/2093000000000000001返回 compositionApplied 与 layers;当前系统默认场景未配置图层,返回 false/空,前端按默认主层规则加载
数据页DEV 数据管理测试图纸当前 V2、3 层/5 图元、已人工确认;旧坐标菜单不再显示
旧同步导入(历史)当时代码层停用清理轮已删除控制器映射,POST 返回 405;前端调用不存在

本轮实现但未取得运行证据的事项:

  • 未上传 V3 验证“生效后旧 V2 图层保留、当前查询只返回 V3”的完整页面链路;只完成了代码路径和当前 V2 数据验证。
  • 未创建带显式图层/透明度/可选性覆盖的场景并实图核对;后端响应和前端应用代码已接入。
  • 未验证要素台账/导出在旧版与新版本并存时的分页总数和导出文件内容。
  • 原始清单仍是单 JSON,未做按层分块;任务幂等唯一索引已建,但并发重复请求的异常回读未做真实并发测试。
  • 未验证启动迁移开关切换、历史源迁移失败补偿和多实例租约行为。

7. 2026-10-23 旧方案清理与新路线收敛验证(阶段结果,已被第 8 节覆盖) ​

本节记录当日较早阶段的验证结果,保留作过程证据。真实 DWG、分块、撤权、原始 CAD 预览、全量类型检查等后续结果以第 8 节为准。

7.1 环境与范围 ​

项目内容
代码基线当前工作树(未提交),分支 main
后端本地 spring-boot:run,端口 8080;开发库 DM8 1.12.68.9:5236
前端本地 Vite dev,端口 80;IAB 浏览器,初始 1280×720,配准工作台用 1600×1000
字段数据合成 DXF(3 层、1 条线路、3 个车站轮廓和站名注记,7 个源对象)
角色超级管理员完成全链;普通管理员(仅 15/27 号线整线授权)做权限探针
生产未访问、未发布、未执行任何结构或数据变更

7.2 数据库结构退役与回读 ​

操作实际结果
重置旧 GIS 试验数据GIS_FEATURE 13,176 行、GIS_LAYER 70 行、GIS_DRAWING_SCOPE 7 行、GIS_CAD_TASK 7 行、GIS_DRAWING_VERSION 7 行、GIS_DRAWING 6 行、GIS_TRANSFORM 3 行已删除;其他旧关系表均为 0 行
删除退役表GIS_TRANSFORM、GIS_CONTROL_POINT、GIS_TOPIC、GIS_SCENE_TOPIC 已物理删除,系统目录回读不存在
删除退役列29 列已删除,回读不存在:GIS_DRAWING 9 列(旧源/目标、旧转换、GEOREF_* 镜像、PROJECT_ID)、GIS_DRAWING_VERSION 3 列、GIS_FEATURE_REVISION 1 列、GIS_SCENE 1 列、GIS_CRS 8 列、GIS_LAYER 6 列、GIS_CAD_TASK 1 列
标准坐标定义删除 CQ_LOCAL;保留 EPSG_4326、EPSG_4490、EPSG_3857;GIS_CRS 按 CRS_CODE 建唯一索引 UK_GIS_CRS_CODE
保留配置三条启用底图(TIANDITU_VEC、TIANDITU_IMG、OPENFREEMAP)关联 EPSG_3857;系统默认场景及 3 条场景底图关系保留
共享菜单删除“坐标系与转换方案”“坐标方案校准”及 9 个按钮权限,菜单 11 行、角色关联 22 行;未清空共享表
重启与初始化清理后多次重启、重新查询,GIS_ 表仍为 18 张;退役表/列未重建

7.3 构建与自动化 ​

检查实际执行结果
后端编译dev.ps1 maven -Pdev -pl digital-construction-modules/digital-construction-gis -am -DskipTests compileBUILD SUCCESS
后端测试同上 -Dmaven.test.skip=false -DskipTests=false test130 项通过,0 失败/0 错误;含新增 GisCadWorkerSupportTest 和旧 pipeline 拒绝生效用例
前端生产构建dev.ps1 pnpm --dir ./digital-construction-ui build成功
前端 lintverify.ps1 -Check FrontendLint -LintPath 'src/views/gis' 与 'src/api/gis'0 warning / 0 error
前端类型verify.ps1 -Check FrontendTypes本次改动文件 0 错误;仅剩未改动的 authorization/index.vue、layer/index.vue 既有 DefaultRow 类型错误 14 条
退役接口直接请求旧 URL旧图纸级 georef、后端高德候选、topic/crs/transform 均为 404;旧同步 import 的 POST 为 405;旧客户端携带 transformId 接收返回 400

7.4 真实浏览器全链 ​

步骤实际观察
上传IAB 不支持文件选择,按规则例外调用同会话 POST /gis/drawings/receive;返回 drawingId/versionId/attemptId,状态 QUEUED
原始解析任务 SUCCEEDED:源对象 7、输出 7、图层 3、问题 0;版本 AMAP_V2、UNVERIFIED、GEOREF_REVISION=0、INPUT_UNIT=UNKNOWN;原始清单引用写入版本并可回读
配准工作台左侧原始 CAD,右侧高德 JS API 真实加载;浏览器资源记录显示 webapi/jsapi/瓦片请求,后端仅下发受控 JS 配置
线路+站名线路名自动带入“重庆轨道交通1号线”;搜索“小什字站”“较场口站”“朝天门站”均返回多个候选(含出入口、站、公交站),不自动选第一条
选候选+点 CAD选用“小什字(地铁站)”“较场口(地铁站)”“朝天门(地铁站)”后各点一次 CAD,形成 P1/P2/P3;来源为高德候选
预览/保存预览显示 RMS 194.3 米、最大残差 274.8 米(配准平面值,仅参考);保存后 REFERENCE、georefRevision=1,提示尚未人工确认
人工确认确认后 VERIFIED、georefRevision=2,记录确认人和时间
检查检查页显示 3 层/7 图元、错误 0、提示 1(工程范围待确认)、可生效
生效设为当前有效版本后,图纸 CURRENT_VERSION_ID 指向 V1,图层/要素写入 3 层/7 图元,版本 READY_STATUS=CHECKED
三套底图监管中心依次切换天地图影像、天地图矢量、OpenFreeMap,均出图;同一份蓝色线路位于同一位置,未出现二次配准
同版重配准先人工写入图层名称“人工命名左线”、颜色 #FF0000、线宽 3.5;修改一个底图点后重新保存并确认:layerId、featureId、图层名称、颜色、线宽、归属全部保持,bbox 由 106.56548… 变为 106.57877…
清除清除当前版后版本 UNVERIFIED、georefRevision=5、配置只保留原始清单引用;图纸计数和 bbox 清零,监管中心显示“该图纸没有可显示图层”,地图不再出现该版几何;图层/要素记录保留

7.5 无专题场景与权限 ​

用例实际观察
无专题场景新增 CLEANUP_SCENE_1(公共、允许/默认天地图矢量、无图层、无专题字段),保存成功;配置检查页无专题区、无专题请求、无“专题缺失”阻断,仅提示无图层/无法核对视图
启用与打开启用成功;打开地图 进入 /gis/scene/index?sceneId=…,底图为天地图矢量,页面无专题控件;测试后已停用并删除
受限账号普通管理员仅有 15/27 号线整线授权:/gis/drawings/list?lineId=1号线 返回 total=0;直接请求 1 号线图纸详情返回 403;监管中心不显示该图纸;数据管理树只出现授权线路
撤权缓存未执行真实撤权过程;代码路径在 403/404 时清理目录、矢量和弹窗,未做浏览器撤权回归

7.6 本轮发现并修复的问题 ​

问题根因修复复验
版本工作台提示“该版本尚无原始解析清单”任务成功时只把原始清单引用写入内存对象,状态更新语句未持久化 GEOREF_CONFIG成功状态与清单引用、pipeline、revision 在同一条条件更新写入,仍校验 latestAttemptId重新上传后版本配置可回读,工作台正常加载
生效报“当前光标不在结果集上”JdbcTemplate.query 的 lambda 返回 Map.put 值,被解析为 ResultSetExtractor,未遍历结果集改为无返回值的 RowCallbackHandler生效成功,3 层/7 图元写入
生效报 LAYER_NAME 非空约束新图层先 insert 后设置名称名称、类型、排序、bbox 在 insert 前完成;已有图层保留人工名称和排序生效与同版重配准均成功
旧同步导入入口仍可解析控制器保留映射删除映射和 BO;旧 POST 返回 405,旧 GET 不再执行业务直接请求验证

7.7 未覆盖与剩余风险 ​

  • 未使用真实 DWG 样本执行 dwg2dxf 全链;本轮只验证合成 DXF 和解析器签名/后缀测试。
  • 未在生产办公终端验证高德 SDK、搜索、瓦片可达;生产后端无网前提未做等效隔离测试。
  • 未验证大图原始清单按层分块和分页性能;当前仍为单 JSON。
  • 未执行真实撤权过程、任务并发/租约/启动中断、对象存储失败补偿的页面回归;相关代码路径和单元测试存在,但不能据此宣称全部通过。
  • 未验证要素台账/导出在候选/历史版本并存时的分页总数、绑定迁移和场景覆盖运行时效果。
  • 前端全工程类型检查仍有未改动页面的既有错误,不能表述为全量类型通过。
  • 未访问生产,未执行生产部署或数据库同步;未提交、未推送。

8. 2026-10-23 收敛加固与原始 CAD 预览复验(当前有效结果) ​

8.1 环境与范围 ​

项目内容
代码基线当前工作树,分支 main;未提交、未推送
后端本地打包 jar,SPRING_PROFILES_ACTIVE=dev,端口 8080;开发库 DM8 1.12.68.9:5236(经项目纳管 MCP 入口)
前端本地 Vite dev,IAB 浏览器;数据管理、版本列表、预览抽屉和场景页
预览服务开发环境 kkFileView 5.0.2 + Aspose.CAD;测试期间临时使用 PDF 转换模式和反向隧道,测试后已恢复 systemd 原配置并停止隧道
测试样本合成 DXF、真实 DWG(1,191 图元)、12,200 图元大图、同名源文件 V3/V4、重复 handle 解析失败样本
角色超级管理员;仅有 15/27 号线整线授权的受限账号(测试期间临时改为 15 号线单工点,测试后恢复)
生产未访问、未发布、未执行任何结构或数据变更

8.2 数据库结构回读 ​

检查实际结果
表数量18 张 GIS_ 表;GIS_TRANSFORM、GIS_CONTROL_POINT、GIS_TOPIC、GIS_SCENE_TOPIC 不存在
退役列29 个退役列不存在;GIS_FEATURE.SOURCE_HANDLE 实为 VARCHAR(512)
受控样本4 张图纸、8 个版本、29 个图层、1,212 个要素、8 个任务;含真实 DWG、DXF、大图、字段权限和无专题场景样本
场景系统默认场景和 GIS_NO_TOPIC_REGRESSION 启用;后者只允许天地图矢量、绑定一个当前版图层,无专题表/字段/接口
测试后恢复受限账号 15/27 号线恢复 FULL_LINE,临时工点组合已删除;kkFileView systemd 恢复备份,127.0.0.1 信任和 PDF 测试模式已移除

8.3 自动化 ​

检查实际执行结果
后端测试dev.ps1 maven -q test(全仓)323 项通过,0 失败/0 错误
后端打包dev.ps1 maven -q -DskipTests -pl digital-construction-admin -am packageBUILD SUCCESS
前端类型dev.ps1 pnpm exec vue-tsc --noEmit0 错误(含先前 authorization/layer 的 DefaultRow 错误修复)
前端 lintdev.ps1 pnpm lint0 warning / 0 error
前端构建dev.ps1 pnpm build成功完成生产构建
解析器python -m unittest ...test_cad_import5 项通过:块实例稳定键、嵌套路径、bulge 非直线、缺项统计、重复键失败
预览票据GisPreviewTicketServiceTest签发、版本绑定、源摘要、过期、篡改用例通过

8.4 真实页面与业务回归 ​

用例实际观察
真实 DWG 全链上传后解析出 20 层/1,191 图元;完成版本级高德配准、保存、确认、检查、生效;监管中心天地图影像、天地图矢量、OpenFreeMap 均显示同一份几何
同版重配准图层 ID、要素 ID、图层名、颜色、线宽、工程归属、手工属性 featureCode=WD-4-01、remark、elevation 和项目绑定保持;bbox 随新配准变化,修订递增
激活并发旧 expectedImpactHash 返回 409;重新检查取得新哈希后生效成功
版本切换V1/V2 切换后地图目录和几何更新,旧响应不覆盖新状态
大图分块12,200 图元写成 41 个分块,根清单约 13KB;按 300 图元分页读取正常,单页 0.4–0.7 秒
无专题场景新建、保存、检查、启用、打开成功;页面只显示底图和场景绑定图层,无专题控件、请求或字段
工点受限受限账号只看到 15 号线指定工点图纸;直接访问 4 号线详情/图层/下载返回 403,要素 404
撤权删除临时工点组合后,受限账号图纸列表为空,整文件预览返回 403;恢复授权后回读两条 FULL_LINE
前端缓存同版重配准后蓝线位置刷新更新;版本切换和目录修订不会复用旧几何

8.5 原始 CAD 预览 ​

用例实际观察
入口与元数据版本列表每行有“预览原 CAD”;抽屉标题为 GIS-REG-DXF-01 · V3 · gis-preview-v3.dxf 等图纸名/版本/源文件名组合
不支持状态仍可预览V3 PENDING_CHECK/UNVERIFIED 可签发并打开;GIS-LARGE-12K V2 READY_STATUS=FAILED、任务 PARSE_FAILED 的版本仍有预览按钮并可开始转换
源文件读取V2/V3/失败版本回源均返回 200、Content-Disposition: inline、Cache-Control: no-store、X-Content-Type-Options: nosniff,字节 SHA-256 与上传文件一致
同名源文件跨版本V3/V4 都使用 gis-preview-v3.dxf 但内容不同;转换缓存生成两个文件,PDF 文本分别为 PREVIEW-V3 和 PREVIEW-V4,未串用
快速切换连续点击 V4、V3 预览,最终 iframe 指向 V3;延迟返回的 V4 响应未覆盖最新选择
跨版本/篡改将 V3 票据用于 V2 路径返回 403,“预览凭据与目标版本不一致”
过期超过有效期的旧票据回源返回 410“预览链接已过期,请重新申请预览”
权限受限账号请求 4 号线整线图纸预览返回 403;仅命中工点组合的 15 号线工点图纸可预览;删除组合后同一请求返回 403
缺配置恢复默认空配置后签发预览返回 503“未配置kkFileView 预览服务地址,不能在线预览原始 CAD”,未使用公网兜底地址
实际内容kkFileView PDF 模式返回 1 页 PDF,页面尺寸与源图比例一致,PDF 文本可用 pypdf 提取 PREVIEW-V3/V4;浏览器 PDF.js 显示 1/1 页和文字,图形随源文件变化
转换方式SVG 模式(部署原配置)生成超大无 viewBox 画布,初始视图为黑带/不可读;PDF 模式可读,正式部署建议 KK_CAD_PREVIEW_TYPE=pdf

8.6 本轮修复 ​

问题根因修复复验
块内实体键重复为 None虚拟实体 handle 为空,重复块插入碰撞使用块插入实例路径+源 handle,空 handle 用类型+序号;写库前唯一性校验5 项解析器测试 + 上传真实 DWG 成功
bulge 多段线被拉直entity_points 忽略 bulge用 ezdxf 路径按 sagitta 离散,保留 sourceBulges/curveDiscretized/curveSagitta解析器回归断言弧段不是单直线
缺项统计为 0不支持和块展开失败未计入任务任务 issueCount 计入不支持/展开失败/深度截断,检查与生效阻断单元测试和页面统计复核
同版重配准覆盖人工属性/修订原始 PROPERTIES_JSON 整段覆盖,无修订切换条件手工属性白名单合并,生成新修订、复制绑定、条件更新属性/绑定/导出回归和 GisDrawingPropertyMergeTest
台账/导出仍按图纸旧归属回退Ledger XML 使用 d.RESOURCE_TYPE/LINE_ID 和 COALESCE统一当前有效图层归属;未绑定线路默认拒绝Mapper XML 测试、受限账号 403
场景刷新可能显示旧几何缓存只按 bbox 判断签名加入版本/配准/图层修订,请求代次隔离旧响应layerCache.spec 3 项 + 地图刷新回归
任务成功与清单挂接非原子对象存储上传在事务外,完成状态与版本更新分离对象回读通过后,任务与版本在同一短事务条件更新;认领丢失/尝试替代回滚GisCadTaskCompletionTest 3 项失败注入
kkFileView 转换反复重启预览地址带 forceUpdatedCache=true,转换页刷新触发重转移除强制刷新,按图纸 ID+版本号前缀隔离源文件名/转换缓存V3/V4 同名源文件内容不串、快速切换
短票据不足以覆盖转换默认 120 秒,CAD 转换超过 2 分钟默认 600 秒并按环境可覆盖过期仍拒绝;转换完成可读取
图表/授权页类型错误阻塞全量检查Element Plus DefaultRow 与业务行类型不兼容放宽模板入口参数并在函数内收窄vue-tsc --noEmit 0 错误
底图显示“部分瓦片加载失败(15)”瓦片错误计数只增不减,加载完成或切换底图后未移除用瓦片 key 集合记录失败,tileloadend 移除,切换底图/刷新清零天地图实时瓦片请求 200;场景页状态恢复“底图已加载”

8.7 未覆盖与剩余风险 ​

  • 未访问生产、未发布生产、未同步生产库;生产浏览器→kkFileView、kkFileView→源存储网络未验证。
  • kkFileView 整体不可达、转换进程崩溃、超大 CAD 转换超时未强制注入;当前仅验证配置缺失、票据错误、权限拒绝和正常/失败解析样本。
  • kkFileView 原部署为 SVG 模式,CAD 初始视图不可读;PDF 模式只在开发环境临时验证,正式启用属于部署配置变更,需在生产/测试环境复验并核对 Aspose 许可。
  • 生产办公终端的高德 SDK、PlaceSearch、瓦片可达性仍未验证;开发机浏览器直连成功不能替代。
  • 真实撤权只在接口层验证;浏览器已打开页面的撤权缓存清理未做完整回归。
  • 大图仅验证 12,200 图元/41 分块和 300 图元分页,未冻结生产并发、终端和极端文件指标。
  • 测试数据(4 张图纸、8 个版本、无专题回归场景)保留在开发库供复核;不包含生产业务数据。

9. 2026-10-24 原始文件授权、预览撤权、分块与影响哈希复验(当前有效结果) ​

本节覆盖第 8 节中“撤权缓存未回归”“12,200 图元/41 分块”“预览临时配置”等较早结论;未重复历史记录。

9.1 环境与范围 ​

  • 开发环境 1.12.68.9:后端 SPRING_PROFILES_ACTIVE=dev、kkFileView 5.0.2(PDF 模式、KK_BASE_URL=https://kkfile.tangyucong.top、SERVER_ADDRESS=127.0.0.1)、nginx /dev-api 反代、MinIO、DM8。
  • 后端预览通过 systemd 环境文件注入内网 kkFileView、回源地址、公开基地址、公开 kkFileView 地址和独立票据密钥;kkFileView 信任主机包含 tangyucong.top,回源经 nginx 进入后端。
  • 开发机安装 Python 3.10 + ezdxf 1.4.5;未安装 LibreDWG dwg2dxf。
  • 正常账号 任民#01(15/27 号线整线授权、gis:drawing:download);超级管理员按平台例外。

9.2 自动化 ​

范围结果
GIS 后端模块全量测试161 项通过,0 失败/0 错误/0 跳过;包含联合鉴权、混合专业、未归类默认拒绝、超级管理员例外、票据撤权、HTTP 状态、分块读取/损坏、影响哈希、DXF 编码归一化
Python 解析器6 项通过;新增单层 450 图元/块上限 100 的多块、顺序、稳定键、空层和统计断言
前端请求代次5 项通过;覆盖旧请求、上下文变化、关闭/不可见、旧请求不结束新请求
前端静态vue-tsc --noEmit 0 错误;受影响文件 oxlint 0 warning/0 error;开发构建成功
数据库/对象回读12,200 单层根清单 layerCount=1、chunkCount=7;7 块范围 0–2000…12000–12200,末块 200,块大小约 705–724 KiB;根清单和分块 SHA-256 回读一致

9.3 真实页面与接口复验 ​

用例实际观察
真实 DWG 预览从数据管理版本列表进入 GIS-REG-DWG-01 V1,kkFileView PDF.js 显示 1/1 页、2 个画布;文字层含“5号风亭组/7号出入口”等站名;图形和线路可见
用户提供 DWG 预览用户提供的 15号线施工图设计平面线路图+车站轮廓-20241115.dwg(1.4 MB,AutoCAD 2018/2019/2020)上传成功并从版本列表预览;文字层含“换乘通道/5号风亭组/7号出入口”等;因开发机缺少 dwg2dxf,解析任务失败,但预览独立可用
真实 DXF 预览15-real.dxf(5 MB,ANSI_936 声明但正文 UTF-8)从版本列表预览;预览回源临时转 GBK 后,PDF 文字层为正确中文“换乘通道/5号风亭组”等;画布显示线路、车站结构,不再是乱码
联合鉴权默认拒绝普通用户对未归类版本点击预览,抽屉显示“该版本尚未完成专业归类,普通用户不能读取原始整文件”;无 iframe,无旧文件残留
FILE_PROCESS 授权超级管理员通过现有授权服务给普通用户授予该版本 FILE_PROCESS 读取;普通用户重新预览成功,PDF.js 加载 1 页 2 画布
撤权后旧票据撤销 FILE_PROCESS 后,原未过期代理入口和转换后 PDF 地址均返回 HTTP 403(text/plain,明确“未完成专业归类”);随后已撤销测试授权
影响哈希 409当前版本要素新增绑定→候选版本检查 BINDING=1;解除当前绑定→BINDING=0、哈希变化;用旧哈希生效返回 409“当前版本的样式、目录、绑定或场景引用已变化”;重新绑定→BINDING=1、哈希再次变化;历史修订绑定行保留但未计入
分页单层 12,200 版本首屏/跨块/末页分别返回 100/100/50 条,total=12200,nextCursor 正确;末页 truncated=false
配准工作台GIS-REAL-DXF-15 V2 打开版本配准:左侧原始 CAD 平面加载 1,191 图元并显示已保存 P1/P2/P3;右侧高德地图浏览器直连;输入线路名“重庆轨道交通15号线”+站名“九曲河东站”查询返回多条候选,可定位/选用;页面显示“已形成 3 对,至少需要 3 对”和配准平面 RMS。保存/确认通过服务端接口复验,清除本轮未在页面点击
网络链路浏览器→同源代理→127.0.0.1:8012 kkFileView;kkFileView→https://tangyucong.top/dev-api/.../preview-source→nginx→后端;外部直接访问 D...-V... 转换缓存返回 403
共享附件在系统管理 → 文件管理点击 .txt 附件“预览”,共享 FilePreviewDrawer 正常打开,iframe 指向 https://kkfile.tangyucong.top/onlinePreview?url=... 的附件地址;移除公网兜底和新增可选加载态后现有附件调用未受影响

9.4 未覆盖与剩余风险 ​

  • Aspose 许可:当前为评估模式,PDF 带 “Evaluation only / Created with Aspose.CAD” 水印;文字和图形可读,但不能作为生产验收通过。正式使用需提供授权并复验初始画面。
  • DWG 解析:开发机缺少 LibreDWG dwg2dxf,用户提供的 DWG 只完成预览;完整解析、配准、检查、生效未在该文件上执行。需按生产运行时方案安装并复验。
  • Q-GIS-004:专业授权主体、综合专业包含关系、未分类图纸检查/归类职责仍未确定;当前只对原始整文件执行联合鉴权和默认拒绝,图层/要素查询尚未全面专业过滤,不能宣称专业隔离政策已冻结。
  • 生产:未访问生产;生产 kkFileView/nginx/环境变量、Aspose 许可、生产库发布、办公终端网络均未验证。
  • 转换故障:kkFileView 整体不可达、转换器崩溃、超大文件超时、并发转换容量未做故障注入。
  • 浏览器异步:请求代次已由单测覆盖;未用网络延迟工具复现“慢请求 A→切换 B/关闭/离页”的完整浏览器时序,页面级仅验证了正常打开、切换和错误态。
  • 测试数据:开发库保留用户 DWG、真实 DXF V1/V2、单层 12,200 DXF、原有 4 号线图纸和未分类/工点样本;测试授权已撤销,未清理历史业务数据。

10. 2026-10-24 预览代理越权修复、LibreDWG 与真实 DWG 全链复验(当前有效结果) ​

10.1 修复前越权反例(隔离复现) ​

以有效预览票据从浏览器实测同源代理:他人附件 04dee….txt 返回 200/354 B、他图转换成果 D2113655021210570752-V1-….pdf 返回 200/1.37 MB、kkFileView index.html 返回 200——坐实"票据可转发任意资源"的任意访问,构成修复依据。

10.2 修复后矩阵(真实票据,页面上下文执行) ​

用例请求实际观察
自身成果<ticket>/D2113669…-V1-…-15号线…dwg.pdf200,%PDF-1.5,1,376,226 B
Range 翻页同上 + Range: bytes=0-99206,100 B,Content-Range: bytes 0-99/1376226
+ 变体同名(+ 未转空格)404(绑定放行、上游无此名,无泄露)
他人附件<ticket>/04dee….txt403,39 B,无上游请求
他图成果<ticket>/D2113655021210570752-…pdf403
错误 nonce同图同名换 nonce403
缓存杂物index.html403
file 参数指向他图viewer.html?file=<双编码他图 PDF>403
viewer 自身 fileviewer.html?file=<双编码自身成果>(比 kkFileView 真实格式多一层编码)403(过度编码变体拒绝为正确行为;真实 kk 格式经实际预览渲染验证可用)
onlinePreview<ticket>/onlinePreview403
穿越../gis/drawings/…/preview-source/x.dwg、双重编码穿越403 / 400
静态白名单pdfjs/web/viewer.js、favicon.ico200

10.3 自动化与解析器 ​

  • GIS 后端 24 个测试类 186 项全部通过(0 失败/0 错误/0 跳过;2026-10-24 03:55 verify-backend-tests.ps1 证据判定通过)。新增:GisPreviewProxyServiceTest 14 项(内嵌 HttpServer 模拟 kkFileView,覆盖绑定成果、Range、他图 403 不触上游、双重编码、静态白名单、重定向逐跳重分类、源摘要 409、撤权 403、入口改写、+ 变体);GisFileAccessGuardTest 重写 9 项;GisDxfPreviewNormalizerTest 重写 9 项(含流式跨块残片、GBK 不可表示 422、往返校验)。
  • LibreDWG 0.14 于开发服务器源码编译安装(/usr/local/bin/dwg2dxf),GIS_DWG2DXF_COMMAND 经 systemd 环境文件注入;后端 jar 重部署(MD5 与本地一致)。

10.4 真实 DWG 全链页面验收 ​

环节实际观察
重试任务 2113712519946932224 由页面"重试"发起,确认弹窗后创建并跳转,重试链关联旧失败任务 2113669739044286464
转换+解析LibreDWG dwg2dxf + ezdxf 解析成功:源对象 1,295、输出图元 1,191、缺项 0、耗时 24 秒;与孪生 DXF 版本(同内容)图元数完全一致
配准工作台加载 CAD 1,191 图元 + 高德地图(浏览器直连);仅站名搜索真实 POI 候选→选用→CAD 定点(缩放后取点误差 <5 m)共 3 对;预览拟合 RMS 114.0 m / 最大残差 142.5 m(配准平面值,人工目视确认口径)
保存/确认保存成功(georefRevision 2,派生成果分块上传并回读摘要);"确认定位"弹窗确认后记录人工确认(VERIFIED)
检查/生效检查页 0 错误 0 警告 1 提示(SCOPE_UNCONFIRMED);"设为当前有效版本"生效:V1 当前、CHECKED、任务 SUCCEEDED
地图展示监管中心按"15号线"图层定位,500 m 比例尺下车站结构轮廓(出入口/换乘通道/风亭/电梯标注、线路中心线)矢量线条正确叠加天地图影像
落位一致性检查页派生图层空间范围 106.32–106.83°E / 29.47–29.62°N 与既有开发基准落位一致(控制点为基准点附近真实 POI,偏差 ≤50 m)

10.5 预览时序与共享组件 ​

预览打开后立即关闭(800 ms 内)抽屉正常关闭、无脚本错误;关闭后重开 PDF.js 重新渲染(PDFViewerApplication、1 页、2 画布);DWG 预览切换为 DXF 图纸预览(抽屉按版本键重建);预览加载中导航离页无错误。GIS 数据页对共享 FilePreviewDrawer 的"预览原 CAD"全流程回归正常;通用附件(ossId)路径本轮未另寻业务数据覆盖(组件与附件接口未被本轮修改,风险低)。

10.6 未覆盖与剩余风险 ​

  • Aspose.CAD 评估许可:PDF 带水印与粗交叉线,且实测源文件含远端离群实体(轨道中心线 位于 CAD 负坐标区,距主体 ~77 km),Aspose 出图范围被离群实体撑大导致主体内容占比过小;水印与出图范围均受许可限制,未获授权前不改动转换链,预览效果验收保持受阻。
  • 受限 A/B 用户矩阵:越权拒绝以管理员票据 + 名/nonce/源摘要绑定矩阵验证,权限差异化场景(普通用户仅 A 权限无 B 权限的票据/成果/file 参数组合)由单测覆盖(Guard 9 项、撤权测试),未在页面以受限账号复演。
  • 生产:未访问;生产 LibreDWG、kkFileView、nginx、环境变量与 Aspose 许可均未验证。
  • 通用附件路径:未在本轮以其他模块附件数据复验共享抽屉(无现成数据)。

10.7 2026-10-24 复核轮补验(受限矩阵/双编码/Python/附件/叠加) ​

用例实际观察
受限用户授权管理员经 PUT /gis/authorizations/{userId} 给普通用户王康授予 A 版本 FILE_PROCESS read(revision 0→1);FILE_PROCESS 不允许 export/download 标志(400 校验)符合契约
A 签发与正常预览王康签发 A 预览 200;自身成果 200/1,376,226 B/%PDF-1.5;Range 206 bytes 0-99/1376226;入口 index 200
A 票据 + B 成果路径403(39 B,无 B 字节)
A 票据 + file 参数指向 B403
A 票据 + 他人附件403
A 票据 + 双重编码穿越400
A 票据 + 静态 viewer200(67,532 B)
错误 nonce 派生名403(nonce 差一位即拒)
王康签发 B(无授权)403"该版本尚未完成专业归类,普通用户不能读取原始整文件"
真实双编码 viewer 重放按 kk 原生脚本构造(encodeURIComponent(url),url=代理绝对地址+一次编码名)独立请求 200/67,529 B/PDF.js 页面
撤权后旧票据REMOVE 授权(revision 1→2,grants 0)后,未过期旧票据对入口与成果均 403(按票据签名用户复核)
授权基线恢复已 REMOVE,王康恢复无授权基线
Python 解析器test_cad_import.py 7 项通过(含新增转换器缺失诊断用例,断言错误含 GIS_DWG2DXF_COMMAND)
共享附件预览系统管理→文件管理 .txt 附件"预览":共享 FilePreviewDrawer 打开,iframe 指向 https://kkfile.tangyucong.top/onlinePreview?url=...minio...
配准叠加渲染重开工作台载入已保存配准→预览→地图放大:底图叠加密集蓝色 CAD 线条(平行线组/站点轮廓/线段簇,控制点区域附近);上轮"未绘制"判定为低缩放视觉误判
生效反馈代码核查:成功有 toast+跳转;失败由 axios 拦截器统一弹错——无静默缺陷
本轮自动化GIS 后端 24 类 187 项全部通过(2026-10-24 04:4x 证据判定通过);Python 7 项通过

11. 2026-10-24 取消专业范围权限复验(当前有效结果) ​

11.1 代码与自动化 ​

项实际观察
后端测试GIS 22 个测试类 158 项全部通过(0 失败/0 错误/0 跳过;删除 GisAuthorizationServiceImplTest 27 项、GisGrantKeyFactoryTest 3 项,GisFileAccessGuardTest 重写为 10 项新口径);verify-backend-tests.ps1 证据判定通过
前端静态删除 views/gis/authorization、api/gis/authorization 后全工程 vue-tsc --noEmit 0 错误
授权接口下线部署后 GET /gis/authorizations/{userId} 返回 404"请求地址不存在"
菜单核查SYS_MENU 13 行 GIS 菜单全部为功能权限码,无 gis:authorization:* 与授权页面菜单,无需清理
部署后端 jar sha 校验+健康检查通过(旧 jar 备份可回滚);前端 nginx 切换至 frontend-release-20261024-0454 后 200

11.2 页面与接口矩阵(普通用户王康,零专业/FILE_PROCESS 授权) ​

用例实际观察
真实页面预览原 CAD数据管理→15 号线→版本对话框→"预览原 CAD":抽屉→入口 PDF 页→PDF.js 渲染 1 页 2 画布(无任何专业/FILE_PROCESS 配置)
自身转换成果读取王康票据请求本图纸转换成果 200(1,376,226 B)
同线路工点图纸签发SITE_SHARED 型图纸(整线范围覆盖)签发预览 200
A 票据读 B 成果B 图纸派生名与 viewer.html?file= 指向 B 均 403,无字节泄露
撤工程范围后旧票据撤销王康 15 号线(仅留 27 号线)后,未过期旧票据对入口与成果均 403"无权访问该图纸的工程范围";恢复两条整线后王康签发 200
工程范围过滤王康台账仅返回 15 号线 4 张图纸
功能权缺失单测 missingDownloadPermissionIsDenied 覆盖(开发库业务账号同为"普通管理员"角色,无现成无 GIS 权限账号,未页面复演)
回归DWG 任务 SUCCEEDED;版本 V1 当前/CHECKED/VERIFIED;检查接口 0 issues;监管中心 1,191 图元与图层树正常(王康身份)

11.3 遗留 ​

  • GIS_AUTH_SUBJECT/GIS_PROFESSION_GRANT 表与存量数据当时保留、不再被读取;2026-11-02 开发库已删除,生产库原不存在。
  • 生产未访问;生产发布(后端 jar、前端 dist、两表处置说明)待排期。

12. 2026-10-24 原 CAD kkFileView 预览退役与缺陷修复轮(当前有效结果) ​

验证环境:本地 dev(Windows,Java 21 后端 8080、Vite 前端 80),管理员真实页面操作;数据库经项目纳管入口只读盘点。本轮未提交、未推送、未部署、未访问生产。

12.1 自动化 ​

12.1 首版曾按 target/surefire-reports 全目录累加得出“24 类 195 项”,其中混入已删除测试类的旧报告;已在复核轮按当前源码测试类、当前执行时间的干净报告更正,下表为更正后数字。

范围结果
后端 GIS 模块18 个当前测试类 139 项全部通过(0 失败/0 错误/0 跳过;dev.ps1 maven -Dmaven.test.skip=false -pl digital-construction-modules/digital-construction-gis test,仅统计本次执行时间内的 Surefire 报告)
后端 business 模块(绑定目标鉴权)BusinessGisEngineeringAccessPortTest 8 项通过(真实 Port 编排+底层数据访问替身)
Python 解析器20 项通过(基线 7 项;HATCH 按官方 flags 语义重写后补标准外环1/内洞16、顺序无关、交叉/相切/自交拒绝、Outer 样式等回归)
前端全工程 vue-tsc --noEmit 0 错误;oxlint 0 警告 0 错误;生产构建通过;pnpm vitest run src/views/gis 5 个测试文件 19 项通过(layerCache 3、previewRequestGuard 5、scene-config 1、sceneQueryCoordinator 7、useGisVectorLayers 3)
文档verify.ps1 Docs 检查通过

12.2 页面验证(管理员真实操作) ​

用例实际观察
监管中心出图天地图影像 + CAD 线条(右线/左线"显示中")正常渲染,缩放 13
缩小→放大恢复缩至 8 级图层显示"≥10"并卸载;放大回 13 后重新加载恢复显示(视野外图层准确显示"无图元",定位后立即加载 45 图元)
底图反复切换影像→OpenFreeMap→影像→OpenFreeMap→矢量:样式加载、出图、归因正常,无重复加载异常,状态"底图已加载"
天地图瓦片失败反馈期间出现"部分瓦片加载失败(23)"并给出重试按钮——状态反馈正确(外部瓦片网络问题,未按假成功处理)
数据管理台账线路树、图纸/图层 Tab 正常(首次工程树加载约 3 秒,期间空态文案可见)
版本对话框操作列仅"配准/检查并生效",无"预览原 CAD"
旧预览接口POST .../preview、GET .../preview-source/...、GET .../preview-view/... 均返回业务码 404"请求地址不存在",不能读取源文件或缓存成果
配准工作台说明回显保存的自定义说明"沿用既有开发基准的邻点配准…"准确回显;打开无误报 dirty
说明修改与关闭提醒修改说明出现"有未保存修改";点关闭弹出"未保存修改(含说明)"确认框;"继续编辑"保留、"放弃修改并关闭"关闭后重开说明仍为原文
场景参数切换监管中心已打开(keep-alive)时从场景列表"打开地图":URL 带 sceneId,场景名/默认底图/组合正确切换,旧场景不覆盖;菜单返回后恢复"工程地图"默认场景
其他模块附件预览系统管理→文件管理 .txt 行内预览:共享抽屉正常打开,kkFileView 渲染内容完整(清理 GIS 旁路 props 未影响通用附件预览;验证后预览开关恢复原状)

12.3 验证范围(复核轮更正) ​

首版曾以“未触及生效与展示链路”“权限判定代码未变更”为由复用早轮结果;复核指出本轮实际修改了派生存储路径、解析器、单位回写、跨线可见性、鉴权错误处理与场景运行,不能据此免验。复核轮已用新建开发样本重新执行全链页面验证(见 §13),以下为分工边界:

  • 本轮已完成:新建样本上传→解析→配准→保存→确认→检查→生效→监管地图展示;同版重配准保持 ID/样式/归属;受限账号跨线图层可见性与下载;HATCH/说明回显/样式覆盖/场景切换/AFFINE 回显的页面行为;GIS 无原 CAD kkFileView 入口与旧接口 404;通用附件预览正常。
  • 业务绑定写接口无页面入口(要素独立页面已按孤儿清理删除):以真实 BusinessGisEngineeringAccessPort 集成测试覆盖目标存在性/同线/工程范围鉴权编排,未伪称页面验收。
  • 天地图/OpenFreeMap 外部服务可达性随公网状态波动,以页面实际出图为准;瓦片失败如实显示并提供重试。

2026-10-25 简化优化实施验证(代码级 + 本地联调) ​

本节记录 2026-10-25 简化优化(ABDE + 高德全线定位)的代码级检查,以及在本地联调环境用内置浏览器完成的真实页面链路。未发布到共享 dev/生产;不能据此宣称正式环境验收通过。

检查入口/范围结果
后端 GIS 全量测试.agents/tools/dev.ps1 maven '-Dmaven.test.skip=false' -pl 'digital-construction-modules/digital-construction-gis' -am test142 项通过,0 失败/0 错误/0 跳过
前端类型vue-tsc --noEmit0 错误
前端 lintoxlint src/views/gis src/api/gis src/utils0 warning / 0 error
前端生产构建dev.ps1 pnpm --dir=digital-construction-ui buildBUILD SUCCESS
前端 GIS 测试vitest run src/views/gis src/utils/amapLineSearch.spec.ts6 个文件、22 项通过
高德线路检索浏览器加载 AMap.LineSearch,城市重庆15 号线 4 条线路对象/去重 25 站;27 号线 15 站;24 号线 11 站

新增覆盖:

  • 后端:台账五态与主按钮派生(已发布/待定位/待发布/失败/处理中)、失败原因人话映射、场景空态优先级与底图优先。
  • 前端:高德线路结果归一化、上下行去重、一期/二期归并、站点去重、15 号线默认 3 锚点(曾家/井口/两江影视城)。

浏览器端到端(本地联调,2026-10-25) ​

联调环境:HEAD 干净工作树 + 本次 GIS 源码构建的后端,连开发库 DM8、开发 MinIO,Redis 使用独立 database 15;前端 Vite 5173,代理 localhost:8080;内置浏览器 1280×720。浏览器工具不支持文件选择,按项目规则直接调用上传 API 上传合成 DXF,随后全部在页面完成定位、确认、发布和地图查看。

步骤实际结果
数据管理五态15 号线列表出现待定位、失败、已发布、新版本待定位、新版本待发布;每行一个主按钮(去定位/查看原因/在地图查看/发布到地图)
上传/解析上传合成 DXF GIS-E2E-15-20261025(15 号线,7 个图元),任务 SUCCEEDED,行变为待定位
全线检索定位工作台自动搜索“重庆轨道交通15号线”,显示 1 个线路族、25 个站;默认选中两江影视城、井口、曾家
三点确认点 M1/M2/M3 后各点一次 CAD,形成 P1/P2/P3;自动拟合,比例 1.123、旋转 1.71°、第 3 点偏差 445.7m、最大 649.7m;提示“可能不是等比缩放”并提供“改用四点仿射”
仿射切换点击后进入四点仿射,显示“还需 1 个点”,确认按钮禁用
四点仿射提交新增合成 DXF GIS-E2E-AFFINE-20261025(15 号线,9 个图元),保留前三点,补选第 4 站“重光”并在 CAD 点对应位置;自动拟合显示“比例 仿射 / 旋转 - / 第 4 点偏差 199.4m”,确认后行变为待发布并发布到地图
确认/发布点“确认位置”一次完成保存+确认,行变为待发布;点“发布到地图”进入检查页,确认后自动进入监管中心;地图显示该图纸 7 个图元,图层开关为“显示中 7”,天地图影像正常
检查页口径坐标状态显示“已定位(参考)”,页面不再出现“已人工确认”
失败提示GIS-LARGE-12K 行“查看原因”打开处理详情,显示“图纸解析失败,请查看详情后重试”及查看任务/重试解析/重新上传/版本
地图空态监管中心搜索无匹配时显示“没有匹配的图纸或图层”+清除搜索/刷新
工点模式新增合成 DXF GIS-E2E-SITE-20261025(九曲河东站工点,7 个图元),工作台为工点模式:站名/工点名/地址输入,无线路检索;搜索“九曲河东站”返回周边 5 个 POI,选 3 个不同地物并逐个点 CAD,形成 3 点后确认、发布,地图出现该工点图纸
上传弹窗折叠默认只显示文件、成果范围、线路/工点、图纸名称;“高级选项:图纸编码、图层范围、备注”默认收起,展开后三个字段可见

测试数据:开发库保留三个可回查样本——GIS-E2E-15-20261025(drawingId 2114309457598550016,versionId 2114309457598550017,15 号线,已发布)、GIS-E2E-AFFINE-20261025(drawingId 2114319196881506304,versionId 2114319196881506305,15 号线,已发布)、GIS-E2E-SITE-20261025(drawingId 2114321499810254848,versionId 2114321499810254849,九曲河东站工点,已发布);未删除共享数据。临时后端、前端、干净工作树、登录临时文件和合成 DXF 已清理。

未执行:

  • 共享 dev/生产的发布与浏览器复验;生产办公终端高德线路检索和真实大图性能。
  • 旧 VERIFIED 数据迁移;本轮未改数据库结构。

2026-10-26 配准确认性能与台账/地图交互验证 ​

验证环境:本机 Windows、Java 21 / Spring Boot 4;开发库 DM8(TCP RTT 约 29 ms)、开发 MinIO(单次 HTTPS 请求约 110–180 ms);真实浏览器视口 1920×911。性能样本为“15号线施工图设计平面线路图+车站轮廓-20241115”,20 个源图层、1,191 个图元。本轮未访问生产、未改数据库结构。

配准确认耗时 ​

运行接口总耗时派生构建当前版重建事务(含提交)基准修订读取(500/500/191 行)
基线48.260 s9.684 s37.332 s2.222 / 11.931 / 10.532 s
优化后第 1 次32.479 s10.940 s19.791 s0.538 / 4.462 / 4.269 s
优化后第 2 次27.267 s9.445 s16.846 s0.284 / 4.030 / 4.047 s

两次优化请求相对 48.260 秒基线分别减少约 15.8 秒(32.7%)与 21.0 秒(43.5%)。阶段计时是各埋点各自的边界,不能把表中各列直接相加当成总耗时。

根因证据:基线线程栈落在 DM JDBC DmdbClob.do_getSubString → DmdbClob.loadAllData → DmdbResultSet.getString 的修订几何读取;三批旧几何 CLOB 分别约 145,258、973,817、942,483 字符,读取耗时同步升至 2.222、11.931、10.532 秒。证据更支持 CLOB 定位器读取随批次数据体量放大;现有采样不能证明 MVCC/UNDO 是主因。do_executeLargeBatch 出现在 JDBC 批量写入栈中,但没有对照证明它代表驱动退化,因此未改驱动参数或写入 SQL。

本轮同版重配准不再读取旧 GEOMETRY_JSON 只为判等;每次仍新增不可变修订,仅切换当前修订指针,并保留人工属性、覆盖信息、业务绑定及乐观锁条件。生成的派生分块在同一请求中最多缓存 32 MiB,重用写入时的原始字节,并用读取侧同一套 SHA-256、大小、归属、范围、数量和稳定键校验;超限块仍从存储读取并校验。测试期间对该样本执行两次确认:要素数保持 1,191,版本关系保持 1,191 条,新增不可变修订 2,382 行;这是本轮开发库测试产生的业务数据变化。

优化后主要剩余时间为当前版事务内读取属性/覆盖 CLOB 与数据库往返(两次约 16.8–19.8 秒),派生构建约 9.4–10.9 秒;本轮未改 fetchSize、DM JDBC LOB 模式、列类型,也未把读操作移出原子切换事务。

页面验证 ​

页面/用例实际结果
图纸台账状态保持单行;临时失败图纸的删除确认按 gis:drawing:edit 通过,删除后行数从 9 条回到 8 条;原有图纸未删除
图层台账左侧图纸导航可筛选归属图纸;选择上述真实样本后显示“共 20 条”图层
监管中心首次进入 9 张图纸均隐藏;“全部显示”后按钮切为“全部隐藏”,再点后恢复全隐藏;搜索框与图层列表间距正常
配准工作台1920×911 下 A/B 上方各占 50%,C 区下方横向铺满;控制点表格全列可见,地图候选区在操作区内显示。已验证临时增加第 4 点后可拟合;退出时选择放弃,未保存试验点

临时删除用例上传的 DXF 在当前 CAD worker 解析失败,任务详情为 No module named 'ezdxf'(该开发机运行时缺失已于 2026-10-26 修复,见文末“GIS 运行时缺失修复与真实图纸重试验证”),因此该页面用例实际覆盖了无图层失败记录的删除;没有把它表述为含图层图纸的页面级级联实测。该临时图纸随后经台账删除并从可见列表消失。后端删除服务测试覆盖业务绑定/在途任务拒绝、权限/工程范围和父图纸软删除;图层数据保留在图纸聚合根之下并因父图纸失效而不可访问。

自动化回归 ​

范围结果
GIS 后端定向回归9 个测试类、67 项通过;覆盖图纸删除、CAD 任务领取与完成、要素绑定、配准事务、不可变修订、清单摘要与分块边界
前端 GIS 测试5 个测试文件、19 项通过
前端静态检查Docs、Perms、FrontendLint、FrontendTypes、FrontendFormat 均通过;权限检查未发现前端权限码无后端定义
前端生产构建dev.ps1 pnpm --dir=digital-construction-ui build 通过

无 DDL、无生产访问或部署。开发库变化仅包括上述真实样本的两次重配准,以及已软删除的临时失败图纸;历史版本与源对象按删除设计保留。

2026-10-26 GIS 运行时缺失修复与真实图纸重试验证 ​

验证环境:本机 Windows、Java 21 / Spring Boot 4;开发库 DM8、开发 MinIO;后端以默认配置启动(GIS_PYTHON_COMMAND=python,即默认值;GIS_DWG2DXF_COMMAND 为旧默认值),未指向特定解释器,模拟 IDEA 直接启动。真实图纸 GIS-1793006020535(24 号线一期,DWG 321,834 字节)。本轮未访问生产、未改数据库结构。

复现与修复 ​

  • 修复前:任务 2114646638447214592 于 17:13:41 创建,1 秒内以 PARSE_FAILED 失败,任务详情为 No module named 'ezdxf';后端使用 PATH 上的 Python 3.12.10,该解释器未安装 ezdxf。
  • 修复:GIS 模块 runtime/ 随仓库携带 Python 3.14.7、锁定依赖和 dwg2dxf(运行时选择见详细设计);后端未显式配置时自动选择该运行时;application.yml 的转换器默认值改为空,不再指向 .tmp/tools。
  • 进程证据:重试期间通过系统进程信息捕获到 ...runtime\python\python.exe ... cad_import.py,并出现 dwg2dxf.exe,确认默认配置和 IDEA 启动路径无需手工环境变量。

页面验证 ​

页面/用例实际结果
GIS 数据管理 → 24号线一期 → 处理详情 → 重试解析任务 2114659360534585344 于 18:04:14 提交、18:04:23 结束,状态 NEEDS_INPUT(待补正),源对象 4,016、输出图元 4,015、缺项 1
转换任务详情显示“解析完成但存在缺项:不支持对象 HATCH ×1,未进入原始成果;HATCH 边界无法可靠解释 ×1,未进入原始成果”,耗时 7 秒;页面提供重试/刷新
再次重试任务 2114660091991842816 于 18:07:09–18:07:17 完成,结果同上,证明可重复执行
图纸台账行状态从“失败 图纸解析失败,请查看详情后重试”变为“失败 解析发现缺项,需要补资料或检查”,不再出现依赖缺失提示

自动化 ​

范围结果
GisCadWorkerSupportTest10 项通过,0 失败/0 错误/0 跳过;覆盖运行时优先、显式配置优先、无运行时回退和旧 .tmp 配置兼容
GIS 后端完整回归169 项通过,0 失败/0 错误/0 跳过(dev.ps1 maven '-Dmaven.test.skip=false' -pl digital-construction-modules/digital-construction-gis -am test)
解析器运行时Python 3.14.7 可嵌入运行时导入 ezdxf 1.4.5 / numpy 2.5.4;本地 DXF 样本解析成功(4 层/6 图元);dwg2dxf 0.14 可执行

完整回归执行时工作树还包含同工作区的其他未提交改动(图层缓存/要素接口),169 项为当时模块总数;本任务直接相关的 GisCadWorkerSupportTest 10 项单独核对通过。

未覆盖与剩余 ​

  • 该图纸的 HATCH 缺项仍需业务/数据侧确认,未宣称解析成果可直接发布。
  • 运行时为 Windows x64;Linux/macOS 开发机未验证本目录二进制,需使用 setup.sh 或显式解释器。

2026-10-26 解析缺项实体级定位验证 ​

验证环境:本机 Windows、Java 21 / Spring Boot 4;开发库 DM8、开发 MinIO;真实图纸 GIS-1793006020535(24 号线一期,DWG 321,834 字节)。本轮未访问生产、未改数据库结构。

解析与错误信息 ​

  • 任务 2114670832841035776(18:49:50–18:49:58)状态 NEEDS_INPUT,源对象 4,016、输出 4,015、缺项 1。
  • 错误信息:解析完成但存在缺项:HATCH 边界无法可靠解释 ×1,未进入原始成果;问题实体:HATCH,图层“车站总图”,句柄 180E,坐标 (78060.176205, 64632.222137),原因:边界自交,第 1 环,第 1/4 段。
  • 旧尝试 2114659360534585344、2114660091991842816 仍保留原有摘要;新解析生成实体明细。

页面验证 ​

页面/用例实际结果
转换任务详情“问题明细”1 行,显示 HATCH / 车站总图 / 180E / 78060.176205, 64632.222137 / 边界自交 / 第 1 环;第 1/4 段;复制坐标、复制句柄可用
任务重试从任务详情确认重试后生成新尝试并跳转,完成后自动刷新为待补正

自动化 ​

范围结果
Python 解析器22 项通过(新增自交实体定位、环交叉、flag 矛盾明细 3 项)
GIS 后端170 项通过,0 失败/0 错误/0 跳过;GisCadTaskIssueMessageTest 1 项、GisCadWorkerSupportTest 10 项单独通过
前端FrontendTypes、FrontendLint、FrontendFormat 通过

未覆盖与剩余 ​

  • HATCH 缺项本身仍需设计方按句柄/坐标修图;本次只验证定位信息可读、可复制。
  • 旧清单没有 details 时页面降级为问题摘要;重新解析后才有实体明细。
  • 未改数据库表结构,未访问生产。

2026-10-26 线网地图场景化验证 ​

自动化 ​

范围结果
GIS 后端全量183 项通过,0 失败/0 错误/0 跳过;场景相关 GisSceneConfigServiceImplTest 17 项、GisSceneViewConfigValidatorTest 11 项、GisSceneFitExtentCalculatorTest 2 项、GisSceneServiceImplTest 5 项均通过
前端类型与 lintvue-tsc --noEmit 0 错误;src/views/gis lint 0 错误;受影响 7 个文件格式检查通过
前端测试与构建GIS vitest 5 个文件 19 项通过;生产构建通过

页面验证(开发环境,真实管理员) ​

场景实际结果
菜单与场景菜单显示“线网地图”;地图控制面板场景名为“线网地图”;默认底图天地图影像,注记关闭
全部图层默认场景为 ALL、打开时全部显示;20 个图层初始勾选,逐层状态由加载中变为显示中;图纸“全部隐藏/全部显示”生效
默认视野默认视野 11.2 级;面板提示“默认视野已忽略 1 个离群图层”;fitExtent 不包含 105.4994°E 离群图层,fullExtent 包含;“查看完整范围”切到完整范围
场景配置系统默认场景带“系统默认”标识;编码和可用性只读;全部/自选切换、注记开关、全部图层打开时显示、固定中心/初始缩放、工程范围适配均保存并回读生效
返回同步在场景配置关闭/开启注记或修改全部图层初始显隐后,返回线网地图会重新读取场景目录并应用;固定视角中心/缩放变更后返回地图会应用新视角
接口口径/gis/scene 返回 catalogApplied=true、layerScope=ALL、allLayerVisible=true、annotationVisible=false、fitExcludedLayerCount=1;允许底图顺序为影像、矢量、OpenFreeMap;annotationSupported 对矢量样式为 false

双库结构 ​

  • 开发库:GIS_SCENE 三列及 CHECK、SYSTEM_DEFAULT 线网地图配置、三条允许底图关系和菜单改名均已回读一致。
  • 生产库:同列/默认值/CHECK、新建 SYSTEM_DEFAULT、三条允许底图关系和菜单改名均已回读一致;未修改业务图纸/图层/要素和权限关联。
  • 生产应用已于 2026-10-27 发布 releases/20261027-0015-dd8a3628(提交 dd8a3628);生产页面复验:1 张图纸、20 个图层加载为“显示中”、底图已加载,默认视野 11.5 级并提示忽略 1 个离群图层;地图场景配置显示“系统默认 / 线网地图 / 全部图层 / 版本 0”。发布哈希、服务、接口和回退依据见项目根 reports/部署运维/平台部署历史记录-截至2026-11-02.md §6.15。

未覆盖与剩余 ​

  • 全部图层在大规模图纸/图层数量下的场景目录大小、首批加载耗时和并发取图表现未按 Q-GIS-007 冻结;当前仅以开发库和生产环境各 1 张已发布图纸、20 个图层验证。
  • 离群剔除使用主体分位与图层距离阈值,能处理当前真实图纸的 105.5°E 离群图层;不同数据质量下需复核阈值,不作为测量精度结论。
  • 生产页面本轮使用既有登录会话,未重新执行账号密码输入;页面、接口和数据库连接均为真实生产环境证据。

2026-10-27 达梦错误信息截断修复验证 ​

问题与修复 ​

达梦 VARCHAR 按字节计长,GIS_CAD_TASK.ERROR_MESSAGE 定义为 VARCHAR(1000);原实现按 Java 字符数调用 truncate(message, 1000),中文和 emoji 会超过 1000 字节,导致解析失败信息或长缺项摘要写库失败。GisCadTaskRunner 改为统一使用 truncateUtf8,按 UTF-8 码点边界截断至 1000 字节,不拆分中文或代理对;任务失败信息、缺项摘要和失败写库路径均已切换。

自动化 ​

范围结果
GisCadTaskErrorMessageTest4 项通过,0 失败/0 错误/0 跳过;覆盖 333 个汉字加 ASCII 的 1000 字节边界、emoji 代理对边界、空值以及超长缺项摘要
GIS 后端全量183 项通过,0 失败/0 错误/0 跳过(含上述 4 项)

未覆盖 ​

  • 未构造真实达梦超长中文错误信息写库用例;本次以 UTF-8 字节边界单测和达梦列定义核对为依据,发布后在开发/生产任务失败或缺项场景继续观察错误信息回读。

2026-10-30 交开投影像适配验证 ​

代码范围为 991b6bf5 上的本次未提交修改:底图管理、CRS 选项、交开投网格与服务端 token/瓦片代理、场景参数及前端加载器。

检查结果
后端编译及本地包构建通过,统一开发入口执行,未部署生产
后端定向回归48 项通过、0 失败/错误/跳过:JKT 服务 9、底图管理 20、场景 6、原 WMTS 配置解析 13
前端定向回归6 项通过:JKT 编码/网格锚点/投影 3 项与既有矢量颜色 3 项
前端类型与定向 lint通过
前端构建通过,构建耗时 20.41 秒
开发库只读核查3857、4490 定义均启用;现有 VARCHAR/CLOB/BIGINT 满足配置;ALL_CONSTRAINTS/USER_CONSTRAINTS 未返回本表约束,本轮未改表结构
前端凭据边界新源只请求平台代理,运行场景不下发上游地址或 token;后端测试覆盖 token 缓存、过期前刷新、鉴权失败一次重取及无效图像拒绝
浏览器闭环按用户指令由用户自行验证;本轮未执行新增底图、加入场景或地图真实出图操作

测试使用本机模拟上游覆盖鉴权生命周期,不表示实际供应方账号鉴权已完成联调。服务端私有配置已经独立于业务源码存放;不在报告中记录其内容。未新增底图或场景关系数据,用户按操作手册 5.1 录入并验证;真实供应方响应、实际图纸套合与生产网络未在本轮验收。

2026-11-05 交开投影像临时浏览器直连 ​

受测范围为 10d80f96 上的交开投浏览器鉴权、瓦片源、底图表单、场景下发及后端代理停用改动。

检查结果
后端定向回归48 项通过。覆盖 4490 配置、结构检查、旧记录场景下发、保留的代理代码及既有 WMTS 解析
前端定向回归9 项通过。覆盖直连参数、token 复用、提前刷新、鉴权失败重试、非受控来源拦截、瓦片网格及矢量图层回归
前端类型、定向 lint、生产构建通过
真实出图待浏览器验收。生产 HTTPS 页面需可达的 HTTPS 上游,其鉴权和取图接口须允许平台跨域访问

2026-11-08 交开投影像网格校准 ​

受测范围为本批修改:GisJktTileProfile.ORIGIN 原点纬度由 399.99999999999977 校准为 399.99935(南移 0.00065°,约 72m)。

背景:用户反馈 2.5D 底图与矢量层明显错位(出入口落在道路中间),天地图底图下矢量对齐正常。将交开投瓦片与天地图影像做同区域多点比对定量测量:影像内容相对天地图真值恒定北偏约 68~76m、东西向约 0~4m,且与层级无关;据此排除 WGS84/CGCS2000 基准差异(厘米级)与分辨率误差(会产生同比例东西向漂移),判定为供应方影像配准或网格原点偏差,按恒定平移在网格原点做南移校准。

检查结果
偏移测量15 级镶嵌图灰度 NCC 5 点中位北偏 +68m、梯度 NCC +80m、全区域相位相关 +76m;东西向 +2~+4m(噪声级)
校准后残差复测相位相关残差东 +4m、北 +3m(测量噪声级)
后端定向回归35 项通过:JKT 服务 9、底图管理 20、场景 6
前端定向回归6 项通过,12 级网格锚点断言不受校准影响
浏览器闭环dev 线网地图车站区域 18 级核对:交开投与天地图两种底图下车站轮廓、出入口通道与道路边缘贴合一致,出入口不再落于道路中间
远场恒定性天地图影像在车站区以外 15~17 级无覆盖,恒定平移假设在约 2.2km 基线内成立;更大范围待供应方侧确认

2026-11-08 交开投影像恢复服务端代理并部署生产 ​

用户确认生产不依赖腾讯云跳板,要求在平台自身服务端解决。恢复 2026-10-30 的服务端代理架构(GisJktTileService/GisJktTileController 重新注册、场景下发切回平台瓦片接口、前端恢复代理加载器),保留网格校准;撤销浏览器直连临时方案及其前端凭据注入。

检查结果
后端定向回归35 项通过:JKT 服务 9、底图管理 20、场景 6
前端定向回归3 项通过(代理瓦片地址/十六进制行列/网格锚点,12 级锚点不受校准影响)
本地代理链路闭环浏览器 → 平台后端代理(平台登录态鉴权)→ 供应方上游出图成功;18 级核对车站轮廓与出入口贴合道路边缘,校准生效
生产后端部署新 release 已切换并重启成功(jar 摘要核对一致),凭据引用 JKT_MAP
生产库数据GIS_BASEMAP_SERVICE 交开投行与场景“线网地图”关联已插入并回读(1+1 行),GIS_CRS 4490 已存在
生产出图受阻:142 → 113.207.1.170:5005 出方向未放行(实测 BLOCKED,141/68 同),待网络开通后自动可用,无需再变更代码
前端凭据边界恢复服务端代理后,前端构建产物不再包含供应方账号与密码摘要