test: record step7 cmpp status coverage
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
# 测试实施第七步执行记录
|
||||
|
||||
## 执行时间
|
||||
|
||||
- 日期:2026-07-01
|
||||
- 总步骤数:8
|
||||
- 当前步骤:第 7 步,执行客户/通道 CMPP 连接状态、连接数量、Gateway 契约和通道路由测试
|
||||
|
||||
## 第七步目标
|
||||
|
||||
验证第一版中通道 CMPP 连接相关的可观测能力,包括 Gateway 队列契约、Go Gateway health/重连/SEQID-MSGID 追踪/gocmpp 模拟器测试、通道创建、通道路由、通道 health metrics、Send Worker 创建 CMPP submit session、连接数量展示、运营监控按通道聚合,以及 Gateway submit event 回写 trace。
|
||||
|
||||
客户级 CMPP 连接状态和连接数量当前没有独立模型/API,本步记录为功能缺口。
|
||||
|
||||
## 执行环境
|
||||
|
||||
| 项目 | 结果 |
|
||||
| --- | --- |
|
||||
| PostgreSQL | 可连接,使用真实数据库。 |
|
||||
| Redis | 可连接,Send Worker 使用真实 BullMQ/Redis。 |
|
||||
| MinIO | 可连接,本步未执行文件上传。 |
|
||||
| API | 使用 `API_PORT=3101 API_ENABLE_SEND_WORKER=true npm --prefix api run start:dev` 启动,执行完成后已停止。 |
|
||||
| Go Gateway | 使用 Go 原生 `go test ./...`,不连接真实运营商 SMSC。 |
|
||||
|
||||
## 已执行命令
|
||||
|
||||
```bash
|
||||
npm run spike:contracts
|
||||
npm run test:gateway
|
||||
$env:API_PORT='3101'; $env:API_ENABLE_SEND_WORKER='true'; npm --prefix api run start:dev
|
||||
node <inline step7 channel/cmpp status smoke>
|
||||
```
|
||||
|
||||
## 本步执行过的测试用例
|
||||
|
||||
| 用例编号 | 用例名称 | 执行范围 | 结果 |
|
||||
| --- | --- | --- | --- |
|
||||
| TC-GW-CONTRACT-001 | Gateway 队列契约 | 校验 `SubmitCommand`、`SubmitResult`、`ReceiptEvent`、`UplinkEvent` 4 个 JSON 示例。 | 通过 |
|
||||
| TC-GW-001 | Gateway health | Go `gateway/internal/health` 测试 `/health` 返回 `ok` 和 `cmpp-gateway`。 | 通过 |
|
||||
| TC-GW-002 | SEQID/MSGID/GatewayMessageID 追踪 | Go `gateway/internal/tracker` 测试 messageId、sequenceId、gatewayMessageId 映射。 | 通过 |
|
||||
| TC-GW-003 | 断线重连 | Go `gateway/internal/connection` 测试重试后成功和最终失败返回。 | 通过 |
|
||||
| TC-GW-004 | gocmpp submit/resp 模拟器 | Go `gateway/internal/cmpp` 测试本地 TCP connect、submit、submit resp、active test 和 deliver receipt pack/unpack。 | 通过 |
|
||||
| TC-CMPP-STATUS-001 / TC-CHANNEL-001 | 通道创建和状态展示 | 创建 CMPP 通道,验证通道列表展示 `active`、协议 `CMPP`、`maxConnections=3` 配置。 | 通过 |
|
||||
| TC-CHANNEL-ROUTE-001 | 通道路由规则 | 创建通道组、通道组项、租户/应用路由规则,验证运营端路由列表。 | 通过 |
|
||||
| TC-CHANNEL-METRIC-001 | 通道 health metrics 展示 | 写入一条 `ChannelHealthMetric`,验证 `GET /api/admin/channels/:id/metrics` 返回 submit/receipt/unknown 指标。 | 通过 |
|
||||
| TC-CMPP-SESSION-001 / TC-CONNECTION-COUNT-001 | CMPP submit session 和连接数量 | 启动 Send Worker 创建发送任务,验证生成 open `CmppSubmitSession` 和 2 条 submit records。 | 通过 |
|
||||
| TC-CMPP-STATUS-002 / TC-OPERATIONS-MONITOR-001 | 运营端按通道监控 | 验证运营 monitor/messages 可按 `channelId` 查询 `submit_queued=2`。 | 通过 |
|
||||
| TC-GATEWAY-EVENT-001 | Gateway submit event 回写 trace | 模拟 submit result,验证 `sequenceId/gatewayMessageId` 写入并可在 operations trace 查询。 | 通过 |
|
||||
| TC-CUSTOMER-CONNECTION-001 | 客户连接状态展示探测 | 验证客户维度可查租户、任务进度和消息,但没有独立客户 CMPP 连接状态/连接数模型。 | 部分通过,记录缺口 |
|
||||
|
||||
## 本步创建的数据
|
||||
|
||||
| 数据类型 | ID |
|
||||
| --- | --- |
|
||||
| 测试运行编号 | `step7-1782900995654` |
|
||||
| Tenant | `cmr1x99p0000avkyunz75tapj` |
|
||||
| SmsApplication | `cmr1x99se000bvkyu34n45hld` |
|
||||
| SmsChannel | `cmr1x99t7000cvkyuvn0e027f` |
|
||||
| ChannelRouteRule | `cmr1x99uj000fvkyum6zz05qi` |
|
||||
| SmsBatchTask | `cmr1x9acr000hvkyuhh4e5o2c` |
|
||||
| open CmppSubmitSession | `OPEN-cmr1x99t7000cvkyuvn0e027f` |
|
||||
|
||||
## 通过项
|
||||
|
||||
- Gateway 队列契约示例全部通过校验。
|
||||
- Go Gateway health、重连、tracker、gocmpp submit/resp、本地 receipt pack/unpack 测试全部通过。
|
||||
- 运营端可以创建 CMPP 通道并展示通道状态、协议、配置。
|
||||
- 通道路由规则可以按租户/应用绑定到指定通道。
|
||||
- 通道 health metrics 可被查询和展示。
|
||||
- Send Worker 会为通道创建 open `CmppSubmitSession`,submit records 会关联 `sessionId`。
|
||||
- 可通过 `CmppSubmitSession` 间接统计通道 open 连接数量。
|
||||
- 运营 monitor/messages 可按通道查询消息状态。
|
||||
- Gateway submit result 可回写 sequenceId/gatewayMessageId,并在 trace 中展示。
|
||||
|
||||
## 本步发现的问题
|
||||
|
||||
| 问题 | 影响 | 证据 |
|
||||
| --- | --- | --- |
|
||||
| 客户级 CMPP 连接状态无独立模型/API | 客户端和运营端无法直接看到“某客户当前 CMPP 连接状态、连接数量、最近连接时间”等客户维度状态,只能通过通道、任务和消息间接判断。 | Prisma schema 未发现客户连接状态模型;控制器无客户连接状态 endpoint。 |
|
||||
| 通道连接数量没有一等接口 | 当前只能通过 `CmppSubmitSession` 直接查库或 trace/session 关联间接推断,运营端没有 `GET /channels/:id/connections` 之类接口。 | API 只有 `/admin/channels/:id/metrics`,无 connections endpoint。 |
|
||||
| Gateway health 未接入 API dashboard | Go Gateway `/health` 独立存在,但 NestJS 运营 dashboard 不聚合 Gateway 实例健康状态。 | dashboard 只聚合任务、消息、上行、计费和交易。 |
|
||||
| 通道测试接口仍是 placeholder | `POST /api/admin/channels/:id/test` 返回 queued placeholder,不会实际连接 Gateway 或 SMSC。 | `ChannelsService.testChannel` 返回固定占位响应。 |
|
||||
|
||||
## 未执行或阻塞项
|
||||
|
||||
| 用例编号 | 用例名称 | 原因 |
|
||||
| --- | --- | --- |
|
||||
| TC-CUSTOMER-CONNECTION-002 | 客户连接数量管理 | 当前无客户连接模型、连接上限字段和连接数量 API。 |
|
||||
| TC-CUSTOMER-CONNECTION-003 | 客户连接状态展示 | 当前客户端/运营端无客户连接状态 endpoint。 |
|
||||
| TC-CHANNEL-CONNECTION-002 | 通道连接列表和连接数量接口 | 当前无通道 connections endpoint。 |
|
||||
| TC-CHANNEL-CONNECTION-003 | 通道断连/重连状态同步到运营端 | Go reconnect 测试通过,但状态未回写 NestJS。 |
|
||||
| TC-GATEWAY-REAL-CMPP-001 | 真实运营商 CMPP 联调 | 第一版测试不依赖真实运营商网关,本步使用 gocmpp 本地模拟器。 |
|
||||
|
||||
## 本步结论
|
||||
|
||||
第七步中 Gateway 契约、Go Gateway 单元/集成测试、通道创建、路由、通道 metrics、submit session、通道维度运营监控和 Gateway submit event trace 均通过。
|
||||
|
||||
主要缺口集中在“客户/通道 CMPP 连接状态和连接数量的一等管理展示”尚未产品化:当前有 `CmppSubmitSession` 和 `ChannelHealthMetric` 数据基础,但缺少面向运营端/客户端的连接状态接口、连接数量接口、Gateway health 聚合和断连重连状态回写。
|
||||
|
||||
## 下一步
|
||||
|
||||
进入第 8 步:执行最终回归、完整验证和报告归档。重点运行 `npm run verify:phase8`、API 测试、Gateway 测试,并汇总 1-7 步通过项和遗留缺口。
|
||||
@@ -55,6 +55,10 @@ node <inline step5 schedule probe>
|
||||
$env:API_PORT='3101'; npm --prefix api run start:dev
|
||||
node <inline step6 billing/reconciliation smoke>
|
||||
node <inline step6 auto-billing probe>
|
||||
npm run spike:contracts
|
||||
npm run test:gateway
|
||||
$env:API_PORT='3101'; $env:API_ENABLE_SEND_WORKER='true'; npm --prefix api run start:dev
|
||||
node <inline step7 channel/cmpp status smoke>
|
||||
```
|
||||
|
||||
### 当前结果
|
||||
@@ -81,6 +85,10 @@ node <inline step6 auto-billing probe>
|
||||
- `TC-BILLING-001`、`TC-BILLING-002 / TC-RECHARGE-001`、`TC-BILLING-003`、`TC-BILLING-004 / TC-BILLING-005 / TC-BILLING-006 / TC-BILLING-007`、`TC-BILLING-008 / TC-RECON-001 seed`、`TC-RECON-001`、`TC-DASHBOARD-001 / TC-STAT-001`、`TC-TRACE-001`、`TC-BILLING-009` 均通过。
|
||||
- 验证了费用预估、人工充值、余额检查、冻结、扣费、释放、退款、短信计费记录、账务流水、dashboard/statistics、trace 和 reconciliation。
|
||||
- 自动计费探测发现发送任务不会自动生成短信计费记录、账户交易流水,消息金额默认为 0,已在 `docs/testing-execution-step-6.md` 记录为发送计费集成缺口。
|
||||
- 第 7 步客户/通道 CMPP 连接状态和 Gateway smoke 通过:
|
||||
- `TC-GW-CONTRACT-001`、`TC-GW-001`、`TC-GW-002`、`TC-GW-003`、`TC-GW-004`、`TC-CMPP-STATUS-001 / TC-CHANNEL-001`、`TC-CHANNEL-ROUTE-001`、`TC-CHANNEL-METRIC-001`、`TC-CMPP-SESSION-001 / TC-CONNECTION-COUNT-001`、`TC-CMPP-STATUS-002 / TC-OPERATIONS-MONITOR-001`、`TC-GATEWAY-EVENT-001` 均通过。
|
||||
- 验证了 Gateway 队列契约、Go Gateway health/重连/tracker/gocmpp 模拟器、通道创建、路由、metrics、submit session、通道维度监控和 Gateway submit event trace。
|
||||
- 客户级 CMPP 连接状态、客户连接数量、通道连接列表和 Gateway health 聚合到运营 dashboard 尚缺少一等 API,已在 `docs/testing-execution-step-7.md` 记录。
|
||||
|
||||
### 已知缺口
|
||||
|
||||
@@ -90,3 +98,4 @@ node <inline step6 auto-billing probe>
|
||||
- 客户侧导入发送、短信内容非法字符展示和敏感词发送前拦截尚未形成完整业务入口。
|
||||
- 定时短信发送缺少计划发送时间字段、scheduled 状态、到点触发和取消接口。
|
||||
- 发送链路尚未自动接入计费闭环,发送任务不会自动冻结/扣费/生成短信计费记录。
|
||||
- 客户/通道 CMPP 连接状态和连接数量尚未形成运营端/客户端一等接口,Gateway health 未聚合到 NestJS dashboard。
|
||||
|
||||
Reference in New Issue
Block a user