退费减免需求

1. 一期结论

一期提供“客户减免”和“客服退款”两类客诉补救能力,但不建设审批中心、不生成审批任务、不配置审批流。

系统控制重点是:专项权限、App 数据范围、关联工单、完整证据、账务复验、金额与费用范围限制、幂等执行、不可变审计和结果对账。客服无权直接修改本金、历史流水或任意账户余额。

2. 业务边界

2.1 客户减免

用于已核实的系统计费错误、重复收费或客诉补救,仅允许处理配置白名单内的利息、罚息、服务费、保险费等费用项。单笔客户减免处理单可以同时申请多个不同类型的费用项;每个费用项独立记录金额、校验结果和 FCS 调整结果,处理单同时保存所有费用项的申请/可执行合计。

一期不允许:

  • 减免借款本金。
  • 手工改写历史还款流水。
  • 无借款、无期次、无工单的孤立调整。
  • 在本后台发起催收减免;催收系统后续可复用底层账务调整接口。

2.2 客服退款

用于已核实的多还、重复扣款或服务补偿。退款必须关联原支付/还款流水,并优先退回已验证的原支付账户。

一期不允许:

  • 退款到未验证的新账户。
  • 以退款替代借款本金冲销或核销。
  • 在缺少原交易、对账依据或客户身份核验时执行。

3. 角色与权限

角色默认能力
客服查询处理单;从客户/借款/工单创建草稿;不能执行
客服主管查询、补充证据、取消未执行处理单;是否可创建由角色配置决定
财务运营核验账务事实,执行退款指令或费用调整,处理失败重试与对账
系统管理员配置角色和 App 范围;默认不能查看客户明文、创建或执行业务处理单

核心权限点:

  • waiver.application.read
  • waiver.customer.create
  • waiver.customer.execute
  • refund.customer_service.create
  • refund.customer_service.execute
  • waiver.execution.retry
  • waiver.audit.read

创建权限和执行权限独立配置。接口必须同时校验登录用户、动作权限、App 范围和目标业务对象归属。

4. 页面结构

退费减免
├─ 处理单列表
├─ 新建处理单
│  ├─ 客户减免
│  └─ 客服退款
└─ 处理单详情
   ├─ 客户/借款/工单上下文
   ├─ 证据与账务快照
   ├─ 执行动作
   ├─ Reverse Waiver(未成功误操作撤回)
   ├─ 执行结果
   └─ 对账与审计记录

入口包括:退费减免列表、客户 360 的关联工单、借款详情。退费减免列表页标题为 Waiver & Refund,页面标题右侧展示 Create Handling Case 按钮,位置和样式与工单中心的 New Ticket 保持一致。列表顶部展示 Ready to ExecuteProcessingEffectiveException / Failed 四类指标,便于运营快速定位待处理和异常单据。

列表筛选项包括关键词、App、类型、状态、费用/退款项、原因码、处理人,并提供 QueryReset 操作。所有下拉选项必须支持输入筛选,选项来源优先使用数据库枚举、配置表或业务说明;一期没有配置来源时按本需求文档的固定枚举 mock。

点击处理单号或详情按钮时必须新开后台 tab 展示处理单详情,tab 标题为 Remedy: {处理单号},不在列表下方展开详情,避免长列表与详情操作互相干扰。

进入新建页时自动带入 App、客户、借款、期次和工单,不允许跨 App 拼接业务对象。

5. 处理单字段

