49 lines
3.9 KiB
Markdown
49 lines
3.9 KiB
Markdown
# Change: 商户池详情与商户凭证契约
|
||
|
||
## Why
|
||
|
||
`docs/产品迭代8月份/支付商户优化.md` 记录了支付商户与商户池管理页的三个问题,加上运营补充的凭证契约与权限要求,本次处理三件事:
|
||
|
||
- 商户池详情与支付商户详情的入口不一致:支付商户是点击名称进入独立详情页,商户池却是行操作里的详情抽屉,且详情没有展示接口已返回的全部字段(例如 `time_period_started_at`),成员只给出数量。
|
||
- 点击“新增商户池”时页面抛出 `Maximum recursive updates exceeded in component <PaymentMerchantPoolManagement>`,新增和编辑商户池流程完全不可用。
|
||
- 商户凭证的字段契约此前只存在于接口文档:必填键由 `payment_method` 与 `provider_type` 组合决定,前端提交前没有字段枚举与类型校验,容易出现漏填必填键、`ali_production` / `ali_pay_expire_minutes` 以字符串提交、`merchant_identity` 与凭证字段不一致等会被后端拒绝的请求。
|
||
|
||
“更换凭证”表单的交互(手工逐行填写字段名与字段值、值不回显)按反馈保持原有行为,本次只在其上叠加字段契约校验。
|
||
|
||
## What Changes
|
||
|
||
- 新增商户池详情页,并改为点击列表中商户池名称进入,与支付商户详情保持一致;移除列表行操作中的“详情”入口。
|
||
- 商户池详情页展示详情接口返回的业务字段:商户池名称、支付方式、启停状态、成员数量、成员商户、轮询策略、统计周期、金额/笔数/时间阈值、时间起点、路由世代、备注,以及接口返回时的创建时间和更新时间。
|
||
- 成员商户按支付商户名称展示,不展示 `member_ids` 原始 ID;名称无法解析时展示“未知商户”占位文案。
|
||
- 合并商户池表单中 `form.member_ids` 与 `orderedMemberIds` 的双向 `watch` 为单一数据源,消除递归更新错误,同时保持拖拽排序结果按顺序提交。
|
||
- 将商户凭证字段枚举(各 `payment_method` + `provider_type` 组合的必填键与可选键)固化到前端类型模块,并在提交前校验字段枚举、必填键、值类型(布尔/整数/字符串)与 `merchant_identity` 一致性。
|
||
- 凭证写入表单展示当前服务商组合的必填/可选字段提示,降低漏填必填键的概率。
|
||
- 明确凭证访问控制:仅超级管理员(`user_type=1`)与平台用户(`user_type=2`)可读写商户凭证,凭证内容不进入日志、审计与支付快照。
|
||
|
||
## Impact
|
||
|
||
- Affected specs: `payment-merchant-pool-management`
|
||
- Affected code:
|
||
- `src/views/settings/payment-merchant-pools/pool-detail.vue`(新增)
|
||
- `src/views/settings/payment-merchant-pools/components/PoolManagement.vue`
|
||
- `src/views/settings/payment-merchant-pools/components/MerchantManagement.vue`
|
||
- `src/types/api/paymentMerchantPools.ts`
|
||
- `src/router/routes/asyncRoutes.ts`
|
||
- `src/router/routesAlias.ts`
|
||
- `src/locales/langs/zh.json`、`src/locales/langs/en.json`
|
||
- Dependencies:
|
||
- 后端 `GET /api/admin/payment-merchant-pools/{id}` 返回 `member_ids`、`routing_epoch`、`time_period_started_at` 等字段。
|
||
- 后端按 `payment_method` 与 `provider_type` 组合校验凭证必填键与值类型。
|
||
- 成员商户名称由前端使用同 `payment_method` 的支付商户列表解析,不要求后端在商户池详情返回名称。
|
||
- Compatibility:
|
||
- 不改变“更换凭证”表单的交互方式与凭证值不回显约束。
|
||
- 不影响支付商户列表与支付商户详情页的信息结构。
|
||
- 不改变商户池创建、更新、启用、停用的请求结构。
|
||
|
||
## Non-Goals
|
||
|
||
- 不按服务商渲染带中文标签的固定凭证表单,仍保留“字段名 + 字段值”的通用编辑方式。
|
||
- 不新增商户池详情、凭证校验之外的后端接口。
|
||
- 不在商户池详情页展示 `id`、`member_ids` 等内部标识。
|
||
- 不改动商户池轮询策略、成员排序规则和阈值换算规则。
|