# 商户入驻审核 — 测试用例

> **依据：** 《商户入驻审核功能需求.md》v1.1、《商户入驻审核技术方案.md》v1.1  
> **范围：** C 端 `POST /api/merchant/entry/apply`（完整字段校验）；平台 `/agri/merchantEntryApply`（列表、待审数、详情、通过→公示、完成公示、驳回）；公示完成后落库商户/店铺/经营账号；会员站内消息；协议 Facade 协作  
> **排除：** 平台商户管理代录入、商品/订单、入驻协议配置页 UI、短信通知  
> **环境：** RuoYi v3.9.2；平台 Token（`agri:merchantEntryApply:*`）；会员 Token（C 端）；UI 使用 **Playwright + Google Chrome（channel: chrome）**

---

## 用例编号说明

| 前缀 | 类型 | 工具 |
|------|------|------|
| MEA-UT-xxx | 单元测试 | JUnit 5 + Mockito |
| MEA-API-xxx | 接口测试 | Apifox / MockMvc |
| MEA-UI-xxx | 界面测试 | Playwright（Chrome） |

---

## 一、单元测试

### MEA-UT-001 提交申请：协议未勾选拒绝

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-UT-001 |
| **测试模块** | 商户入驻审核 |
| **测试项** | `submitApply` 协议校验 |
| **测试类型** | 单元测试 |
| **测试工具** | JUnit + Mockito |
| **测试目的** | 验证 EA8、AP3 |
| **前置条件** | `agreementAccepted=false` |
| **测试步骤** | 调用 `submitApply` |
| **预期结果** | `ServiceException`；不插入 apply |

### MEA-UT-002 提交申请：同会员已有待审或公示中拒绝

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-UT-002 |
| **测试模块** | 商户入驻审核 |
| **测试项** | blocking 唯一 |
| **测试类型** | 单元测试 |
| **测试工具** | JUnit |
| **测试目的** | 验证 EA11 |
| **前置条件** | `countBlockingByMemberId` 返回 1（status=0 或 3） |
| **测试步骤** | `submitApply` |
| **预期结果** | 失败；提示含「待审核」或「公示中」 |

### MEA-UT-003 提交申请：企业统一社会信用代码重复

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-UT-003 |
| **测试模块** | 商户入驻审核 |
| **测试项** | 唯一性校验 |
| **测试类型** | 单元测试 |
| **测试工具** | JUnit |
| **测试目的** | 验证 EA12 |
| **前置条件** | 商户表或待审申请已存在相同 `credit_code` |
| **测试步骤** | 提交企业申请 |
| **预期结果** | 失败；不插入 |

### MEA-UT-004 提交申请：个人证件号重复

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-UT-004 |
| **测试模块** | 商户入驻审核 |
| **测试项** | 唯一性校验 |
| **测试类型** | 单元测试 |
| **测试工具** | JUnit |
| **测试目的** | 验证 EA12 |
| **前置条件** | 已存在相同 `id_card_no` |
| **测试步骤** | 提交个人申请 |
| **预期结果** | 失败 |

### MEA-UT-005 提交申请：成功写入待审

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-UT-005 |
| **测试模块** | 商户入驻审核 |
| **测试项** | `submitApply` |
| **测试类型** | 单元测试 |
| **测试工具** | JUnit |
| **测试目的** | 验证主流程 |
| **前置条件** | 校验均通过 |
| **测试步骤** | `submitApply` |
| **预期结果** | `apply_status=0`；`form_json` 非空；`apply_time` 有值 |

### MEA-UT-006 审核通过：待审→公示中（不落库）

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-UT-006 |
| **测试模块** | 商户入驻审核 |
| **测试项** | `approve` |
| **测试类型** | 单元测试 |
| **测试工具** | JUnit + Mockito |
| **测试目的** | 验证 EA5a、§8 |
| **前置条件** | `apply_status=0` |
| **测试步骤** | `approve(applyId, dto, "admin")` |
| **预期结果** | apply=3；`publicity_start_time`/`publicity_end_time` 有值；**不** 调用 `merchantMapper.insert`/`createShop`；发送公示消息 |

