主题
工程投资管理 · 测试报告
文档版本:0.10 | 最近核对日期:2026-09-28
1. 测试范围与结论
本报告记录工程投资管理代码、DM8 开发库、Warm-Flow 流程、接口与端到端检查。金额单位为亿元。登录凭据仅从私有仓库根 README 读取并在本机内存中使用;本报告不含账号值、密码或访问令牌。
结论:三条流程定义均已发布;投资计划上报、计划调整、年度下达、月度实施上报及审批回写的 API 端到端链路共通过 21 项断言(主链路 16 项、调整版本 5 项)。开发库读回确认调整版本、下达重绑与月报实绩均正确。真实浏览器的登录后页面操作尚未取得证据,页面验收保持待验收。
| 范围 | 结果 | 证据与限制 |
|---|---|---|
| 后端编译 | 通过 | 使用项目 Maven 入口编译 admin reactor,并显式保留 -Dmaven.test.skip=false;包含标记值与月份列映射修复后的编译通过 |
| 计算单测 | 通过 | InvestmentCalculationSupportTest:3 项通过、0 失败、0 错误;覆盖金额与比例计算 |
| 前端构建与定向检查 | 通过 | pnpm build:prod、投资目录 oxlint 与 oxfmt 通过 |
| 前端全量类型检查 | 通过 | 2026-09-28 当前工作区复验 vue-tsc --noEmit --pretty false,0 项诊断。 |
| 文档站引用检查 | 通过 | .agents/tools/verify.ps1:144 个文档、2,960 个本地链接、0 个问题;本报告更新后再次执行 |
| 登录、菜单与只读入口 | 通过 | 开发管理员登录成功;用户资料、动态菜单、工程选项及投资计划查询接口成功,菜单含「工程投资管理」;不记录账号值 |
| 流程定义 | 通过(保留旧版) | 计划上报、计划调整、实施月报三条流程均已发布;流程节点及连线经 Warm-Flow JSON 回读检查;同编码 v1 未发布定义保留,未删除 |
| 上报与下达主链路 | 通过 | 12 个月金额不等于年度金额时拒绝保存;有效计划保存、12 月拆分回读、审批办结、一致性维护、目标年度下达与接收人关联通过 |
| 计划调整链路 | 通过 | MODIFY 版本审批办结,保留 12 个月拆分,原下达记录重绑至新版本及新拆分,月计划金额仍可读取 |
| 月报链路 | 通过 | 一月实绩保存、重复月份拒绝、流程审批办结、实施台账回读及累计金额口径通过 |
| 真实浏览器页面 | 待验收 | 本轮可用工具未提供交互式浏览器控制,未执行登录后的页面操作;不以接口或构建证据替代页面验收。 |
2. API 端到端结果
使用现有开发管理员及标记为 E2E-INV-20260927 的验收项目。主链路脚本共 16 项断言,全部通过;计划调整独立回归再通过 5 项断言。
| 场景 | 操作与结果 | 状态 |
|---|---|---|
| 登录、菜单与流程 | 登录成功;工程投资管理动态菜单可见;三条已发布流程均能回读节点和连线 | 通过 |
| 工程主数据 | 建立验收工程并确认出现在可选项目列表 | 通过;记录保留 |
| 计划输入边界 | 12 个月合计与年度计划不符时服务端拒绝保存 | 通过 |
| 计划上报 | 创建 2026 基准年、2027 计划年数据;项目、金额、责任部门及 12 月拆分保存并回读 | 通过 |
| 上报审批及一致性 | 完成计划审批;将一致性标志设为「是」并成功进入同年度下达范围 | 通过 |
| 年度下达 | 建立 2027 年红头台账及责任部门分配,确认下达并回读接收人、项目与年度金额 | 通过 |
| 实施月报 | 读取一月计划金额 0.20 亿元;保存一月实绩 0.20 亿元;相同下达分摊与月份的第二条月报被拒绝;月报审批办结 | 通过 |
| 累计口径 | 月报上下文的一月年内累计为 0.20 亿元;项目累计完成为基线 5.00 加年度已完成实绩 0.20,即 5.20 亿元 | 通过 |
| 实施台账 | 办结月报对应的责任分解行出现在 2027 年实施台账 | 通过 |
| 计划调整 | 新建 MODIFY 版本并完成工程管理部审批;办结后保留 12 月拆分 | 通过 |
| 调整后下达重绑 | 原下达分配的计划 ID 与拆分 ID 已重绑至办结的新版本;一月月计划仍为 0.20 亿元 | 通过 |
3. 缺陷定位及修复
端到端回归依次发现并修复以下实现问题,修复后编译与完整 API 链路通过:
InvestmentProjectBo没有 MapStruct 转换器,不能直接转换为InvestmentPlanItem;计划子项现按业务字段显式映射。- 市级重点标记曾规范化为中文「是/否」,与开发库
CHAR(1)及已记录的0/1基线不一致;后端统一持久化1/0。 - 实体属性
month01自动映射为MONTH01,实际列名为MONTH_01至MONTH_12;月份字段现设置显式列映射。 - 月报上下文的累计表示本计划年度截至所选月的累计实绩;项目累计完成另按计划基线加本年度已审批实绩计算。两者已分别验证,避免混用统计口径。
4. 验收边界
- 已验证后端 API、流程动作、事务写入与 DM8 回读;未完成真实登录后的页面交互验证。桌面浏览器工具阻止了本地私有凭据传递,因此登录后表格操作、按钮显隐、页面提示和浏览器附件上传均未验收。
- 本轮未覆盖退回后修改/重提、Excel 导入/导出、真实附件上传、无权限角色拒绝以及浏览器端异常提示;不将这些场景标为通过。
- 全量前端类型检查存在 6 项非投资模块既有问题;投资前端生产构建与目录定向检查通过。
- 未创建测试账号、角色或岗位,现有开发管理员足以完成本机 API 与流程测试。
5. 开发库保留数据
- 验收工程「工程投资端到端验收项目-20260927」及项目编码
E2E-INV-20260927保留在BIZ_PROJECT。 - 投资计划:
REPORT版本 1 条,MODIFY版本 1 条;均为finish。项目明细 2 行、责任部门拆分 2 行,分别对应两个版本。 - 年度红头台账 1 条;附件关联 0 条(本轮未测真实文件上传)。责任部门下达 1 条,状态
finish,已关联MODIFY版本。 - 一月实施月报 1 条,状态
finish,实绩 0.20 亿元。 - 三条投资流程的
v2为已发布版本;同编码v1未发布记录继续保留。本轮未删除验收数据。
6. 2026-09-28 本次修改定向回归
以下证据针对 2026-09-28 的投资模块代码改动。第 1 至 5 节记录的是 2026-09-27 的开发库与 API 端到端历史结果,不能替代本次修改后的 E2E 验收。
| 检查 | 结果 | 覆盖范围与证据 |
|---|---|---|
| 后端定向单测 | 通过,7 项通过、0 失败、0 错误 | InvestmentServiceImplTest:退回调整版本仍在办且阻止重复新建;4 个审批人 ID VO 回显;项目名按生效调整版本匹配并覆盖新增、删除、改名;根计划筛选与同一项目责任拆分匹配;实施台账筛选;草稿/退回内联字段保存、审批中拒绝及行业值校验。Maven 显式使用 -Dmaven.test.skip=false。 |
| 前端全量类型检查 | 通过,0 项错误 | pnpm exec vue-tsc --noEmit。筛选参数、内联编辑表单与 InvestmentPlanVO 中四个审批人字段的前后端命名保持一致;Long ID 前端类型保留为 `string |
| 投资前端 lint 与格式 | 通过 | oxlint 与 oxfmt --check 覆盖投资 API 类型/API 客户端、计划台账页、实施台账页 4 个受影响文件。 |
| 前端生产构建 | 通过 | pnpm build:prod,Vite 转换 3823 个模块并成功生成生产包。 |
| 本次修改后的页面 E2E | 待验收 | 定向代码回归后未进行页面操作;主 Agent 于 2026-09-28 另执行当前后端的只读 API E2E,详见第 6.1 节。开发库索引证据另见数据库设计。 |
本次回归仅说明上述代码和 API 检查通过,不表示完成本次修改后的真实页面验收、内联字段持久化写入、附件上传或完整业务 E2E。
6.1 主 Agent 2026-09-28 当前后端接口 E2E
| 检查 | 结果 | 证据与范围 |
|---|---|---|
| 登录与用户信息 | 通过 | 使用私有开发账号在本机完成加密登录和 getInfo;不记录账号值或令牌。 |
| 投资计划筛选接口 | 通过 | 当前代码的 /business/investment/plan/page 在项目名、行业、建设阶段和重点标志联合筛选条件下返回 HTTP 200、业务码 200、0 行;筛选条件含唯一审阅标记,仅执行读取。 |
| 投资实施筛选接口 | 通过 | 当前代码的 /business/investment/implementation/page 在项目名与行业条件下返回 HTTP 200、业务码 200、0 行;仅执行读取。 |
| business 模块完整后端回归 | 通过,234 项通过、0 失败、0 错误、0 跳过 | 其中工程投资 10 项,覆盖退回调整防重、审批人字段回显、生效版本项目名过滤、计划与实施台账筛选、内联字段状态和值校验。共享 workflow 模块 14 项通过。 |
| 页面与附件路径 | 待验收 | 2026-09-28 前一轮会话未执行真实页面内联编辑与附件上传;当前会话的前端虽启动成功,但后端初始化失败,具体见第 8 节。附件路径没有阻止前述只读 API 检查。 |
API 结果用于证明本轮修改已经由当前工作区后端加载并可读取,不代表内联编辑写入、审批流程、浏览器交互或附件上传通过。第 1 至 5 节的业务流程 API E2E 结果仍是 2026-09-27 的历史证据。
7. 关联资料
- 需求分析:业务规则、推荐默认和验收口径。
- 概要设计:模块边界、菜单、流程及权限。
- 详细设计:接口、状态、实现映射和验证路径。
- 数据库设计:七张表的实际字段、索引和 MCP 回读记录。
- 用户使用手册:页面入口与业务操作步骤(浏览器页面操作仍待验收)。
8. 2026-09-28 当前会话端到端验证尝试
- 拟测基线:
main@3b6edc5;目标为工程投资管理真实页面与业务链路。桌面 Google Chrome 未出现在当前会话可用浏览器中,按用户要求改用 Codex 内置浏览器。 - 环境恢复:最初两次启动虽已注入五项文档规定的 JVM 参数,仍在 Netty NIO Selector 初始化时报
Unable to establish loopback connection。查阅环境配置与运行后将DCP_JAVA_TEMP_DIR指向C:\Temp,后端在 8080 正常监听并记录Started DigitalConstructionApplication;前端在 80 正常监听。GET /actuator/health返回 401,表明请求到达受鉴权端点,不作为健康检查通过证据。 - 启动脚本修复:确认 8080 监听进程由本任务的 PowerShell
-EncodedCommand启动链派生,但脚本未解析编码命令,误报为归属不明。修复.agents/tools/dev-env.ps1后,dev-env.ps1 ensure已能正确复用 8080 和 80 的当前项目进程。 - 本轮回归:工程投资后端定向回归 10/10 通过;此结果不替代真实模块 API 流程及页面操作。
- 页面状态与影响:桌面 Google Chrome 未出现在当前会话可用浏览器中,已按用户要求使用内置浏览器并停留在登录页。浏览器安全策略拒绝用
file:页面读取本机文件;登录仍待用户在该页手动完成。当前未调用需登录的工程投资接口或页面操作,也未通过业务流程新增、修改或删除测试记录;本轮工程投资真实页面 E2E 待登录后执行,既有 API E2E 仅支持原覆盖范围,不能代替本轮页面证据。