Files
lislgosms/docs/http-api-acceptance-20260915.md
T
2026-09-15 17:42:28 +08:00

65 lines
8.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# HTTP 接口改造与隔离验收(2026-09-15)
## 范围与边界
本轮包含最新 HTTP 签名格式、双端签名计算页、运营端引流报备三列交互、客户端企业认证入口隐藏及 HTTP 全链路验收。用户明确授权提交、推送和测试环境部署,以及专用测试企业、应用、模拟通道和号码;未操作预生产,未连接真实运营商发送。
## 已定位并修复的问题
| 编号 | 根因与修复 |
|---|---|
| HTTP-0915-B01 | 上行手机号、接入号过滤参数缺少格式校验;非法参数原返回空列表,改为明确的 400 错误。 |
| HTTP-0915-B02 | HTTP 发送错误复用了 CMPP 接口开通校验;改为按可信内部 HTTP 请求上下文校验独立 HTTP 开关,保留其他发送入口规则。 |
| HTTP-0915-B03 | 引流 URL 左侧文字冒号被归入网址;显式 http(s) URL 保留分隔边界,同时维持恶意后缀、userinfo 和 query 校验。 |
## 测试证据
- 前端精确候选:33 个文件、158 项测试通过;后端 c781313 候选 76 个套件、828 项通过,cbc4a03 修复候选 76 个套件、830 项通过。两次均由标准发布 validate 生成绑定提交的证据。
- B03 定向回归先复现 2 失败/20 通过,修复后 22/22 通过。
- 测试环境 c781313:78 项参数/签名用例、15 项开关/凭据/IP/QPS/JSON 用例通过,后者短信记录数保持 19 不变;并发幂等仅创建一条短信,正文冲突返回 409,不同应用查询返回 404。
- 实际模拟 CMPP Submit、DELIVRD/UNDELIV、上行 DELIVER 与 ACK 均有记录;黑名单、频次和通道敏感词命中后无供应商 Submit。模拟号码运营商规则仅新增本轮精确号码匹配,不改历史规则。
- Webhook 已验证成功、503 后 60 秒自动重试成功、400 一次终止、超时两次终止;最终核验的 16 次业务请求签名全部正确(接收器另含一条连通性探针)。
- 初次引流分支测试受 B03 干扰,不能算作各审批分支通过;最终版本已按下述记录重新执行复测。
## 网络与发布记录
- c781313 第一次 prepare 因 npm ETIMEDOUT 失败,未切换服务;网络复测恢复后同计划 prepare 成功并完成标准部署及基础设施检查。
- OpenWrt 只读检查确认默认网关/DNS 为 192.168.71.253OpenClash 单一上游节点反复超时/EOF;未修改路由器配置,临时本机管理转发已关闭。不能将随后访问恢复记作代理节点故障已修复。
- 回调接收域名的单域名公网 IP 映射获专项授权,每轮设自动撤回;第一次已主动撤回并核对 hosts 字节恢复,后续映射与最终撤回证据见本地记录。
- 原始证据目录:`.local-data/http-complete-20260915/`;发布计划及候选日志位于 `.local-data/releases/`。本地证据不含真实客户发送内容或明文密钥。
## 最终部署与复测
2026-09-15 17:36(北京时间)核验测试环境精确版本为 `cbc4a033251c7496414b1e7aa6233ed49bd108ec`,本地 main 与 origin/main 已核对一致。前序合并范围由 c781313 提交交付,最新补充修复未遗漏 HTTP 协议、双端页面及运营端交互。预生产未部署。
- 最终版本 78/78 参数与签名用例再次通过,记录总数保持 25。
- 引流 6 个真实分支复测:未登记、待审核、移动报备失败、电信报备失败均失败且 Submit=0;移动报备通过的中文冒号网址及电信报备通过的英文冒号网址均送达且各 Submit=1。首次 13000009002/13300009003 因测试机缺少号码规则实际按移动路由,未冒称三网验证;追加精确隔离号码规则后,13000009006/13300009007 及末轮 13300009025 已分别核对联通/电信实际通道。
- 最终 25 条记录:送达 12、失败 11、入口失败 2;13 次模拟 Submit,13 条状态回执及 1 条上行 ACK 全部返回 0。黑名单、频次、模板、签名报备、引流和通道敏感词阻断分别有独立证据。
- 账务单位按数据库原值:充值 1000000,扣费 4225,失败退款 325,余额 996100 = 1000000 - 12 × 325;冻结 -7475 与释放 +7475 抵消为 0,流水汇总与余额相同。未手工改回测试余额。
- 25 个批次均终态(24 finished、1 rejected),23 条发送 Outbox 均 dispatchedGateway 三个消费组 pending=0、lag=0。
- 14 个 Webhook 投递终态:12 delivered、2 预期 failedHTTP 400 一次终止,超时两次终止)。503 场景第二次自动重试成功;16 次接收业务请求 HMAC 全部正确,未人工重投失败回调。上行 API 只返回客户相关公共字段,未返回通道内部字段。
标准发布计划为 `.local-data/releases/20260915T085351-cbc4a033251c-f68de5d6/plan.json`。部署时基础设施检查通过;测试收尾再执行 verify 后,工具保留 `deployed-needs-review`,唯一提示为业务计数变化。基线 messages=119576/submits=130814,最终 119582/130816,增量 +6/+2 与六条引流用例及两次模拟 Submit 完全一致,已人工对账;未修改计数或覆盖发布状态。13 项服务均 active,7 个受影响应用服务的新 warning journal 行数均 0,资源/源码/保护文件核验通过。
## 收尾与保护资产
- 17:34 停用本轮 2 个应用 HTTP 开关、2 个凭据、2 个回调端点、3 个模拟通道、1 条频次规则、1 条企业黑名单、1 条通道敏感词、3 条精确号码规则。仅操作 fixture 记录的专用对象,25 条记录和余额保留。
- 17:35 核对三个通道均 disconnected/currentConnections=0 后停止本轮模拟器 PID 61156;没有关闭平台服务。
- 单域名临时映射已精确撤回,hosts 与初始备份逐字节一致,SHA256 为 adf2b112dcb2175c2b8013aed75ebd1b0e60d0d90f5616fad9add6740f22c6d3。自动撤回与备份记录保留。
- 本机 sudo 仅由当前用户 DPAPI 文件提供,文件在 Git 外;标准工具增加的安全读取能力通过 47 项自测(42 通过、5 平台跳过)。`tools/release/` 为接手时受保护的未跟踪工具目录,未整批提交。此次计划绑定工具实际摘要 `324b27374339563a080062a995ceb89e442f4c750a76d54796b7fac1d4e73422`,不能把应用 SHA 视作完整工具版本。
## 耗时与容量
后端最终 validate 约 390.6 秒;cbc4a03 远端 prepare 阶段 39.1 秒,备份 36.7 秒,停止至服务启动完成约 13.9 秒,部署后首次 verify 4.5 秒。源包传输、SSH 超时、网络检查及测试/等待另计,不包含于远端 prepare 或停机时长。c781313 首次 npm 超时的失败记录保留;cbc4a03 第一次 preflight SSH 超时,复测通过。最终 verify 首次缺少环境确认参数被工具拒绝,补齐已授权的 test 参数后执行,未绕过门禁。
17:33 容量盘点:根分区 /dev/sda2,无独立数据盘,已用 84176310272 字节(85%),可用 15524478976 字节;相对本轮初始已用 81133178880 字节新增 3043131392 字节(约 2.83 GiB)。当前应用 1030688768、发布目录 13599055872、备份 8042622976、npm 缓存 698204160、日志 1004511232 字节。
当前 cbc4a03 计划目录占 995188736 字节,上一有效 c781313 计划目录占 1052385280 字节,路径分别为 /opt/cmpp-releases/20260915T085351-cbc4a033251c-f68de5d6 与 /opt/cmpp-releases/20260915T075847-c781313de5e8-aeee244a。独立恢复资产为 /var/backups/cmpp-platform/20260915T085351-cbc4a033251c-f68de5d6-attempt-1789464518635684582;上一恢复资产为 /var/backups/cmpp-platform/20260915T075847-c781313de5e8-aeee244a-attempt-1789461093446894333。未清理旧版本、失败候选或备份;“当前加上一有效版本”的容量治理尚未完成。
## 未验证项
- 本地最终生产组件的签名向量、复制、清空及 1600×1000、1366×768、390×844 三尺寸无横向溢出已验证;测试环境浏览器反复连接超时,登录后的双端菜单、报备弹窗、企业认证入口及真实发送详情页面验收尚未完成。工具超时不能证明用户未登录。真实 API 回执及回执时间已核验,不能替代页面验收。
- 已覆盖验证码文本的模板/频次/敏感词链路;未确认用户所说“验证码限制”是否另指独立业务规则,不能宣称所有验证码策略均通过。
- 代理节点偶发超时及 Tailscale 经西雅图中继的网络问题尚未治理;本轮未修改 OpenWrt,也不将网络暂时恢复称为永久修复。
- 未测试真实运营商发送,未操作预生产,未做恢复演练。