字段要求
处理单号全局唯一,同时作为执行幂等键
类型客户减免 / 客服退款
App必填,来自业务对象
客户必填,默认脱敏
借款与期次必填
关联工单必填,且工单归属同一客户和 App
费用或退款项客户减免支持一个或多个不同类型的费用项;每个费用项只能出现一次,并从白名单选择。客服退款按退款明细记录原交易/退款项
费用项明细客户减免必填数组,至少包括 fee_item_typerequested_amountexecutable_amount;保存逐项校验、账务前后快照和 FCS 流水
申请金额合计客户减免各费用项 requested_amount 之和;大于 0,记录客服或财务发起时申请处理金额
可执行金额合计客户减免各费用项 executable_amount 之和;服务端复验后的可处理金额,不得超过各项试算上限
原因码必填,使用固定枚举
证据说明必填;附件能力可后续补充
账务证据必填,结构化记录原流水、差异原因和计算依据
校验结果系统记录 App、客户、借款、期次、金额和重复单校验结果
执行保护规则系统记录幂等、重试、账户和状态保护说明
原交易客服退款必填,可多笔
退款账户客服退款必填,必须是已验证账户
执行方式自动入账 / 财务人工复核 / 退款网关转账 / 手工账务调整 / 渠道撤销
对账状态未开始 / 已匹配 / 等待回调 / 待人工对账 / 金额不一致 / 渠道失败 / 渠道未知 / 已撤回
处理人系统记录,可按处理人筛选
幂等键默认使用处理单号;执行、重试和查询均复用
Reverse Waiver 信息撤回后记录撤回时间和原因;未撤回时为空
状态见状态机
创建/更新时间系统记录

新建和详情页字段必须尽量结构化展示,避免把金额、证据、校验结果、执行保护规则合并成不可解析的长文本。原型中不保留重复的通用 amount 字段,金额按 Requested AmountExecutable Amount 区分。

5.1 执行方式说明

执行方式表示处理单通过哪条业务链路落账或完成退款,不是单纯的展示字段。用户选择不同执行方式后,后续可填写字段、服务端校验、可点击动作、执行接口、结果回写和对账方式均不同。

执行方式适用类型业务理解后续对应功能
自动入账 / Auto Posting客户减免后台校验通过后直接调用 FCS 费用调整能力,将可减免金额入账到指定借款、期次和费用项展示 FCS 试算结果;执行按钮调用 FCS;结果区展示费用项调整前后快照、FCS 流水、入账时间;成功后状态为 EFFECTIVE
财务人工复核 / Finance Manual Review客户减免、客服退款后台只生成待财务复核的处理单,财务确认账务事实和金额后再执行自动入账、退款网关转账或手工账务调整状态仍按处理单状态机流转;详情页展示复核意见、复核人、复核时间;未复核前不可直接落账或退款;一期不生成审批中心任务
退款网关转账 / Refund Gateway Transfer客服退款后台生成退款指令,经支付/退款网关退回原支付账户或已验证账户必填原交易和退款账户;执行后进入 PROCESSING;等待网关回调或主动查询;成功后状态为 REFUNDED,并展示网关流水和对账状态
手工账务调整 / Manual Ledger Adjustment客户减免、客服退款因历史账务、渠道结果或特殊差异无法自动处理时,由财务线下完成账务调整,再在后台登记结果和凭证必填手工调整原因、凭证号、调整前后金额、财务处理人;系统记录人工结果,不允许客服直接填写为成功;必要时仍需调用 FCS 登记调整结果
渠道撤销 / Provider Reversal客服退款对可撤销的重复扣款或异常支付,优先通过原支付渠道撤销原交易,而不是发起新退款必填原交易;执行后进入 PROCESSING;等待渠道撤销结果;成功后状态为 REFUNDED 或按业务文案展示为已撤销;失败后进入 EXECUTION_FAILEDRECONCILE_EXCEPTION

执行方式选择规则:

  • 客户减免默认只允许选择 自动入账财务人工复核手工账务调整
  • 客服退款默认只允许选择 退款网关转账财务人工复核渠道撤销;如退款涉及 FCS 账务标记,可由后端在退款成功后触发 FCS 记录,不由客服选择。
  • 自动入账退款网关转账属于系统执行,必须有幂等键、执行结果查询和失败重试。
  • 财务人工复核不是审批流,只是处理单内的财务确认环节;后续如建设审批中心,再将复核动作迁移为审批节点。
  • 手工账务调整必须限制为财务运营角色,不允许客服角色执行或填写成功结果。

6. 一期处理流程

6.1 创建与校验

  1. 客服先定位客户和借款,并建立或关联客诉工单。
  2. 从工单或借款详情创建处理单,补充一个或多个费用项明细、各项金额、原因和证据。
  3. 服务端校验 App 范围、创建权限、客户/借款/期次/工单关系、允许处理范围和重复请求。
  4. 校验通过后生成 READY_TO_EXECUTE 处理单;不生成审批实例或审批任务。