### MEA-UT-006a 完成公示：公示中→已完成并落库

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-UT-006a |
| **测试模块** | 商户入驻审核 |
| **测试项** | `completePublicity` |
| **测试类型** | 单元测试 |
| **测试工具** | JUnit + Mockito |
| **测试目的** | 验证 EA5、§8 |
| **前置条件** | `apply_status=3`；`publicity_end_time` 已到期 |
| **测试步骤** | `completePublicity(applyId, "admin")` |
| **预期结果** | apply=1；`merchant_id`/`shop_id` 已回填；调用 `bindAccountOnMerchantCreate`、`createShop` |

### MEA-UT-007 审核通过：非待审拒绝

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-UT-007 |
| **测试模块** | 商户入驻审核 |
| **测试项** | `approve` 状态校验 |
| **测试类型** | 单元测试 |
| **测试工具** | JUnit |
| **测试目的** | 验证 EA3 |
| **前置条件** | `apply_status=1` 或 `2` |
| **测试步骤** | `approve` |
| **预期结果** | 失败；商户不再 insert |

### MEA-UT-008 审核通过：商户名称重复失败

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-UT-008 |
| **测试模块** | 商户入驻审核 |
| **测试项** | approve 唯一性 |
| **测试类型** | 单元测试 |
| **测试工具** | JUnit |
| **测试目的** | 验证 §8.1 |
| **前置条件** | 待审申请；库中已有同名 `merchant_name` |
| **测试步骤** | `approve` |
| **预期结果** | 失败；apply 仍为 0 |

### MEA-UT-008a 完成公示：公示未到期拒绝

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-UT-008a |
| **测试模块** | 商户入驻审核 |
| **测试项** | `completePublicity` 时间校验 |
| **测试类型** | 单元测试 |
| **测试工具** | JUnit |
| **测试目的** | 验证 §8 |
| **前置条件** | `apply_status=3`；`publicity_end_time` 在未来 |
| **测试步骤** | `completePublicity` |
| **预期结果** | 失败；不 insert 商户 |

### MEA-UT-009 审核通过：店铺名称重复失败

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-UT-009 |
| **测试模块** | 商户入驻审核 |
| **测试项** | approve 唯一性 |
| **测试类型** | 单元测试 |
| **测试工具** | JUnit |
| **测试目的** | 验证 §8.1 |
| **前置条件** | `shop_name` 已被占用 |
| **测试步骤** | `approve` |
| **预期结果** | 失败；仍为待审 |

### MEA-UT-010 审核驳回：须填原因

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-UT-010 |
| **测试模块** | 商户入驻审核 |
| **测试项** | `reject` |
| **测试类型** | 单元测试 |
| **测试工具** | JUnit |
| **测试目的** | 验证 EA4 |
| **前置条件** | `apply_status=0`；`rejectReason` 空 |
| **测试步骤** | `reject` |
| **预期结果** | 失败；status 仍为 0 |

### MEA-UT-011 审核驳回：成功不发商户

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-UT-011 |
| **测试模块** | 商户入驻审核 |
| **测试项** | `reject` |
| **测试类型** | 单元测试 |
| **测试工具** | JUnit |
| **测试目的** | 验证 EA6 |
| **前置条件** | 待审申请 |
| **测试步骤** | `reject(reason="资料不全")` |
| **预期结果** | `apply_status=2`；`reject_reason` 已存；**无** merchant insert |

### MEA-UT-012 审核通过：发送公示消息

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-UT-012 |
| **测试模块** | 商户入驻审核 |
| **测试项** | `MemberEntryMessageSupport` |
| **测试类型** | 单元测试 |
| **测试工具** | JUnit |
| **测试目的** | 验证 EA14 |
| **前置条件** | approve 进入公示成功 |
| **测试步骤** | 验证 `sendPublicity` 被调用 |
| **预期结果** | 消息含公示结束时间 |

