@@ -1,5 +1,7 @@
# 第一版系统化测试进度
> 环境命名:当前 `8.160.169.106:12026` ( Web/API)和 `8.160.169.106:17890` (CMPP 入站)实例统一定义为“预发布环境”。历史记录中涉及该实例的验证、部署和业务页面均按预发布环境理解;`production-deploy.sh` 、`NODE_ENV=production` 及正式生产安全/备份规范保留原有技术语义,不代表该实例为正式生产。
## 2026-07-16 客户端签名与引流信息页面重做(已提交、已部署)
- 客户端“签名与引流信息”按运营端信息结构重做为签名父级、引流信息子级的可展开工作台,增加真实后端状态统计、关键字/应用/状态筛选、已交资料数、修改说明、新增/修改/删除确认;客户端文案不再出现通道和内部报备概念。
@@ -690,7 +692,7 @@ npm run build
- API build:通过。
- 前端 build:通过,仍有既有大 chunk warning。
- `tools/smoke/real-env-smoke.mjs` 已同步企业管理员邮箱/手机号、角色 seed、验证码登录和 CMPP 端口 `17890` 。
- 真实数据库迁移、浏览器端登录 smoke 需要在生产验证 环境执行 `prisma migrate deploy` 后补充记录。
- 真实数据库迁移、浏览器端登录 smoke 需要在预发布 环境执行 `prisma migrate deploy` 后补充记录。
## 2026-07-02 非彩信纯 mock 菜单真实化
@@ -726,7 +728,7 @@ npm run verify:phase8
### 待复测
- 浏览器 smoke 和真实文件上传 smoke 需要在生产验证 环境补跑,重点复测客户端发送、签名材料上传、短信审核、短信记录、客户管理和报备任务。
- 浏览器 smoke 和真实文件上传 smoke 需要在预发布 环境补跑,重点复测客户端发送、签名材料上传、短信审核、短信记录、客户管理和报备任务。
## 2026-07-03 单运营商通道组、应用级费率和回执幂等
@@ -841,7 +843,7 @@ npm run verify:phase8
- `go build ./cmd/gateway` :通过。
- 真实 TCP 非法包用例:向入站端口写入非法 `total_length` ,确认业务 handler 未执行时仍产生 `read/unpack packet failed` 日志。
- CMPP2.0 真实集成用例:客户使用与登录账号不同的 `MsgSrc=SP0001` ,完成 V20 ConnectResp、Cmpp2SubmitReq/Resp 和 Cmpp2Deliver Receipt, NestJS 收到的 account 仍为 bind 账号:通过。
- 已将合并后提交 `bb4992f0` 部署到生产验证 环境;Prisma 无待执行迁移,前端/API/Gateway 构建和标准健康检查通过,12026/3000/8090/17890 监听正常。生产账号 `910887` 重连日志确认 `requested_version=0x20 response_version=0x20` ;该测试应用的 `cmppEnterpriseCode` 已通过真实运营 API 同步为 `910887` 。
- 已将合并后提交 `bb4992f0` 部署到预发布 环境;Prisma 无待执行迁移,前端/API/Gateway 构建和标准健康检查通过,12026/3000/8090/17890 监听正常。生产账号 `910887` 重连日志确认 `requested_version=0x20 response_version=0x20` ;该测试应用的 `cmppEnterpriseCode` 已通过真实运营 API 同步为 `910887` 。
## 2026-07-07 Gateway 上游提交与下游 Deliver 闭环补齐
@@ -1584,7 +1586,7 @@ git diff --check
## 2026-07-10 Batch 0 飞书瑕疵台账与分批策略
来源:飞书《短信平台第一版瑕疵》。本表仅记录问题路由和验收边界;除 Batch 1 外,其他项目仍须先在生产验证 环境只读复现并核对真实代码、API、PostgreSQL、Redis、MinIO 或 Gateway 状态,不能根据页面现象直接修改。
来源:飞书《短信平台第一版瑕疵》。本表仅记录问题路由和验收边界;除 Batch 1 外,其他项目仍须先在预发布 环境只读复现并核对真实代码、API、PostgreSQL、Redis、MinIO 或 Gateway 状态,不能根据页面现象直接修改。
| 飞书项 | 初步分类 | 真实链路/风险 | 计划批次 | 当前状态 |
| --- | --- | --- | --- | --- |
@@ -1653,7 +1655,7 @@ git diff --check
- API 全量单测通过:12 个 test suites、113 个测试通过;新增 BillingService 覆盖两笔人工充值分别返回其历史余额。
- API build 和前端 build 通过;前端仍有既有 Vite chunk size warning。
- `git diff --check` 无空白错误,仅 Windows 工作区 LF/CRLF 提示。
- 已按生产 标准脚本部署到 `8.160.169.106` ; Prisma migration deploy 无待执行迁移,`cmpp-api` 、`cmpp-gateway` 、Nginx、MinIO 均为 active, API/Gateway health、Redis 均通过。
- 已按正式发布 标准脚本部署到预发布服务器 `8.160.169.106` ; Prisma migration deploy 无待执行迁移,`cmpp-api` 、`cmpp-gateway` 、Nginx、MinIO 均为 active, API/Gateway health、Redis 均通过。
- 生产管理员真实登录后只读调用 `GET /api/admin/billing/manual-recharges` 成功返回 2 条记录,响应包含真实 `balanceAfterCents` ( 10000、1000)。
## 2026-07-10 Batch 2 通道配置真实链路
@@ -1677,7 +1679,7 @@ git diff --check
- ChannelsService 和 SendChainService 定向测试通过:2 个 test suites、55 个测试通过;ChannelsService 单独测试 23 项,覆盖流速、扩展位数持久化和非法配置拒绝。
- API build、前端 build、Gateway queue/upstream 测试通过;前端仍有既有 Vite chunk size warning。
- 已重新部署生产验证 环境;Prisma migration deploy 无待执行迁移,`cmpp-api` 、`cmpp-gateway` 、Nginx、MinIO 均为 active, API/Gateway health 正常。生产运行源码已确认包含流速校验、扩展位数持久化及 Gateway 队列字段。
- 已重新部署预发布 环境;Prisma migration deploy 无待执行迁移,`cmpp-api` 、`cmpp-gateway` 、Nginx、MinIO 均为 active, API/Gateway health 正常。生产运行源码已确认包含流速校验、扩展位数持久化及 Gateway 队列字段。
- 通道组名称为空时已有前端提示“请输入通道组名称”,保存会在调用真实创建/更新 API 前中断;本轮复核后不重复改动。
- 通道编辑密码保持掩码且不回显:编辑时明确提示“留空保持不变,填写新密码才更新”;新建通道仍要求填写密码。
- 上述密码交互调整已于 2026-07-10 生产验证部署后再次核验:`cmpp-api` 、`cmpp-gateway` 、Nginx、MinIO 均为 active,内外部 health/HTTP 检查通过。
@@ -1884,7 +1886,7 @@ git diff --check
## 2026-07-14 服务端安全会话与自动锁定
- 将可预测的 `dev-token:userId:sessionVersion` 和 localStorage 访问令牌替换为 256 位随机会话标识;浏览器只通过 HttpOnly、SameSite Cookie 携带,Redis 使用会话标识 SHA-256 键保存真实状态。生产模式 Cookie 默认 `Secure` ;本次按用户要求部署到现有 HTTP 生产验证 环境时显式配置 `SESSION_COOKIE_SECURE=false` ,正式生产切换 HTTPS 后必须恢复为 `true` 。
- 将可预测的 `dev-token:userId:sessionVersion` 和 localStorage 访问令牌替换为 256 位随机会话标识;浏览器只通过 HttpOnly、SameSite Cookie 携带,Redis 使用会话标识 SHA-256 键保存真实状态。生产模式 Cookie 默认 `Secure` ;本次按用户要求部署到现有 HTTP 预发布 环境时显式配置 `SESSION_COOKIE_SECURE=false` ,正式生产切换 HTTPS 后必须恢复为 `true` 。
- 运营端/客户端无操作阈值分别为 60/120 分钟,提前 5 分钟提醒;超时进入密码锁屏,4 小时内可用当前密码解锁并轮换会话标识,超过后完整登录。绝对会话时长 12 小时不可滑动续期;敏感操作最近密码认证窗口为 30 分钟。
- NestJS 中间件对运营端和客户端受保护 API 强制要求 Redis 会话,逐次校验用户状态和 `sessionVersion` ; Gateway 回调和 health 保持原内部链路,不被浏览器会话门禁拦截。自动轮询只有检测到近期真实浏览器操作时才携带活动标识,不能长期保活无人值守会话。
@@ -2007,7 +2009,7 @@ git diff --check
- 生产首轮发布复核发现 Gateway 进程重启时无法保证回写旧 TCP 会话断开,数据库陈旧连接可能占用应用连接名额,而原超时清理只在查询连接列表时触发。现将 90 秒陈旧连接清理前置到每次非断开连接事件校验,确保新 Gateway 无需等待运营人员打开页面即可自动恢复连接名额。
- 工作区完整功能提交 `faa716b8d07ea77fae3ec41c858b52f6a341e6b9` 和重启恢复修正提交 `23a1f6fa15445dbe6d2e4738b10b545b7c657472` 已 push。两次发布前备份分别位于 `/opt/cmpp-platform/backups/releases/20260716-175500` 和 `/opt/cmpp-platform/backups/releases/20260716-180244` ,PostgreSQL、运行源码和环境配置均通过 gzip/tar 完整性及 SHA-256 校验;最终发布包本地与服务器 SHA-256 均为 `c34c0fb627b77aa0c1a3d08169b3aff8d04587544ed9c1d83d8c0cd41b007272` 。
- 生产 migration `20260716150000_expand_money_precision_to_four_decimals` 已应用,53 条 migration 齐全,`SmsApplication.customerUnitPrice` 等金额列已为 `BIGINT` 。生产 API/Gateway health、PostgreSQL、Redis PONG、MinIO、Nginx 及 `12026/17890/8090/3000/9000` 监听均正常;两个真实通道 TPS key 均为 100, `gateway.submit.commands` 为 `pending=0、lag=0` ,部署后 API/Gateway 无 error 级日志。
- 生产 公网 CMPP 参数已配置为 `8.160.169.106:17890` 。不符合白名单的 `715011 / 183.194.97.158` 陈旧连接在超时窗口后自动清除,合法账号 `910887` 由新 Gateway 建立新连接并持续更新心跳,证明白名单和重启后连接名额恢复逻辑真实生效。Chrome/Playwright 复核运营登录、390px 客户端登录和客户 Swagger 文档均为 200、无横向溢出、无 console/page error;未绕过验证码、未修改账号、未发送短信。
- 预发布 公网 CMPP 参数已配置为 `8.160.169.106:17890` 。不符合白名单的 `715011 / 183.194.97.158` 陈旧连接在超时窗口后自动清除,合法账号 `910887` 由新 Gateway 建立新连接并持续更新心跳,证明白名单和重启后连接名额恢复逻辑真实生效。Chrome/Playwright 复核运营登录、390px 客户端登录和客户 Swagger 文档均为 200、无横向溢出、无 console/page error;未绕过验证码、未修改账号、未发送短信。
## 2026-07-18 CMPP 多号码 Submit 首号码静默丢弃修复(未提交、未部署)
@@ -2057,7 +2059,7 @@ git diff --check
- BullMQ 15000条/500并发门槛在本机共享Redis复测为429.50和404.43 TPS,临时独立Redis复测为379.39 TPS,未达到500 TPS;同一代码此前隔离复测达到907.93 TPS。本次不修改门槛、不伪造结果,按共享主机瞬时负载风险继续记录,后续应在固定规格、空载环境建立稳定基线。
- 部署前生产PostgreSQL、运行源码和环境配置备份至`/opt/cmpp-platform/backups/releases/20260720-180906` 。三份备份均非空并通过gzip/tar完整性及SHA-256校验:数据库`824be663552da2d2ce99184ec464a6e72d2f25c0c16dee234bfc47c7d371f433` 、源码`2598a9b6dd9b6a40002b877316cf23aef48447678915450381f76dcb99d14b54` 、环境`189f4f67e9d52f3c1ce751d1005c08667b1b4efcd0c576aaa5ad3249c822e4e7` 。发布包本地和服务器SHA-256均为`a6582da4de5c7161b480f4b5695099accb247071ec825e0b697c9f8d60762342` 。
- 使用`tools/deploy/production-deploy.sh` 完成部署,成功应用`20260718130000_add_cmpp_submit_group_message_id` 、`20260720110000_add_receipt_identity` 、`20260720113000_add_report_business_metrics` 、`20260720114500_add_receipt_phone_number` ,生产57条migration齐全且schema最新;CMPP多号码分组、回执唯一身份/目的号码、报表失败退款指标等目标列均已存在。
- 生产 运行提交为`f02c33cbb7248410c189f75502d6e497fff7b355` 。`cmpp-gateway` 、`cmpp-api` 、Nginx、PostgreSQL、Redis和MinIO均active, `12026/17890/8090/3000/9000` 监听;API/Gateway health、Redis PONG、PostgreSQL readiness、外部首页、运营登录、客户端登录、API health和Swagger JSON均通过,公网CMPP `8.160.169.106:17890` 可连接。根目录/API生产 依赖audit均为0漏洞。
- 预发布 运行提交为`f02c33cbb7248410c189f75502d6e497fff7b355` 。`cmpp-gateway` 、`cmpp-api` 、Nginx、PostgreSQL、Redis和MinIO均active, `12026/17890/8090/3000/9000` 监听;API/Gateway health、Redis PONG、PostgreSQL readiness、外部首页、运营登录、客户端登录、API health和Swagger JSON均通过,公网CMPP `8.160.169.106:17890` 可连接。根目录/API运行 依赖audit均为0漏洞。
- 两个active上游通道均为`connected/currentConnections=1` ,权威TPS配置已恢复;Redis Stream `gateway.submit.commands` consumer group为`pending=0、lag=0` 。部署后API/Gateway error级日志均为0。未发送或重投真实短信,未执行充值、审核、删除或生产业务数据修改。
- 本地Browser五视口LG2-P0-01证据已通过;生产浏览器烟测被企业网络策略禁止访问该公网HTTP地址,未使用其他浏览器或自动化方式绕过。生产外部HTTP/TCP、真实服务、数据库、Redis和运行产物均已核验,但本次不把生产浏览器交互标记为通过。
@@ -2163,16 +2165,45 @@ git diff --check
- `LG2-P1-14` 在运营签名和模板审核页分别打开通过确认层,仅取消时数据库状态仍为pending且审计为0。真实API随后首次批准签名并用相同幂等键重放,两次返回同一操作单`cmrvlgtrq000gakyumhm1iuiv` ,重放标志为true且只写一次审核。
- 浏览器证据覆盖上传页和日志导出页五视口、签名确认层五视口截图,以及模板确认层1440×900截图和390× 844 DOM尺寸测量;两端console error/warn为空。证据位于测试项目`平台LG_UIUX二轮走查证据/整改_A2_A3收口_20260722/` 。
- 自动化通过:files、operations、review-governance 3 suites / 31 tests;前端build、API build、Prisma validate/status( 58条、schema最新)和`git diff --check` 。前端仍有约1.92MB单chunk告警,项目无独立前端lint/组件/axe脚本。
- 客户端日志列表仍展示内部详情/IP,继续归`LG2-P1-07` ,未因导出安全而标记完成。临时数据、MinIO对象和Redis会话已清理;未触碰生产 ,未提交、未push、未部署。
- 客户端日志列表仍展示内部详情/IP,继续归`LG2-P1-07` ,未因导出安全而标记完成。临时数据、MinIO对象和Redis会话已清理;未触碰预发布环境 ,未提交、未push、未部署。
## 2026-07-22 工作区汇总提交与生产 发布(`0f223f7f` )
## 2026-07-22 工作区汇总提交与预发布 发布(`0f223f7f` )
- 按用户授权汇总提交当前全部有效平台源码、migration、测试、依赖锁文件和项目文档,共80个文件、4959行新增和765行删除;功能提交为`0f223f7f91d1bd24e7a2cc0ce6ce9ae3e3258b10` ( `feat: harden platform workflows and UI governance` ),已push至`origin/main` 。按仓库约束未提交`api/tsconfig.build.tsbuildinfo` 和任何`.log` ;独立的`outputs/phone-prefix-area-code-20260721/` 为号码地区表生成交付物而非平台运行源码,未纳入生产提交。
- 发布前发现API锁文件中的Prisma 7.8开发依赖链产生6个审计漏洞,且`api/package.json` 存在重复`overrides` 键。已将`@prisma/client` 、`@prisma/adapter-pg` 和Prisma CLI同步升级至7.9.0,移除过时Hono强制版本并合并override;干净`npm ci --include=dev` 后根目录和API的`npm audit --audit-level=low` 均为0漏洞。Prisma Client 7.9.0生成、schema validate及本地58条migration status均通过。
- 本地发布门禁:API全量24 suites / 282 tests通过,API TypeScript build、前端TypeScript/Vite build、Gateway `go test ./...` 、Prisma generate/validate/migrate status和`git diff --check` 通过。Jest断言完成后仍需`--forceExit` 结束既有异步句柄;前端仍有约1.92MB单chunk警告,继续归入后续性能整改,不虚报解决。
- 部署前生产 PostgreSQL、运行源码和环境配置备份至`/opt/cmpp-platform/backups/releases/20260722-142102` 。数据库备份`postgresql.sql.gz` 为4396893字节、SHA-256 `598e0b624b69c85f707a5c8f769a00fe2118f44e1491f872aa62e1f72d43890f` ;源码备份`runtime-source.tar.gz` 为28537401字节、SHA-256 `552633474c7888eb2c1a17902430fa385054ef7f5b5e654faf3e2934e94caec4` ;环境备份`cmpp-platform.env` 为850字节、SHA-256 `189f4f67e9d52f3c1ce751d1005c08667b1b4efcd0c576aaa5ad3249c822e4e7` 。三份文件均非空、权限600,数据库gzip和源码tar完整性校验通过。
- 发布包由提交快照生成,本地与服务器SHA-256均为`4aa2188b943885d73558b8e04014fd559d421981071cbcddca72ba379780478e` 。使用`tools/deploy/production-deploy.sh` 完成部署,成功应用`20260721150000_backfill_misattributed_delivery_receipts` , 生产 58条migration齐全且schema最新;脚本按Gateway在前、API在后的顺序重启并恢复运行状态。生产 `.deployed-commit=0f223f7f91d1bd24e7a2cc0ce6ce9ae3e3258b10` 。
- 部署前预发布 PostgreSQL、运行源码和环境配置备份至`/opt/cmpp-platform/backups/releases/20260722-142102` 。数据库备份`postgresql.sql.gz` 为4396893字节、SHA-256 `598e0b624b69c85f707a5c8f769a00fe2118f44e1491f872aa62e1f72d43890f` ;源码备份`runtime-source.tar.gz` 为28537401字节、SHA-256 `552633474c7888eb2c1a17902430fa385054ef7f5b5e654faf3e2934e94caec4` ;环境备份`cmpp-platform.env` 为850字节、SHA-256 `189f4f67e9d52f3c1ce751d1005c08667b1b4efcd0c576aaa5ad3249c822e4e7` 。三份文件均非空、权限600,数据库gzip和源码tar完整性校验通过。
- 发布包由提交快照生成,本地与服务器SHA-256均为`4aa2188b943885d73558b8e04014fd559d421981071cbcddca72ba379780478e` 。使用`tools/deploy/production-deploy.sh` 完成部署,成功应用`20260721150000_backfill_misattributed_delivery_receipts` , 预发布 58条migration齐全且schema最新;脚本按Gateway在前、API在后的顺序重启并恢复运行状态。预发布 `.deployed-commit=0f223f7f91d1bd24e7a2cc0ce6ce9ae3e3258b10` 。
- 发布后`cmpp-gateway` 、`cmpp-api` 、Nginx、PostgreSQL、Redis(实际unit为`redis` )和MinIO均active, `12026/17890/8090/3000/9000/6379/5432` 监听;API/Gateway health、Redis PONG、PostgreSQL readiness均通过。两个active上游通道`CH-1783566107506` 、`CH-1783566107506-COPY-MRCXAK2W` 均恢复为`connected/currentConnections=1` ,Redis中7个通道权威TPS配置存在;`gateway.submit.commands` 的`cmpp-gateway` consumer group为`pending=0、lag=0` 。
- 服务器本机及外部访问首页、运营登录、客户端登录和API health均返回HTTP 200,公网CMPP `8.160.169.106:17890` TCP连接成功。生产 根目录/API依赖audit均为0;部署后20分钟内API和Gateway journal error均为0, API近期stderr错误匹配为0。
- Browser真实打开生产 客户端登录页`/#/client/login` ,页面标题为“聆界短信管理平台”,Logo、用户名、密码、图形验证码和登录按钮完整渲染,DOM非空、无框架错误层,页面console error/warn为0并取得截图。空表单登录按钮交互在Browser控制层两次超时并触发连接重置,因此本次仅将生产 页面渲染烟测记为通过,不虚报登录交互通过;未输入或传输账号密码。
- 本次未发送或重投真实短信,未充值、审核、删除、禁用账号、改密或修改真实通道配置。生产 业务数据变更仅来自已审查并随发布执行的历史回执确定性回填migration。
- 服务器本机及外部访问首页、运营登录、客户端登录和API health均返回HTTP 200,公网CMPP `8.160.169.106:17890` TCP连接成功。预发布 根目录/API依赖audit均为0;部署后20分钟内API和Gateway journal error均为0, API近期stderr错误匹配为0。
- Browser真实打开预发布 客户端登录页`/#/client/login` ,页面标题为“聆界短信管理平台”,Logo、用户名、密码、图形验证码和登录按钮完整渲染,DOM非空、无框架错误层,页面console error/warn为0并取得截图。空表单登录按钮交互在Browser控制层两次超时并触发连接重置,因此本次仅将预发布 页面渲染烟测记为通过,不虚报登录交互通过;未输入或传输账号密码。
- 本次未发送或重投真实短信,未充值、审核、删除、禁用账号、改密或修改真实通道配置。预发布 业务数据变更仅来自已审查并随发布执行的历史回执确定性回填migration。
## 2026-07-22 预发布发布中断窗口复盘
- 本次约1小时19分钟为端到端发布作业时长,并非业务持续中断时长;旧服务在依赖安装、构建、备份和上传期间持续运行,实际服务切换集中在`14:27:53` 附近。
- systemd日志显示:Gateway从开始停止到重新启动约43毫秒,Nginx约126毫秒;API在`14:27:53.283` 开始停止,Nest于`14:27:54` 记录启动成功,API不可用窗口约1秒,按日志秒级精度保守上界小于1.72秒。
- Nginx访问日志在`14:20—14:32` 共记录8次请求且均为HTTP 200、无5xx;但`14:27:45—14:28:10` 没有请求样本,因此只能确认“未观察到HTTP失败”,不能据此声称HTTP业务零影响。
- Gateway重启会断开全部既有CMPP TCP会话。账号`910887` 约3秒后重连;账号`991405` 受客户端重试周期和连接名额暂未释放影响,首条可用连接约78秒后恢复,两条连接全部恢复约108秒后完成。若同样方式用于正式生产,应按受影响CMPP客户最长约1分48秒的业务中断评估,而不能只按Gateway监听端口的43毫秒计算。
- 该方式不是零停机发布。正式生产应采用API/前端蓝绿或滚动切换、Nginx reload、Gateway双实例与连接排空、受控关闭时及时释放连接名额,以及持续探针和健康门禁后再切流。
## 2026-07-22 应用日发送上限与HTTP参数复制修复(未提交、未部署)
- 根因:`SmsApplication.dailyLimit` 原先仅保存/展示,发送链没有任何读取或拦截;HTTP开通默认值只改了前端表单,Prisma/数据库仍以`cmpp` 为回执/上行默认投递模式,已有HTTP应用未回填;复制文本还漏了AppID和第六项“客户端自助密钥”。生产只读核查唯一已开通HTTP应用六项能力均为true,但两个投递模式均为`cmpp` ,与现象一致。
- 新增`SmsApplicationDailyUsage(applicationId, usageDate, usedCount)` 及唯一索引,按北京时间自然日使用PostgreSQL条件upsert原子抢占去重后号码配额。新建应用和历史NULL默认100000;迁移同时回填发布当日已创建的短信数,避免午间升级后额外获得一整份配额。
- 客户端/HTTP超限整批返回429和`DAILY_SEND_LIMIT_EXCEEDED` ,不创建任务/记录/冻结;CMPP整包预留失败后每个号码仍创建可审计rejected记录与`DAILY_LIMIT` 失败回执,不冻结或扣费。
- HTTP Schema和后端首次开通均默认六项能力为true、两个投递模式为`http` ;迁移仅将“HTTP已开通+对应Webhook已开启+旧模式cmpp”的历史行定向回填为http。复制文本新增AppID和客户端自助密钥能力。
- 回归:目标SendChain/SmsConfig/OpenAPI 3 suites / 138 tests通过;API全量24 suites / 289 tests通过;API build、前端build、Gateway `go test ./...` 、Prisma generate/validate通过。前端仍有既有1.92MB chunk警告;Jest断言完成后仍需`--forceExit` 结束异步句柄。
- 独立临时PostgreSQL数据库从零应用60条migration并通过status;实链并发验证上限3条时两个2条请求仅1个成功,`usedCount=2` ;新HTTP配置六项均true且投递模式为http。临时数据库已删除,共享本地库未应用本轮migration,避免触碰另一会话同时新增的签名迁移。
- `npm run verify:phase8` 未通过:契约和Gateway通过,BullMQ完成15000条真实Redis消息,但本机端到端336.82 TPS低于脚本500 TPS门槛,命令链在此中止;未将环境性能不达标写成通过。
- Browser本地页面验收未完成:应用内Browser对`127.0.0.1` 和工作站LAN地址均连接被拒,随后浏览器连接超时重置。未使用mock、生产旧页面或伪造截图冒充修复后交互通过。
## 2026-07-22 短信签名完整黑括号口径统一(未提交、未部署)
- 产品口径统一为:客户端和运营端新增、编辑签名时均填写完整中文黑括号名称,例如`【某某科技】` ;缺少括号、英文方括号、重复括号、空括号或括号外文本均不得提交。所有列表、详情、审核、报备、模板和发送预览只显示一层完整括号。
- 客户端移除“无需填写【】”提示,两端表单按完整格式控制提交;NestJS新增、编辑API执行相同强制校验并保存完整名称,防止绕过前端。新增migration统一修复历史非规范名称,签名API读取时也按单层格式输出。
- 客户端发送预览改用共享签名替换函数,不再在已经带括号的数据库名称外再次拼接,避免`【【签名】】` 。签名资料导入继续走同一后端校验,不能成为绕过入口。
- 验证结果:SmsConfig定向1 suite / 53项、报备资料导入1 suite / 7项、API全量24 suites / 290项通过;API TypeScript build、前端TypeScript/Vite build、Prisma validate通过。本地PostgreSQL已应用第59、60条migration且schema最新;第60条签名migration另在真实PostgreSQL事务内验证`测试` 、`[英文]` 、`【【重复】】` 分别规范化为`【测试】` 、`【英文】` 、`【重复】` ,随后回滚临时数据。Jest仍需`--forceExit` 结束既有异步句柄,前端仍有既有约1.92MB单chunk警告。
- 应用内浏览器使用本地真实PostgreSQL临时企业、平台管理员和企业管理员,分别读取并计算真实算术验证码登录客户端`/#/client/signatures` 和运营端`/#/admin/enterprise-signatures` 。两端新增表单输入`某某科技` 时均出现“必须填写完整中文黑括号签名”错误且提交按钮禁用,改为`【某某科技】` 后按钮启用;未点击保存。另插入本地草稿`【编辑验收签名】` ,客户端“修改”和运营端“编辑”弹窗均原样显示完整一层括号且提交可用,两端console error/warn均为0,并取得可见截图。
- 浏览器验收结束后已精确删除1条临时签名、2个临时用户、1个临时企业、4条登录操作日志和2个Redis会话;复核企业、用户、签名计数均为0。本会话启动的本地API和前端预览进程已停止,未留下测试业务数据或后台进程。
- 本轮未提交、未push、未部署;未写入预发布业务数据。工作区同时存在其他会话的应用日限额/HTTP默认配置修改,本轮仅在同一文件的签名逻辑区域增量修改并完整保留其改动。