From 86947827cc80dbc363514b3b52c2576546f5337b Mon Sep 17 00:00:00 2001 From: hectorzhao Date: Thu, 10 Sep 2026 14:06:54 +0800 Subject: [PATCH] docs: record drainage test deployment and recovery evidence --- docs/production-deployment.md | 7 ++ docs/release-20260910-test-drainage.md | 118 +++++++++++++++++++++++++ docs/system-functional-test-cases.md | 5 ++ docs/testing-progress.md | 7 ++ 4 files changed, 137 insertions(+) create mode 100644 docs/release-20260910-test-drainage.md diff --git a/docs/production-deployment.md b/docs/production-deployment.md index 17c33f9..bd27970 100644 --- a/docs/production-deployment.md +++ b/docs/production-deployment.md @@ -354,3 +354,10 @@ npm run prisma:generate、API 生产构建,以及线上 api/dist、api/node_mo 23:03:45 首页、主 JS、JSX runtime、CSS 四份公网资源均 200 且与磁盘同摘要;匿名三尺寸页面/验证码正常、pageerror=0,实际主包不含开发 React/JSX 标记。首次 CSS 失败原异常丢失;两个 rum POST 为验收主动阻断,另一次外域 GET 的真实 ERR_CONNECTION_CLOSED 来源未保留,网络原因未关闭。公开资源和匿名页面通过不替代登录后业务验收:现有会话锁定待用户解锁,未改账号。 本节更新此前“预生产待发布”的历史状态。生产模式、轮询及分页修复已交付;登录后验收、未分类网络失败与实际恢复演练分别保留未完成。证据见 %TEMP%/cmpp-starttime-pagination-20260908/public-verify 下 run-2026-09-08T15-03-44-416Z/verification.json 和 anonymous-2026-09-08T15-07-16-145Z/review.json。 + + +## 2026-09-10 测试引流门禁发布与安全代理修复 + +测试100.93.204.60已由809175b544f2526891ba6d2dece1a50eadaf57a0发布至0c3f820cc92eeae8c996ac7d6d8d6db98e049ea7,标准计划20260910T053026-0c3f820cc92e-76f98ff4。用户单独批准修复cmpp-security-agent缺少运行目录:新增/etc/systemd/system/cmpp-security-agent.service.d/runtime-directory.conf,声明RuntimeDirectory=cmpp-security-agent、RuntimeDirectoryMode=0750;目录root:cmpp-security,保留原沙箱限制。模板尚未同步,未整机重启验证;本机drop-in已持久保存并通过服务重启。 + +[发布证据与完整资产清单](release-20260910-test-drainage.md)记录恢复点、工具摘要、13项服务/数据库/队列/真实页面验收、磁盘11.85GB→10.37GB可用和既有资产保留。测试无独立数据盘,不套用预生产迁盘结论。应用已部署、仅本地提交;未推送、未预生产部署、未发送或补发短信。 diff --git a/docs/release-20260910-test-drainage.md b/docs/release-20260910-test-drainage.md new file mode 100644 index 0000000..c7e96c1 --- /dev/null +++ b/docs/release-20260910-test-drainage.md @@ -0,0 +1,118 @@ +# 2026-09-10 测试环境引流门禁发布验收 + +本记录补充标准工具报告和引流专项方案,记录本次精确版本的测试发布事实。预生产未操作,未推送。 + +- 应用提交:`0c3f820cc92eeae8c996ac7d6d8d6db98e049ea7`;原线上版本:`809175b544f2526891ba6d2dece1a50eadaf57a0`。包含此前九项运营修复 `5bcdbb2`,包内不含工作区其他修改。 +- 发布编号:`20260910T053026-0c3f820cc92e-76f98ff4`;本地工具报告:`.local-data/releases/20260910T053026-0c3f820cc92e-76f98ff4/report.md`。 +- 工具摘要:`e0220a990afc6b3d0fb791dd71e9ab37d2687cbd0272ae05c2e0bffd0d06b5d9`。`tools/release/` 是开工已有未提交工具,本轮保持字节不变;应用提交号不代表工具版本。 +- 源包 SHA256:`4ac91176db102a351f56fe20aebd7a3fd6775c03a91e1ef38bc45eaa75aaefd7`,使用已由线上文件摘要确认的 CRLF 归档;计划摘要:`05031daba48be655fd59525e3170e8f41211ef4fb1f1564205548cfa24a25011`。 +- 已按 plan、validate、preflight、prepare、deploy、verify、status、report 执行,最终状态 `deployed-infrastructure-checked`。未手改计划、跳过门禁或调用旧发布脚本。 + +## 验证与边界 + +- 精确提交独立 validate:API 67套722项,前端27文件136项通过;类型、格式、lint、Stylelint、CSS治理、Go测试及vet通过。工作区此前723项含1项其他会话metrics测试,未夹带提交。远端候选production前端/API/Gateway构建和security/deploy/bundle门禁通过。 +- 本地真实PostgreSQL/API引流用例、并发撤销锁、多目标统计、号码NFKC与域名边界,以及production浏览器详情已通过;多引流统计最终证据为 `real-gate-statistics2.log`。首轮日报统计夹具未进入已完成日期窗口,修正测试日期参数后验证,并非修改生产统计规则来通过测试。 +- 发布后13项服务active且NRestarts为0,含API、Callback、Gateway、Worker、安全代理、PostgreSQL、Redis、MinIO、Nginx;精确部署标记、迁移、HTTP入口和资源摘要与候选一致。三个Gateway Stream消费组pending/lag均0。消息119509条、提交130769条,发布前后不变。保护配置一致,无计划外进程变化。 +- journal无新增warning级记录;应用追加日志扫描无新增error标记,非全量历史日志零错误的声明。标准verify复验仍无warnings。 +- 真实测试管理员正常验证码登录;通道、签名质量、系统监控、预警中心、清退预警、短信记录六页面真实请求通过,无HTTP错误、requestfailed或pageerror。发送详情展示真实2026-08-27历史记录“未执行引流资格校验”,1600×1000、1366×768、390×844截图及显式关闭通过。未向历史消息补填门禁结果。 +- 线上页面证据 `live-after-1789019806762`、`live-after.log`;本地证据根为 `%TEMP%/cmpp-drainage-implementation-20260910`。标准工具目前无业务验收写入入口,工具报告该栏仍显示未执行,本节独立记录已执行的只读页面验收,不改写工具状态冒充闭环。 +- 未执行真实短信发送、长短信物理分片/供应商零Submit证明、客户回执ACK/离线投递、真实费用对账、故障注入或容量压测;须专项授权。未修改既有批准、通道、客户或余额配置,非CMPP不新增拦截回执。MinIO服务active,未上传材料;收尾补查HTTP readiness时SSH连接超时,未据此宣称HTTP探针通过,网络原因仍未关闭。 + +## 安全代理环境修复 + +首次preflight被既有cmpp-security-agent故障阻断:226/NAMESPACE,/run/cmpp-security-agent不存在;服务ReadWritePaths引用该目录但未声明创建。用户单独批准基础设施修复后,新建 `/etc/systemd/system/cmpp-security-agent.service.d/runtime-directory.conf`: + +```ini +[Service] +RuntimeDirectory=cmpp-security-agent +RuntimeDirectoryMode=0750 +``` + +执行daemon-reload并仅重启该代理;目录root:cmpp-security/0750、连续观察重启数不再增长,随后重新preflight通过。保留已有安全沙箱限制,未使用临时mkdir掩盖重启丢目录。发布后代理重启正常;未重启整台测试机验证开机。drop-in属于本次授权环境修复,仓库初始化service模板尚未同步,该配置不冒称属于应用提交。证据 `repair-security-runtime.log`。 + +## 耗时 + +| 阶段 | 开始 | 秒 | +|---|---|---:| +| prepare | 2026-09-10 13:52:31 CST | 77.9 | +| backup | 2026-09-10 13:54:53 CST | 35.7 | +| stop | 2026-09-10 13:55:31 CST | 1.6 | +| migrate | 2026-09-10 13:55:32 CST | 1.3 | +| switch-dist | 2026-09-10 13:55:34 CST | 0.0 | +| switch-api-dist | 2026-09-10 13:55:34 CST | 0.0 | +| switch-api-node_modules | 2026-09-10 13:55:39 CST | 0.0 | +| sources | 2026-09-10 13:55:39 CST | 0.1 | +| start | 2026-09-10 13:55:40 CST | 5.5 | +| marker | 2026-09-10 13:55:45 CST | 0.1 | +| verify | 2026-09-10 13:55:45 CST | 4.5 | + +停止服务至全部受影响服务恢复约14.3秒,不能将候选准备/备份/等待时间计作停机。本地精确提交validate约13:30~13:39;此前本地功能验证另记于测试进度。SSH超时、等待用户恢复网络及批准安全代理修复属于独立故障/等待,未计入上表。浏览器验收约13:56执行;详细时间以日志和截图目录为准。 + +## 恢复资产与容量 + +本次独立恢复点:`/var/backups/cmpp-platform/20260910T053026-0c3f820cc92e-76f98ff4-attempt-1789019693807379972`,对应原版本`809175b544f2526891ba6d2dece1a50eadaf57a0`。PG custom dump目录检查、Redis RDB头、应用和配置归档可读性及下列摘要均通过;未执行恢复演练。 + +| 文件 | SHA256 | +|---|---| +| application.tgz | `a9bc6d0485b3707feac8fb9aa91510d4d49947c9d223b45e620766244bb58094` | +| configuration.tgz | `b08cf3f7e920f21c20b449f830fdbfdfd292150c9e1faae38ffbd07b9774fa6b` | +| database.dump | `7519d06275dc865028c2e6f30ce49e0e3867c3d57231b33b5af5baa95ef4ec90` | +| redis.rdb | `d1f02ca99bfdbe0417c8f63fe844fcece8d068fb0dae1308a7cf5a71940fd383` | + +盘点时间:发布前2026-09-10 13:51:10 CST,发布后2026-09-10 13:57:55 CST。测试机无独立数据盘或/data挂载,程序、发布目录、备份与历史副本均在/dev/sda2的ext4根文件系统。系统盘已用87,850,401,792→89,328,619,520字节,增加1,478,217,728字节;可用11,850,387,456→10,372,169,728字节,89%→90%。各目录du差值不能简单相加为df差值,包含运行数据变化、文件系统分配及父子重复关系。 + +| 资产路径 | 发布前字节 | 发布后字节 | 增量 | +|---|---:|---:|---:| +| `/opt/cmpp-platform` | 1018621952 | 1023991808 | +5369856 | +| `/opt/cmpp-releases` | 5437882368 | 6464483328 | +1026600960 | +| `/var/backups/cmpp-platform` | 4069167104 | 4564557824 | +495390720 | +| `/opt/cmpp-platform-backups` | 23341174784 | 23341174784 | +0 | +| `/root/.npm` | 595038208 | 622092288 | +27054080 | +| `/var/log` | 945696768 | 945766400 | +69632 | + +当前程序为/opt/cmpp-platform的0c3f820cc92eeae8c996ac7d6d8d6db98e049ea7。上一有效版本809175b544f2526891ba6d2dece1a50eadaf57a0由本次独立备份及/opt/cmpp-releases/20260910T053026-0c3f820cc92e-76f98ff4/previous-*共同保留;应用回退会失去引流门禁,数据库不自动回退,也不得借回退重投短信。 + +本次发布目录保留previous-dist 35,639,296字节、previous-api-dist 4,517,888字节、previous-api-node_modules 582,897,664字节、previous-source 3,526,656字节、候选剩余395,755,520字节及源包/日志/状态;合计1,026,600,960字节。独立备份新增495,390,720字节。候选和切换组件仍同文件系统,未迁盘。 + +旧版本根目录盘点如下;无部署标记的版本仅凭目录名不能确定,明确未核实。全部保留,未实施“当前+上一有效版本”清理治理。历史/opt/cmpp-platform-backups占23,341,174,784字节,也未删除。当前logs仍引用/opt/cmpp-platform-previous-20260906-monitor-442dda7/logs,该旧根不能直接删除。 + +| 旧程序/候选根目录 | 字节 | 可读部署标记 | +|---|---:|---| +| `/opt/cmpp-night-previous-20260907T230742` | 612507648 | 无标记,精确版本未核实 | +| `/opt/cmpp-platform.previous-reportbatch-068b804-20260903T031400Z` | 988270592 | 068b8047ddbfbacf32b233b7b8cfb4e52fd04a6f | +| `/opt/cmpp-platform-previous-20260906-monitor-442dda7` | 623886336 | 442dda711d5c9f778f3f76fd6d8fd69f14414ce6 | +| `/opt/cmpp-platform.previous-wps-fe3c6e5-20260904T095352Z` | 988004352 | fe3c6e5b589cf475c611f5189e9243e657b5deac | +| `/opt/cmpp-platform-candidate-e4f93f7` | 14458880 | 0e3424c4a726f112385d0c7f3f3ebd90c127195b | +| `/opt/cmpp-platform.previous-css-6508295-20260905T0055` | 988237824 | 65082959c05c975eb7856ee281811a37e1fc284a | +| `/opt/cmpp-platform.previous-report-material-state-dc201bf9-20260903T050717Z` | 987893760 | dc201bf92ef039dd5beb3c16950e622c600f0026 | +| `/opt/cmpp-platform.previous-report-briefs-ad89e8f-20260902T1040Z` | 966549504 | ad89e8fed793857daf18ea6cebb995edfe3b74d4 | +| `/opt/cmpp-night-release-633ba59` | 985272320 | 无标记,精确版本未核实 | +| `/opt/cmpp-platform-v5-stage-20260820T073310Z` | 10334208 | 无标记,精确版本未核实 | +| `/opt/cmpp-platform.previous-p4-20260821T024737Z` | 838713344 | fcf6d3e6b439b20ad09f517f4fb11c8142758460+workspace.p4fix.b9de7aafef63 | +| `/opt/cmpp-platform.previous-drainage-20260828T093754Z` | 987291648 | 226527f1cef122e4dbd163da782485e8c0254dc5 | +| `/opt/cmpp-platform-frontend-247fee6` | 14061568 | 无标记,精确版本未核实 | +| `/opt/cmpp-platform.previous-p2fix-20260820T110500Z` | 840720384 | 99fb346c125b0f620641562c50ad517a7682a10f+workspace.p2.56456e81d3be | +| `/opt/cmpp-platform-candidate-4c21072` | 42749952 | 无标记,精确版本未核实 | +| `/opt/cmpp-v4-final-20260820T061323Z` | 7843840 | 无标记,精确版本未核实 | +| `/opt/cmpp-platform.previous-schemeless-20260828T100204Z` | 987258880 | c68ac7a3db82d1bdb867260378df18f93cca0fd2 | +| `/opt/cmpp-platform.previous-p4-20260821T022833Z` | 835203072 | 52028b9bbdea20f0cd02efe792e91b558ba50be9+workspace.p3.7c14cd5f197a | +| `/opt/cmpp-night-candidate-20260907` | 982675456 | 无标记,精确版本未核实 | +| `/opt/cmpp-platform.previous-channel-groups-20260905T231242-15a1f9d` | 1003593728 | 15a1f9d8eddd4f7233987fbf676a91f4e0bfab08 | +| `/opt/cmpp-platform.previous-p2-20260820T105600Z` | 1037434880 | 229a0b28fd8b84d910c359ff9ac442fc3e843cb4+workspace.p1submitpool.f50505ad9ee9 | +| `/opt/cmpp-platform-previous-step2-20260824T023615Z` | 835596288 | 90345fba22e3ae183e1edb4fdae718fb7cb2d963+workspace.p4progress.d82933c344ec | +| `/opt/cmpp-platform.previous-brief-default-7cb5dd3-20260903T0142Z` | 988180480 | 7cb5dd376e23ff0c8a1e3785ab376e432f2ebf6a | +| `/opt/cmpp-platform.previous-high-frequency-final-cd82499-20260902T0851Z` | 987590656 | cd824999f3b604155e09fbad1f5c6258cfe1d918 | +| `/opt/cmpp-platform.failed-p4-20260821T030907Z` | 798334976 | 无标记,精确版本未核实 | +| `/opt/cmpp-platform.previous-wps-async-41962e7-20260904T1500Z` | 988098560 | 41962e7a6e6cfd34b4313c8bf52d9345d37d8e10 | +| `/opt/cmpp-platform.candidate-report-record-fe3c6e5` | 11743232 | 无标记,精确版本未核实 | +| `/opt/cmpp-platform.previous-p3-20260821T014803Z` | 835768320 | f4560479d3bcb9f1b1a6fc9b1b2664a997cdf851+workspace.p2fix.51553e0d5555 | +| `/opt/cmpp-v4-stage-20260820T052612Z` | 7843840 | 无标记,精确版本未核实 | +| `/opt/cmpp-platform.previous-p4-20260821T030956Z` | 835121152 | 3c6f1beed1c4e6cbfc3822ae377de13317e48ded+workspace.p4cb.68ad7a6ef649 | +| `/opt/cmpp-platform.previous-import-review-20260904T122649Z` | 988098560 | bb435fb0ac1e7812fcdb59950a4b13757899ab39 | +| `/opt/cmpp-platform.previous-enterprise-signature-b0deef5` | 987676672 | b0deef5e6ebe6adbfe85591c53dedf11866880a0 | +| `/opt/cmpp-platform.previous-code-quality-20260828T040442Z` | 859160576 | d85ff8599955e8d217b923dd314690f4b18a4dd2 | +| `/opt/cmpp-platform.previous-sixfix-20260831T042224Z` | 987369472 | 5328bb09bf89170b4368407e896dbce9527a7b5c | +| `/opt/cmpp-platform.previous-code-quality-20260828T035307Z` | 1096306688 | 0b84370270c681dff3b15363f91b73566c6954b5 | +| `/opt/cmpp-platform.previous-p4-20260821T024137Z` | 835813376 | 487b5282a66ec11957a3edf4e9e93cc70cd76342+workspace.p4.ee5b0f3d0db8 | + +完整47个根路径、挂载、缓存/日志/PG/Redis/MinIO占用、符号链接和回读证据保存在 inventory-before-full.json、inventory-after-full.json、inventory-after-versions.json。历史迁盘冷副本在本测试机未识别到独立/data;未借用预生产容量结论。清理工具、历史资产谱系/恢复验证和治理仍未完成,后续专项处理。 diff --git a/docs/system-functional-test-cases.md b/docs/system-functional-test-cases.md index b6f7ac9..dbad8a4 100644 --- a/docs/system-functional-test-cases.md +++ b/docs/system-functional-test-cases.md @@ -5388,3 +5388,8 @@ TC-DRAINAGE-GATE-08审核要求已获用户确认:已添加但未审核通过 TC-DRAINAGE-GATE-01~16的实现范围以专项方案第10节为准,不再笼统标为全部待实现。新增真实数据库/API脚本 tools/testing/verify-drainage-gate.mjs 只接受本机 cmpp_qa_drainage_ 数字后缀克隆库,不调用发送入口或Gateway传输;覆盖02、04~09、12、16中的规范化、关联、通道交集、审核/报备撤销、并发锁、伪URL及SQL部分。Gateway隔离单元覆盖最终复核与故障拒绝;API单元覆盖CMPP已有回执恢复、持久化失败保留待恢复标记和非CMPP无推送。真实页面覆盖16的三尺寸、关闭、刷新和路由切换。新增用例:转发头不能调用最终资格接口;已终态提交不能重复授予许可;无实际wire的DRN拒绝不计入通道发送尝试。 保留待专项发送验收:10/11的各入口到供应商端到端、12的物理提交边界、13的客户回执ACK/离线重投、14的真实费用及部分分片对账、15的真实基础设施故障恢复及吞吐。单元测试、持久化夹具和浏览器不代替这些证据。旧配置不迁移、不自动补齐;配置入口沿用原API,测试环境只读确认,不保存客户配置。 + + +### 2026-09-10 TC-DRAINAGE-GATE测试发布补充 + +0c3f820已部署测试。TC-DRAINAGE-GATE相关本地真实数据库/API/并发/统计用例及生产构建页面通过;线上历史短信详情保持“未执行引流资格校验”,三尺寸和显式关闭通过。TC-OPS0909相关六页面真实请求回归通过,不将只读打开页面记作重做全部写操作用例。迁移、13项服务、Gateway Stream与版本摘要检查通过。真实短信/供应商零Submit、长短信、CMPP回执ACK与费用对账仍待专项授权,状态不得升级为全链路通过。证据见[测试发布验收](release-20260910-test-drainage.md)。 diff --git a/docs/testing-progress.md b/docs/testing-progress.md index a8303ba..7a95c7b 100644 --- a/docs/testing-progress.md +++ b/docs/testing-progress.md @@ -4865,3 +4865,10 @@ git diff --check - 浏览器:Browser插件不可用,使用既有Playwright/Edge,真实本地API+独立PostgreSQL库;Redis5仅隔离本机队列,登录使用测试Redis7的DB15独立随机前缀,经SSH转发,结束删除仅本轮认证键和临时QA用户。1600×1000、1366×768、390×844通过,拦截原因、显式关闭、刷新与跨路由正常,无pageerror。首轮在详情请求返回前断言历史占位,已修正测试等待,并为加载中新增明确提示;最终production构建再次验收通过。证据 browser-final.log 及该目录最新 browser-* 截图。 - 环境:13:12重新核验测试SSH和health可达,线上版本仍809175b544f2526891ba6d2dece1a50eadaf57a0。期间两次SSH连接超时,Tailscale通过DERP后恢复;不记作认证失败或网络根因已永久解决。本次测试发布包同时包含此前九项运营修复提交与本功能;不推送远端。 - 未执行:真实短信提交、供应商零Submit/长短信跨分片对账、客户回执ACK/离线送达、费用和部分已发记录对账、TPS/故障注入容量测试;没有专项发送授权,以上不以单元、夹具或浏览器代替。既有通道配置不修改,MinIO材料无变更。提交及标准发布阶段、磁盘/恢复资产与目标页面结果在后续记录补齐。 + + +## 2026-09-10 引流门禁测试部署完成(14:00 CST) + +应用0c3f820cc92eeae8c996ac7d6d8d6db98e049ea7已本地提交并通过标准工具部署测试,原版本809175b544f2526891ba6d2dece1a50eadaf57a0;未推送、未部署预生产。精确提交validate为API67套722项、前端27文件136项及相关门禁通过。首次preflight的安全代理运行目录缺失由用户单独授权修复,复检后正常发布。13项服务active、三个Gateway Stream pending/lag=0、消息/提交数不变、迁移/资源摘要/日志验证通过。真实测试管理员和六页面、三尺寸历史短信详情通过,线上不回填旧消息。 + +[本次发布验收](release-20260910-test-drainage.md)记录完整版本、工具未提交摘要、备份、容量清单与阶段时间。候选77.9秒、备份35.7秒,停服务至恢复约14秒;发布后系统盘可用10.37GB,比发布前减少约1.48GB,旧版本/候选/备份未清理。真实发送、供应商Submit、客户回执ACK和费用对账仍未执行,不能以页面通过代替。原网络超时根因与预生产历史故障未宣称关闭。