Files
lislgosms/docs/http-api-full-acceptance-20260914.md
T
hectorzhao a420d61b23
CSS quality / css-quality (push) Has been cancelled
fix: validate HTTP dates IPv6 URLs and parser errors
2026-09-14 15:15:58 +08:00

51 lines
6.3 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-14)
更新:2026-09-14T06:36:14.050Z。状态:**Webhook真实成功及异常重试已通过;三个参数边界修复正在回归和发布,最终收尾未完成。**
## 环境与交付
测试环境100.93.204.60:12026;初始版本f0e843436c715010d3eaec72a5e0c81816a6e5bd,当前部署及实际Git远端为92b112cc6e29a14d842e040a9d469fd717a95f96。仅测试环境,无预生产操作。现有metrics、发布工具、其他文档草稿保留,提交只含本轮代码/工具及文档精确追加。
## 已执行
共记录140项HTTP请求/业务断言,含失败原记录和测试前置问题,不将140当全部通过数。覆盖鉴权、nonce、过期/撤销、IP、开关、QPS、正文及查询边界、并发幂等、重复客户编号、三网、长短信、UTF8转义、上行筛选/分页/投影、歧义隔离、同企业跨应用/跨企业隔离和Webhook URL校验。
- 9条真实业务短信:8送达、1失败;成功10计费单位,净扣3250内部金额单位,余额1848101→1844851。失败短信在2条LGST模拟通道尝试后退款;冻结/解冻及最终扣退账相符。12个实际CMPP Submit报文(含长短信分段和失败短信的备用模拟路由),未连接真实运营商。
- 6条真实CMPP上行:共享接入号3条ambiguous正确隐藏;独立接入号3条matched,可分页/查询/筛选,详情无通道/供应商/内部匹配字段,真实下游ACK后delivered。
- 9条HTTP发送待办dispatched、10条Gateway待办published;未直接修改Redis、余额或历史短信。
- 本地工作区API73套783项/构建通过;精确发布候选73套782项、类型、格式、lint通过。数量差来自其他会话受保护的metrics测试,不夹带。无前端/Gateway修改,未重复无关门禁。
## 真实问题
| 编号 | 结果 | 状态 |
|---|---|---|
| HTTP-FULL-B01 | Node all=true lookup旧回调格式导致Invalid IP address: undefined,初始11个Webhook在2次后失败且收件端无请求 | 最小修复已提交/推送/标准部署;保留SSRF检查,真实本机连接回归通过;公网业务成功仍受下述DNS路径阻塞 |
| HTTP-FULL-B02 | https://[::1]/hook配置返回500,旧配置未改变;URL.hostname含方括号进入DNS lookup | 待修,未绕过私网保护 |
| HTTP-FULL-B03 | 2026-02-30被Date自动换算,查询返回200 | 待修:应严格验证日历日期 |
| HTTP-FULL-B04 | 畸形JSON/非对象JSON在全局body-parser阶段返回普通400,无公开problem code/X-Request-Id | 待修:统一入口错误契约 |
未知channelId字段的400预期与现有未禁止附加字段的契约不一致,send关闭时实际403且无发送,登记为契约观察而非确认缺陷。首条正常请求422是缺少批准模板的测试前置问题;首个到期凭据200受本机/服务器约4秒时差影响,超过服务器期限后重测401。原结果全部保留。
## Webhook网络阻塞与待完成
实际12个本轮回调事件(9回执、3上行)。修复后仅重试本轮11个旧失败事件,首次2秒超时;单事件10秒诊断随后报TLS建连前断开。测试机DNS把临时Cloudflare地址解析为198.18.1.78,备用webhook.site解析为198.18.1.79,两者普通HTTPS均约5秒后TLS断开。本机同域名正常200;测试机只读探针固定到本机解析的104.16.231.132/104.16.230.132且保留原TLS主机校验,分别2232/313ms返回200。不能把网络失败继续归因于已修复lookup格式,也不能宣称回调业务验收通过。
已提出待确认方案:只在测试机/etc/hosts临时加入104.16.230.132与本轮唯一域名映射,30分钟独立自动移除,测试后精确移除;**目前未授权、未执行**。默认网关、系统DNS及OpenWrt保持不变。备用WebHook.site一小时过期收件端已创建后删除(204),未收到业务事件。服务操作参考[官方Token文档](https://docs.webhook.site/api/tokens.html)。
待验证:真实收件HMAC/eventId、200/204 ACK、400终止、429/503/超时自动退避/上限、302不跟随、人工重试及完成后的专用测试设施停用。全共享环境的DB/Redis停机及进程崩溃注入未执行;不以隔离测试代替。暂保留本轮应用/凭据和模拟接收进程用于继续验收,未删除任何历史记录。
## 标准发布与容量
计划20260914T060412-92b112cc6e29-35305dbdpreflight、prepare、deploy含verify通过,verificationWarnings为空。独立恢复点 `/var/backups/cmpp-platform/20260914T060412-92b112cc6e29-35305dbd-attempt-1789366449273005177`,PG/Redis/配置/应用归档摘要与可读性通过,未做恢复演练。候选准备40.3秒、备份35.0秒、停止2.8秒、启动5.5秒、验证4.1秒;本地候选测试146.085秒(依赖安装另计),业务验收及网络/等待时间不算停机。
测试机无独立数据盘,当前应用、发布目录、备份均落/dev/sda2。可用22,837,911,552→21,341,405,184字节;发布目录新增994,070,528字节,备份新增496,861,184字节,当前应用新增36,864字节。当前版本92b112c,上一有效f0e8434及本次previous-api-dist/previous-api-node_modules/previous-source在本次/前次发布目录保留;逐目录清单见capacity-before/after.json。缓存/日志独立盘点,未擅自清理历史资产,容量治理未完成。
## 证据
本机 `%TEMP%/cmpp-http-full-20260914/`results.json、cases.md、baseline.json、pre-fix-reconcile.json、negative-reconcile.json、mo-audit.json、remote-https.json、fallback-network.json、public-ip-probe.json、capacity-before/after.json、lookup-tests.log/api-full.log/api-build.log。发布证据 `.local-data/releases/20260914T060412-92b112cc6e29-35305dbd/`。不保存凭据、Cookie、回调密钥;对话工具中的受控密码提示不写入Git。
## 后续进展(2026-09-14T07:11:33.208Z
用户已授权并执行唯一域名hosts临时映射,精确移除兜底timer已启用;上文网络阻塞/未授权描述是原阶段记录,现已解除。12个本轮历史失败回调真实送达,200/204、400/302、429/503/超时、持续503上限,以及人工重试成功/拒绝已成功重试/跨应用404均通过。HMAC、eventId、原始体摘要和至少60秒退避一致。B02/B03/B04最小修复及55项定向回归已通过,等待精确候选全量门禁与测试环境复验。