### MEA-UT-012a 完成公示：发送入驻完成消息

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-UT-012a |
| **测试模块** | 商户入驻审核 |
| **测试项** | `MemberEntryMessageSupport` |
| **测试类型** | 单元测试 |
| **测试工具** | JUnit |
| **测试目的** | 验证 EA14 |
| **前置条件** | completePublicity 成功 |
| **测试步骤** | 验证 `sendPass` 被调用 |
| **预期结果** | `biz_member_message` 或等价写入 |

### MEA-UT-013 驳回：发送站内消息含原因

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-UT-013 |
| **测试模块** | 商户入驻审核 |
| **测试项** | 消息通知 |
| **测试类型** | 单元测试 |
| **测试工具** | JUnit |
| **测试目的** | 验证 §9 |
| **前置条件** | reject 成功 |
| **测试步骤** | 验证 `sendReject` |
| **预期结果** | 消息 content 含驳回原因 |

### MEA-UT-014 完成公示后商户 biz_complete 按表单计算

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-UT-014 |
| **测试模块** | 商户入驻审核 |
| **测试项** | 商户落库 |
| **测试类型** | 单元测试 |
| **测试工具** | JUnit |
| **测试目的** | 验证 §8 经营信息完整 |
| **前置条件** | 申请含完整经营字段；公示已到期 |
| **测试步骤** | `completePublicity` |
| **预期结果** | 插入商户 `biz_complete=1`；`cert_status=0`（正常） |

### MEA-UT-015 EntryApplyFormMapper 映射店铺 DTO

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-UT-015 |
| **测试模块** | 商户入驻审核 |
| **测试项** | `EntryApplyFormMapper` |
| **测试类型** | 单元测试 |
| **测试工具** | JUnit |
| **测试目的** | 验证 EA7 |
| **前置条件** | 样例 `form_json` |
| **测试步骤** | `toShopCreateDTO` |
| **预期结果** | `shopName/shopAvatar/shopPhone` 与 JSON 一致 |

### MEA-UT-016 会员无昵称：完成公示阻断

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-UT-016 |
| **测试模块** | 商户入驻审核 |
| **测试项** | 经营账号绑定 |
| **测试类型** | 单元测试 |
| **测试工具** | JUnit |
| **测试目的** | 验证 §8、商户 6.7.2 |
| **前置条件** | 公示中申请；申请人 `nick_name` 为空 |
| **测试步骤** | `completePublicity` |
| **预期结果** | 失败；提示昵称不能为空 |

---

## 二、接口测试

### MEA-API-001 C 端提交：未登录 401

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-API-001 |
| **测试模块** | 商户入驻审核 |
| **测试项** | POST /api/merchant/entry/apply |
| **测试类型** | 接口测试 |
| **测试工具** | Apifox |
| **测试目的** | 鉴权 |
| **前置条件** | 无会员 Token |
| **测试步骤** | POST 提交 |
| **预期结果** | 401 |

### MEA-API-002 C 端提交：协议未勾选失败

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-API-002 |
| **测试模块** | 商户入驻审核 |
| **测试项** | POST /apply |
| **测试类型** | 接口测试 |
| **测试工具** | Apifox |
| **测试目的** | 验证 EA8 |
| **前置条件** | 会员 Token；`agreementAccepted=false` |
| **测试步骤** | POST |
| **预期结果** | 失败；msg 含入驻协议 |

### MEA-API-003 C 端提交：成功返回待审

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-API-003 |
| **测试模块** | 商户入驻审核 |
| **测试项** | POST /apply |
| **测试类型** | 接口测试 |
| **测试工具** | Apifox |
| **测试目的** | 主流程 |
| **前置条件** | 协议启用；完整表单；会员 Token |
| **测试步骤** | POST 个人/企业完整数据 |
| **预期结果** | `code=200`；`applyStatus=0`；有 `applyNo` |

### MEA-API-004 C 端重复提交：有待审失败

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-API-004 |
| **测试模块** | 商户入驻审核 |
| **测试项** | POST /apply |
| **测试类型** | 接口测试 |
| **测试工具** | Apifox |
| **测试目的** | 验证 EA11 |
| **前置条件** | 已有待审申请 |
| **测试步骤** | 再次 POST |
| **预期结果** | 失败 |

