Files
junhong_cmp_fiber/openspec/specs/order-refund-exchange/spec.md
break c8052df8eb
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m30s
补充退款列表应当让本店铺的人看见
2026-08-18 11:44:30 +08:00

60 lines
3.6 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.
# 订单、退款与换货当前行为
## Purpose
描述订单、退款、换货及订单套餐失效的当前可观察行为。
## Requirements
### Requirement: 订单、退款与换货状态门禁
系统 SHALL 仅允许待支付订单取消;退款申请按待审批、已通过、已拒绝、已退回流转,只有已退回申请可重新提交;换货按待填写信息、待发货、已发货、已完成或已取消流转,并拒绝与当前状态或流程类型不匹配的操作。
#### Scenario: 重复推进终态
- **GIVEN** 退款或换货已进入不允许当前操作的状态
- **WHEN** 再次审批、发货、完成、取消或重新提交
- **THEN** 系统返回状态冲突且不重复改变资产、余额或业务状态
### Requirement: 代理退款查询按所属店铺隔离
系统 SHALL 允许代理账号通过 `GET /api/admin/refunds` 查询其当前所属店铺的全部退款申请,并通过 `GET /api/admin/refunds/{id}` 查询其中任一申请详情,不以申请创建账号作为查询条件。该范围 SHALL 不包含下级代理店铺、其他店铺或未关联店铺的退款申请;代理账号未关联店铺时,列表 SHALL 为空且详情 SHALL 返回不存在。平台和超级管理员的既有退款查询范围 SHALL 保持不变。
#### Scenario: 查看同店铺其他账号提交的退款
- **GIVEN** 当前代理所属店铺存在由另一账号创建的退款申请
- **WHEN** 该代理查询退款列表或该申请详情
- **THEN** 系统返回该退款申请
#### Scenario: 查询下级代理店铺的退款
- **GIVEN** 当前代理的下级代理店铺存在退款申请
- **WHEN** 当前代理查询退款列表或该申请详情
- **THEN** 系统不返回该退款申请,详情查询返回不存在
#### Scenario: 未绑定店铺的代理查询退款
- **GIVEN** 当前代理账号未关联店铺
- **WHEN** 该代理查询退款列表或退款申请详情
- **THEN** 系统返回空列表或不存在,且不泄露任何退款申请
## 可达操作索引
本节只用于入口导航,不是行为 Requirement业务义务以上述 Requirements 为准。
### 订单管理
`GET /api/admin/orders`(获取订单列表);`POST /api/admin/orders`(创建订单);`GET /api/admin/orders/{id}`(获取订单详情);`POST /api/admin/orders/{id}/cancel`(取消订单);`POST /api/admin/orders/purchase-check`(套餐购买预检)。
### 退款管理
`GET /api/admin/refunds`(退款申请列表);`POST /api/admin/refunds`(创建退款申请);`GET /api/admin/refunds/{id}`(退款申请详情);`POST /api/admin/refunds/{id}/approve`(审批通过退款申请);`POST /api/admin/refunds/{id}/reject`(审批拒绝退款申请);`POST /api/admin/refunds/{id}/resubmit`(重新提交退款申请);`POST /api/admin/refunds/{id}/return`(退回退款申请)。
### 换货管理
`GET /api/admin/exchanges`(获取换货单列表);`POST /api/admin/exchanges`(创建换货单);`GET /api/admin/exchanges/{id}`(获取换货单详情);`POST /api/admin/exchanges/{id}/cancel`(取消换货);`POST /api/admin/exchanges/{id}/complete`(确认换货完成);`POST /api/admin/exchanges/{id}/renew`(旧资产转新);`POST /api/admin/exchanges/{id}/ship`(换货发货)。
### 订单套餐失效
`GET /api/admin/order-package-invalidate-tasks`(查询订单套餐失效任务列表);`POST /api/admin/order-package-invalidate-tasks`(创建订单套餐批量失效任务);`GET /api/admin/order-package-invalidate-tasks/{id}`(查询订单套餐失效任务详情)。