主题
勘察管理 · 测试与验收
文档版本:1.21 | 最近核对日期:2026-11-04
2026-11-04:勘察标段候选与保存类型校验已调整为勘察标段、勘察设计标段;新版后端真实保存、审批全链与失败路径已于当日完成端到端验证,见第 11 节。
| 项目 | 内容 |
|---|---|
| Agent 验证结论 | 第5节历史验证;第6节独立复核;第7节上轮R01/R02/R03整改;第9节终审第二轮F01/F02与断点、补验;第10节标段可选、选择器与表单布局。已通过项和未覆盖项分别记录,业务验收未开始 |
| 受测代码状态 | 前端当前工作树已热更新加载并完成类型、lint、spec、构建;后端主代码已编译、38个定向测试通过,但本地 IDE 运行实例未重启,标段可选保存未执行 |
| 数据库/流程环境 | 开发库六表及索引已建并回读,BID_ID/BID_NAME 已改为可空并回读;五条流程已导入发布 V1;生产未访问、未同步 |
1. 范围与前置条件
用例覆盖需求分析确定的五项业务和详细设计接口。执行前记录受测提交/未提交差异、服务是否加载最新代码、环境、测试角色、工程授权和流程版本。仅使用专项创建且可识别的数据,不覆盖他人业务数据,不用生产业务数据代替开发测试。
准备至少两组同线不同标段工点授权,形成“标段 A/工点 A”“标段 B/工点 B”组合;同时准备范围外记录、当前办理人、非办理人、有查询无编辑权限人员及具备单据操作资格人员。具体组织映射按 Q-SM-004 实际核对;按 Q-SM-005 的单任务单范围设计准备数据,不以多范围假设阻断。不能为跑通测试默认超级管理员和全员候选。
下表原始用例状态为设计阶段记录;2026-11-03 开发库实际执行结果见第5节。统计、台账和调整口径已确认;文档检查或测试代码存在不代表业务通过。
2. 需求与用例追踪
| 用例 | 操作与输入 | 预期结果 | 当前状态 |
|---|---|---|---|
| SM-01 | 分别进入五个台账,按线路/项目、标段、阶段筛选并重置 | 条件与结果一致,重置后回首页,分页/总数正确,仅显示授权记录 | 未执行 |
| SM-02 | 大纲、专项、成果分别新增并保存草稿,关闭后重新编辑 | 正文、分类附件、工程引用和原始 ID 正确回显,草稿不创建实例 | 未执行 |
| SM-03 | 创建人修改/删除草稿;他人持 edit 权限直接调用同接口 | 创建人同时具备功能和工程权限时操作成功;他人拒绝且数据不变 | 未执行 |
| SM-04 | 已通过记录尝试普通编辑、删除、直接改状态 | 后端拒绝;详情只读,历史内容与附件不变 | 未执行 |
| SM-05 | 无 list/query/export/edit 权限逐项请求,另从隐藏按钮地址直接访问 | 对应操作拒绝,前端隐藏不构成唯一防护 | 未执行 |
| SM-06 | 拥有两条分离授权组合,读取标段 A/工点 B 的拼接记录 | 拒绝交叉组合,不使用三维独立 OR 放行 | 未执行 |
| SM-07 | 范围外记录分别执行列表、详情、导出、修改、提交、关联计划及附件访问 | 所有入口一致拒绝或不返回,不能通过已知 ID 穿透 | 未执行 |
| SM-08 | 同线 FULL_LINE 授权访问该线记录,再访问其他线 | 同线按平台完整授权可见,跨线拒绝;不将项目 ID 当线路 ID | 未执行 |
| SM-09 | 有工点、无工点的标段级单据分别提交并列入混合查询 | 有工点按精确组合、无工点按标段投影授权;混合列表无漏数越权,不因空值自动放宽全线 | 未执行 |
| SM-10 | 使用大于 JS 安全范围的单据、计划、孔、用户及菜单 ID 保存回显和跳转 | JSON/URL/表格键/选择器/请求体保持原值,无数字化转换 | 未执行 |
| SM-11 | 计划手工新增、修改、删除明细,保存后重新打开 | 孔编号、坐标、孔深正确回显;主表数量与保存明细一致 | 未执行 |
| SM-12 | 计划日期倒置、非数字坐标、负数量/孔深、超过约定精度 | 前后端在责任边界拒绝不合法输入,提示字段与原因 | 未执行 |
| SM-13 | 下载模板,导入合法孔明细,再导出比对 | 模板列与接口一致;无 ID 损失、坐标精度损失或漏孔 | 未执行 |
| SM-14 | 导入含错误行、重复孔号、缺列或不合法数值文件 | 提示行号/字段/原因;整批不应用,无静默覆盖或部分成功误报;合法预览默认追加 | 未执行 |
| SM-15 | 发起计划调整,分别在草稿、审批中、退回、通过后查询计划与已有进度 | 调整提交走原节点链;通过前有效指针仍指旧已通过版,退回不切换;最终通过才切换。旧进度引用不改,重提不另增调整次数 | 未执行 |
| SM-16 | 进入计划台账及某计划的完成台账,跨版本查询并导出 | 计划台账一行一份版本任务,完成台账一行一次上报;根计划筛选覆盖各版本,显示各自版本分母与累计;分页导出同范围,不按根折叠完成记录 | 未执行 |
| SM-17 | 进度选计划、选孔、填写实际孔深和起止日期,上传逐孔影像 | 孔必须属于所选计划和授权范围;回显正确,影像数量来自保存引用 | 未执行 |
| SM-18 | 伪造另一个计划孔 ID、跨工程计划 ID、已删除附件引用 | 后端拒绝,不形成错误关联或孤儿记录 | 未执行 |
| SM-19 | 前三份进行中上报各本次值1,当前值n;修改当前值、重复保存/审批并调整计划版本后查询累计;特殊状态按SM-35核对 | 历次本次值1、1、1,当前n,即使此前尚未通过也为3+n;不按孔ID去重,不累加各单累计值。当前n修改为m得3+m,重复保存/审批不重复计数,计划换版不清零。特殊状态边界按SM-35执行 | 未执行 |
| SM-20 | 取消编辑中的附件移除,重新打开已保存单据;分别业务附件及审批附件预览下载 | 已保存引用和文件可用;只读不可上传/删除,站内预览方向符合平台规范 | 未执行 |
| SM-21 | 五项业务逐个从草稿提交,按需求规定顺序完成所有节点 | 各自流程身份、业务 ID、表单路径及最终 finish 正确;不沿用旧并行链 | 未执行,实际候选依赖 Q-SM-004 |
| SM-22 | 非当前办理人伪造 taskId;当前办理人串用别的业务 instanceId;工程授权撤销后直接调用通用 completeTask/退回端点 | 同步前置校验拒绝且业务状态/流程任务不变;不能仅靠详情鉴权 | 未执行 |
| SM-23 | 节点无合法候选、非法候选、停用人员或范围外人员 | 不提交成功,不自动回退为管理员/当前用户/全员候选 | 未执行,依赖 Q-SM-004 |
| SM-24 | 分别退回申请节点和中间审核节点,并由合法办理人/他人请求 | 退回申请节点为back,可由当前申请人任务持有人修改重提;退回中间节点为waiting,申请人无权编辑;合法目标审核人续办,历史与实例保留 | 未执行 |
| SM-25 | 模拟明细保存、文件关联、引擎启动或办理失败 | 业务事务按边界回滚,无半成功状态;页面保留可恢复输入且不提示成功 | 未执行 |
| SM-26 | 从统一待办、台账详情分别打开办理页;刷新页面及直接访问固定路径 | 路由正确不 404;详情只读;功能权限、工程范围和任务归属仍生效 | 未执行 |
| SM-27 | 1920×900 与 1600×760 检查台账、宽钻孔表、工作台、附件及深色主题 | 查询卡在前;工具栏右置;状态/操作固定;单滚动链,无裁切与重叠;长意见完整可达 | 未执行 |
| SM-28 | 先核对合同来源/共享字典,再测试阶段、紧急程度及各类附件缺失的草稿/提交 | 仅按可靠资料和实际业务完整性校验,不从原型示例增加枚举或擅设其他附件必传;缺业务值仅暂停相关配置 | 未执行;Q-SM-007 实际核对后执行 |
2.1 本轮复核补充用例
| 用例 | 操作与输入 | 预期结果 | 当前状态 |
|---|---|---|---|
| SM-29 | A/B/C按顺序提交并保持有效统计状态,本次数量1/2/3;分别按不同分页、筛选、排序查看与导出;B退回申请节点后预览改为4 | 各行累计1/3/6,预览B=5,不含后续C;保存后1/5/8。分页筛选不截断基数,空选孔为0 | 未执行 |
| SM-30 | 完整明细分两页,分别修改并保存;构造仅第一页覆盖请求;进度孔已有影像再编辑 | 合法保存包含全部明细并保留稳定ID及影像;页面不得提交不完整页数据;接口完整集合契约明确,无静默清空其他页 | 未执行 |
| SM-31 | 普通POST/PUT伪造root/previous/effective字段;调整复制含原流程信息;尝试改变调整工程归属 | 系统字段不受客户端控制;新草稿清除原实例/生效信息,保持根归属;拒绝跨根修改 | 未执行 |
| SM-32 | V0→V1→V2连续调整;分别在待批、退回、通过时查看有效计划、已有进度和版本详情 | 指针仅在最终通过时切换;从调整行也可解析根指针;旧进度可按原引用续办,候选每根只有一个有效版 | 未执行 |
| SM-33 | 两次调整中改孔号/坐标、新增孔、删除孔、增删附件;逐次查看前后对比及审批历史 | 每次完整before/after可追溯;sourceBoreholeId识别改号为修改;原版及早前调整不被后次覆盖,差异含附件,序号不因编辑/重提增加 | 未执行 |
| SM-34 | 勾选10孔,其中部分日期/深度/影像为空,再取消2孔;构造重复孔ID及伪造currentCompletedCount请求 | 本次先为10再为8,日期/附件不改变数量;后端拒绝同单重复孔并从有效选孔计算,不采信手填数量;空选孔草稿数量0 | 未执行 |
| SM-35 | 分别准备未提交草稿、waiting、back、finish、cancel、invalid、termination及删除上报;退回改选孔数并重提;引用V0为3孔、V1为4孔验证完成率 | waiting/back/finish已提交立即计入;草稿仅本单编辑预览,其他状态/删除不贡献;修改重算且重提不重复加;累计1对应V0为33.33%、V1为25.00%,旧记录不换分母;累计超计划孔数如实超过100%,零分母显示“—” | 未执行 |
3. 执行方法与证据
服务端定向测试优先覆盖工程组合授权、状态与任务关联、主从写入回滚和导入错误;前端自动化覆盖 ID 传递、只读分支、明细/附件回显及错误恢复。使用统一验证入口并核对本次实际执行数量,不以构建成功代替测试通过。
数据库写入验证通过项目纳管入口回读单据、明细、附件引用及状态,并记录对象、条件和影响结果。五项业务实际流程及页面行为从真实台账/待办入口验证;不能通过直接 API 或注入状态冒充页面通过。逐孔影像上传如受工具限制可按平台允许的上传例外取得文件,再继续真实页面后续链路并说明。
单次证据最少记录环境和日期、受测代码与流程版本、角色/授权范围、操作或命令、预期与实际、实际执行/失败/跳过数量、原始证据位置。日志和截图不得含凭据、真实个人敏感信息或不必要的业务资料。
4. 当前结论与完成判定
本节保留设计阶段的历史结论:形成需求、设计、数据设计、操作目标和测试用例时尚未进入功能验证,不代表当前状态。实际执行结果以第5节实施记录、第6节独立复核和第7节本轮整改复验为准。
Q-SM-001/002/003/008均已确认,按本表用例执行;Q-SM-004/007由实施者先实际核对,确缺项仅暂停局部配置;Q-SM-005/006不作默认阻断。第7节整改后,R01/R02/R03 已通过定向测试和真实页面复验;五流程逐条全链、完整状态矩阵、跨页、深色/窄屏等仍未完全覆盖,业务验收未开始,不认定模块整体验收通过。Agent技术验证不能代填业务验收。
5. 开发库执行结果(2026-11-03)
环境:本地前端 http://127.0.0.1/、本地后端 8080(连接项目开发库)、浏览器真实页面从台账/待办入口操作;测试数据均以“UI验证-20261103”或 UI验证 标识。生产未访问。
| 用例 | 实际结果 | 证据摘要 |
|---|---|---|
| SM-01 | 部分执行 | 五个台账均可从菜单进入,查询卡、列表、分页正常;线路/标段级联筛选与重置未逐项操作,未据此判定筛选全部通过 |
| SM-02 | 部分执行 | 大纲、专项、成果草稿均保存成功并在台账回显;大纲再次编辑回显正文与上传后的分类附件文件名;未逐项核对原始 ID 显示 |
| SM-03 | 未执行 | 未用第二个普通用户验证草稿创建人/他人编辑与删除;后端按 createBy 校验 |
| SM-04 | 通过 | 大纲全链办结后状态“已通过”,操作仅剩查看;外业计划 V0 办结后同样只读 |
| SM-05 | 部分执行 | 无工程授权用户列表为空、详情 403、写入 403;未逐项验证无 list/query/export/edit 权限码的接口拒绝;verify.ps1 -Check Perms 报告前端使用但后端未定义 0 个 |
| SM-06 | 未执行 | 开发库现有授权均为整线,无两条分离的标段/工点组合可用于交叉组合测试 |
| SM-07 | 通过(列表/详情/写入) | 用户刘涛无工程配置:GET /outline/list 返回 total=0;GET /outline/{id} 返回 403“无权访问指定标段工点工程数据”;POST /special 同范围返回 403。导出未单独调用 |
| SM-08 | 部分执行 | 15 号线整线授权下可见/可办理;未用另一线路记录验证跨线拒绝 |
| SM-09 | 未执行 | 本任务测试数据均有工点;无工点标段级记录的混合列表未验证 |
| SM-10 | 通过(静态/接口观察) | 雪花 ID 大于 JS 安全范围,页面 URL、请求体、台账 ID 均保持字符串;未对全部选择器逐项做数字化检查 |
| SM-11 | 通过 | 外业计划手工新增 3 孔(BH-01/02/03),保存后回显 3 条;调整版复制 3 孔并新增 BH-04,主表数量为明细数 |
| SM-12 | 部分执行 | 导入预览拒绝非数值坐标、负孔深并返回字段;接口保存计划开始晚于完成时间时返回“计划开始时间不能晚于计划完成时间”;负钻机数/超精度逐项未单独操作 |
| SM-13 | 部分执行 | 模板下载、钻孔明细导出均返回 200 与 xlsx 内容类型;合法导入预览返回 BH-05/BH-06 及真实行号 2/3;页面文件选择受工具限制 |
| SM-14 | 部分执行 | 非法导入预览返回行 3 孔号重复、行 4 非数值 X、行 4 负孔深,valid=false;未在页面上完整走“修正后重试” |
| SM-15 | 通过 | V0 通过后发起调整 V1;V1 待批时 V0 仍“当前有效”,V1 通过后指针切到 V1;V0 保留 finish 与历史 |
| SM-16 | 通过 | 计划台账一行一版本;从计划行“完成台账”跳转进度台账并携带 rootPlanTaskId,覆盖两版本上报;服务端 root 过滤返回 2 条;五类台账导出接口均返回 xlsx 200 |
| SM-17 | 部分执行 | 选计划、勾选 BH-01/BH-02、回显设计信息、本次数量 2;通过上传接口为 BH-03 关联 1 张影像后,台账影像数量与详情预览均为 1;页面“上传影像”文件选择未操作 |
| SM-18 | 未执行 | 未构造跨计划孔 ID/已删除附件引用请求 |
| SM-19 | 部分执行 | 第一份上报 2 孔提交后累计 2、完成率 50%;第二份草稿预览累计 3、75%;未构造 1/2/3 三份连续记录 |
| SM-20 | 部分执行 | 通过上传接口添加附件后,编辑弹窗回显文件名;点击移除后取消编辑,数据库附件关系与 OSS 文件均保留;未操作站内预览/下载与只读删除入口隐藏 |
| SM-21 | 部分执行 | 大纲全链、外业计划全链并生效、勘察成果 5 节点全链均已办结;专项勘察与进度上报已推进至建设单位主管部室经办人,最后节点未继续操作 |
| SM-22 | 通过(越权拒绝) | 任民直接调用 /workflow/task/completeTask 办理严浩任务被拒,任务仍为 waiting、办理人仍为严浩;未模拟“撤销工程授权后由当前办理人调用”的组合 |
| SM-23 | 未执行 | 未构造无候选/停用/范围外候选人场景;候选接口按权限+范围过滤 |
| SM-24 | 通过 | 退回申请节点后业务为 back,提交节点任务回到任民;修改选孔 2→3 后同实例重提,实例数仍 1,submit_time 保持首次提交时间 |
| SM-25 | 部分执行 | 首次外业计划保存因 MapStruct 转换异常整体失败,未产生半成功主单;未逐项注入流程/文件失败 |
| SM-26 | 通过 | 从首页待办“去办理”进入 /surveyDesign/survey/outline/flowForm,详情、审批时间线、同意/退回按钮均正常;直接刷新固定路径可打开 |
| SM-27 | 部分执行 | 已在 1920×900 与 1600×760 查看勘察大纲、外业计划台账:查询卡在前、工具栏右置、状态/操作固定右侧、横向滚动条可用;深色主题与窄屏宽表未逐项检查 |
| SM-28 | 部分执行 | 共享字典无勘察阶段/紧急程度,已建 survey_stage/survey_urgency;合同按录入;其他附件未设必传 |
| SM-29 | 部分执行 | 验证了“此前有效上报 + 本单”前缀累计(2+1=3)及退回编辑预览替换本单旧值;未构造 A/B/C 1/2/3 三行 |
| SM-30 | 未执行 | 未用超过一页的计划钻孔/进度孔完整集合保存验证 |
| SM-31 | 部分执行 | 调整版修改标段被服务端拒绝“计划调整版本不能修改工程归属和勘察阶段”;root/previous/effective 伪造请求未单独构造 |
| SM-32 | 部分执行 | V0→V1 生效切换已验证;V2 调整草稿已创建并拒绝改归属,未提交 V2 验证再次切换 |
| SM-33 | 通过(V0→V1) | 调整历史显示 V0/V1 序号、状态、有效标记;对比显示 BH-02 预计孔深 52→60、新增 BH-04、附件无变化 |
| SM-34 | 部分执行 | 勾选 2 孔本次数量 2,取消/改为 3 孔后数量 3;同单重复孔、伪造 currentCompletedCount 未构造请求 |
| SM-35 | 部分执行 | 草稿列表累计 0(不贡献);提交后立即累计;退回后计入;改选 2→3 后重算为 3、75%;V1 分母 4→75%,V0 历史记录未换分母;cancel/invalid/termination 未构造 |
5.1 构建与静态检查
| 检查 | 结果 |
|---|---|
后端编译 dev.ps1 maven -pl digital-construction-modules/digital-construction-business -am compile | 成功 |
后端定向测试 SurveyProgressStatsSupportTest,SurveyFlowDefinitionTest | 4 + 2 个用例执行,0 失败/0 错误/0 跳过 |
前端类型 verify.ps1 -Check FrontendTypes | 成功 |
| 前端 lint(surveyDesign 视图与 API) | 0 警告、0 错误 |
前端 spec surveyPolicy.spec.ts | 3 个用例通过 |
权限码 verify.ps1 -Check Perms | (a) 前端使用但后端未定义 0 个;存在存量 (b) 菜单快照缺失警告,本模块权限码已入快照 |
5.2 未覆盖与受阻
- 逐孔影像、业务附件上传/预览/取消编辑:浏览器工具不支持文件选择,未以页面操作验证;未以直接 API 结果冒充页面通过。
- 专项勘察仅验证提交至首节点;勘察成果已在第5节记录 5 节点全链办结;进度上报全链已在第7节整改后重新完成。
- 1920×900/1600×760、深色主题、窄屏宽表滚动未验证。
- 生产库未访问;以项目纳管生产入口做有限连通检查(15.50.3.68:5236)返回 False,确认本次生产内网不可达后停止尝试。生产表结构、五条流程定义、菜单与角色授权均未同步,生产状态未核实。
- 业务验收未开始,以上仅为 Agent 开发环境技术验证。
6. 独立内置浏览器复核(2026-11-03)
结论:发现问题待整改,业务验收仍待验收。第4节“尚无运行证据”为设计阶段历史描述,不再代表当前;第5节是实施者执行记录。本轮不重新背书第5节全部通过状态。5.2“成果仅首节点”与5节及当前已通过时间线冲突,以本节实测范围为准,其他历史覆盖差异由修复轮回核。
- 五台账从菜单实际可达;计划完成台账按rootPlanTaskId跳转进度台账,一行一次上报。
- 选2孔、无实际日期/孔深/影像保存草稿,本次数量2;列表累计3、计划4、75.00%,编辑预览累计5、125.00%,未计入其他上报。新增测试草稿保留为“复核-20261103-选孔统计”。
- 观察V0/V1已通过、V2草稿、V1当前有效;V1差异显示孔深52→60及新增BH-04。未重新执行版本审批。
- 大纲与成果只读详情可达;成果显示已通过和审批时间线。业务用户从统一待办打开进度工作台,刷新后同意/退回最终可用;本轮未执行审批。
- R01/P1:候选及服务端校验仅资源query+工程可见,缺目标节点组织/角色资格;页面候选跨组织,与源码共同确认。
- R02/P2:版本历史只显示差异摘要,缺完整前后详情及该次审批记录入口;页面与源码共同确认。
- R03/P2:新建进度换计划不清孔,源码确认;当前只有一有效根计划,双计划页面复现未执行。
本轮无直接API、DB写入、代码修改或重新构建。工程越权、完整状态矩阵、跨页、五流程全链等未覆盖项不得视为通过。原始页面快照/截图在本机忽略目录 test-artifacts/survey-review-20261103/;详细复现、根因、验收与修复提示词位于根reports/需求与技术规格/勘察管理目录的本次复核记录和下一轮修复提示词。
7. 复核问题整改与复验(2026-11-03 下一轮)
范围:第6节 R01/R02/R03。受测代码为当前工作树,重新编译后端并重启本地前后端后执行;环境与第5节相同,生产未访问。本轮新增测试数据均以“回归-20261103”标识,第6节“复核-20261103-选孔统计”草稿未修改。
7.1 R01 审批目标节点组织与岗位资格
根因:SurveyTaskServiceImpl.candidateUserIds/assertNextHandlers 与 SurveyProcessEventListener 仅按资源 query 权限和工程可见性求候选,没有目标节点参数;页面候选跨组织,与第6节源码判断一致。
修复:
- 新增
SurveyNodeQualification:五条 V1 串行链、当前节点到目标节点解析、节点组织/岗位资格;未知节点直接拒绝,不退化为结束或全员可办。 - 新增
SurveyHandlerQualification与SurveyUserMapper.selectEligibleHandlerUserIds:资源权限 +SYS_DEPT组织类别 +SYS_POST岗位类别 + 目标人员本人工程授权;删除超级管理员和全员兜底。 - 候选接口按当前办理节点解析真实目标节点;业务提交校验首个审核节点;通用完成校验目标节点下一步办理人;转办/加签校验当前节点目标人员;同人自动审批不使用实例变量中的旧
nextHandlerId校验下一节点。 process-info返回currentNodeCode、nextNodeCode、needNextHandler;工作台结束节点不再因候选为空阻断办理。
| 检查 | 实际结果 |
|---|---|
| 首审候选 | 提交“回归-20261103-切计划-修复后”时候选由 21 人收敛为 3 人,均为上海市隧道工程轨道交通设计研究院参建设计单位人员;王康、张兴健等建设单位/项目中心人员不在候选 |
| 伪造提交 | 以任民会话直接提交 [王康] 返回 500“所选审核人不符合目标审批节点的组织、岗位或工程数据资格”,任务保持草稿 |
| 建设单位经办候选 | 合法提交后候选 7 人:王康、谢伟、赵铭、王珊、赵峻、卢颖、高宇含;均为建设单位内设部门经办类岗位且本人工程可见 |
| 伪造下一办理人 | 以任民会话直接完成首审并指定张兴健为下一办理人,返回 500“办理人不符合目标审批节点的组织、岗位或工程数据资格”,任务未推进 |
| 合法链 | 任民→王康→程波完成进度上报全链,最终 finish;部长节点 process-info 返回 nextNodeCode=null、needNextHandler=false,next-handlers 为空 |
| 退回续办 | 进度上报-01 从建设单位经办人退回申请人节点,业务状态 back;任民以首审候选人重提,状态恢复 waiting,实例不变,submit_time 保持首次提交时间 |
| 定向测试 | 5 个测试类共 24 个用例执行,0 失败/0 错误/0 跳过:节点链、资格过滤、监听器伪造拒绝/自动审批、流程定义、统计 |
剩余依赖:任务级项目及勘察审查单位、设计总体单位、工点设计单位映射未配置,外部节点目前按“参建单位外部公司”组织资格收敛,未按具体单位和项目负责人岗位收敛;建设单位“主管部室”未按具体部门映射。未硬编码单位、岗位或人员,未为复核批量授权。历史在途记录的原办理人不被改写,后续选人按新规则执行。
7.2 R02 每次调整完整前后资料与审批入口
修复:SurveyVersionDrawer 每个版本提供“查看/审批记录”明确入口;“查看”区按真实状态标注版本,并提供“差异摘要、调整前完整资料、调整后完整资料、审批记录”四个页签,复用 SurveyDetailPanel 与 FlowTimeline,保留差异摘要。初始版 before=null,前侧明确提示;草稿/退回按真实状态展示;不新增业务菜单、不覆盖历史、不新建审批表。
| 版本 | 实际结果 |
|---|---|
| V0 初始版 | 差异页签显示“初始版本没有调整前数据”,调整前页签显示“初始版本没有调整前资料”,调整后页签完整展示 3 孔(BH-01/02/03)及计划信息;审批记录入口可打开 |
| V1 已通过 | 差异仍为 BH-02 预计孔深 52→60、新增 BH-04;调整前完整 3 孔,调整后完整 4 孔且 BH-02 为 60、当前有效=是;审批记录显示 4 个历史节点 |
| V2 草稿 | 标题和状态显示“草稿”,调整前完整为 V1 的 4 孔;后续 V2 草稿未改写 V1 对比 |
截图:test-artifacts/survey-review-20261103/r02-version-drawer.png(本机忽略目录,仅用于回查)。
7.3 R03 新建/编辑切换计划清理旧孔
修复前浏览器复现:以任民新建进度,选择计划 A(V1,4 孔)并勾选 BH-01/BH-02,切换计划 B(2 孔)后,计划完成时间已变为 B,但钻孔表仍保留 BH-01/BH-02,预测区显示“—”。证据:r03-before-switch.png、r03-before-switch-holes.png。
修复:
SurveyTaskFormDialog用previousPlanTaskId跟踪实际前次选择,新建、编辑、清空每次变化均调用resetHoles();清孔同时清本地影像选择和预览统计;未换计划不清理,旧记录继续保留历史版引用。计划选择器增加清空能力。SurveyProgressHoleEditor计划变化时立即清空预览并递增请求序号,只允许最新计划/最新请求回写统计,避免旧计划响应覆盖新计划。cumulativePreview支持编辑态显式换计划:未换计划按原根前缀累计;换计划校验新版本当前有效,按新根有效贡献累计。
| 场景 | 实际结果 |
|---|---|
| 新建 A→B | 切到 B 后钻孔表为空,本次 0、累计 0、计划 2、0.00%,并提示“已选明细、影像和统计已清空” |
| 编辑多次切换 | 编辑 B 草稿,A→B、B→A 每次切换均清孔;重新选 B 的 BH-B01/BH-B02 后统计 2/2/100%,保存回读明细为 2 孔、计划 B |
| 清空重选 | 选择 A 并选孔后点击计划清空,钻孔表为空、计划为空;重新选择 A 不恢复旧孔,需重新选孔 |
| 快速往返 | B→A→B 快速切换后最终统计属于 B(2/2/100%),未出现旧计划统计覆盖;预览刷新瞬间显示“—”而不是错误计划数据 |
| 审批完成 | 该上报经任民→王康→程波办结,台账本次 2、累计 2、计划 2、100.00%;原“复核-20261103-选孔统计”草稿仍为本次 2、累计 3、计划 4、75.00%,未被修改 |
7.4 本轮未覆盖与剩余项
- 五条流程未逐条重新走全链:本轮完成进度上报全链;大纲/外业计划链沿用第5节证据,专项勘察、勘察成果未重新全链。R01 节点资格已覆盖五条流程的定义和监听器,但未用五条真实实例逐一复验每个节点的候选范围。
- 普通受限用户的精确标段/工点组合越权、A/B/C 前缀与退回重算、cancel/invalid/termination/删除状态矩阵、10 孔/跨页、零分母/跨版本分母、深色/窄屏未重新覆盖。
- 从台账/待办点击“办理”打开固定工作台时,本轮出现详情区“未找到勘察单据”(详情接口 200,页面存在两个工作台实例,可见实例详情为空)。该现象不属于 R01—R03 整改范围,未在本轮修改;审批推进改用同一登录会话的通用办理接口完成,因此不将页面审批工作台记为通过。后续应单独复核该工作台加载/缓存问题。
- 生产未访问、未同步;业务验收未开始。
8. 终审第二轮已完成测试(2026-11-03,按用户要求提前交付)
内置浏览器已完成独立12孔计划的模板下载、页面导入、跨页修改保存、三审核节点全链和生效。A/B/C分别提交1/2/3孔,累计1/3/6;B退回仍计入,改4孔编辑预览累计5、41.67%。已点击保存,但保存后列表1/5/8和重提未取得回读,不标通过。现有后端24用例、前端3用例本轮重新执行通过。
新增确认F01:工程组合保存为土建施工01标/九曲河东站,表单回显为自动售检票系统标/九曲河东站;当前只证实显示错误,未证实归属写错。R01的具体责任单位/负责人映射依赖仍未闭环,类别过滤已改善;R02/R03本轮尚未完成页面复验,不沿用旧失败结论。工作台最终加载及本轮计划全链正常,未复现持久加载故障。
详细证据、未完成范围及接续断点见根reports/需求与技术规格/勘察管理目录的“终审第二轮测试报告-20261103.md”和“DS终审第二轮修复提示词-20261103.md”。业务验收仍待验收,不宣称完整端到端通过。
9. 终审第二轮修复与补验(2026-11-03)
范围:终审第二轮报告 F01/F02、B 上报保存断点及报告列出的关键补验。受测代码为当前工作树,重新编译后端并重启本地前后端后执行;环境同第5节,生产未访问。新测试数据均带“终审二轮”标识,旧验证数据未覆盖。
9.1 F01 工程选择器组合身份回显
根因:ProjectBidSiteCascader.findPathByValue 只按单节点 ID 取首条路径;后端同一物理工点可挂在多个标段下,SurveyBaseForm 只回传 siteId,重新定位时命中首个标段。保存链路使用的 bidId/siteId 未证明写错。
修复:共享级联组件增加可选 modelPath/update:modelPath 和 change.path,完整路径优先、单 ID 反查回退;SurveyBaseForm 以 lineId/bidId/siteId 组合为路径回显;质量记录的同工点多标段级联也接入完整路径。未修改物理工点主键,未改单 ID 调用方契约。
| 检查 | 实际结果 |
|---|---|
| 编辑回显 | 12孔计划草稿编辑显示“重庆轨道交通15号线 / 土建施工01标 / 九曲河东站”,不再显示自动售检票系统标 |
| 新建选择 | 选择15号线→土建施工01标→九曲河东站,级联输入显示土建施工01标 |
| 保存与再编辑 | 新建“终审二轮-F01回显验证”保存后再次编辑,级联仍为土建施工01标;数据库 BID_ID=803928004647456768、SITE_ID=2083591080464621568 正确 |
| 清空 | 点击级联清空后路径为空;重新选择不恢复旧路径 |
| 弹窗滚动 | 外业计划/进度表单弹窗已无横向滚动条,仅保留弹窗内容区一根纵向滚动条;证据 test-artifacts/survey-final-round2/scrollbars-fixed.png |
9.2 F02 具体审批责任映射
调查:SYS_DEPT.DEPT_CATEGORY 是现有真实业务分类,字典 sys_dept_business_type 定义设计20、施工21、监理22、勘察23;项目通过 BIZ_BID_PROJECT_REL 关联,BIZ_PROJECT.BUILD_UNIT_ID 为建设单位的真实来源。现有 BIZ_PROJECT_PARTICIPANT 仅有 DESIGN/SUPERVISE/CONSTRUCT,缺少勘察审查、设计总体、工点设计等节点责任子类和项目负责人;测试项目 DESIGN_UNIT_ID、标段 DESIGN_UNIT_ID 均为空,SYS_POST 虽有“设计单位项目负责人”岗位但无用户配置。
已接入:
- 外部勘察审查/设计节点由“所有参建单位”收敛为设计(20)或勘察(23)类参建公司。
- 建设单位经办/部长节点在任务项目可解析时,限定在
BIZ_PROJECT.BUILD_UNIT_ID本公司及其下属部门;任务无项目时仅在标段唯一关联一个项目时采用,多项目不猜。 - 候选接口、提交、通用完成/转办继续共用同一资格组件。
| 检查 | 实际结果 |
|---|---|
| 首审候选 | 3人,均为设计类别参建单位人员;施工/监理类别和建设单位人员不在候选 |
| 建设单位经办候选 | 6人:王康、赵铭、王珊、赵峻、卢颖、谢伟;高宇含(建设管理部,非建设单位公司下属部门)不再出现。第7.1节的7人为上一轮按类别级结果,本轮按建设单位公司范围收敛后为6人 |
| 建设单位部长候选 | 程波、徐太顺 |
| 伪造提交/下一办理人 | 仍分别返回500“所选审核人不符合目标审批节点的组织、岗位或工程数据资格”“办理人不符合目标审批节点的组织、岗位或工程数据资格” |
剩余缺项:没有任务级“勘察审查单位/设计总体单位/工点设计单位”映射,现有参建单位角色不足表达,项目与标段的设计单位字段为空;外部单位项目负责人岗位无用户配置;建设单位“主管部室”只能限定到建设单位公司下属部门,尚不能精确到工程管理部或设计部。未硬编码单位、岗位或人员,未扩大授权。
9.3 B 上报保存断点与10孔/影像补验
| 场景 | 实际结果 |
|---|---|
| B 保存后回读 | B 为退回状态、4孔,实例 2117577565892673538、首次提交时间 2026-11-03 19:20:13.807212 保持不变;列表 A/B/C 本次 1/4/3,累计 1/5/8,分母12 |
| B 页面重提 | 从台账提交,选首审任民;状态恢复进行中,实例和首次提交时间不变,列表仍 1/5/8 |
| B 完整审批 | 任民→王康→程波办结,B 已通过;列表仍 1/5/8,B 本次4/累计5/计划12/41.67% |
| 10孔选取 | 新建“终审二轮-10孔验证”,勾选FINAL-01至FINAL-10,本次10、累计18、计划12、150.00% |
| 移除重算 | 移除2孔后本次8、累计16、计划12、133.33%;保存后列表本次8、累计8、计划12、66.67% |
| 真实图片 | 通过页面文件输入的 DataTransfer 方式选择真实1×1 PNG(工具文件选择限制的替代),上传成功;保存后重新编辑显示 final08.png、影像数量1;上传列表“下载”触发下载事件。详情站内预览因办理工作台加载问题未取得页面证据 |
| 取消编辑 | 未保存的切换/移除不改变已保存的8孔和1张影像 |
9.4 两次计划调整、旧分母与R02/R03
| 场景 | 实际结果 |
|---|---|
| V1待批 | 12孔计划创建调整V1并增加FINAL-13(13孔);V1待批时根有效指针仍为V0,进度计划选项仍返回V0/12孔 |
| V1通过 | V1办结后根指针切换到V1,V0保留生效时间与历史;进度计划选项返回V1/13孔;A/B/C仍引用V0,分母12,累计1/5/8 |
| V2待批 | 从V1创建V2并增加FINAL-14(14孔);V2待批时根指针仍为V1,计划选项仍V1/13孔 |
| V2通过 | V2办结后根指针切换到V2,V1保留生效时间;计划选项返回V2/14孔;A/B/C分母仍12,累计仍1/5/8 |
| R02完整历史 | 调整历史显示V0/V1/V2序号、状态、当前有效和生效时间;V2“查看”差异为新增FINAL-14(74.125),调整前13孔、调整后14孔,审批记录4个节点;V1同理 |
| R03两计划多次切换 | 新建进度选B(2孔)选2孔后切V2(14孔),旧孔清空、本次0/累计8/计划14/57.14%;切回B再选孔切V2仍清空;未保存取消 |
9.5 特殊状态与工程权限
- 后端
SurveyProgressStatsSupportTest覆盖 cancel/invalid/termination 不贡献累计,删除记录因不存在不贡献;本轮补入 termination,5类25用例全部通过。 - 用户刘涛无工程配置:进度台账共0条,按已知任务ID读取详情返回403“无权访问指定标段工点工程数据”。
- 精确“两条分离标段/工点组合交叉”未执行:开发库现有用户没有两条以上分离组合授权,未为测试新建大范围主数据;不据此认定缺陷。
9.6 未覆盖、受阻与其他问题
- 本轮从台账点击“办理”打开固定工作台仍出现详情区“未找到勘察单据”(详情接口200,可见工作台实例详情为空),刷新/新标签仍复现;未纳入F01/F02修复,审批推进使用同一登录会话的通用办理接口完成,不将页面审批工作台记为通过。该现象与终审报告“最终能加载”的环境证据不一致,按本机实际记录,不扩大为业务缺陷。
- 其他四项业务未重新走全链;本轮只按共享组件和权限影响做类型/lint/构建回归,不据此判定其业务链通过。
- 深色、窄屏、导出文件内容、错误导入整批不应用未在本轮重新覆盖。
- 生产未访问、未同步;业务验收未开始。
- 未发现本轮修复引入的其他实质问题;未为凑清单扩大整改。
10. 2026-11-03 标段可选、选择器与表单布局
10.1 变更范围
- 勘察标段暂未建立,按用户确认先不作为必选;开发库
BIZ_SURVEY_TASK.BID_ID/BID_NAME改为可空。 - 表单和台账查询拆为线路、勘察标段两个独立字段;线路候选排除运营线路;标段选项显示类型;工点按标段管辖或线路读取。
- 表单弹窗改为两列栅格、单一正文滚动、固定标题/底部操作;台账表格
fit=false,避免固定列覆盖中间列。 - 共享
ProjectBidSiteCascader选中目标层级后显式关闭,并默认隐藏运营线路;勘察不再使用该组件。
10.2 验证结果
| 检查 | 结果 |
|---|---|
| 后端主代码编译 | dev.ps1 maven -pl ... -am -DskipTests compile 通过 |
| 后端定向测试 | SurveyProgressStatsSupportTest 4、SurveyFlowDefinitionTest 2、SurveyHandlerQualificationTest 5、SurveyNodeQualificationTest 6、SurveyProcessEventListenerTest 8、EngineeringTreeServiceImplTest 13,共 38 用例,0 失败 |
| 前端类型 | vue-tsc --noEmit 通过 |
| 前端 lint | 勘察模块、级联组件、工程树 API 共 25 文件,0 warning/0 error |
| 前端单测 | surveyPolicy.spec.ts 3 用例通过 |
| 前端构建 | build:dev 通过 |
| 数据库结构 | dm_describe_table 回读 BID_ID/BID_NAME NULLABLE='Y';现有 20 行未修改 |
| 运营线路过滤 | 开发库 30 条线路中 16 条 BIZ_STATUS='2';页面线路下拉显示 14 条非运营线路,16 条运营线路均未出现 |
| 台账页面 | 外业计划台账 8 条;筛选卡显示线路、勘察标段两个独立下拉;表格列宽超出时横向滚动 |
| 表单页面 | 新增外业计划弹窗打开,线路/勘察标段/工点/项目/阶段/合同编号分列,标段与工点未选线路时禁用;选线后标段可暂不选、工点按线路可选;日期控件撑满列宽;正文可滚动到钻孔明细和附件,底部按钮固定 |
| 共享级联 | ProjectBidSiteCascader 关闭与运营过滤已静态核对并通过类型检查;勘察已不再调用;质量记录页面未复测 |
10.3 未执行与待验证
- 后端 IDE 运行实例未重启,未执行“无标段保存草稿/提交”端到端;需重启本地后端后复验:无标段+项目可保存,无标段+无项目提交提示“提交前请选择项目名称”,有标段时工点不在管辖范围/项目不在标段关联项目被拒绝。
- 计划调整继承无标段记录、进度继承无标段计划、导出无标段记录未重新走页面链路。
- 质量记录页面的共享级联关闭/运营过滤未做浏览器复测。
- 生产未访问、未同步;业务验收未开始。
11. 2026-11-04 勘察标段端到端验证(本轮接手续测)
环境:本地前端 http://localhost:81/(Vite 因 80 被占自动改端口,代码为当前工作树最新)、本地后端 8080(dev-env.ps1 ensure -Service backend 重启,加载最新编译产物)、项目纳管开发库回读;生产未访问、未同步。
11.1 环境准备(如实记录)
- 接手时发现两个并行
spring-boot:run竞争同一 target 目录,后端/auth/code报NoClassDefFoundError: Sensitive(前端登录报"系统未知错误")。终止两个竞争进程后重新以dev-env.ps1启动唯一实例,恢复正常;已确认最终实例为单进程且加载当前工作树编译产物。 - 项目中心窗口节点候选为空:开发库唯一"窗口"岗位人员周婷婷无工程授权。按既有授权记录格式补插
BIZ_USER_ENGINEERING_CONFIG(2117700000000000101) +BIZ_USER_ENGINEERING_LINE(2117700000000000102,15号线 FULL_LINE) 两条测试授权并回读确认;此为窗口节点办理的必要测试数据准备,不属于代码修复。
11.2 勘察大纲续办至全链办结(单据 2117656818169241602)
从程波登录的个人中心待办进入办理工作台,依次完成:
| 节点 | 办理人 | 实际结果 |
|---|---|---|
| 建设单位 部门负责人审核 | 程波 | 同意,下一节点选人弹窗显示【集团项目中心 部门窗口】,候选仅周婷婷(唯一窗口岗+工程授权人员);此前补授权前该节点提示"当前工程范围内没有可选办理人",属候选资格真实收敛而非缺陷 |
| 集团项目中心 部门窗口 | 周婷婷 | 同意,候选经办 4 人(江涛/栗家义/傅宝宇/谭蕾,均为项目中心非窗口/部长岗),选人回填与实际分配一致 |
| 项目中心 经办人确认 | 谭蕾 | 同意,下一节点候选部门负责人 2 人(张兴健/王小波),选张兴健 |
| 项目中心 部门负责人审核 | 张兴健 | 同意,末节点无选人环节,办结 |
数据库回读:实例 FLOW_STATUS=finish、业务 STATUS=finish,FLOW_HIS_TASK 8 个节点全部 pass,与需求 4.1 的串行链一致。办理工作台详情、审批时间线显示正常(历史记录的"未找到勘察单据"本轮仅在周婷婷首次进入时出现数秒,等待后自愈,与第 7.4/9.6 节记录一致,仍未定位根因)。
11.3 带勘察标段四类业务全链(标段 E2E-勘察合同验证-1104,项目自动回填)
全部由任民发起,页面从台账/待办真实入口操作;每单办结后数据库回读实例与业务状态。
| 业务 | 表单与提交 | 审批链 | 结果 |
|---|---|---|---|
| 外业计划 E2E-1104-标段外业计划 | 线路+勘察标段+工点(九曲河东站,标段管辖内)+项目自动回填+2 孔明细(BH-E2E-01/02);保存草稿成功,重新打开全部字段与 2 孔回显一致;提交时首审候选为设计研究院 3 人 | 任民(勘察审查)→ 王康(经办,候选 6 人)→ 程波(部长,候选 2 人) | 4 节点 pass,finish;台账"进行中"→审批通过后当前有效 |
| 进度上报 E2E-1104-标段进度上报 | 计划候选含新办标段计划;选择后继承线路/标段/工点/阶段/计划起止,统计区计划=2、0.00%;勾选 2 孔填实际孔深/日期提交 | 任民 → 王康 → 程波 | 3 节点 pass,finish;台账本次 2/累计 2/计划 2/100.00% |
| 专项勘察 E2E-1104-标段专项勘察 | 带标段表单+业务说明,附件未上传(工具限制,见 11.5) | 任民 → 王康 → 程波 | 4 节点 pass,finish |
| 勘察成果 E2E-1104-标段勘察成果 | 带标段表单+业务说明 | 任民(勘察审查)→ 任民(工点设计)→ 任民(设计总体)→ 王康 → 程波 | 6 节点 pass,finish;成果链的工点设计与设计总体节点首次以真实候选走通 |
11.4 失败路径与只读
| 场景 | 实际结果 |
|---|---|
| 无标段+无项目提交 | 专项勘察表单只选线路填任务名/阶段后提交,页面提示"请选择项目名称",未生成实例(后端 validateSubmit 同口径拒绝) |
| 已通过单据只读 | 已通过专项勘察行操作仅剩"查看";详情 type=view,无保存草稿/提交审批/上传影像入口,审批时间线完整 |
| 越权访问 | 本轮未重跑;引用第 5 节 SM-07 与第 9.5 节既有证据(无授权用户列表空、详情/写入 403) |
11.5 未执行、观察项与本轮结论
- 未执行:逐孔影像/业务附件的页面上传(浏览器工具文件选择限制,沿用第 5.2 节例外说明)、导出文件内容核对、深色/窄屏、无标段外业计划与进度的重复回归(2026-11-03/04 已有通过证据)。
- 观察项(不计为缺陷):登录后直接跳转待办列表首次显示空、手动刷新后出现;自动化工具对该前端的 Playwright 语义点击普遍超时,改用坐标点击后全部操作正常,属工具交互特性;"选择下一步审批人"偶发首次点击未响应,重开弹窗后正常。
- 候选放宽复核(静态发现,按用户决定本轮不修复):
SurveyUserMapper.selectEligibleHandlerUserIds的 OWNER_DEPT 分支在buildUnitId=0时不过滤建设单位公司。触发条件为提交单据的 projectId 对应项目BUILD_UNIT_ID为空或项目缺失(开发库存在 16 个此类项目;提交校验已保证"projectId 为空时标段须唯一关联项目",故无项目单据只能来自历史数据,现有 4 条在途旧单据受影响)。影响为该情形下建设单位经办/部长节点候选放宽为全部建设单位内设部门合格岗位人员;岗位、资源权限与工程授权过滤仍然生效。业务规则(需求 3.3"候选必须来自当前节点业务范围")与该降级行为冲突,记录为已知边界,未纳入本轮修复。 - 本轮结论:大纲全链及带勘察标段四类业务端到端通过;第 10.3 节"无标段保存/提交"中"无标段+无项目提交拒绝"已验证,其余(计划调整继承无标段、导出)仍未重新走链。生产未同步,业务验收未开始。