策略设置(运营)
面向平台运营。 普通用户和企业商户不需要改这里;企业可以在
/console/organization配置自己的审批策略。赔付比例、平台服务费、争议时限、担保范围不再写死在代码里,而是后台可改的设置。 改完对下一笔结算 / 新争议生效,不需要发版。
四个设置项
| 设置 | 控制什么 | 默认值 |
|---|---|---|
赔付条款 compensation.schedule | 争议事由 → 退款比例 → 依据条款 | 缺件 30% / 质量不符 50% / 逾期 10% |
赔付上限 compensation.capAmount | 单笔赔付的上限(分);超过按上限赔付 | 不限(null) |
平台服务费 settlement.platformFeeBps | 结算时从交付方所得中扣多少 | 0(不收费) |
争议时限 dispute.slaHours | 发起争议时写入 slaDueAt(多少小时内应处理) | 72 小时 |
超时动作 dispute.onTimeout | 到期后:不动作 / 自动放款 / 自动退款 | hold(不动作) |
担保范围 guarantee.scope | process:附条件接受即放款;quality:附条件接受不结算 | process |
比例与费率都用基点存(3000 = 30%,1000 = 10%),页面按百分比填写。
打开设置页
访问 /console/policies(需要登录)。这是控制台里的后台页,不在普通用户的主导航中。
也可以用 API:
bash
# 查看当前设置(含版本号)
curl -s /api/sys/policy-settings -H "Authorization: Bearer <token>"
# 修改:把缺件退款改成 50%
curl -s -X PUT /api/sys/policy-settings \
-H "Authorization: Bearer <token>" -H 'Content-Type: application/json' \
-d '{
"compensation": {
"schedule": [
{ "grounds": "missing_items", "rateBps": 5000, "clause": "合同 §5.2:缺件按 50% 退款" }
]
},
"expectedVersion": 3,
"note": "商务确认缺件退款从 30% 调到 50%"
}'
# 变更历史
curl -s '/api/sys/policy-settings/history?limit=10' -H "Authorization: Bearer <token>"
# 恢复默认
curl -s -X POST /api/sys/policy-settings/reset \
-H "Authorization: Bearer <token>" -H 'Content-Type: application/json' \
-d '{"expectedVersion": 4}'修改后会发生什么
- 新争议:按新的
slaHours写slaDueAt。 - 下一次结算:按新费率从交付方所得中扣
toPlatform;按新条款算赔付金额。 - 已结算的单不会重算 —— 托管是终态,痕迹只追加。要纠正历史单属于人工处置,不是改设置。
版本与审计(为什么会被 409)
每次保存都会:
- 校验整份设置(比例越界、条款缺依据、事由重复、SLA 越界……)——不合格就整单拒绝;
- 版本号 +1;
- 记录一条变更(谁改的、改前改后、为什么)。设置与审计在同一事务里,不会出现"改了但查不到谁改的"。
页面保存时会带上你读到的版本号(expectedVersion)。如果同事在你之前改了,你会收到冲突提示 —— 刷新后重新提交,而不是覆盖对方。
几条边界
- 默认值(30% / 50% / 10% / 72h / 只担保过程)是假设基线,不是法务结论;请以商务/法务确认的条款为准。
slaDueAt会写入;dispute.onTimeout控制到期动作(hold默认不动作 /release自动放款 /refund自动退款),由每分钟的扫描任务执行。- 赔付上限已可配(
compensation.capAmount,默认不限);准备金仍没有设置项。 - 平台服务费只影响划转指令里的
toPlatform,不碰真钱。