forked from wangziqi/gongxue-base
feat: add reconciliation issue workflow
This commit is contained in:
@@ -1752,11 +1752,11 @@ approved/processing -> failed
|
||||
- 退款通知地址由支付账户或 `submit_provider_refund.providerNotifyUrl` 配置,后端公开接收路径为 `POST /api/commerce/refunds/notify/wechat_pay?tenantId=<tenantId>`、`POST /api/commerce/refunds/notify/alipay?tenantId=<tenantId>`。这是支付平台回调地址,Taro 前端不要主动调用。
|
||||
- 退款通知只会推进已经审核/处理中的退款申请;未审核的 `requested` 退款不能被外部通知直接落账。
|
||||
- 已经 `succeeded` 的退款不能再次查询或再次标记成功,避免订单退款金额重复累加。前端应按接口返回状态展示,不要假设点击后立即到账。
|
||||
- 自动补偿 worker 已接入:支付漏通知和处理中退款会由后端定时查询供应商并幂等落账。资金对账已支持租户后台手工/API 导入供应商账单并查询差异;官方账单自动下载、差错处理工单和异常订单运营台后续继续补。生产联调时仍需保留人工确认/失败登记入口。
|
||||
- 自动补偿 worker 已接入:支付漏通知和处理中退款会由后端定时查询供应商并幂等落账。资金对账已支持租户后台手工/API 导入供应商账单、查询差异和差错工单处理;官方账单自动下载和异常订单运营台后续继续补。生产联调时仍需保留人工确认/失败登记入口。
|
||||
|
||||
### 租户后台资金对账
|
||||
|
||||
资金对账是租户后台/财务运营能力,学生端不要接。对账接口只生成差异台账和审计,不会自动修改订单、支付、退款或权益。前端不能根据对账结果自行开通、退款或撤销权益。
|
||||
资金对账是租户后台/财务运营能力,学生端不要接。对账接口只生成差异台账、差错工单和审计,不会自动修改订单、支付、退款或权益。前端不能根据对账结果或工单状态自行开通、退款或撤销权益。
|
||||
|
||||
预览账单:
|
||||
|
||||
@@ -1804,6 +1804,78 @@ GET /api/commerce/reconciliation/items?batchId=<batchId>&matchStatus=missing_pro
|
||||
GET /api/commerce/reconciliation/anomalies?provider=wechat_pay
|
||||
```
|
||||
|
||||
从异常明细创建差错工单:
|
||||
|
||||
```text
|
||||
POST /api/commerce/reconciliation/issues/create
|
||||
权限:tenant:reconciliation:write
|
||||
body: {
|
||||
"itemId": "<reconciliationItemId>",
|
||||
"assignedTo": "<tenantStaffUserId,可选>",
|
||||
"dueAt": "2026-06-30T10:00:00.000Z",
|
||||
"summary": "微信账单金额不一致核对",
|
||||
"note": "先交给财务核对供应商流水",
|
||||
"metadata": {
|
||||
"source": "tenant-admin"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
重复对同一未关闭异常明细创建工单时,后端会返回原工单并带 `idempotent=true`。`matched/ignored` 明细不可创建工单。
|
||||
|
||||
查询工单:
|
||||
|
||||
```text
|
||||
GET /api/commerce/reconciliation/issues?status=open&assignedTo=<userId>&batchId=<batchId>&orderNo=<orderNo>
|
||||
权限:tenant:reconciliation:read
|
||||
```
|
||||
|
||||
工单状态流转:
|
||||
|
||||
```text
|
||||
POST /api/commerce/reconciliation/issues/status
|
||||
权限:tenant:reconciliation:write
|
||||
body: {
|
||||
"issueId": "<issueId>",
|
||||
"action": "start | assign | resolve | ignore | escalate | reopen",
|
||||
"assignedTo": "<userId,assign 时必填>",
|
||||
"resolutionType": "provider_confirmed | local_corrected | manual_adjustment | false_positive | duplicate | write_off",
|
||||
"note": "处理备注",
|
||||
"metadata": {
|
||||
"voucherNo": "ADJ-20260629-001"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
查看事件轨迹:
|
||||
|
||||
```text
|
||||
GET /api/commerce/reconciliation/issues/events?issueId=<issueId>
|
||||
权限:tenant:reconciliation:read
|
||||
```
|
||||
|
||||
工单状态:
|
||||
|
||||
```text
|
||||
open 新建待处理
|
||||
investigating 处理中
|
||||
escalated 已升级
|
||||
resolved 已解决
|
||||
ignored 已忽略
|
||||
```
|
||||
|
||||
处理结论:
|
||||
|
||||
```text
|
||||
none 未处理
|
||||
provider_confirmed 已按供应商确认
|
||||
local_corrected 已通过专门业务命令修正本地记录
|
||||
manual_adjustment 已登记人工调整凭证
|
||||
false_positive 误报
|
||||
duplicate 重复账单/重复工单
|
||||
write_off 财务核销
|
||||
```
|
||||
|
||||
`matchStatus` 取值:
|
||||
|
||||
```text
|
||||
@@ -1821,7 +1893,7 @@ ignored 无效行或不符合本次 billType
|
||||
- 财务导入页建议使用 preview -> 人工确认 -> import -> anomalies 的流程。
|
||||
- `sourceHash` 可作为同一文件内容的识别线索,但当前接口不会阻止重复导入;前端应展示最近同名/同 hash 批次提醒。
|
||||
- 金额统一是分,前端不要传元。
|
||||
- 对账差异只是运营判断依据,最终订单修正必须走退款、补偿、人工确认或后续差错处理接口。
|
||||
- 对账差异和差错工单只是运营判断依据,`resolve/ignore` 不会落账。最终订单修正必须走退款、补偿、人工确认或后续专门的人工调整接口。
|
||||
- 当前后端支持 JSON 行导入;CSV/Excel 可以先由前端或后续后端 parser 转成上述 `rows`。微信/支付宝官方账单自动下载仍是后续后端任务。
|
||||
|
||||
### 激活码预检查与兑换
|
||||
|
||||
Reference in New Issue
Block a user