Files
junhong_cmp_fiber/openspec/specs/refund-request/spec.md
huang f339fb1987
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m8s
fix: 资产钱包自动创建机制 — 修复C端购买时钱包不存在报错
- client_order: 新增 getOrCreateWallet 兜底,钱包不存在时自动创建
- device_import: 设备导入事务内同步创建设备钱包
- iot_card_import: IoT卡批量导入后批量创建卡钱包
- queue/handler: 传递 AssetWalletStore 给两个导入 handler
- migration 000098: 为存量IoT卡和设备补建资产钱包
2026-03-30 11:37:41 +08:00

41 lines
2.2 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.
## ADDED Requirements
### Requirement: 退款申请数据模型
系统 SHALL 提供 `tb_refund_request` 表存储退款申请,包含退款单号(唯一)、关联订单 ID、店铺 ID数据权限过滤、实收金额、申请退款金额、审批退款金额、状态、审批人、审批时间、佣金回扣标记、资产重置标记等字段。
#### Scenario: 创建退款申请
- **WHEN** 平台管理员提交退款申请,填写订单 ID、实收金额、申请退款金额、退款原因
- **THEN** 系统 SHALL 生成唯一退款单号(格式 RF+日期时间+随机数),创建 `status=1待审批` 的退款记录,`shop_id` 从关联订单自动读取
#### Scenario: 仅针对已支付套餐订单
- **WHEN** 管理员对非已支付订单或充值订单发起退款
- **THEN** 系统 SHALL 返回错误,拒绝创建
#### Scenario: 重复退款防护
- **WHEN** 管理员对已有待审批/已通过/已退回退款记录的订单再次发起退款
- **THEN** 系统 SHALL 返回错误,拒绝创建
- **WHEN** 管理员对仅有已拒绝退款记录的订单重新发起退款
- **THEN** 系统 SHALL 允许创建新的退款申请
### Requirement: 退款状态流转
退款单状态 SHALL 按以下规则流转:待审批(1) → 已通过(2)/已拒绝(3)/已退回(4);已退回(4) → 待审批(1)。已通过和已拒绝为终态。
#### Scenario: 审批通过
- **WHEN** 审批人对待审批退款单执行通过操作
- **THEN** 状态 SHALL 变为 2已通过记录审批人和审批时间异步触发资产处理和佣金回扣
#### Scenario: 审批拒绝
- **WHEN** 审批人对待审批退款单执行拒绝操作,填写拒绝原因
- **THEN** 状态 SHALL 变为 3已拒绝记录拒绝原因
#### Scenario: 退回重提
- **WHEN** 审批人退回退款申请,申请人修改后重新提交
- **THEN** 状态 SHALL 从 4已退回变回 1待审批
#### Scenario: 非法状态变更被拒绝
- **WHEN** 对已通过或已拒绝的退款单执行任何状态变更
- **THEN** 系统 SHALL 返回错误,状态不变
### Requirement: 仅平台账号可操作
退款的发起和审批 SHALL 限制为平台用户user_type IN 1,2。同一人可以既发起又审批。