fujian_water_biz_doc/docs/evidence/bugfix/counter-unsettled-red-flush-2026-06-30.md

2.7 KiB

柜台未结账正式红冲验证记录

背景

柜台结账历史口径要求未结账和已结账记录均可红冲。原实现仅覆盖已结账红冲,本次补齐未结账正式红冲,并在柜台结账未结账列表提供前端入口。

实现范围

  • 后端 POST /business/charge/counter-settle/red-flush 按支付主单状态分流已结账/未结账红冲。
  • 未结账红冲仅支持柜台收费、账单缴费、收款方向、UNSETTLEDsettleId=null 的支付主单。
  • 未结账红冲生成正式反向支付流水,原支付主单更新为 REVERSED,营业账恢复未收费。
  • 新增 biz_counter_unsettled_red_flush_record 查询投影,红冲记录查询/导出合并已结账与未结账红冲。
  • 前端柜台结账“未结账”列表新增单笔红冲按钮;已结账明细与未结账入口均要求非空红冲原因。

验证命令

范围 命令 结果 说明
后端单测 mvn -pl sw-business/sw-business-server -am -Dtest=CounterSettleApplicationServiceImplTest -Dsurefire.failIfNoSpecifiedTests=false test 通过 CounterSettleApplicationServiceImplTest 共 31 个用例通过,覆盖未结账红冲成功、混批拒绝、重复/并发拒绝、越权拒绝和红冲记录查询。
后端最终回归 mvn -pl sw-business/sw-business-server -am -Dtest=CounterSettleApplicationServiceImplTest,PaymentRecordServiceImplTest -Dsurefire.failIfNoSpecifiedTests=false test 通过 共 50 个用例通过,其中柜台结账 32 个、支付记录 18 个。
前端依赖 pnpm install 通过 前端 worktree 初始缺少 node_modules,安装依赖后继续验证。
前端类型检查 pnpm ts:check 未通过 首次执行因 Node 默认 4GB 堆内存 OOM 退出。
前端类型检查 NODE_OPTIONS=--max-old-space-size=8192 pnpm ts:check 未通过 全仓存在既有 TS 基线错误,主要为自动导入类型未识别和无关业务类型问题。
前端局部过滤 NODE_OPTIONS=--max-old-space-size=8192 pnpm ts:check 2>&1 | rg "counterCheckout|counterSettle" 通过本次改动检查 过滤后仅剩未触碰的 CheckoutTopSummary.vueCounterSettleConfirmDialog.vueCounterSettledPanel.vue 自动导入基线错误;本次触碰的 CounterUnsettledPanel.vueCounterSettledDetailDialog.vuecounterCheckout/index.vuecounterSettle.ts 无新增错误。

结论

柜台未结账正式红冲已完成后端最小闭环验证。红冲后原收费支付主单不再进入待结账候选,营业账恢复未收费,红冲记录查询可追溯未结账红冲投影。前端入口已补齐,但全仓 vue-tsc 仍受既有自动导入类型基线影响,需要另行治理。