fix vendor status customer toggles and cps
This commit is contained in:
+13
-13
@@ -289,7 +289,7 @@ corepack pnpm@10.33.0 exec vitest run apps/worker-recording/src/transfer.spec.ts
|
||||
| 客户管理 | 充值/扣款 | `recharges.manage` | 按钮不可见 |
|
||||
| 客户网关 | 新增/编辑/启停/删除 | `customer_gateways.manage` | 按钮不可见 |
|
||||
| 业务前缀 | 新增/编辑/启停/删除 | `customer_gateways.manage` | 按钮不可见 |
|
||||
| 供应商管理 | 新增/编辑/启停/删除 | `vendors.manage` | 按钮不可见 |
|
||||
| 供应商管理 | 新增/编辑/删除 | `vendors.manage` | 按钮不可见 |
|
||||
| 落地网关 | 新增/编辑/启停/删除 | `vendor_gateways.manage` | 按钮不可见 |
|
||||
| 落地线路组 | 新增/成员维护/重排/删除 | `line_groups.manage` | 按钮不可见 |
|
||||
| 号码库 | 导入 | `number_library.manage` | 按钮不可见 |
|
||||
@@ -783,7 +783,7 @@ corepack pnpm@10.33.0 exec vitest run apps/worker-recording/src/transfer.spec.ts
|
||||
|
||||
- 供应商管理账号 `vendor_ops_001`:包含 `vendors.view`、`vendors.manage`、`vendor_gateways.view`、`vendor_gateways.manage`、`line_groups.view`、`line_groups.manage`、`recharges.view`、`recharges.manage`、`audit.view`。
|
||||
- 只读账号 `vendor_viewer_001`:包含 `vendors.view`、`vendor_gateways.view`、`line_groups.view`。
|
||||
- 供应商 `ven_seed_001`:状态 `ENABLED`,余额 `20.000000`,授信 `200.000000`。
|
||||
- 供应商 `ven_seed_001`:余额 `20.000000`,授信 `200.000000`。供应商不提供启用/禁用状态入口。
|
||||
- 落地网关 `vgw_primary_001`:状态 `ENABLED`,host 指向 T/UAS 或可控落地模拟端。
|
||||
- 落地网关 `vgw_backup_001`:状态 `ENABLED`,用于线路组故障转移。
|
||||
- 线路组 `llg_vendor_seed_001`:状态 `ENABLED`,至少包含 `vgw_primary_001` 和 `vgw_backup_001`。
|
||||
@@ -798,7 +798,7 @@ corepack pnpm@10.33.0 exec vitest run apps/worker-recording/src/transfer.spec.ts
|
||||
| 前置条件 | `vendor_ops_001` 已登录;供应商名 `Auto Vendor VEN001` 不存在。 |
|
||||
| 测试数据 | `name=Auto Vendor VEN001`,`contactName=NOC`,`phone=4001000001`,`email=noc-ven001@example.test`,`creditLimit=188.5`,`settlement=monthly`,`notes=created by VEN-001`。 |
|
||||
| 步骤 | 1. 请求 `POST /api/v2/vendors`。2. 使用返回 ID 请求 `GET /api/v2/vendors/:id`。3. 请求 `GET /api/v2/vendors`。4. 查询审计。 |
|
||||
| 预期结果 | 创建返回 201;状态默认 `ENABLED`;余额为系统默认值;`creditLimit=188.500000`;`availableBalance=balance+creditLimit`;列表可见,`gatewayCount=0`。 |
|
||||
| 预期结果 | 创建返回 201;余额为系统默认值;`creditLimit=188.500000`;`availableBalance=balance+creditLimit`;列表可见,`gatewayCount=0`;响应不暴露供应商启停状态。 |
|
||||
| 数据检查 | 写入 `created_by`、`updated_at`、`deleted_at=null`;审计存在 `module=vendors`、`action=create`、`result=SUCCESS`。 |
|
||||
| 安全检查 | `vendor_viewer_001` 创建返回 403;响应不包含内部异常或其他供应商敏感字段。 |
|
||||
|
||||
@@ -808,22 +808,22 @@ corepack pnpm@10.33.0 exec vitest run apps/worker-recording/src/transfer.spec.ts
|
||||
| --- | --- | --- | --- |
|
||||
| VEN-001-N1 | 缺少名称 | `name` 为空、空格或非字符串 | 400 `VALIDATION_ERROR` |
|
||||
| VEN-001-N2 | 字段超长 | `name` 超 120、`settlement` 超 80、`notes` 超 500 | 400 `VALIDATION_ERROR` |
|
||||
| VEN-001-N3 | 非法状态 | `status=DELETED` | 400 `STATUS_INVALID` |
|
||||
| VEN-001-N3 | 状态字段被忽略或拒绝 | 请求携带 `status=DISABLED` 或 `status=DELETED` | 不允许通过供应商接口维护启停;响应不返回供应商状态,且不会生成启停审计 |
|
||||
| VEN-001-N4 | 授信金额非法 | `creditLimit=-1` 或 `1.1234567` | 400 `MONEY_INVALID` |
|
||||
| VEN-001-N5 | 重复名称 | 创建已存在供应商名称 | 409 或明确业务错误,不重复写入 |
|
||||
|
||||
#### VEN-002 供应商更新、启停与删除保护
|
||||
#### VEN-002 供应商更新与删除保护
|
||||
|
||||
| 字段 | 内容 |
|
||||
| --- | --- |
|
||||
| 优先级 | P1 |
|
||||
| 目的 | 验证供应商资料更新、启停、软删除,以及有关联落地网关时的删除保护。 |
|
||||
| 目的 | 验证供应商资料更新、软删除,以及有关联落地网关时的删除保护。 |
|
||||
| 前置条件 | 已存在供应商 `ven_seed_001`;另有无关联供应商 `ven_delete_free_001`。 |
|
||||
| 测试数据 | 更新 `notes=primary carrier`,`creditLimit=200`。 |
|
||||
| 步骤 | 1. PATCH 更新供应商资料。2. disable 后查询状态。3. enable 后查询状态。4. 删除有关联落地网关的供应商。5. 删除无关联供应商。 |
|
||||
| 预期结果 | 更新成功且金额归一化;启停状态正确;有关联供应商删除被拒绝或按产品规则受控软删除;无关联供应商可软删除。 |
|
||||
| 数据检查 | `updated_by`、`version` 或更新时间更新;启停/删除均写审计;删除不物理清除历史充值和网关引用。 |
|
||||
| 安全检查 | 无 `vendors.manage` 的更新、启停、删除返回 403。 |
|
||||
| 步骤 | 1. PATCH 更新供应商资料。2. 请求旧的 `/vendors/:id/disable` 和 `/vendors/:id/enable`。3. 删除有关联落地网关的供应商。4. 删除无关联供应商。 |
|
||||
| 预期结果 | 更新成功且金额归一化;供应商启停接口不可用;有关联供应商删除被拒绝或按产品规则受控软删除;无关联供应商可软删除。 |
|
||||
| 数据检查 | `updated_by`、`version` 或更新时间更新;删除写审计;不会产生供应商 enable/disable 审计;删除不物理清除历史充值和网关引用。 |
|
||||
| 安全检查 | 无 `vendors.manage` 的更新、删除返回 403;旧启停接口不应暴露可操作功能。 |
|
||||
|
||||
#### VEN-003 供应商充值
|
||||
|
||||
@@ -1050,7 +1050,7 @@ corepack pnpm@10.33.0 exec vitest run apps/worker-recording/src/transfer.spec.ts
|
||||
| 落地网关 | `transport` | `udp`、`tcp`、`tls` | `ws` | `TRANSPORT_INVALID` |
|
||||
| 落地网关 | `sipUsername` | SIP/MIXED 必填,安全字符 | `carrier user` | `SIP_USERNAME_INVALID` |
|
||||
| 落地网关 | `sipPassword` | SIP/MIXED 创建或身份变更必填,至少 12 字符 | `short` | `SIP_PASSWORD_WEAK`、`SIP_PASSWORD_REQUIRED` |
|
||||
| 落地网关 | `cpsLimit` | 0-10000 整数,0 表示不限 | `-1`、`10001` | `INTEGER_INVALID` |
|
||||
| 落地网关 | `cpsLimit` | 1-10000 整数,只允许数字 | `0`、`10001`、`20 CPS` | `INTEGER_INVALID` |
|
||||
| 落地网关 | `concurrencyLimit` | 0-100000 整数,0 表示不限 | `-1`、`100001` | `INTEGER_INVALID` |
|
||||
| 落地网关 | `billingCycleSec` | 1-60 整数 | `0`、`61` | `INTEGER_INVALID` |
|
||||
| 落地网关 | `cycleRate` | 非负,最多 14 位整数、6 位小数 | `-1`、`1.1234567` | `MONEY_INVALID` |
|
||||
@@ -1506,11 +1506,11 @@ corepack pnpm@10.33.0 exec vitest run apps/worker-recording/src/transfer.spec.ts
|
||||
| 字段 | 内容 |
|
||||
| --- | --- |
|
||||
| 优先级 | P0 |
|
||||
| 目的 | 验证当前通话从 OpenSIPS Dialog 归一化后可展示主叫、被叫、客户 IP、落地 IP、时长和状态。 |
|
||||
| 目的 | 验证当前通话从 OpenSIPS Dialog 归一化后可展示主叫、被叫、客户 IP、落地 IP、时长和 SIP 信令状态。 |
|
||||
| 前置条件 | A 侧存在进行中 Dialog 或使用 MI mock。 |
|
||||
| 测试数据 | 一通进行中呼叫,含 Contact、SDP、dialog ID。 |
|
||||
| 步骤 | 1. 发起长持话呼叫。2. 请求当前通话接口或打开页面。3. 对比 OpenSIPS MI 输出。 |
|
||||
| 预期结果 | 列表显示 callId/dialogId、caller、callee、sourceIp、landingIp、durationSec、startedAt;自动刷新不闪退。 |
|
||||
| 预期结果 | 列表显示 callId/dialogId、caller、callee、sourceIp、landingIp、durationSec、startedAt、sipState;SIP 状态按 Dialog 归一化为 `INVITE`、`180 Ringing`、`183 Session Progress`、`200 OK`、`BYE / Terminating` 等可读状态;自动刷新不闪退。 |
|
||||
| 数据检查 | 解析 IPv4/IPv6、Contact 和 SDP 中 IP 正确;无 Dialog 时返回空列表。 |
|
||||
| 安全检查 | 无 `active_calls.view` 不可查看。 |
|
||||
|
||||
|
||||
Reference in New Issue
Block a user