日期:2026-09-14。默认保护仍为“初代兼容”。本次只修改和验证本地源码,没有连接、部署或更新服务器,没有迁移生产数据库或改动生产账号。
| 问题 | 本次结果 |
|---|---|
| HTTP 与原生 WSS 身份不一致 | 原生 WS 首帧、后续帧和握手头使用共享身份转换;安装 ID 的两种写法同步,session/thread 等别名按同一策略处理。本地真实 WSS 回显已验证 mode1、mode2、legacy。 |
| 不同会话复用不兼容连接 | 已启用保护的 device 策略也将会话、线程和会话头纳入 WS 连接池兼容条件。最小兼容和 TLS 对照策略新增回归。 |
| 切换策略失败后关闭保护 | 在内存中计算还原及目标策略,最后仅提交一次更新;写入时在数据库行锁下比较账号版本,冲突返回 409。配置更新与调度 outbox 同一事务,失败不发布中间关闭状态。 |
| 无标记旧快照覆盖新保护 | 最终保存始终读取锁定后的当前保护字段,取消按旧对象是否含标记决定跳过检查的分支。 |
| mode2、批量更新等保护不一致 | 所有已注册策略共享受管字段规则;单账号、JSONB 局部更新和批量更新均保留策略、身份、TLS 与并发限制。真实数据库逐一测试全部可应用策略。 |
| 不支持的平台仍能应用专属策略 | 后端在修改前校验平台、类型、影子及代理条件,前端过滤不适用策略。非法模式继续返回明确错误。 |
| 预览只显示模板,无法解释实际路径 | 预览新增配置目标、有效传输计划、全局开关/插件覆盖原因和有效并发。没有握手记录时明确标为未观测。兼容读取旧 mode1 v2 的 nodejs24 配置。 |
| 智能测试无法还原执行条件 | 每次测试固定一份账号副本,执行快照保存策略/版本、身份、有效 TLS、模板摘要、代理引用、并发、实际模型、账号版本及输入摘要;写入既有 config_snapshot JSONB,不需要新表迁移。普通连通性测试与智能测试均应用已选保护身份。 |
前一轮已修复的默认选择、TLS 完整还原、generic 识别和未知策略拒绝继续保留。存量已开启策略不会因默认值改变而自动换成初代兼容。
| 检查 | 结果 |
|---|---|
| 前端全量测试 | 278 文件、2039 项通过,0 失败 |
| 后端全量单元测试 | 19339 个测试/子测试通过,0 失败;26 个按测试条件跳过 |
| 独立 PostgreSQL 专项 | 79 个测试/子测试通过,0 失败、0 跳过 |
| 后续 WS/保护/权限定向回归 | 686 个测试/子测试通过,0 失败、0 跳过 |
| 原专项复现场景 | 原 14 个叶子场景全部通过;包含父测试后报告为 17 个通过 |
| 静态及构建检查 | 前端类型检查、全量 ESLint、生产构建通过;后端目标包 go vet、编译通过;Wire 接线重新生成通过 |
| 审计脚本与工作流 | 9 项脚本测试通过;现有审计文件校验通过;工作流 YAML 解析通过 |
后端 JSON 汇总位于 verification/account-protection-review/final-*.json,保留修改前及中间阶段的失败日志。后续新增连接池隔离检查在定向回归中执行;没有反复扩大与本次变更无关的测试。
数据库验证使用本机新建、仅监听 127.0.0.1:56439 的 PostgreSQL 16.15 实例与合成数据,每个测试使用独立 schema。验证完成后实例已停止,未连接现有数据库。
本地编译产物:后端 C:/Users/30214/AppData/Local/Temp/sub2-protection-repairs.exe;前端 C:/Users/30214/AppData/Local/Temp/sub2-protection-repairs-frontend。它们是验证产物,没有发布或替换服务器程序。
原审查记录保留用于追溯;当前修复状态以本文件为准。