主题
工程手续办理 · 测试与验收文档
文档版本:1.00 | 最近核对日期:2026-10-09
进展说明:土建年度计划及五阶段手续正式链路已完成真实闭环;权限、空条件预路由、附件和页面回归已核验;2026-09-18 补充运营显示口径页面回归记录(见 §8);2026-10-09 补充工作台轻量体验重构与办理清单全景面板交付记录(见 §9)。
文档控制与范围
| 项目 | 内容 |
|---|---|
| 模块名称 | 工程手续办理 |
| 测试时间 | 2026-09-11 至 2026-09-14;2026-09-18(运营显示口径页面回归,见 §8) |
| 测试环境 | 本地开发环境;内置浏览器;前后端通过项目统一工具运行;开发 DM8 通过 dcp-dm8-dev MCP 访问;Warm-Flow 运行态土建 V3、机电 V2 |
| 受测代码状态 | 上一轮前后端修复、回归用例和测试证据已提交为 21cb4a7;本轮只读附件展示代码提交为 c9414c4,审批时间线结构/视觉修正依次提交为 5517664、f33d75f、a4d5786;本批次新增标段专业大类同步修复及回归用例,当前工作区已通过验证;全局查询表单样式契约断言已按现行 6em 双轨栅格规范修正并通过全量回归 |
| 账号策略 | 1 个管理员账号 + 4 个普通测试账号轮换验证;本文不记录密码、令牌或私有配置 |
| 数据策略 | 按用户要求保留全部测试计划、流程历史、进度、结果、附件引用和权限追加记录;本轮未执行删除 |
| 证据资料 | 端到端测试执行记录与复测结论见本文档;测试计划、流程历史、进度、结果和附件保留在开发库;原仓库过程证据文件已清理 |
| 总体结论 | 主要办理链路、权限补齐后的多账号访问、条件子手续、节点校验、附件上传、待办路由、只读附件展示和审批时间线均已通过;本批次新增土建年度计划 EP-2026-9772154880 已完成规划方案审查、初步设计、规划许可、施工图审查、施工许可五阶段,最终业务与流程状态为 finish、活动待办为 0;退回重办和新建可选单位工程不足的页面场景不纳入已通过结论 |
1. 需求追踪矩阵
| 需求/规则 | 测试与证据 | 当前结论 |
|---|---|---|
| R-EP-004/R-EP-005/R-EP-016/R-EP-019 | 土建 1 个流程实例覆盖 3 个单位工程,机电 1 个流程实例覆盖 2 个单位工程;工作区按类型生成年度计划只读 Tab 和对应手续 Tab;各节点均按单位工程逐项办理 | 真实页面通过 |
| R-EP-007/R-EP-027 | 同一单位工程多次填报进度,结果和附件分别暂存;进度表格只读展示,节点未推进 | 真实页面通过 |
| R-EP-009/R-EP-010/R-EP-029 | 已验证产权单位意见征求/规划调整子手续进入、完成后回流父节点;土建 4 → 4.1 → 4.1.1 嵌套结构已由流程资源和代码校验覆盖 | 主要分支通过;退回重办待测 |
| R-EP-011/R-EP-024/R-EP-039 | 未填全日期或成果附件时同意被阻止;补齐后可推进;最新内置浏览器复测中附件上传返回 200 并正常回显 | 通过 |
| R-EP-017/R-EP-041 | 复现“有待办但无单位工程范围”时详情被拦截;管理员补授 5 个单位工程给 4 个测试账号后,办理账号可编辑、查看账号只读 | 通过,结论为运行前权限配置约束 |
| R-EP-036/R-EP-038 | 服务端前置校验和前端审批对话框错误区均已验证;失败时不推进流程、不产生未处理异常 | 通过 |
| R-EP-037 | 后端测试覆盖草稿首节点办理人 ID/名称快照;提交时仍走最终办理人校验 | 代码回归通过;本批次新增年度计划草稿已完成页面保存、列表回读、详情回读和修改表单回填 |
| R-EP-040 | 仪表盘待办入口最终进入 /task/taskWaiting,页面正常加载 | 通过 |
| R-EP-042/R-EP-043 | 本轮新增结果附件直显文件、进度附件数量点击查看只读文件列表的展示契约 | 代码、组件和内置浏览器页面回归通过 |
| UI-EP-001 | 审批时间线的节点名称、审批状态、协作标签、办理人、时间信息和审批意见展示契约 | FlowTimeline 组件回归、类型/静态检查和内置浏览器页面核对通过 |
| R-EP-032/R-EP-033/R-EP-034/R-EP-035 | 年度、线路、标段、单位工程、施工单位和审核状态筛选、累计阶段范围、中文施工单位快照和总台账相关代码/结构测试通过 | 代码/结构通过,非本轮主浏览器验证范围 |
| R-EP-015/R-EP-026 | 退回目标阶段、后续阶段新轮次和旧结果只读保留的规则已在代码和文档中明确 | 浏览器退回重办待补测 |
1.1 本轮新增的只读附件展示验收范围
本轮先补充业务和技术文档,再实现代码并执行以下回归用例:
| 用例 | 前置数据 | 操作 | 预期结果 |
|---|---|---|---|
| ATT-READ-001 | 前序或已提交节点存在成果附件 | 以只读账号打开结果/证件资料区域 | 直接显示文件类型图标、文件名和下载动作;点击文件名可打开既有预览;不显示上传、删除和编辑控件;无附件显示“—” |
| ATT-READ-002 | 进度记录分别存在 0 个、1 个和多个附件 | 查看进度表附件列 | 0 个显示“—”且不可点击;有附件显示数量控件 |
| ATT-READ-003 | 进度记录存在附件 | 点击附件数量并关闭查看框 | 打开只读附件列表,沿用只读 FileUpload 的文件名、预览和下载形式;查看/关闭不修改 attachmentRefs,不新增或删除文件 |
| ATT-READ-004 | 当前账号仅有查看权限 | 尝试在结果直显区和进度附件查看框操作 | 两处均无上传、删除、编辑入口;后端数据和权限不因查看动作改变 |
实际页面回归记录:
- 在土建计划
EP-2026-4256374784的规划方案审查意见Tab 中切换到单位工程“九曲河东站-重光站”,子手续2.1 产权单位意见征求或规划调整的进度表显示“1 个”;点击数量后打开“进度附件”查看框,显示e2e-procedure-subflow.txt,关闭后回到原工作区。 - 同一只读工作区的结果/证件资料区域直接显示
e2e-procedure-planning.txt和e2e-procedure-permit.txt等成果文件,文件名可打开既有预览抽屉,页面同时提供“下载”入口;只读区域未出现上传、删除或编辑控件。 - 无附件的进度记录显示“—”而不是可点击控件;本轮浏览器操作仅做切换、查看、预览和关闭,未删除或修改测试数据。
1.2 本轮新增的审批时间线展示验收范围
本轮根据用户最终确认的全局布局收口时间线:第一行节点名称后紧跟审批状态;会签、或签、票签固定在卡片右上角;第二行显示当前办理人并收紧上下间距;第三行显示时间信息;名称和办理人显示不下时提供完整悬停提示,审批意见完整换行。
| 用例 | 前置数据 | 操作 | 预期结果 |
|---|---|---|---|
| TIMELINE-001 | 已保留的土建多单位工程流程存在多个已办理节点 | 打开流程工作区并查看右侧审批时间线 | 每张卡片第一行按“节点名称 + 审批状态”连续展示,状态不被挤到下一行;节点名称过长时悬停可查看完整值 |
| TIMELINE-002 | 时间线节点包含会签/或签/票签协作信息 | 查看节点卡片右上角 | 协作标签固定在右上角,尺寸、圆角、边框和排版与审批状态一致,但颜色使用独立协作色板,不复用通过/待审核等审批状态色 |
| TIMELINE-003 | 节点存在当前办理人,部分办理人名称较长或多人 | 查看办理人行并悬停名称 | 办理人单独占第二行,行上方约 2px、与时间区上方约 4px,上下空白紧凑;名称显示不下时悬停可查看完整值 |
| TIMELINE-004 | 节点存在较长审批意见 | 查看审批意见区域 | 审批意见按内容自然换行,不使用单行省略、固定高度截断或异常加粗的黑色强调 |
实际页面回归记录:在内置浏览器打开保留的土建计划 E2E-手续办理-土建-多单位工程-20260911 的流程工作区,核对时间线第一行节点名称与审批状态相邻、协作标签右上角位置、办理人行紧凑间距和长意见换行;同时通过 FlowTimeline.spec.ts 的布局/样式契约、类型检查和静态检查复核。页面操作仅查看,不修改或删除测试数据。
2. 测试数据与权限准备
2.1 保留的真实测试计划
| 类型 | 计划编号 | 计划名称 | 单位工程 | 当前状态 |
|---|---|---|---|---|
| 土建 | EP-2026-4256374784 | E2E-手续办理-土建-多单位工程-20260911 | 九曲河东站、九曲河东站-重光站、重光站 | 已完成节点 4、5、6,已提交到 7 接收、备案并归档,待管理员最后归档 |
| 机电 | EP-2026-7400663040 | E2E-手续办理-机电-多单位工程-20260911 | T3航站楼站~龙骏大道站区间(一区段)、龙骏大道站 | 已完成至 7 接收、备案并归档,流程已闭环 |
| 土建 | EP-2026-9772154880 | E2E年度计划草稿-20260913 | 轨道工程 | 本批次正式提交并完成规划方案审查、初步设计批复、建设工程规划许可证、施工图审查合格书、施工许可证;业务 approvalStatus=finish,流程结束,活动待办 0 |
两份计划均保留在开发环境中。计划内的阶段计划日期、进度记录、结果资料、条件决策、流程办理历史和附件引用均未删除。
2.2 单位工程范围授权
初测确认:流程任务分配和工程树单位工程数据范围是两套独立校验。管理员通过“人员快速授权 → 工点范围(单位工程)”,把上述 5 个单位工程追加给 4 个普通测试账号,页面提示“授权已增加”(该入口 2026-09-17 起改为「数据权限工作台 → 授权办理」,勾选单位工程即单点授权,记录的当时页面口径不代表当前入口)。补授权后验证结果如下:
| 账号类型 | 验证结果 |
|---|---|
| 当前办理账号 | 可从待办打开对应计划、切换全部授权单位工程、编辑当前节点 |
| 已完成节点的普通账号 | 可查看计划和办理历史,页面为只读 |
| 无当前待办但有范围账号 | 可查看授权范围内计划,不产生可办理任务 |
| 管理员账号 | 可查看全部测试计划并承接最终归档节点 |
3. 真实角色端到端用例
| 用例 | 验证内容 | 实际结果 | 证据/结论 |
|---|---|---|---|
| E2E-001 | 多账号待办、单位工程权限和只读/可编辑差异 | 授权前可复现“待办存在但详情无权”;补授 5 个单位工程后,办理账号可正常打开并编辑,普通查看账号只读 | 页面操作、授权记录;原问题关闭为环境权限配置问题 |
| E2E-002 | 多单位工程结果完整性校验 | 故意缺少两个单位工程的实际完成日期和成果附件,点击“同意”后对话框保持打开,红色提示点名缺失单位工程;补齐后校验放行 | 页面、流程状态;通过 |
| E2E-003 | 年度计划草稿办理人快照和提交窗口 | 后端回归已断言草稿保存/更新同步办理人 ID/名称;浏览器尝试新建 2027 年草稿时工程树全部不可选,无法产生新的页面二次提交样本 | 代码测试通过;浏览器场景待补测,不判为失败 |
| E2E-004 | 附件上传、失败重试和多节点重复上传 | 历史失败表现为浏览器状态码 0,后端同期无上传请求;修复后土建节点 4 为 3 个单位工程分别上传附件,后端 /resource/oss/upload 均返回 200,页面暂存后仍可回显;节点 5、6 再次上传同类附件成功 | 浏览器、后端日志、附件记录;原上传阻断关闭 |
| E2E-005 | 待办入口回退路由 | 从管理员首页待办入口进入实际待办页,地址为 /task/taskWaiting,无 404 | 页面路由;通过 |
| E2E-006 | 附件成功后列表稳定展示 | 公共 FileUpload 已移除进入动画,成功项沿用上传控件 uid,回显时复用已有键值;组件回归覆盖无动画和稳定键值 | 组件测试 2/2;通过 |
3.1 土建跨账号节点流转
土建计划使用 3 个办理账号和 1 个管理员账号完成以下链路:
- 节点
4 建设工程规划许可证:办理账号 A 对 3 个单位工程分别填写实际完成日期、办理说明和成果附件,逐项暂存后提交给办理账号 B; - 节点
5 施工图审查合格书:办理账号 B 对同一 3 个单位工程重复填报并暂存,完成后提交给办理账号 C; - 节点
6 施工许可证:办理账号 C 对 3 个单位工程完成日期、说明和附件填报,提交给管理员; - 办理账号 C 待办归零,后端流转记录显示当前最终节点为
7 接收、备案并归档,管理员最后一步尚未在本批次继续操作。
该链路覆盖 1 个任务批次、3 个单位工程、多个账号、每节点逐单位工程暂存、多次附件上传和跨账号节点流转;数据全部保留。
3.2 机电闭环
机电计划覆盖 2 个单位工程:办理账号 A 完成 5 施工图审查合格书,办理账号 B 完成 6 施工许可证,管理员完成 7 接收、备案并归档。两个单位工程均能切换、填报、暂存和回显附件,计划列表最终显示已完成。该闭环使用的转办历史和流程历史均保留。
3.3 条件子手续
已通过真实页面覆盖“规划方案审查意见 → 产权单位意见征求或规划调整 → 子手续完成 → 回流父节点”的分支,并验证父节点在子手续未完成时不能直接完成。土建 4 → 4.1 → 4.1.1 的嵌套条件归属、分支变量重算和父子回流线已通过流程资源静态核验及服务端测试。退回后的再次办理尚未在浏览器重新走完整轮次。
4. 自动化、结构与环境验证
| 验证项 | 命令/入口 | 执行结果 |
|---|---|---|
| 工具链 | dev.ps1 doctor | 工具链检查全部通过 |
| 前端定向回归 | pnpm --dir .\digital-construction-ui exec vitest run src/components/Process/FlowTimeline.spec.ts src/components/Process/FlowActionPanel.spec.ts src/components/FileUpload/index.spec.ts src/views/business/engineeringProcedures/flowForm/index.spec.ts src/views/index.spec.ts | 5 个测试文件、11 个测试全部通过 |
| 前端类型检查 | pnpm --dir .\digital-construction-ui exec vue-tsc --noEmit | 通过 |
| 前端改动文件检查 | pnpm --dir .\digital-construction-ui exec oxlint src/components/Process/FlowActionPanel.vue src/components/FileUpload/index.vue src/components/FileUpload/index.spec.ts;另核对 views/index.vue | 通过 |
| 审批时间线静态检查 | oxlint 检查 src/components/Process/FlowTimeline.vue、src/components/Process/FlowTimeline.spec.ts | 通过 |
| 后端目标测试 | maven '-Dmaven.test.skip=false' '-Dtest=EngineeringProcedureServiceImplTest' '-Dsurefire.failIfNoSpecifiedTests=false' -pl digital-construction-modules/digital-construction-business -am test | 12 个测试通过,0 失败,0 错误 |
| 后端业务模块回归 | .agents/tools/dev.ps1 maven '-Dmaven.test.skip=false' '-pl' 'digital-construction-modules/digital-construction-business' '-am' 'test' | 2026-09-14;业务模块 94 个测试通过,工作流模块 12 个测试通过,0 失败,0 错误 |
| 工作流预路由定向回归 | .agents/tools/dev.ps1 maven '-Dmaven.test.skip=false' '-pl' 'digital-construction-modules/digital-construction-business' '-am' '-Dtest=EngineeringProcedureServiceImplTest' '-Dsurefire.failIfNoSpecifiedTests=false' test | 目标服务测试 12 项通过;CompletePrepareComponentTest 另有 2 项通过,覆盖空跳转条件兼容和动态办理人变量 |
| 流程/数据库结构 | 两套流程 JSON 静态核验;dcp-dm8-dev MCP 回读 | 土建 15 节点/17 连线、机电 6 节点/5 连线;7 张业务表结构和既有字段核对无新增变更 |
| 前端全量 Vitest | 前端全量测试 | 36/36 个测试文件通过,191/191 个测试通过;查询表单 68px/6em 断言已按当前共享 6em 双轨栅格实现和 UI 规范完成对齐;本批次新增标段类型同步用例 2 项 |
| 工作区差异 | git diff --check | 通过;仅有换行符提示,无空白错误 |
| 文档发布检查 | 文档站 docs:check、docs:build、docs:check:dist | 2026-09-14 最终核验:docs:check 检查 91 个文本文件、1269 个本地链接,0 个问题;VitePress 构建成功(仅有非阻断的大 chunk 提示);docs:check:dist 检查 299 个文本文件、0 个本地链接,0 个问题 |
5. 缺陷、遗留和当前数据状态
| 编号 | 问题 | 当前状态 | 说明 |
|---|---|---|---|
| E2E-001 | 流程办理人缺少单位工程范围 | 已关闭(环境配置) | 任务分配不自动授予 SITE 范围;补授权后办理和只读验证通过 |
| E2E-002 | 结果完整性失败时页面无明显错误反馈 | 已关闭 | 审批对话框内显示缺失单位工程和缺失项,流程不推进 |
| E2E-003 | 草稿办理人提交窗口需要重新选择 | 代码修复通过;年度计划草稿页面保存和回读通过 | 本批次使用已配置专业大类的测试标段创建 E2E年度计划草稿-20260913,列表、工作台详情和修改表单均可回读;首节点办理人仍按提交窗口规则保留为空 |
| E2E-004 | 附件上传状态码 0、失败批次状态不收敛 | 已关闭 | 修复后使用原生 XHR multipart,最新土建多节点请求返回 200 并回显;历史失败证据保留 |
| E2E-005 | 待办路由回退到旧地址 | 已关闭 | 回退地址修正为 /task/taskWaiting |
| E2E-006 | 附件成功回显时列表短暂抖动 | 已关闭 | 移除进入动画并稳定复用文件项键值,组件测试通过 |
| ATT-READ-001~004 | 只读结果附件直显文件、进度附件数量点击查看 | 已关闭 | 已复用禁用态 FileUpload 和现有预览抽屉;定向测试、类型/静态检查和内置浏览器页面回归通过,不新增附件字段或接口 |
| UI-EP-001 | 审批时间线节点/状态层级、协作标签位置、办理人间距和审批意见换行不协调 | 已关闭(用户确认) | 已按最终确认收口:节点名称后紧跟审批状态,协作标签固定右上角并使用独立色板,办理人行和时间区间距紧凑,长名称/长意见有完整展示策略;定向测试和内置浏览器复测通过 |
| OPEN-EP-001 | 退回重办及退回后再次填报/审批 | 遗留待补测 | 需要一条可安全退回的测试任务;不删除当前已保留计划,补测时继续追加数据 |
| OPEN-EP-002 | 土建最终管理员归档 | 当前待操作 | 土建已提交到 7 接收、备案并归档,等待管理员完成最后一步;机电已完成归档 |
| UI-EP-002 | 前端全量测试中的 68px/6em 查询表单样式契约断言与当前实现不一致 | 已关闭(测试契约) | 实际共享样式和 UI 规范均采用 6em 双轨栅格;已更新管理布局断言和 UI 文档一致性断言,前端全量 36/36 个测试文件、191/191 个测试通过 |
| E2E-007 | 标段编辑页的专业大类在顶层表单字段和 projectNodeInfo 中重复维护,保存时旧扩展字段会覆盖新选择,导致后端仍收到空 bidCategory,手续单位工程选择器报“基础数据异常” | 已关闭 | 抽取 syncBidFieldsToNodeInfo 在扁平化请求前同步专业大类/专业;新增 2 项单元回归,浏览器保存后提示“操作成功”、回读显示“土建”,年度计划选择器成功回填 1 个单位工程并保存草稿 |
| E2E-008 | 空变量办理阶段时,Warm-Flow 预路由早于业务全局监听器,因可选网关没有条件抛出“跳转条件不能为空”,合法手续节点被阻断 | 已关闭并核验 | CompletePrepareComponent 仅对 Warm-Flow 空条件异常延后处理,保留其他流程异常;真实计划五个阶段均用空变量办理完成,流程结束且活动待办为 0 |
6. 验收结论
- 主要端到端验证结论为“代表性主链路通过”:多账号、多单位工程、多次填报、条件子手续、附件、节点提交、待办入口和机电归档均有真实页面或后端证据;本批次新增土建计划
EP-2026-9772154880已从年度计划提交完成到五个手续阶段并完成流程归档节点,测试数据保留。 - 单位工程权限必须作为测试/运行前置配置,流程任务分配本身不会替代线路/单位工程范围授权;该结论已写入需求、概要设计、详细设计和操作手册。
- 前端和后端自动化验证均通过本轮改动相关范围;全局查询表单的旧
68px/6em样式契约断言已完成对齐,前端全量 36/36 个测试文件、191/191 个测试通过。 - 本轮新增的只读附件展示已完成“先文档、后实现”:结果附件在只读结果区直接显示文件并可预览/下载,进度附件显示数量,有附件时可点击打开只读文件列表;相关代码、组件测试、类型/静态检查和内置浏览器页面回归均已通过。
- 审批时间线最终视觉调整已完成“按确认口径收口并复测”:节点名称后紧跟审批状态,协作标签固定右上角并采用独立色板,当前办理人行上下间距紧凑,长名称支持悬停完整提示,审批意见可完整换行;组件、类型/静态检查和内置浏览器页面回归均已通过。
- 未覆盖结论包括退回重办完整浏览器链路、不同条件子手续组合、因 2027 年无可选单位工程导致的草稿二次提交页面样本和更多跨账号/并发分支;不能据此宣称整个模块所有分支均已验收。
- 本轮未删除任何测试计划、流程历史、进度、结果、附件或授权记录;文档和代码已提交,本次交付将随文档修订一并推送到 Gitee。
业务最终签署人和签署日期待补充。后续补测应在本报告中追加实际页面路径、角色、结果和证据,不覆盖本次历史结论。
7. 2026-09-13~2026-09-14 全模块 E2E 批次同步
年度计划下达页面已打开并核对已有土建/机电多单位工程计划;新建弹窗明确年度、计划名称、单位工程、阶段计划时间和首节点办理人规则,且提示同一计划内土建与机电不可混选。补齐测试标段“土建”专业大类后,单位工程选择器能够完成异步解析、显示“当前类型:土建”和已选单位工程;保存 E2E年度计划草稿-20260913 后列表、工作台详情和修改表单均可回读。随后使用测试人员完成该计划的正式提交及五个手续阶段的真实办理,管理员完成最终归档节点,所有测试数据保留。
| 验证项 | 结果 | 证据与边界 |
|---|---|---|
| 年度计划入口和表单 | 通过 | 实际页面可达;已有 2026 土建/机电计划可查询;新增表单边界可见 |
| 标段专业大类与单位工程选择 | 通过(已修复) | 测试标段原专业大类为空,编辑页选择“土建”后保存成功并回读;选择器异步解析后显示 1 个土建单位工程 |
| 年度计划草稿保存/回读 | 通过 | E2E年度计划草稿-20260913 生成 EP-2026-9772154880,列表显示土建、轨道工程、草稿;工作台显示流程版本和当前阶段,修改表单回填计划名、单位工程和情况说明 |
| 多单位工程工作台 | 通过 | 保留计划加载 3 个土建单位工程;当前施工许可证节点、结果附件和历史时间线均可回看,终态详情回读为 approvalStatus=finish、currentTaskId=null |
| 附件/只读状态 | 通过 | 结果附件名称、下载入口和只读标识可见;公共上传组件定向回归通过 |
| 自动化回归 | 通过 | 前端全量 36/36 个测试文件、191/191 项;新增标段类型同步 2 项;后端工程业务/流程相关测试无失败;类型、lint、build 通过 |
| 正式五阶段办理 | 通过 | EP-2026-9772154880 从规划方案审查、初步设计批复、建设工程规划许可证、施工图审查合格书到施工许可证逐阶段完成;五个结果均有实际完成日期和附件,流程实例结束、活动待办 0 |
| 空条件变量办理 | 通过(已修复) | 真实节点办理时前端未提供网关变量仍能推进;CompletePrepareComponent 对 Warm-Flow “跳转条件不能为空”做兼容延后,其他流程异常继续抛出;目标单测 2/2 通过 |
| 退回重办 | 待补测 | 需要可安全退回的测试任务;本批次不改变保留中的待办状态 |
本批次已完成一条土建代表性正式主链的逐节点审批和归档节点,并逐节点回写办理人、流程实例、结果附件和工程数据范围证据;退回重办、不同条件组合以及新建可选单位工程不足场景仍保持待补测,不据此宣称所有扩展分支均已验收。
8. 2026-09-18 运营显示口径页面回归记录
2026-09-18 口径调整:年度计划下达的单位工程选择器默认隐藏 biz_status='2'(运营)的单位工程并提供「显示运营」开关(默认关闭),打开后可正常选择与提交,服务端仍不按运营状态过滤或拒绝(见需求分析 v0.24 行)。本记录只覆盖该显示口径,不改写上述历史结论。
| 验证项 | 入口/命令 | 最近结果 | 证据与边界 |
|---|---|---|---|
| 单位工程选择器默认隐藏运营(显示层) | 超级管理员真实登录;年度计划下达 → 单位工程选择器 | 通过:「显示运营」开关位于树工具栏且默认关闭;打开后可显示运营单位工程 | 真实页面记录;当前数据下运营单位工程因缺少标段类型 bidCategory,本就被既有「土建/机电」分类规则过滤,与服务端不参与运营判定的口径一致 |
| 前端类型检查 | pnpm exec vue-tsc --noEmit | 通过(0 error) | 命令输出 |
| 前端全量测试 | pnpm exec vitest run | 212 项通过、1 项失败 | 失败项为 src/components/Process/FlowTimeline.spec.ts,属仓库存量问题,与本次显示层改动无关 |
| 文档检查 | .agents/tools/verify.ps1(Docs) | 0 issue | docs:check 输出 |
覆盖项:工程手续「单位工程」选择器的默认隐藏运营与「显示运营」切换;标段 bidCategory 类型校验、单位工程存在性校验和数据权限裁剪沿用既有服务端行为,未随本次显示层改动调整。
结论:验证通过(有限范围)——“默认隐藏运营、可切换显示、服务端不拒绝”的显示层口径已按上述命令和页面入口验证;未覆盖项不作已通过表述。
9. 2026-10-09 工作台体验优化与办理清单全景面板回归记录
2026-10-09 体验优化与交付:针对工程手续办理工作台复杂度过高、1920×911 视口存在水平滚动与布局紧凑度不足的问题完成体验级重构。引入横向步骤向导条(ProcedureStepWizard)、就绪体检诊断卡(ProcedureReadinessCard)与单选胶囊条件卡片;新增「办理清单」全景面板(五大责任主体要件协同与全景图示);彻底移除已废弃的“查看历史”及“轮次”弹窗代码。
| 验证项 | 入口/命令 | 最近结果 | 证据与边界 |
|---|---|---|---|
| 建设工程规划许可证五大主体清单 | 工作台右侧 Tab / 办理清单抽屉 | 通过:交开投、市规划和自然资源局、市民宗局、地铁集团、管线迁改主体等责任要件协同展示;支持全景大图滚轮缩放与平移 | 真实页面记录与用户交互确认 |
横向步骤向导条(ProcedureStepWizard) | 办理详情工作台顶部 | 通过:清晰展现“下达计划 → 方案审查 → 初步设计 → 规划许可 → 施工图审查 → 施工许可”6 大主手续;支持高亮、就绪统计徽标、待办悬停提示 | 真实页面记录 |
就绪体检诊断浮层(ProcedureReadinessCard) | 步骤向导条中各步骤诊断 Popover 悬停 | 通过:结构化清晰展示“前置手续”、“当前要件”、“协同条件”,实时诊断就绪缺项 | 真实页面记录 |
| 移除查看历史与轮次概念 | 工作台顶部操作栏与弹窗组件 | 通过:移除无用历史/轮次入口,简化工作台界面与心智模型 | 真实页面记录与代码走查 |
| 1920×911 视口自适应与防横向滚动 | 视口调整至 1920×911 | 通过:左右分栏自适应、步骤条内边距收敛、无多余水平滚动条 | 真实页面记录与用户交互确认 |
| 前端类型检查 | pnpm exec vue-tsc --noEmit | 通过(0 error) | 命令输出 |
覆盖项:工作台步骤向导、就绪诊断卡、条件卡片、办理清单全景抽屉、移除轮次、1920×911 视口优化。 未覆盖项:底层 Warm-Flow 审批逻辑未改动,不涉及数据结构及后端接口改动。 结论:验证通过。
10. 2026-10-09 工程树空态引导与退回重办闭环
针对用户未分配工程范围权限时工程树白屏/无引导,以及流程退回状态下操作列办理按钮隐藏的断路问题完成修复:
| 验证项 | 入口/命令 | 最近结果 | 证据与边界 |
|---|---|---|---|
| 工程树无权限/无数据引导卡片 | ProcedureUnitSelector.vue | 通过:在 tree-panel 增加 tree-empty-tip,未分配工程范围时提示“暂无可访问工程树,请联系管理员分配工程范围权限”,分类下无节点提示“当前分类下无可选单位工程节点”;增加加载 catch 兜底提示 | 页面卡片回显与异常处理代码走查 |
| 退回重办操作入口放开 | ProcedureStagePage.vue & ProcedureLedgerPage.vue | 通过:操作列支持 row.approvalStatus === 'back',文案显示为“重办”,打通退回单据流转闭环 | 页面操作按钮渲染逻辑与接口调用走查 |
| 前端静态检查与测试 | npm run lint & npx vitest run | 通过(0 error, 全量单测通过) | 命令输出 |
11. 2026-10-14 施工许可证 1:N 同步安全与台账查询回归
| 验证项 | 范围与结果 | 证据 | 结论 |
|---|---|---|---|
| 多单位工程同步成功 | 同一流程同一施工许可节点下同步结果;验证先锁定所有目标版本,再写入各自结果 | EngineeringProcedureServiceImplTest.sync_result_updates_all_same_node_units_after_all_versions_are_locked | 通过(单元测试) |
| 版本冲突 | 第二个目标版本失效时抛出冲突;所有写操作尚未开始,不产生部分更新 | EngineeringProcedureServiceImplTest.sync_result_does_not_write_any_result_if_a_target_version_is_stale | 通过(单元测试) |
| 越权目标 | 同步目标存在当前用户不可见工点时拒绝 | EngineeringProcedureServiceImplTest.rejects_sync_to_a_unit_outside_the_users_visible_site_scope | 通过(单元测试) |
| 总台账标段回填 | 可见范围内批量查找并仅在唯一匹配时回填;歧义候选不随意取首条 | 服务实现与定向代码检查 | 静态核对通过;DM8 回读和大数据量查询计划未执行 |
| 页面办理 | 勾选框、真实施工许可单据保存及多单位工程页面回读 | 本轮未执行手续页面完整端到端办理 | 待验收 |
工程手续定向后端测试 EngineeringProcedureServiceImplTest 16 项通过(-Dmaven.test.skip=false);不代表本次浏览器施工许可同步链路或 DM8 查询已验收。
12. 2026-10-15 任民工程授权年度计划选择回归
任民真实页面进入年度计划新增表单,依已确认的“线路→工点”契约分别选择重庆轨道交通15号线土建施工01标、02标下授权工点,以及重庆轨道交通27号线授权回归测试标段下“璧山站”。确认选择后表格出现3条对应工点工程,证明两个部分授权标段及整线授权的现存测试节点均能进入下游手续选择器。外层表单随后取消,未保存年度计划或产生流程记录。页面候选首载约等待8~9秒,完成加载后选择及表格回显正常;其余手续页面及审批办理未在本次额外覆盖。
针对首载约 8~9 秒的体验反馈,工程树共享查询和变更选择器随后完成性能优化。优化后的页面复测中,工程变更选择器从点击标段到工点及单位工程候选完整显示约 1.21~1.41 秒,详情见工程变更候选性能复测。年度计划页面本轮仍已验证15号线两个标段及27号线测试标段授权工点可选并正确回显;该页面本次没有单独记录优化后的毫秒耗时,因此不将变更选择器数字外推到年度计划。
13. 2026-10-15 录单入口改造与台账对齐回归
本轮按用户 2026-10-15 需求完成录单入口改造(新增年度计划拆分为土建/机电两个入口、土建保留责任标段、机电按标段办理)与推进总台账对齐(首列“工点/专业”、完成时间“已完成/计划完成日期”),验证与证据如下。
| 验证项 | 入口/命令 | 结果 | 证据与边界 |
|---|---|---|---|
| 后端模块测试 | .agents/tools/dev.ps1 maven '-Dmaven.test.skip=false' '-Dtest=EngineeringProcedure*Test' ... test | 通过:3 个测试类 24 项(服务 21、控制器权限 1、流程启动 2) | Maven/Surefire 输出;含本轮新增的入口快照解析、责任标段管辖校验、机电标段快照、入口必填与完成时间文案断言 |
| 前端类型检查 | pnpm exec vue-tsc --noEmit | 通过(0 error) | 命令输出 |
| 前端定向测试 | pnpm exec vitest run src/views/business/engineeringProcedures | 通过:3 个文件 13 项 | 含选择器双入口层级、责任标段按点选路径(parentId)与节点唯一 uid 断言 |
| 页面:两个入口与选择层级 | 内置浏览器 1920×911,真实登录 | 通过:年度计划页出现“新增年度计划(土建)/(机电)”两个按钮;土建弹窗按“线路-标段-工点”选工点并带入责任标段;机电弹窗按“线路-标段”选标段(线路层导航、标段层可选,全部标段可选) | 真实页面记录;选择器提示语、动态“工点/标段”标签与排期表阶段(土建 5、机电 2)均按入口切换 |
| 页面:录单落库 | 页面暂存 + DM8 回读 | 通过:EP-2026-1009883136(TJ,siteId=九曲河东站、bidId=土建施工01标、路径“线路/标段/工点”)与 EP-2026-5008612352(JD,siteId 空、bidId=机电安装01标、路径“线路/标段”) | 主单与单位行回读一致;两条验证计划保留在开发库 |
| 缺陷修复:责任标段按选择路径 | 页面复现 + 修复 + 复测 | 通过:修复前同一工点挂多个管辖标段时取全树首个匹配(复现为“自动售检票系统标”);修复后按节点 parentId 与唯一 uid 取用户实际点选路径(复测为“土建施工01标”) | 真实页面复现与复测;组件断言补充 |
| 缺陷修复:主单 PROJECT_ID 非空 | DM8 MCP 日志与回读 | 通过:土建保存报 -6609 违反列[PROJECT_ID]非空约束;放宽为可空(ALTER TABLE ... MODIFY PROJECT_ID BIGINT NULL)并回读 NULLABLE=Y 后保存成功 | 与 v4 新模型(工点无项目维度)不兼容,属存量约束缺陷 |
| 缺陷修复:操作列换行与流程图按钮 | 内置浏览器 1920×911 | 通过:年度计划列表操作列(查看/修改/提交/删除)单行不换行(uniqueTops=1,列宽按规范四操作 360px);“查看流程图”不再要求先选对象,弹窗打开即可点击并加载 Warm-Flow 设计器 | 真实页面度量与抽屉加载记录 |
| 总台账展示 | 内置浏览器 + /ledger 接口 | 通过:总台账两行(土建=工点行、机电=标段行);完成时间列未完成显示计划日期(2026-03-31 等) | 页面与接口响应一致;实际完成日期显示“已完成”分支由 completionText 单测覆盖 |
| 线路级导出 | 页面导出 + openpyxl 解析 | 通过:按线路分 sheet(“重庆轨道交通15号线”)、表头首列“工点/专业”、两行合并表头、完成时间列为计划日期 | 导出文件解析记录;责任部门/备注按现状留空 |
| 数据库结构 | dcp-dm8-dev MCP | 未变更字段;仅主单 PROJECT_ID 放宽为可空并回读 | 见数据库设计 §3/§6/§7 |
未覆盖与遗留:正式提交启动流程实例、施工许可证 1:N 同步、退回重办与跨轮次场景本轮未执行(避免与并行会话的流程数据混淆);土建入口树包含线路下全部标段(含机电与设备系统标段),同一工点会在其多个管辖标段下重复出现,责任标段以点选路径为准——该选择口径与是否限制土建标段范围待业务确认。另有独立会话在同一工作区并行施工时出现过一次构建产物竞态(重试后通过)与选择器测试同步(已核对一致)。