e74958e17f
Co-authored-by: multica-agent <github@multica.ai>
65 lines
3.0 KiB
Markdown
65 lines
3.0 KiB
Markdown
## 关联 Issue
|
||
|
||
Closes HIF-16
|
||
|
||
## 改动摘要
|
||
|
||
拆分订单退款终态与队列 claim 临时态:退款成功后写入 `status=7`,`status=6` 仅保留为 worker claimed 状态,避免后台恢复任务把退款订单重新入队。
|
||
|
||
## 改动细节
|
||
|
||
- `internal/logic/admin/order/refundOrderLogic.go`:退款状态改为 `7`,重复退款优先检查 `type=24` 退款审计日志,再兼容旧的 `333` 佣金退款日志。
|
||
- `queue/logic/order/activateOrderLogic.go`、`queue/logic/order/stuckOrderRecoveryLogic.go`:release/recovery 只按真实 `claimed(6)` 回退,不再依赖 `333` 日志猜测状态语义。
|
||
- `internal/logic/admin/order/getOrderListLogic.go`:管理端状态展示改为 `6=claimed`、`7=refunded`。
|
||
- `internal/model/log/refund.go`:新增 `HasOrderRefundLog`,用于基于退款审计日志做幂等判断。
|
||
- `internal/logic/admin/order/refundOrderLogic_test.go`、`internal/model/log/refund_test.go`、`queue/logic/order/order_status_recovery_test.go`:补充退款写 `7`、重复退款、退款日志判断、claim release/recovery 行为测试。
|
||
|
||
## 测试计划
|
||
|
||
- [ ] `go build ./...` 通过
|
||
- [x] `go vet ./...` 通过
|
||
- [ ] `go test -race ./... -count=1` 通过
|
||
- [ ] golangci-lint 通过
|
||
- [x] 新增/修改的逻辑有对应单测覆盖
|
||
- [x] (如涉及 DB 变更)无 DB migration
|
||
- [ ] (如涉及 API)curl / Postman 验证命令贴在下面
|
||
|
||
```
|
||
go test ./internal/logic/admin/order ./internal/model/log ./queue/logic/order
|
||
ok github.com/perfect-panel/server/internal/logic/admin/order
|
||
ok github.com/perfect-panel/server/internal/model/log
|
||
ok github.com/perfect-panel/server/queue/logic/order
|
||
|
||
go test ./...
|
||
PASS
|
||
|
||
go test -v ./...
|
||
PASS
|
||
|
||
go vet ./...
|
||
PASS
|
||
|
||
golangci-lint run --new-from-rev=origin/internal
|
||
PASS
|
||
```
|
||
|
||
说明:本地 `lefthook run pre-commit` 无法执行,因为环境缺少 `lefthook` 命令;已手动执行 hook 配置中的等价检查。全量 `golangci-lint run` 仍会失败在 internal 上已有历史 lint 问题,本分支使用 `--new-from-rev=origin/internal` 验证未新增 lint 问题。
|
||
|
||
未做 curl 验证:本地没有可用服务配置与测试数据库,且该改动主要通过事务单测覆盖退款状态与队列恢复行为。
|
||
|
||
## 风险 / 回滚
|
||
|
||
- 风险:线上若已经存在 `status=6` 表示已退款的历史订单,本改动不会自动迁移,后续查询会显示为 `claimed`。建议上线前评估历史数据,可按退款审计日志或旧 `333` 佣金退款日志筛出并迁移到 `status=7`。
|
||
- 回滚:回滚本 PR 后恢复旧的 `status=6` 退款语义和 `333` 日志守卫;不涉及 schema 变更。
|
||
|
||
## Reviewer 自检清单
|
||
|
||
- [x] PR 标题符合 commitlint 规范(`修复/新功能/重构/文档/配置(#<num>): ...`)
|
||
- [x] 分支命名 `fix/<num>-…` / `feat/<num>-…` / `chore/…`
|
||
- [x] 目标分支 = `internal`
|
||
- [x] 改动 scope 与 Issue 描述一致,无 scope creep
|
||
- [x] **无无关代码改动**(架构师红线)
|
||
- [x] 无密钥/凭证泄露
|
||
- [ ] CI 全绿
|
||
- [ ] 测试工程师已验收(如涉及业务逻辑)
|