### MEA-API-005 平台列表：不含代录入商户

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-API-005 |
| **测试模块** | 商户入驻审核 |
| **测试项** | GET /list |
| **测试类型** | 接口测试 |
| **测试工具** | Apifox |
| **测试目的** | 验证 EA1 |
| **前置条件** | 仅平台 POST `/agri/merchant` 新增商户；无 C 端申请 |
| **测试步骤** | GET list |
| **预期结果** | 无对应申请行（或 total=0） |

### MEA-API-006 平台列表：按状态筛选待审

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-API-006 |
| **测试模块** | 商户入驻审核 |
| **测试项** | GET /list |
| **测试类型** | 接口测试 |
| **测试工具** | Apifox |
| **测试目的** | 验证 §5.2 |
| **前置条件** | 存在多状态数据 |
| **测试步骤** | `applyStatus=0` |
| **预期结果** | 全部 `applyStatus=0` |

### MEA-API-007 平台列表：关键词检索会员名称

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-API-007 |
| **测试模块** | 商户入驻审核 |
| **测试项** | GET /list |
| **测试类型** | 接口测试 |
| **测试工具** | Apifox |
| **测试目的** | 验证 EA10、§6 |
| **前置条件** | 已知 `member_code` |
| **测试步骤** | `keyword=会员名` |
| **预期结果** | 命中对应行 |

### MEA-API-008 平台待审数量

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-API-008 |
| **测试模块** | 商户入驻审核 |
| **测试项** | GET /pendingCount |
| **测试类型** | 接口测试 |
| **测试工具** | Apifox |
| **测试目的** | 角标 |
| **前置条件** | 库中 N 条待审 |
| **测试步骤** | GET |
| **预期结果** | `pendingCount=N` |

### MEA-API-009 平台详情：待审可审标志

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-API-009 |
| **测试模块** | 商户入驻审核 |
| **测试项** | GET /{applyId} |
| **测试类型** | 接口测试 |
| **测试工具** | Apifox |
| **测试目的** | 验证 §7、GR9 类比 |
| **前置条件** | 待审申请 |
| **测试步骤** | GET 详情 |
| **预期结果** | 含 subject/biz/shop 分区；`canApprove=true`；`canReject=true` |

### MEA-API-010 平台详情：已通过只读

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-API-010 |
| **测试模块** | 商户入驻审核 |
| **测试项** | GET /{applyId} |
| **测试类型** | 接口测试 |
| **测试工具** | Apifox |
| **测试目的** | 验证 §5.3 |
| **前置条件** | `apply_status=1` |
| **测试步骤** | GET |
| **预期结果** | `canApprove=false`；含 `merchantId`/`shopId` |

### MEA-API-011 平台审核通过（进入公示）

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-API-011 |
| **测试模块** | 商户入驻审核 |
| **测试项** | PUT /approve/{id} |
| **测试类型** | 接口测试 |
| **测试工具** | Apifox |
| **测试目的** | 验证 §8 |
| **前置条件** | `agri:merchantEntryApply:audit`；待审 |
| **测试步骤** | PUT approve |
| **预期结果** | `code=200`；`applyStatus=3`；含 `publicityEndTime`；**商户/店铺尚不可查** |

### MEA-API-011a 平台完成公示

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-API-011a |
| **测试模块** | 商户入驻审核 |
| **测试项** | PUT /completePublicity/{id} |
| **测试类型** | 接口测试 |
| **测试工具** | Apifox |
| **测试目的** | 验证 §8 |
| **前置条件** | 公示中且已到期 |
| **测试步骤** | PUT completePublicity |
| **预期结果** | `code=200`；商户/店铺可查；申请 status=1 |

### MEA-API-012 平台审核驳回缺原因

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-API-012 |
| **测试模块** | 商户入驻审核 |
| **测试项** | PUT /reject |
| **测试类型** | 接口测试 |
| **测试工具** | Apifox |
| **测试目的** | 验证 EA4 |
| **前置条件** | 待审 |
| **测试步骤** | `rejectReason` 为空 |
| **预期结果** | 失败；仍为待审 |

