frontend-audit-report-20260825.md 7.9 KB

前端全入口巡检报告

日期:2026-08-25
环境:本地前端 http://localhost:3001dev:local)+ 后端 http://localhost:8088/sjnmtybt
数据:生产 DMS 真实数据(约 3.3 万人员 / 202608 单月明细)
原则:只读巡检;未调用初始化/清空/恢复出厂等破坏性接口;未创建测试数据


1. 巡检范围

维度 说明
角色 7 种:村合作社 / 镇经发 / 镇社区事务 / 分管领导 / 区农委 / 区人社局 / 系统管理员
页面 14 个业务路由(按 menus.ts + rolePermissions
接口 36 条只读 API(按页面分组)
UI Playwright 自动访问 37 个「角色×页面」组合并截图

脚本位置

  • API:sj_nmtybt_server/scripts/frontend-audit-apis.js
  • UI:\_e2e_pw/frontend-ui-audit.js
  • 原始 JSON:sj_nmtybt_server/scripts/audit-output/

2. 总体结论

结论
页面渲染 37/37 页面可正常打开,无持续 Loading 卡死、无全局报错弹窗
接口可用 30/36 只读接口 < 3s 且 code=200
数据计算 泖港镇已修复;叶榭镇仍存在顶部指标与村图表不一致
性能 工作台/发放明细分页 冷启动 10~11s(DMS 翻页),命中缓存后 < 1s
流程 BUG 见第 5 节
pie title 接口响应分布(36条只读探针)
    "OK <3s" : 30
    "SLOW 3-15s" : 2
    "失败/404" : 4

3. 界面截图(代表性页面)

3.1 镇社区事务 — 工作台

镇社区事务工作台

  • 渲染正常:指标卡、告警条、待办、村图表均展示
  • 问题:顶部「本月发放金额」显示 53 万,下方村金额柱状图合计约 1051 万(见第 5.1 节)

3.2 镇社区事务 — 居保匹配

居保匹配页

  • lite 批次列表 < 2s 加载,不再 15s 超时
  • 叶榭镇当前无待办居保批次(total=0),属数据状态,非渲染异常

3.3 系统管理员 — 工作台

管理员工作台

3.4 镇经发 — 审批管理

镇经发审批


4. 接口响应时间

阈值:OK ≤ 3000ms · SLOW 3000–15000ms · FAIL 超时或 code≠200

4.1 按页面汇总

页面 接口数 OK SLOW FAIL 备注
工作台 /dashboard 5 4 1 0 workbench 冷启动 11.4s
人员录入 /base 4 4 0 0
居保 /insurance 2 2 0 0 lite 后 2~3ms
审批 /approvals 2 2 0 0
补助标准 /status 2 2 0 0
特殊业务 /special 3 2 0 1 bizType=ADJUST 500
月补贴 /monthly 2 1 1 0 发放明细分页冷启动 10.8s
回盘 /disk 2 2 0 0
告警 /alerts 2 2 0 0
报表 /reports 4 2 0 2 探针路径有误(见 5.3)
区划 /regions 1 1 0 0
人员底数 /personnel-admin 2 2 0 0
批次 /admin-batches 2 2 0 0
系统 /system 3 2 0 1 validate-rules 路径

4.2 慢接口明细

接口 冷启动 热启动(缓存后) 影响页面
GET /dashboard/workbench 11.4s ~50ms(90s 工作台缓存) 所有角色首页
POST /payments/details/page(镇级) 10.8s ~200ms(scope 缓存) 月补贴清单明细

4.3 UI 整页加载耗时(Playwright networkidle

页面 管理员 镇社区事务 说明
/dashboard 1.7s 1.6s 正常
/approvals 11.8s 人员+批次聚合偏重
/special 16.9s 1.7s 管理员全区视角慢
/reports 16.8s 1.8s 管理员多专题并行
/admin-batches 16.6s 批次列表含回填逻辑
其余页面 1.5~2.2s 1.5~1.8s 正常

5. 业务与数据问题

5.1 【高】叶榭镇工作台金额不一致

字段 API 值 村图表合计 是否一致
本月发放金额 530,000 10,519,356
本月发放人数 500 9,881(明细口径)
本月新增 9,879 ⚠️ 接近总人数 9,886

根因分析

  • 顶部指标取自 region.currentMonth(批次/stat 口径,镇切片 totalAmount=0 时 stat 残留 53 万/500 人)
  • 村图表取自发放明细汇总(正确)
  • 昨日对「金额为 0」做了明细回退,但 非零错误值未覆盖

泖港镇(已修复)monthAmount=7,545,080 = 村图表合计 ✅

建议:当 |明细合计 - region金额| > 阈值 时,优先采用明细汇总(与村图表同源)。

5.2 【中】本月新增人数异常偏大

叶榭镇 monthIncreaseCount=9879,几乎等于在册 9886 人。

原因applyPayrollHeadcount 对比上月发放名单,上月(202607)叶榭无明细 → 本月全员算「新增」。
建议:无上月明细时回退到人员 createTime 口径,或展示「—」并附说明。

5.3 【低】探针/接口路径问题(非页面必现)

探针路径 实际 结果
GET /api/validate-rules 应为 /api/admin/validate-rules 404
GET /reports/topics/personnel 应为 personnel-change 404
GET /special-biz/page?bizType=ADJUST 枚举无 ADJUST 500

前端实际调用路径正确,系统管理页、报表页在 UI 巡检中渲染正常

5.4 【中】居保匹配结果弹窗仍可能慢

打开「匹配结果」调用 GET /insurance-match/batches/{id}/results,后端 loadBatchMemberPersonnel 按批拉全镇明细(~7000 条),首开 5~15s
列表页已通过 lite 修复;弹窗建议后续做 服务端分页 + DMS 条件查询

5.5 【低】叶榭镇社区事务居保待办为空

T_YEXIE 镇级居保批次 total=0(可能全区批在 PENDING_STATUS_MAINTAIN 但镇切片未生成/状态不匹配)。需业务确认数据,非纯前端问题。


6. 各角色可见入口巡检表

角色 可见菜单 UI 结果 主要接口状态
村合作社 工作台、人员录入、告警 ✅ 3/3 正常
镇经发 工作台、审批、报表 ✅ 3/3 正常
镇社区事务 工作台、居保、标准、特殊、月补、回盘、告警、报表 ✅ 8/8 工作台金额见 5.1
分管领导 工作台、审批、报表、告警 ✅ 4/4 正常
区农委 工作台、报表 ✅ 2/2 正常
区人社局 工作台、报表、告警 ✅ 3/3 正常
系统管理员 全部 14 项 ✅ 14/14 审批/特殊/报表/admin-batches 偏慢

7. 已修复项(本轮巡检前)

问题 状态
居保列表 15s 超时 lite + 镇级查询
泖港工作台金额为 0 ✅ 明细回退 + 工作台缓存
工作台首开 20s+ ✅ 合并明细查询 + 90s 缓存(二次 < 100ms)

8. 建议优先级

优先级 工作量
P0 叶榭等非零错误金额时仍用明细覆盖顶部指标
P1 发放明细分页改 DMS 端分页,避免先拉全量再内存分页
P1 居保匹配结果接口服务端分页
P2 本月新增:无上月明细时的展示策略
P2 管理员审批/特殊/报表页并行请求优化

9. 复现命令

# API 探针
cd sj_nmtybt_server && node scripts/frontend-audit-apis.js

# UI + 截图(需先启动前后端)
cd _e2e_pw && node frontend-ui-audit.js

报告人:自动化巡检(API 探针 + Playwright)
关联改造报告payment-cache-refactor-report-20260824.md