6.2 执行

  1. 具备执行权限的用户打开处理单。
  2. 服务端重新读取当前余额、还款入账、退款状态和在途处理单。
  3. 数据与处理单快照不一致时阻止执行,状态改为 VALIDATION_FAILED,要求重新核实。
  4. 客户减免调用 FCS 费用调整接口;客服退款生成独立退款指令并进入支付/账务执行。
  5. 执行请求使用处理单号作为幂等键,重复点击不得重复记账或退款。
  6. 回写执行结果、前后快照、外部流水号和对账状态,并更新关联工单。

如组织要求创建人与执行人分离,通过角色权限和 SOP 配置实现;一期不抽象为通用审批流。

6.3 后台收到减免需求后的 FCS 处理要求

本节仅描述“客户减免”进入 FCS 后的完整处理要求。客服退款原则上由退款/支付链路执行;如退款成功后需要同步客户还款、溢缴或账务备注,由后台或支付服务按 FCS 接口回写结果。

6.3.1 FCS 接收内容

后台向 FCS 发起客户减免时,必须提交结构化请求,至少包括:

字段要求
处理单号必填,作为 FCS 幂等键和业务关联号
App必填,用于校验产品线和数据归属
客户 ID必填,用于校验借款归属
借款 ID必填,客户减免必须绑定具体借款
期次必填,减免必须落到具体期次或明确的费用账务对象
费用项明细客户减免必填数组;每项只允许一个白名单费用项,不允许本金,且同一处理单不得重复
申请减免金额必填,来自各费用项 requested_amount 合计
可执行减免金额必填,来自各费用项后台/FCS 试算结果合计;执行时仍按费用项逐项复验
原因码必填,用于账务流水、审计和后续统计
关联工单号必填,用于客诉闭环
操作人必填,记录后台执行人
trace_id必填,用于链路追踪

6.3.2 FCS 执行前校验

FCS 收到请求后必须重新校验,不得仅信任后台前端或后台服务的试算结果:

  1. 校验幂等键是否已处理;已成功的重复请求直接返回原成功结果,不重复入账。
  2. 校验 App、客户、借款、期次归属一致。
  3. 校验借款状态允许减免;已结清、已核销、账务锁定、正在还款入账或存在冲正中的借款不得直接减免。
  4. 逐项校验费用项属于减免白名单,且不是本金或本金衍生口径;校验同一处理单内费用项类型不重复。
  5. 重新计算当前未还费用、已还费用、在途还款、在途减免和可减免上限。
  6. 逐项校验可执行金额大于等于 0,且不超过该费用项当前可减免金额;至少一个费用项的可执行金额必须大于 0。
  7. 逐项校验同一客户、借款、期次、费用项不存在未完成的 FCS 减免处理。
  8. 校验原因码、操作人和关联工单号完整,缺失时拒绝执行。

任一校验失败时,FCS 不得落账,应返回标准失败码、失败原因、当前账务快照和建议处理动作。后台处理单状态更新为 VALIDATION_FAILEDEXECUTION_FAILED,由用户重新核实。

6.3.3 FCS 账务处理

FCS 校验通过后,应按原子事务完成以下处理:

  1. 按费用项明细生成减免流水,记录处理单号、费用项、金额、原因码、操作人和关联工单;处理单总额仅作为汇总,不替代逐项流水。
  2. 冻结或锁定当前借款/期次的相关费用账务对象,避免还款入账和减免同时修改同一金额。
  3. 调减指定费用项的应还金额或未还金额,不修改借款本金,不覆盖历史还款流水。
  4. 重新计算期次应还合计、剩余应还、逾期相关金额和借款汇总金额。
  5. 如果减免导致当前期次或借款达到结清条件,由 FCS 按既有账务规则更新期次/借款状态。
  6. 写入账务前后快照,包括调整前金额、调整金额、调整后金额、影响的费用项和期次。
  7. 释放账务锁,并返回 FCS 流水号、处理结果、最新还款计划摘要和账务快照。