### MEA-API-013 平台审核驳回成功

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-API-013 |
| **测试模块** | 商户入驻审核 |
| **测试项** | PUT /reject |
| **测试类型** | 接口测试 |
| **测试工具** | Apifox |
| **测试目的** | 验证 §9 |
| **前置条件** | 待审 |
| **测试步骤** | `rejectReason="证照模糊"` |
| **预期结果** | status=2；商户表无新记录；会员收到消息 |

### MEA-API-014 对已通过再次 approve 失败

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-API-014 |
| **测试模块** | 商户入驻审核 |
| **测试项** | PUT /approve |
| **测试类型** | 接口测试 |
| **测试工具** | Apifox |
| **测试目的** | 验证 EA3 |
| **前置条件** | status=1 |
| **测试步骤** | PUT approve |
| **预期结果** | 失败 |

### MEA-API-015 无审核权限 403

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-API-015 |
| **测试模块** | 商户入驻审核 |
| **测试项** | PUT /approve 权限 |
| **测试类型** | 接口测试 |
| **测试工具** | Apifox |
| **测试目的** | 验证 §13 |
| **前置条件** | Token 无 `audit` 权限 |
| **测试步骤** | PUT approve |
| **预期结果** | 403 |

### MEA-API-016 协作：入驻协议关闭不可新提交

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-API-016 |
| **测试模块** | 商户入驻审核 |
| **测试项** | 协议 + 提交 |
| **测试类型** | 接口测试 |
| **测试工具** | Apifox |
| **测试目的** | 验证 AP4 |
| **前置条件** | 入驻协议 `enable_flag=0` |
| **测试步骤** | POST apply |
| **预期结果** | 失败；商家入驻暂未开放 |

### MEA-API-017 协作：驳回后重新提交成功

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-API-017 |
| **测试模块** | 商户入驻审核 |
| **测试项** | reject + submit |
| **测试类型** | 接口测试 |
| **测试工具** | Apifox |
| **测试目的** | 验证 EA13 |
| **前置条件** | 申请已驳回 |
| **测试步骤** | 修改资料后 POST 新申请 |
| **预期结果** | 新 `applyId`；status=0 |

### MEA-API-018 协作：完成公示后商户管理可查到

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-API-018 |
| **测试模块** | 商户入驻审核 |
| **测试项** | completePublicity + 商户 list |
| **测试类型** | 接口测试 |
| **测试工具** | Apifox |
| **测试目的** | 验证 §8 |
| **前置条件** | 审核进入公示并完成公示 |
| **测试步骤** | GET `/agri/merchant/list` 按名称搜 |
| **预期结果** | 存在新商户；`cert_status` 正常 |

### MEA-API-019 协作：完成公示后店铺管理可查到

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-API-019 |
| **测试模块** | 商户入驻审核 |
| **测试项** | completePublicity + 店铺 list |
| **测试类型** | 接口测试 |
| **测试工具** | Apifox |
| **测试目的** | 验证首家店 |
| **前置条件** | 审核进入公示并完成公示 |
| **测试步骤** | GET `/agri/shop/list` |
| **预期结果** | 存在申请中店铺名；状态开业 |

### MEA-API-020 C 端我的申请列表（可选）

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-API-020 |
| **测试模块** | 商户入驻审核 |
| **测试项** | GET /api/merchant/entry/my |
| **测试类型** | 接口测试 |
| **测试工具** | Apifox |
| **测试目的** | C 端查询 |
| **前置条件** | 会员有申请记录 |
| **测试步骤** | GET |
| **预期结果** | 含状态、驳回原因 |

---

## 三、界面测试（Playwright · Chrome）

> `npx playwright test --project=chrome`；`PLATFORM_BASE_URL`、`MEMBER_BASE_URL`、对应账号。

