日期:2026-08-25
环境:本地前端 http://localhost:3001(dev:local)+ 后端 http://localhost:8088/sjnmtybt
数据:生产 DMS 真实数据(约 3.3 万人员 / 202608 单月明细)
原则:只读巡检;未调用初始化/清空/恢复出厂等破坏性接口;未创建测试数据
| 维度 | 说明 |
|---|---|
| 角色 | 7 种:村合作社 / 镇经发 / 镇社区事务 / 分管领导 / 区农委 / 区人社局 / 系统管理员 |
| 页面 | 14 个业务路由(按 menus.ts + rolePermissions) |
| 接口 | 36 条只读 API(按页面分组) |
| UI | Playwright 自动访问 37 个「角色×页面」组合并截图 |
脚本位置:
sj_nmtybt_server/scripts/frontend-audit-apis.js\_e2e_pw/frontend-ui-audit.jssj_nmtybt_server/scripts/audit-output/| 项 | 结论 |
|---|---|
| 页面渲染 | 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
lite 批次列表 < 2s 加载,不再 15s 超时total=0),属数据状态,非渲染异常阈值:OK ≤ 3000ms · SLOW 3000–15000ms · FAIL 超时或
code≠200
| 页面 | 接口数 | 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 路径 |
| 接口 | 冷启动 | 热启动(缓存后) | 影响页面 |
|---|---|---|---|
GET /dashboard/workbench |
11.4s | ~50ms(90s 工作台缓存) | 所有角色首页 |
POST /payments/details/page(镇级) |
10.8s | ~200ms(scope 缓存) | 月补贴清单明细 |
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 | 正常 |
| 字段 | API 值 | 村图表合计 | 是否一致 |
|---|---|---|---|
| 本月发放金额 | 530,000 | 10,519,356 | ❌ |
| 本月发放人数 | 500 | 9,881(明细口径) | ❌ |
| 本月新增 | 9,879 | — | ⚠️ 接近总人数 9,886 |
根因分析:
region.currentMonth(批次/stat 口径,镇切片 totalAmount=0 时 stat 残留 53 万/500 人)泖港镇(已修复):monthAmount=7,545,080 = 村图表合计 ✅
建议:当 |明细合计 - region金额| > 阈值 时,优先采用明细汇总(与村图表同源)。
叶榭镇 monthIncreaseCount=9879,几乎等于在册 9886 人。
原因:applyPayrollHeadcount 对比上月发放名单,上月(202607)叶榭无明细 → 本月全员算「新增」。
建议:无上月明细时回退到人员 createTime 口径,或展示「—」并附说明。
| 探针路径 | 实际 | 结果 |
|---|---|---|
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 巡检中渲染正常。
打开「匹配结果」调用 GET /insurance-match/batches/{id}/results,后端 loadBatchMemberPersonnel 按批拉全镇明细(~7000 条),首开 5~15s。
列表页已通过 lite 修复;弹窗建议后续做 服务端分页 + DMS 条件查询。
T_YEXIE 镇级居保批次 total=0(可能全区批在 PENDING_STATUS_MAINTAIN 但镇切片未生成/状态不匹配)。需业务确认数据,非纯前端问题。
| 角色 | 可见菜单 | UI 结果 | 主要接口状态 |
|---|---|---|---|
| 村合作社 | 工作台、人员录入、告警 | ✅ 3/3 | 正常 |
| 镇经发 | 工作台、审批、报表 | ✅ 3/3 | 正常 |
| 镇社区事务 | 工作台、居保、标准、特殊、月补、回盘、告警、报表 | ✅ 8/8 | 工作台金额见 5.1 |
| 分管领导 | 工作台、审批、报表、告警 | ✅ 4/4 | 正常 |
| 区农委 | 工作台、报表 | ✅ 2/2 | 正常 |
| 区人社局 | 工作台、报表、告警 | ✅ 3/3 | 正常 |
| 系统管理员 | 全部 14 项 | ✅ 14/14 | 审批/特殊/报表/admin-batches 偏慢 |
| 问题 | 状态 |
|---|---|
| 居保列表 15s 超时 | ✅ lite + 镇级查询 |
| 泖港工作台金额为 0 | ✅ 明细回退 + 工作台缓存 |
| 工作台首开 20s+ | ✅ 合并明细查询 + 90s 缓存(二次 < 100ms) |
| 优先级 | 项 | 工作量 |
|---|---|---|
| P0 | 叶榭等非零错误金额时仍用明细覆盖顶部指标 | 小 |
| P1 | 发放明细分页改 DMS 端分页,避免先拉全量再内存分页 | 中 |
| P1 | 居保匹配结果接口服务端分页 | 中 |
| P2 | 本月新增:无上月明细时的展示策略 | 小 |
| P2 | 管理员审批/特殊/报表页并行请求优化 | 中 |
# 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