29 lines
2.7 KiB
Markdown
29 lines
2.7 KiB
Markdown
# 柜台未结账正式红冲验证记录
|
|
|
|
## 背景
|
|
|
|
柜台结账历史口径要求未结账和已结账记录均可红冲。原实现仅覆盖已结账红冲,本次补齐未结账正式红冲,并在柜台结账未结账列表提供前端入口。
|
|
|
|
## 实现范围
|
|
|
|
- 后端 `POST /business/charge/counter-settle/red-flush` 按支付主单状态分流已结账/未结账红冲。
|
|
- 未结账红冲仅支持柜台收费、账单缴费、收款方向、`UNSETTLED`、`settleId=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.vue`、`CounterSettleConfirmDialog.vue`、`CounterSettledPanel.vue` 自动导入基线错误;本次触碰的 `CounterUnsettledPanel.vue`、`CounterSettledDetailDialog.vue`、`counterCheckout/index.vue`、`counterSettle.ts` 无新增错误。 |
|
|
|
|
## 结论
|
|
|
|
柜台未结账正式红冲已完成后端最小闭环验证。红冲后原收费支付主单不再进入待结账候选,营业账恢复未收费,红冲记录查询可追溯未结账红冲投影。前端入口已补齐,但全仓 `vue-tsc` 仍受既有自动导入类型基线影响,需要另行治理。
|