### MEA-UI-001 平台入驻审核列表加载

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-UI-001 |
| **测试模块** | 商户入驻审核 |
| **测试项** | 列表页 |
| **测试类型** | 界面测试 |
| **测试工具** | Playwright（Chrome） |
| **测试目的** | 验证 §5.1 |
| **前置条件** | 平台账号已登录；有申请数据 |
| **测试步骤** | 进入「商户入驻审核」菜单 |
| **预期结果** | 表格含申请信息、会员名称、联系人、状态、申请时间、操作 |

### MEA-UI-002 待审核 Tab 与角标

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-UI-002 |
| **测试模块** | 商户入驻审核 |
| **测试项** | 状态筛选 |
| **测试类型** | 界面测试 |
| **测试工具** | Playwright（Chrome） |
| **测试目的** | 验证 §4、§13 |
| **前置条件** | 待审 N 条 |
| **测试步骤** | 点击「待审核」Tab |
| **预期结果** | 仅待审行；角标与 N 一致（若实现） |

### MEA-UI-003 关键词检索会员名称

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-UI-003 |
| **测试模块** | 商户入驻审核 |
| **测试项** | 检索 |
| **测试类型** | 界面测试 |
| **测试工具** | Playwright（Chrome） |
| **测试目的** | 验证 §6 |
| **前置条件** | 已知会员名称 |
| **测试步骤** | 输入关键词 → 查询 → 重置 |
| **预期结果** | 查询命中；重置恢复列表 |

### MEA-UI-004 待审核空态

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-UI-004 |
| **测试模块** | 商户入驻审核 |
| **测试项** | 空态 |
| **测试类型** | 界面测试 |
| **测试工具** | Playwright（Chrome） |
| **测试目的** | 验证 §13 |
| **前置条件** | 无待审数据 |
| **测试步骤** | 筛选待审核 |
| **预期结果** | 「暂无待审核入驻申请」类文案 |

### MEA-UI-005 详情页审核通过进入公示

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-UI-005 |
| **测试模块** | 商户入驻审核 |
| **测试项** | 审核通过 |
| **测试类型** | 界面测试 |
| **测试工具** | Playwright（Chrome） |
| **测试目的** | 验证 §8.3 |
| **前置条件** | 待审申请 |
| **测试步骤** | 查看详情 → 审核通过 → 确认 |
| **预期结果** | 成功提示；状态变「公示中」；展示公示时间；商户/店铺 **尚不可查** |

### MEA-UI-006 详情页驳回未填原因阻断

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-UI-006 |
| **测试模块** | 商户入驻审核 |
| **测试项** | 驳回校验 |
| **测试类型** | 界面测试 |
| **测试工具** | Playwright（Chrome） |
| **测试目的** | 验证 EA4 |
| **前置条件** | 待审 |
| **测试步骤** | 审核驳回 → 原因为空 → 确定 |
| **预期结果** | 校验提示；仍为待审 |

### MEA-UI-007 详情页驳回成功

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-UI-007 |
| **测试模块** | 商户入驻审核 |
| **测试项** | 驳回流程 |
| **测试类型** | 界面测试 |
| **测试工具** | Playwright（Chrome） |
| **测试目的** | 验证 §9 |
| **前置条件** | 待审 |
| **测试步骤** | 填写原因 → 确认 |
| **预期结果** | 状态未通过；详情展示原因 |

### MEA-UI-008 已通过详情只读

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-UI-008 |
| **测试模块** | 商户入驻审核 |
| **测试项** | 只读详情 |
| **测试类型** | 界面测试 |
| **测试工具** | Playwright（Chrome） |
| **测试目的** | 验证 §5.3 |
| **前置条件** | 已通过申请 |
| **测试步骤** | 打开详情 |
| **预期结果** | 无通过/驳回按钮；展示商户/店铺关联信息（若有） |

### MEA-UI-009 无审核权限隐藏按钮

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-UI-009 |
| **测试模块** | 商户入驻审核 |
| **测试项** | 权限 UI |
| **测试类型** | 界面测试 |
| **测试工具** | Playwright（Chrome） |
| **测试目的** | 验证 §13 |
| **前置条件** | 仅 list+query 权限 |
| **测试步骤** | 打开待审详情 |
| **预期结果** | 无审核操作按钮 |

