Files
junhong_cmp_fiber/openspec/specs/agent-funds-commission/spec.md
break 7e7f1cbb67
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 53s
更新
2026-08-13 16:09:38 +08:00

6.9 KiB
Raw Blame History

代理资金与佣金当前行为

Purpose

描述代理充值、钱包、佣金、提现及其金额边界的当前可观察行为。

Requirements

Requirement: 代理钱包与提现状态门禁

系统 SHALL 仅允许正常钱包执行资金操作;冻结或关闭钱包拒绝扣款、冻结、释放或提现,提现申请按待审核、已通过、已拒绝、已到账状态推进,重复终态决定不得再次扣减或入账。

Scenario: 非正常钱包资金操作

  • GIVEN 代理钱包已冻结或关闭
  • WHEN 请求扣款、冻结、释放或提现
  • THEN 系统返回状态错误且余额与流水不变

Requirement: 佣金异常状态可见

系统 SHALL 将佣金记录保持为已冻结、解冻中、已发放、已失效或待人工修正;链路断裂的记录进入待人工修正而不是静默计入可提现余额。

Scenario: 佣金链路断裂

  • GIVEN 佣金记录无法关联完成后续发放所需事实
  • WHEN 系统处理该记录
  • THEN 记录保持待人工修正状态且不增加可提现余额

Requirement: 代理在线充值本地支付状态

系统 SHALL 将代理在线充值的本地支付投影按 0=待支付、1=已支付、2=已失败、3=已退款返回;订单和资产充值使用各自的状态集。

Scenario: 代理在线充值本地支付状态

  • GIVEN 代理在线充值的本地支付记录存在
  • WHEN 查询该充值的支付状态
  • THEN 返回数值状态及对应中文名称

Requirement: 充值边界

系统 SHALL 接受资产充值 100 至 10000000 分、线下代理充值 1 至 100000000 分、在线代理充值至少 10000 分。

Scenario: 充值边界

  • GIVEN 请求金额位于或越过边界
  • WHEN 创建对应充值
  • THEN 边界内请求进入既有支付流程,越界请求返回参数或业务错误

Requirement: 佣金待计算状态可恢复

系统 SHALL 将已支付订单的佣金待计算状态与可靠投递事实关联;投递异常不得静默遗留为无法继续处理的待计算订单。

Scenario: 佣金投递链路异常

  • WHEN 佣金计算任务提交或消费链路发生可恢复异常
  • THEN 订单维持待计算且投递状态、重试次数和失败摘要可查询,恢复投递后按既有规则得出有佣金、无佣金或待人工修正结果

Requirement: 退款佣金回扣可靠完成

系统 SHALL 在退款审批生效时持久化佣金回扣请求;回扣请求的投递或处理异常不得静默遗留,且退款单在全部应回扣佣金失效并完成对应钱包流水前不得标记为已回扣。

Scenario: 已退款订单佣金回扣失败后恢复

  • WHEN 已退款订单的佣金回扣首次处理失败或进程中断
  • THEN 退款单保持佣金未回扣状态并保留可重试事实,后续成功处理后佣金记录失效、佣金钱包按既有规则扣减且退款单标记为已回扣

Requirement: 退款后处理可补偿

系统 SHALL 对已退款但佣金未回扣或资产未完成后处理的退款单提供幂等补偿;重复补偿不得重复扣减佣金钱包、重复写回扣流水或重复处理资产。

Scenario: 遗留退款单补偿

  • WHEN 补偿流程发现已退款且 commission_deducted=false 的退款单
  • THEN 系统恢复该退款单的唯一后处理请求,并在既有回扣成功后更新其回扣完成标记

可达操作索引

本节只用于入口导航,不是行为 Requirement业务义务以上述 Requirements 为准。

代理预充值

GET /api/admin/agent-recharges(查询代理充值订单列表);POST /api/admin/agent-recharges(创建代理充值订单);GET /api/admin/agent-recharges/{id}(查询代理充值订单详情);POST /api/admin/agent-recharges/{id}/offline-pay(确认线下充值);GET /api/admin/agent-recharges/{id}/payment-status(查询代理充值本地支付与到账状态);POST /api/admin/agent-recharges/{id}/reject(驳回代理充值订单);GET /api/admin/agent-recharges/payment-methods(查询代理在线充值可用支付方式)。

代理商资金管理

POST /api/admin/commission-records/{id}/resolve(修正待审佣金记录);PUT /api/admin/shops/{id}/credit-limit(调整既有店铺实际信用额度);GET /api/admin/shops/{shop_id}/commission-daily-stats(代理商每日佣金统计);GET /api/admin/shops/{shop_id}/commission-records(代理商佣金明细);GET /api/admin/shops/{shop_id}/commission-stats(代理商佣金统计);GET /api/admin/shops/{shop_id}/main-wallet/transactions(代理商预充值钱包流水);GET /api/admin/shops/{shop_id}/withdrawal-requests(代理商提现记录);POST /api/admin/shops/{shop_id}/withdrawal-requests(发起提现申请);GET /api/admin/shops/fund-summary(代理商资金概况)。

佣金提现审批

GET /api/admin/commission/withdrawal-requests(提现申请列表);POST /api/admin/commission/withdrawal-requests/{id}/approve(审批通过提现申请);POST /api/admin/commission/withdrawal-requests/{id}/reject(拒绝提现申请)。

提现配置管理

GET /api/admin/commission/withdrawal-settings(提现配置列表);POST /api/admin/commission/withdrawal-settings(新增提现配置);GET /api/admin/commission/withdrawal-settings/current(获取当前生效的提现配置)。

Requirement: 佣金待计算状态可恢复

系统 SHALL 将已支付订单的佣金待计算状态与可靠投递事实关联;投递异常不得静默遗留为无法继续处理的待计算订单。

Scenario: 佣金投递链路异常

  • WHEN 佣金计算任务提交或消费链路发生可恢复异常
  • THEN 订单维持待计算且投递状态、重试次数和失败摘要可查询,恢复投递后按既有规则得出有佣金、无佣金或待人工修正结果

Requirement: 退款佣金回扣可靠完成

系统 SHALL 在退款审批生效时持久化佣金回扣请求;回扣请求的投递或处理异常不得静默遗留,且退款单在全部应回扣佣金失效并完成对应钱包流水前不得标记为已回扣。

Scenario: 已退款订单佣金回扣失败后恢复

  • WHEN 已退款订单的佣金回扣首次处理失败或进程中断
  • THEN 退款单保持佣金未回扣状态并保留可重试事实,后续成功处理后佣金记录失效、佣金钱包按既有规则扣减且退款单标记为已回扣

Requirement: 退款后处理可补偿

系统 SHALL 对已退款但佣金未回扣或资产未完成后处理的退款单提供幂等补偿;重复补偿不得重复扣减佣金钱包、重复写回扣流水或重复处理资产。

Scenario: 遗留退款单补偿

  • WHEN 补偿流程发现已退款且 commission_deducted=false 的退款单
  • THEN 系统恢复该退款单的唯一后处理请求,并在既有回扣成功后更新其回扣完成标记