FCS 不得直接删除或改写历史费用生成记录、历史还款流水、渠道流水和对账记录。减免应作为独立账务调整流水体现。

6.3.4 FCS 结果回写与查询

FCS 执行完成后,后台必须能够查询并展示以下结果:

  • 各费用项对应的 FCS 减免流水号。
  • 处理单号与 FCS 幂等键。
  • 减免费用项、减免金额、币种。
  • 调整前费用金额、调整后费用金额。
  • 调整前应还合计、调整后应还合计。
  • 借款状态和期次状态变化。
  • 执行时间、执行人、原因码、关联工单号。
  • FCS 返回码、返回信息和 trace_id。

后台收到 FCS 成功结果后,只有全部费用项均成功且处理单总额核对一致时,处理单状态才更新为 EFFECTIVE;对账状态更新为 已匹配或等待后续对账任务确认。任一费用项处理中或失败时,处理单保留对应状态并展示逐项结果。关联工单应写入处理结果摘要,供客服回访和关闭客诉。

6.3.5 FCS 异常处理

场景FCS 处理后台处理单状态
幂等键已成功返回原成功结果,不重复入账EFFECTIVE
幂等键处理中返回处理中和查询地址/查询标识PROCESSING
账务状态变化拒绝执行,返回最新快照和差异原因VALIDATION_FAILED
可减免金额不足拒绝执行,返回当前可减免金额VALIDATION_FAILED
账务锁冲突返回可重试失败或处理中PROCESSINGEXECUTION_FAILED
系统异常或超时不允许后台直接重发新单,必须先按幂等键查询PROCESSING
部分写入不一致FCS 内部冲正或人工排查,后台不得手工改成功RECONCILE_EXCEPTION

后台重试 FCS 执行时必须复用原处理单号和幂等键。不得因为超时或失败创建新的 FCS 减免单来绕过原结果查询。

6.4 Reverse Waiver(未成功误操作撤回)

用于处理单创建或校验后发现 App、客户、借款、期次、费用项、金额、原交易或证据选择错误的场景。

撤回规则:

  1. 前端按钮名称统一为 Reverse Waiver,业务含义是“未成功执行处理单的误操作撤回”,不是成功账务结果的反向冲正。
  2. 仅允许撤回未成功执行的处理单,包括 DRAFTREADY_TO_EXECUTEVALIDATION_FAILEDEXECUTION_FAILEDRECONCILE_EXCEPTION 等未产生最终成功账务结果的状态。
  3. PROCESSING 状态如账务/支付指令已经发出,前端按钮置灰;服务端查询幂等键和外部结果后收敛为成功、失败或对账异常,不直接撤回。
  4. EFFECTIVEREFUNDED 不允许直接撤回;若属于成功后的误操作,必须创建新的反向更正处理单,并保留原单不可变。
  5. 撤回必须填写撤回原因,服务端记录撤回人、时间、原状态、撤回原因、设备/IP 和关联工单。
  6. 撤回后的处理单状态为 WITHDRAWN,只读,不允许执行、重试或再次撤回。
  7. 撤回不删除原处理单,不删除证据,不覆盖原校验结果和原执行尝试记录。

7. 状态机

7.1 状态流转图

stateDiagram-v2
    [*] --> DRAFT: 创建草稿
    DRAFT --> READY_TO_EXECUTE: 提交并校验通过
    DRAFT --> VALIDATION_FAILED: 校验失败
    DRAFT --> WITHDRAWN: Reverse Waiver

    VALIDATION_FAILED --> READY_TO_EXECUTE: 补充证据并重新校验通过
    VALIDATION_FAILED --> WITHDRAWN: Reverse Waiver

    READY_TO_EXECUTE --> PROCESSING: Execute
    READY_TO_EXECUTE --> WITHDRAWN: Reverse Waiver
    READY_TO_EXECUTE --> REJECTED: 业务拒绝
    READY_TO_EXECUTE --> CANCELLED: 执行前取消

    PROCESSING --> EFFECTIVE: FCS 减免成功
    PROCESSING --> REFUNDED: 退款/渠道撤销成功
    PROCESSING --> EXECUTION_FAILED: 执行失败
    PROCESSING --> RECONCILE_EXCEPTION: 对账异常

    EXECUTION_FAILED --> PROCESSING: Retry
    EXECUTION_FAILED --> WITHDRAWN: Reverse Waiver

    RECONCILE_EXCEPTION --> PROCESSING: Retry / 查询原结果
    RECONCILE_EXCEPTION --> WITHDRAWN: Reverse Waiver(确认未成功)

    EFFECTIVE --> [*]
    REFUNDED --> [*]
    REJECTED --> [*]
    CANCELLED --> [*]
    WITHDRAWN --> [*]

