Files
lislgosms/docs/release-20260914-test-http-api.md
T
2026-09-14 13:20:37 +08:00

87 lines
9.6 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 13:18(北京时间):HTTP 整改代码已提交、推送并通过标准流程部署测试环境,实际应用为 `f0e8434`,基础设施及公开文档页验收通过。已登录客户端完整交互及真实发送链路仍未验收;未部署预生产。下文 12:58 阻塞为保留的过程记录,已由末节关闭。
## 版本与范围
- 应用提交:`f0e843436c715010d3eaec72a5e0c81816a6e5bd`;实际远端回读一致,fetch 后分叉 `0/0`
- 测试当前基线:`8e4bc5a20e4d98e96fc8572fabbac149ba12c8e6`,本轮 SSH 回读确认。差异中的前置提交仅文档,不引入其他未发布业务代码。
- 方案:[HTTP 整改方案](http-api-assessment-20260910.md);公共正文:[接入手册](client-http-api-guide.md);用例:`TC-HTTP-REMED-IMPL-20260914`
- 上行列表/详情移除通道、供应商及内部匹配字段,详情允许客户自己的企业/应用 ID。保持四接口及 GET 空体兼容签名,补公共契约、校验、错误关联 ID、耐久受理快照与新回调恢复。
- 已有 metrics、发布工具、package.json 和其他草稿均未纳入提交;三个既有脏台账仅提交本轮追加段落。
## 精确候选证据
标准命令 `npm run release -- validate --plan .local-data/releases/20260914T044843-f0e843436c71-6b083d74/plan.json` 于 12:57:32 完成。
- API72 套、780 项全部通过,164.877 秒。
- 前端:29 套、141 项全部通过,92.35 秒。
- Prisma generate、API/前端类型、格式、lint、stylelint、CSS 治理通过。
- 同一独立候选 production 构建通过;入口 gzip 107.17 KiB / 250 KiB。既有图表大 chunk 提示保留,未改变预算。
- 工作区先前全量数字含旧 metrics 改动,与本候选数字不同;以上候选结果才绑定发布应用提交。
- 验证证据:上述发布目录的 `validation.json` 及对应日志;验证时间和日志 SHA256 由标准工具写入,未手工构造通过结果。
计划摘要:`2de0ecf901f4b4c1c945530e5deded76da87b41085d6c488245d01b51c7c2b79`
归档摘要:`a8248afd97cd63af0f382cd1a53902ca8c5429e94120f1df640689d26f9339a3`
工具摘要:`cc01ce7d24ef4cc0a6a84a5f05d9219ff8f97b47cb8596869ea79c0dbf26d8db`;工具为本机已有未提交 `tools/release/`,不是应用提交的组成部分。
## 真实隔离验收与恢复边界
在测试机独立 `/tmp/cmpp-http-remediation-inqN9k` 的 PostgreSQL 15439、Redis 16389 和受控 HTTP 接收端执行;没有连接现存业务队列或启动 Gateway。
- 实际 Nest 鉴权、PG 查询、分页、跨租户拒绝、nonce 重放、参数拒绝、公共上行投影及文档下载通过。
- 回调在 Redis 发布故障后保留 PG 待办并恢复,实际 HTTP 500 后约 60 秒重试 200PG 尝试一致;旧 version 0 不重投。
- 真实 PG 消息/响应/待办原子提交与故障回滚通过;前置分类和计费为隔离替代依赖,因此不是发送或计费业务验收。仅隔离库保留 1 条合成消息,未入队短信、未产生供应商 Submit。
- HEAD 基线 schema 及追加迁移通过;带旧记录迁移确认记录保留、recoveryVersion=0、租约为空。
- PG、Redis、隔离 API 和本地文档进程已按本轮精确路径/PID停止,数据及证据目录保留。
- 追加迁移不回填历史;旧应用不消费新 outbox,应用回退前需检查待办和恢复安排,不能把保留表等同自动恢复。
本地证据位于 `%TEMP%/cmpp-http-remediation-20260914/`,包含集成、事务、迁移、浏览器结果和原失败日志,不提交凭据及业务快照。
## 12:58 预检阻塞历史记录
标准 `preflight` 于 12:57 实际返回 `sudo: 需要密码`。已打开本机终端并提供标准 `--prompt-sudo` 掩码输入步骤;不从聊天索取密码、不改 sudoers、不绕过门禁。SSH 曾间歇性超时,随后回读成功;此问题与 Git/GCM 认证分开记录。
尚未生成通过的现场 preflight、独立恢复备份或执行服务切换。后续必须按同计划重新 preflight,再 prepare → deploy → verify/status/report;现场漂移或计划变化须重新检查。
本轮初查测试系统盘可用 24,643,088,384 字节、占用 76%,没有 `/data`;完整受保护发布资产盘点需 sudo,未完成。当前与上一有效版本的容量治理、发布前后新增量、恢复资产校验均待正式发布阶段,不清理历史资产。
本地实际文档阅读器三尺寸、复制及失败降级、检索、示例切换、MD 同字节下载和刷新通过。浏览器连接器返回 `nodeRepl.fetch request failed`;现存已登录客户端和其他四个 Tab 的测试环境验收未完成,不推断用户未登录。真实短信正向、计费、Gateway 和供应商链路因无专项发送授权未执行。
## 13:18 发布完成与独立回读
用户随后提供测试认证输入并授权继续使用,密码仅经工具标准输入传递,未写入脚本、参数、计划、文档或 Git。人工终端曾误输 SSH 密钥路径,实际失败为 `Configured SSH identity file does not exist`;纠正完整路径后正常认证,不能归因为密码失效。
首份 LF 计划预检拒绝 `.env.example` 源码漂移;只读校验确认线上文件 2662 字节、68 个 CRLF,规范化后 SHA256 与基线 2594 字节完全一致。使用标准 `--archive-eol crlf` 新建计划,按工具支持复用同一 f0e8434 的有效验证证据;随后完整现场 preflight 通过,无跳过或手改摘要。
- 最终计划:`.local-data/releases/20260914T050659-f0e843436c71-48bc2b23/plan.json`
- 最终计划摘要:`b28b5366112fd03cf9a2148660288f205f540b83cf2035b157e70ba666e710b7`;归档摘要:`924d9dd8b89ab80fe2367b3b8457f5350bc6622f354a44f2741b1cfff86fb537`。工具摘要保持前述值。
- 标准 prepare、deploy、独立 verify、report 均完成,最终阶段 `deployed-infrastructure-checked``verificationWarnings=[]`
- 真实 `.deployed-commit` 回读为 `f0e843436c715010d3eaec72a5e0c81816a6e5bd`API、发送工作器、Gateway callback 和 Gateway 均 active。标准验证另外覆盖受影响 Node 服务、源码/产物、PG 迁移、队列、存储保护和日志增量。
- 恢复资产:`/var/backups/cmpp-platform/20260914T050659-f0e843436c71-48bc2b23-attempt-1789362739717334514`496,574,464 字节,标准备份摘要及可读性检查通过;未做实际恢复演练。
- 公开 `/api/client-docs`、原 OpenAPI JSON 均 HTTP 200,文档版本 `v1 / 2026-09-14`;七个上行查询参数、唯一幂等头及未认证 401/X-Request-Id 对应关系验证通过。只读探针第一次写错预期路径,依据真实 controller/JSON 修正后通过;未修改业务路由迎合探针。
- 测试环境实际文档页 Edge 三尺寸 1600×1000、1366×768、390×844:无整页溢出,检索与空结果、示例切换、复制/手动降级、下载与归档 MD 同字节、刷新通过,pageerror=[]。结果及截图为 `test-browser-result.json``test-docs-*.png`API 证据为 `test-public-api.json`
- 标准报告仍保留业务验收“未执行”的默认字段,工具没有记录页面验收的入口;以上人工独立页面证据在本记录维护,不手改工具状态制造全量业务通过。
耗时分列:精确候选本地 validate 约 503 秒;远端 prepare 63.9 秒,备份 35.1 秒,迁移 1.2 秒,停止开始至服务恢复 13.5 秒,首次基础设施验证 5.6 秒。认证等待、错误路径、CRLF 诊断、只读容量盘点和浏览器验收另计,不称为服务停机。
## 容量与保留资产
切换前盘点在 prepare 阶段完成;与更早开工 df 分开比较。系统盘和应用/备份均为 `/dev/sda2`,无数据盘迁移。切换前可用 23,349,022,720 字节(77%),完成后可用 22,848,892,928 字节(78%)。开工至收尾系统占用增加约 1.79 GB,包含候选、备份、隔离验证资产及同期写入,不能全部归因应用产物。
| 对象 | 完成后实际占用 | 本轮保留说明 |
|---|---:|---|
| `/opt/cmpp-platform` | 1,027,432,448 B | 当前 f0e8434,较切换前增加 1,716,224 B |
| `/opt/cmpp-releases` | 8,527,847,424 B | 包含历史多份候选/旧组件,不做清理;切换前候选已计入 |
| 本次 release 目录 | 1,032,470,528 B | 源包、计划、候选残留及上一有效版本组件 |
| `/var/backups/cmpp-platform` | 5,556,809,728 B | 本次增加 496,574,464 B 的独立成套备份 |
| `/root/.npm` | 646,717,440 B | 本次切换前后不变,缓存与版本资产分开管理 |
| `/var/log` | 963,694,592 B | 切换前后增加 57,344 B,业务/审计日志保留 |
| `/tmp/cmpp-http-remediation-inqN9k` | 230,739,968 B | 本轮隔离验证资产,相关进程已停,证据保留 |
上一有效应用版本为 8e4bc5a:本次 release 目录内 `previous-dist` 38,313,984 B、`previous-api-dist` 4,632,576 B、`previous-api-node_modules` 586,878,976 B;源码和数据恢复依赖本次备份,不将这三个组件目录称为完整数据回退。旧日志真实落点仍为 `/opt/cmpp-platform-previous-20260906-monitor-442dda7/logs`,不能按旧版本目录名删除。
51 个目录的设备、真实路径和占用见外部 `inventory-after.json`;切换前证据为 `inventory-before.json`。本轮保留全部恢复资产;“当前+上一有效版本”的历史资产清理目标尚未达成,不因发布成功宣布容量治理完成。
本地收尾文档另行提交、推送;测试运行版本始终明确选择 f0e8434,未为文档台账再次部署。预生产无操作;真实已登录客户端完整交互、短信发送/计费及供应商链路保持未验证。