fujian_water_biz_doc/docs/evidence/bugfix/2026-07-14-counter-topup-persistent-display.md

53 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 柜台预存持久回显修复验证证据
- 验证日期2026-07-14
- 后端基线:`06ed57830fe0ccd50f0a74e3e5cf02114b0ace45`
- 后端修复提交:`27c27aacc96f9ad139b966bf3ea400643859efcb`
- 前端基线:`a0239b384f7e072c11c67ae6d405980260f4af14`
- 前端修复提交:`c73a13b6e234d146ea3e667643ab7012d9078a4d`
- 设计:`docs/superpowers/specs/2026-07-13-counter-topup-persistent-display-design.md`
- 计划:`docs/superpowers/plans/2026-07-14-counter-topup-persistent-display.md`
## 实现结果
1. 客户缴费历史不再截断为最新一条,按有效记录完整分页并保持汇总、导出一致。
2. 新版缴费记录查询增加可选 `bizScene`,柜台页面用 `DEPOSIT_TOPUP` 精确查询最近有效预存。
3. 新柜台预存先生成支付主单,再把 `paymentRecordId` 写入账户流水 `payDetailId`
4. 缴费历史通过账户流水展示新预存的期初、期末余额;旧记录没有可靠关联时保持空值。
5. 无欠费客户重新查询时可从后端恢复最近预存行,不依赖前端临时缓存或浏览器存储。
6. 恢复的历史预存行不可勾选,也不阻塞客户再次办理预存。
## TDD 红绿证据
| 场景 | 修复前失败 | 修复后结果 |
|---|---|---|
| 完整缴费历史 | 期望 `2` 条,实际仅 `1` 条 | PASS |
| 业务场景过滤 | 请求 VO 不存在 `bizScene` | PASS |
| 预存流水关联 | 支付主单在余额增加之后生成,流水 `payDetailId` 为空 | PASS |
| 余额快照 | 期望期初 `10.00`,实际为 `null` | PASS |
| 前端持久回显 | 新增契约首次执行 `0/3` 通过 | 最终 `4/4` PASS |
## 验证结果
| 范围 | 命令 | 结果 | 说明 |
|---|---|---|---|
| 后端定向单测 | `mvn -q -pl sw-business/sw-business-server -am -Dtest=PaymentQueryServiceTest,ChargeServiceCounterPaymentTest,PaymentRecordServiceImplTest,CounterSettleApplicationServiceImplTest -Dsurefire.failIfNoSpecifiedTests=false test` | PASS | 73 个测试0 失败0 错误 |
| 后端编译 | `mvn -q -pl sw-business/sw-business-server -am -DskipTests compile` | PASS | 退出码 `0` |
| 前端新增契约 | `node --test tests/operatingCharges/counterChargingPersistentTopup.test.mjs` | PASS | 4 个测试全部通过 |
| 前端既有柜台契约 | `pnpm test:counter-charging` | PASS | 4 个测试全部通过 |
| 前端路由恢复契约 | `node --test tests/operatingCharges/counterChargingPersistentTopup.test.mjs tests/operatingCharges/counterChargingRouteRestore.test.mjs` | PARTIAL | 6 个测试中 5 个通过;既有 URL 搜索状态持久化测试仍失败,与本次预存回显修改无关 |
| 前端构建(默认堆) | `pnpm build:dev` | FAIL | Node 默认约 4 GB 堆触发 OOM退出码 `134`,未出现源码编译错误 |
| 前端构建8 GB 堆) | `NODE_OPTIONS=--max-old-space-size=8192 pnpm build:dev` | PASS | 输出 `Build successful. Please see dist directory` |
## 未使用的验证入口
- 不运行 `vue-tsc` / `pnpm ts:check`。用户已明确要求本项目后续不要运行 `vue-tsc`,因此不将其作为本次验收入口。
## 已知边界
- 旧预存支付记录没有可靠 `payDetailId` 时,期初、期末余额显示 `-`,不按金额和时间模糊匹配。
- 主副卡付款户解析和柜台有效余额读取不在本次修复范围。
- 柜台收费路由恢复测试的既有失败仍待独立任务修复。
- 前端全量构建需要显式提高 Node 堆上限;默认堆配置仍可能 OOM。