7.2 状态说明

状态说明允许动作
DRAFT表单尚未提交编辑、重新校验、Reverse Waiver
READY_TO_EXECUTE校验通过,等待有权限人员执行执行、Reverse Waiver
VALIDATION_FAILED执行前复验失败补充证据、重新校验、Reverse Waiver
PROCESSING已发送账务或退款指令只读、查询结果
EFFECTIVE减免已生效只读、对账
REFUNDED退款成功只读、对账
EXECUTION_FAILED执行失败安全重试、Reverse Waiver、人工排查
RECONCILE_EXCEPTION对账异常或渠道结果不一致安全重试、Reverse Waiver、人工排查
REJECTED业务拒绝只读
CANCELLED执行前取消只读
WITHDRAWN误操作撤回,且未形成最终成功账务结果只读

任何状态变化都必须由服务端校验,不允许前端直接改状态。详情页操作按钮按状态和权限共同控制:ExecuteREADY_TO_EXECUTE 可点,RetryEXECUTION_FAILEDRECONCILE_EXCEPTION 可点,RevalidateDRAFTVALIDATION_FAILED 可点,Reverse WaiverDRAFTREADY_TO_EXECUTEVALIDATION_FAILEDEXECUTION_FAILEDRECONCILE_EXCEPTION 可点。

8. 服务端安全控制

  • 费用项白名单和金额上限由服务端配置,前端值不可信。
  • 不允许本金减免;客服退款不得改变借款本金账务口径。
  • 创建与执行均检查 App 数据范围和动作权限。
  • 相同客户、借款、期次、费用项或原交易存在在途处理单时禁止重复创建。
  • 执行前重新计算可减免金额或可退款金额,不使用前端试算作为最终依据。
  • 退款账户必须来自已验证账户快照;账户变化需重新核验,不能直接执行。
  • 所有执行接口支持幂等、超时查询、失败重试和结果对账。
  • Reverse Waiver 接口必须复验当前执行状态;已成功生效或已成功退款的处理单不得撤回,只能通过新的反向更正单处理。
  • 记录操作前后快照、操作人、设备/IP、原因、工单、外部流水和结果。

9. 异常与对账

  • 调用超时:先查询原幂等键结果,再决定是否重试。
  • 账务状态变化:阻止执行并返回差异原因。
  • 退款回调未知:保持 PROCESSING,由主动查询和对账任务收敛。
  • 执行失败:保留失败原因和原指令,安全重试不得生成新业务单。
  • 部分成功:禁止手工改为成功,由账务/支付查询结果收敛。
  • Reverse Waiver:撤回前必须查询原幂等键和外部状态;若未成功则转为 WITHDRAWN,若已成功则禁止撤回并提示创建反向更正单。

日报或对账视图至少按 App、类型、原因、金额、状态、处理人和日期统计。

10. 审计事件

  • WAIVER_CASE_CREATED
  • WAIVER_CASE_VALIDATED
  • WAIVER_EXECUTION_SUBMITTED
  • WAIVER_EXECUTION_SUCCEEDED
  • WAIVER_EXECUTION_FAILED
  • REFUND_CASE_CREATED
  • REFUND_EXECUTION_SUBMITTED
  • REFUND_EXECUTION_SUCCEEDED
  • REFUND_EXECUTION_FAILED
  • HANDLING_CASE_CANCELLED
  • HANDLING_CASE_WITHDRAWN
  • HANDLING_EXECUTION_RETRIED

