# Change: 商户池详情与商户凭证契约 ## Why `docs/产品迭代8月份/支付商户优化.md` 记录了支付商户与商户池管理页的三个问题,加上运营补充的凭证契约与权限要求,本次处理三件事: - 商户池详情与支付商户详情的入口不一致:支付商户是点击名称进入独立详情页,商户池却是行操作里的详情抽屉,且详情没有展示接口已返回的全部字段(例如 `time_period_started_at`),成员只给出数量。 - 点击“新增商户池”时页面抛出 `Maximum recursive updates exceeded in component `,新增和编辑商户池流程完全不可用。 - 商户凭证的字段契约此前只存在于接口文档:必填键由 `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` 等内部标识。 - 不改动商户池轮询策略、成员排序规则和阈值换算规则。