### MEA-UI-010 C 端入驻提交（协作）

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-UI-010 |
| **测试模块** | 商户入驻审核 |
| **测试项** | C 端申请 |
| **测试类型** | 界面测试 |
| **测试工具** | Playwright（Chrome） |
| **测试目的** | 端到端入队 |
| **前置条件** | 会员登录；协议启用 |
| **测试步骤** | C 端商家入驻 → 勾选协议 → 填表提交 |
| **预期结果** | 提交成功；平台待审列表出现该条 |

### MEA-UI-011 C 端收到审核结果消息（协作）

| 要素 | 内容 |
|------|------|
| **用例编号** | MEA-UI-011 |
| **测试模块** | 商户入驻审核 |
| **测试项** | 站内消息 |
| **测试类型** | 界面测试 |
| **测试工具** | Playwright（Chrome） |
| **测试目的** | 验证 EA14 |
| **前置条件** | 平台已驳回/通过该会员申请 |
| **测试步骤** | C 端打开消息中心 |
| **预期结果** | 可见入驻审核结果通知 |

---

## 四、用例统计与规则追溯

| 类型 | 数量 | 编号范围 |
|------|------|----------|
| 单元测试 | 16 | MEA-UT-001～016 |
| 接口测试 | 20 | MEA-API-001～020 |
| 界面测试 | 11 | MEA-UI-001～011 |
| **合计** | **47** | — |

### EA1～EA15 追溯

| 规则 | 用例 |
|------|------|
| EA1 | MEA-API-005, MEA-UT-005 |
| EA2 | MEA-UT-006/006a/007 |
| EA3 | MEA-UT-007, MEA-API-014 |
| EA4 | MEA-UT-010, MEA-API-012, MEA-UI-006 |
| EA5 | MEA-UT-006a, MEA-API-011a, MEA-UI-005（完成公示后协作） |
| EA5a | MEA-UT-006, MEA-API-011, MEA-UI-005 |
| EA6 | MEA-UT-011, MEA-API-013 |
| EA7 | MEA-UT-015 |
| EA8 | MEA-UT-001, MEA-API-002 |
| EA9 | MEA-API-006, MEA-UI-002 |
| EA10 | MEA-API-007, MEA-UI-003 |
| EA11 | MEA-UT-002, MEA-API-004 |
| EA12 | MEA-UT-003/004/008/009 |
| EA13 | MEA-API-017 |
| EA14 | MEA-UT-012/012a/013, MEA-UI-011 |
| EA15 | （不调用商品接口；全册无商品用例） |

### 流程覆盖

| 流程 | 正常 | 异常/约束 |
|------|------|-----------|
| C 端提交 | API-003, UI-010 | API-001/002/004, UT-001～004 |
| 平台列表/检索 | API-006/007, UI-001～003 | API-005 |
| 详情 | API-009/010, UI-008 | — |
| 审核通过→公示 | API-011, UI-005, UT-006 | UT-007～009, API-014 |
| 完成公示/落库 | API-011a, API-018/019, UT-006a/014 | UT-008a/016 |
| 审核驳回 | API-013, UI-007, UT-011 | UT-010, API-012, UI-006 |
| 消息/协议 | API-016, UI-011, UT-012/012a | — |

---

## 五、修订记录

| 版本 | 说明 |
|------|------|
| **v1.0** | 首版 47 条用例（UT/API/UI） |
| **v1.0.1** | 曾用名「店铺入驻审核」、用例前缀 SEA- |
| **v1.0.2** | 定名 **商户入驻审核**；用例编号 **MEA-**（与《商城入驻协议》测试用例同前缀，执行时按模块区分） |
| **v1.1** | 公示流程：approve→公示、completePublicity 落库；`countBlockingByMemberId`；新增 MEA-UT-006a/008a/012a、MEA-API-011a |

---

*文档版本：v1.1 · 关联《商户入驻审核功能需求.md》v1.1、《商户入驻审核技术方案.md》v1.1*