前端 Reverse Waiver 操作对应审计事件 HANDLING_CASE_WITHDRAWN

11. 一期验收标准

  • 可从借款详情或关联工单创建客户减免/客服退款处理单,并自动带入业务上下文。
  • 退费减免列表页标题右侧展示 Create Handling Case,位置和样式与工单中心 New Ticket 一致。
  • 处理单列表支持关键词、App、类型、状态、费用/退款项、原因码、处理人筛选,所有下拉选择支持输入筛选。
  • 点击处理单号或详情按钮必须新开后台 tab 展示详情,不在列表下方展示详情。
  • 创建时必须校验工单、App、客户、借款、期次、金额、原因和证据。
  • 单笔客户减免可以添加多个不同费用项;费用项类型不得重复,每项申请金额/可执行金额独立校验,处理单展示并校验两类金额合计。
  • 新建和详情页字段必须结构化展示,金额区分申请金额和可执行金额,证据、校验结果、执行保护规则、执行方式、对账状态、幂等键和 Reverse Waiver 信息均可读。
  • 一期流程不创建、查询或依赖审批实例、审批任务和审批流。
  • 无创建权限不能建单,无执行权限不能调用执行接口。
  • 客户减免不能减本金,客服退款必须关联原交易和已验证退款账户。
  • 执行前账务复验失败时不得继续执行,并展示可理解的差异原因。
  • 同一处理单重复提交、超时重试和重复回调均不得重复记账或退款。
  • 未执行成功的处理单详情页必须展示可用操作按钮;至少包括 ExecuteRetryRevalidateReverse Waiver,并按状态和权限启用/禁用。
  • Reverse Waiver 仅在 DRAFTREADY_TO_EXECUTEVALIDATION_FAILEDEXECUTION_FAILEDRECONCILE_EXCEPTION 状态可点;在 PROCESSINGEFFECTIVEREFUNDEDREJECTEDCANCELLEDWITHDRAWN 状态置灰。
  • Reverse Waiver 必须生成 WITHDRAWN 状态和审计记录;已成功生效或已退款的处理单不能撤回,只能创建反向更正单。
  • 执行结果、失败原因、前后快照、外部流水、对账结果和审计日志可查询。
  • 处理结果可回写关联工单,支持客服回访和关闭客诉。

12. 一期下拉选项

原型按一期业务需要 mock 以下选项;后续如已有后台配置或字典表,前端应改为读取配置,但含义不得低于本清单完整度。

字段选项
类型Customer Waiver、Customer Service Refund
费用/退款项Service Fee、Management Fee、Interest、Penalty Interest、Overdue Interest、Insurance Fee、Channel Fee、Overpaid Principal、Duplicate Charge、Customer Service Compensation
状态DRAFT、VALIDATION_FAILED、READY_TO_EXECUTE、PROCESSING、EFFECTIVE、REFUNDED、EXECUTION_FAILED、RECONCILE_EXCEPTION、REJECTED、CANCELLED、WITHDRAWN
原因码DUPLICATE_CHARGE、OVERPAYMENT_CONFIRMED、SYSTEM_CALCULATION_ERROR、CUSTOMER_SERVICE_EXCEPTION、CHANNEL_REVERSAL_REQUIRED、PAYMENT_PROVIDER_ERROR、DISBURSEMENT_DELAY_COMPENSATION、MANUAL_ADJUSTMENT_DENIED、WRONG_COMPONENT_WITHDRAWN
执行方式Auto Posting、Finance Manual Review、Refund Gateway Transfer、Manual Ledger Adjustment、Provider Reversal
对账状态Not Started、Matched、Pending Callback、Pending Manual Reconcile、Amount Mismatch、Provider Failed、Provider Unknown、Reversed
处理人cs.amina、cs.mary、support.lead、finance.grace、finance.ops、payment.ops
Reverse Waiver 原因Wrong customer selected、Wrong App selected、Wrong loan / period selected、Wrong fee component selected、Wrong amount entered、Duplicate case created、Evidence is insufficient、Provider result changed before execution