docs: record a7586724 production rollout

This commit is contained in:
hectorzhao
2026-07-15 12:12:20 +08:00
parent a758672436
commit 16311546af
+13 -5
View File
@@ -1,26 +1,34 @@
# 第一版系统化测试进度
## 2026-07-15 依赖安全与今日返还修复(提交、部署)
## 2026-07-15 依赖安全与今日返还修复(提交、部署)
- 生产数据库只读核查确认目标企业当天共有两笔真实返还:提交前路由失败产生消息级 `released=5` 分,最终失败产生 `refunded=5` 分,正确合计为 10 分(页面应显示 `¥0.100`)。原 Dashboard 和企业列表只聚合 `refunded`,因此少算前一笔并显示 5 分。
- 客户端 Dashboard 与运营端企业列表统一按当天 `refunded``released + relatedType=sms_message_record` 汇总;排除任务冻结转扣费时的 `released + relatedType=sms_batch_task`,避免把内部账务转换误当成返还。
- API 依赖升级到 NestJS `11.1.28`、Multer `2.2.0`,并通过 override 将 `@hono/node-server` 固定为 `1.19.13``npm --prefix api audit --json` 已由 3 个 moderate、2 个 high 降为 0。
- multipart 文件上传补充单文件 20MB、字段数、part 数、字段名/值长度和 header pair 限制,继续使用认证后的真实 NestJS API、MinIO 与 `FileObject` 链路。定向回归 3 suites/21 项通过;完整 API 17 suites/173 项、API build、前端 build、Gateway 全量 Go 测试、Prisma validate/migrate status 和依赖 audit 均通过,43 条 migration 全部齐全。前端仅有既有 Vite chunk size warning。
- 功能提交 `a758672436b3ebcd78aab91ba4a8e3cf68cbdfb0` 已 push 并部署。生产两次 `npm ci` 均为 0 vulnerabilities;真实 PostgreSQL 按新口径聚合目标企业当天返还为 10 分,前端产物包含“今日返还金额”。
## 2026-07-15 下游人工重投无限排队修复(提交、部署)
## 2026-07-15 下游人工重投无限排队修复(提交、部署)
- 根因是 Gateway 以空的 `DownstreamSendResult` 同时表达“客户暂时离线”和“原消息映射丢失且缺少 Submit Sequence_Id”,NestJS 收到 `sent=false` 后又不登记失败,导致历史状态回执永久保持 `pending/retryCount=0`
- Gateway 控制结果新增 `retryable/reasonCode/errorMessage`:缺少原 `submitSequenceId` 且无法命中内存映射时返回不可恢复的 `MISSING_SUBMIT_SEQUENCE_ID`NestJS 立即终结为 `failed`;字段完整但客户离线时返回可恢复的 `CLIENT_DISCONNECTED`,失败回调进入真实次数上限与指数退避。
- 新状态回执入队补存 `SmsMessageRecord.cmppSubmitSequenceId`,Gateway 控制面允许在当前连接存在时立即恢复原 `Msg_Id`;不生成伪造或为 0 的 Msg_Id。
- 自动扫描为 pending 增加默认 72 小时绝对终点(`CMPP_DOWNSTREAM_PENDING_TIMEOUT_HOURS` 可覆盖),从 `createdAt` 或最近 `lastRetriedAt` 计算,超时写 `failed/queue_timeout` 和失败操作日志。积压告警同样以最近人工重投时间重新计时,避免刚重投就因旧创建时间立即告警。
- 回归已通过:API 定向 `send-chain/operations` 2 suites、68 项,API 全量 17 suites、173 项,Gateway 全量 Go 测试、Prisma validate、API build、前端 build 和 `git diff --check`;前端仅有既有 Vite chunk size warning。尚未提交、push 或部署生产原 3 条历史 pending 记录未修改
- 回归已通过:API 定向 `send-chain/operations` 2 suites、68 项,API 全量 17 suites、173 项,Gateway 全量 Go 测试、Prisma validate、API build、前端 build 和 `git diff --check`;前端仅有既有 Vite chunk size warning。部署生产原 3 条历史 pending 均已真实终结为 `failed/manualRetryCount=1/retryCount=1`,失败原因明确为 `MISSING_SUBMIT_SEQUENCE_ID`,当前下游投递 pending 为 0
## 2026-07-15 待审核通知移除下游投递告警(提交、部署)
## 2026-07-15 待审核通知移除下游投递告警(提交、部署)
- 生产只读核查确认当前“下游投递告警 3”全部为历史状态回执记录:三条均在人工重投后成为 `pending/manualRetryCount=1/retryCount=0`,因为告警仍按原 `createdAt` 超过 10 分钟判断,立即计入 `stalled_pending`;它们不是待审核任务。
- 右上角“待审核任务”移除下游投递告警菜单项及其数字,通知总数只汇总企业认证、短信、模板、签名和引流信息五类审核。运营看板和下游投递记录页面继续保留独立告警展示。
- “人工重投排队中”表示记录已由人工重投重置为 `pending` 并累计人工重投次数,正在等待 Gateway 对在线客户写出 Deliver 并取得 `CMPP_DELIVER_RESP`,不代表重投已经成功。
- 进一步核查三条历史记录的 `payload.submitSequenceId` 均为空;虽然账号 `910887` 当前 connected 且持续心跳,Gateway 重启后没有原 Submit 的消息映射,也无法安全重建非 0 Msg_Id,因此人工重投没有写出 Deliver,继续保持 pending。前端 build 与 `git diff --check` 通过;应用内 Browser 连接因插件运行时初始化失败,未使用独立 Playwright 或 mock 页面替代。
- 进一步核查三条历史记录的 `payload.submitSequenceId` 均为空;虽然账号 `910887` 当前 connected 且持续心跳,Gateway 重启后没有原 Submit 的消息映射,也无法安全重建非 0 Msg_Id,因此修复前人工重投没有写出 Deliver 并持续保持 pending。前端 build 与 `git diff --check` 通过;应用内 Browser 连接因插件运行时初始化失败,未使用独立 Playwright 或 mock 页面替代。
- 本批随 `a7586724` 部署,生产源码确认右上角待审核区域不再包含“下游投递告警”;运营看板与下游投递页面仍保留独立告警入口。
## 2026-07-15 `a7586724` 生产发布记录
- 发布前确认本地 `main` 与最新 `origin/main` 无分叉;PostgreSQL、运行源码、环境文件分别备份为 `/opt/cmpp-platform/backups/cmpp-20260715-120751.sql`65MB)、`/opt/cmpp-platform/backups/source-20260715-120751.tar.gz`104MB)、`/opt/cmpp-platform/backups/cmpp-platform-20260715-120751.env`,均非空、权限 `600` 并完成 SHA-256 校验。
- 发布包本地与服务器 SHA-256 均为 `e1f14706389e6c42e89161422b07e6a409213dd54b9ae39b6bcc50dbba53f61e`;生产 `.deployed-commit=a758672436b3ebcd78aab91ba4a8e3cf68cbdfb0`43 条 migration 全部齐全且无待执行项。
- `cmpp-api``cmpp-gateway`、MinIO、Nginx、PostgreSQL、Redis 均 active`12026/17890/8090/3000/9000` 正常监听;API、Gateway、MinIO、Redis、PostgreSQL、外部首页、运营登录页和外部 API health 均通过,HTTP 返回 200。真实 CMPP 账号 `910887` 保持 connected,发布后 API/Gateway journal 无 error 级日志;未主动发送或重投计费短信。
## 2026-07-15 当前工作区汇总发布