Files
kefu/deploy/protocol-file-identity-20260917/TEST_REPORT.md
T
2026-09-21 10:34:06 +08:00

37 lines
3.4 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.
# 协议文件校验误报修复(1.4.17)
## 结论与原因
此前性能优化引入了兼容性回归。安装版 1.4.16 使用 Python 3.12.14;在本机 Windows 上,同一份未变化的 WXWork.exe,`Path.stat().st_ctime_ns` 返回创建时间,而 `os.fstat().st_ctime_ns` 返回变更时间。跨接口比较导致错误提示“企业微信文件在校验期间发生变化,请重新检测”。Python 3.11.9 没有表现出相同差异,所以此前仅使用 3.11 的源代码回归未发现问题。
真实文件修复前复现记录:`real-before.json`;修复后:`real-after-python312.json`、`real-after-python311.json`。两种运行时得到相同 SHA256。
## 修复
- `C:\wechat_rpa\wecom_native_sender.py`:统一通过只读打开文件后使用 `fstat` 获取身份;计算哈希期间保持原句柄打开,再打开路径核对身份,消除跨接口字段差异。
- 保留卷、文件 ID、长度、修改时间、变更时间核对,实际变更/替换仍会拒绝。
- 保留同轮只读检测复用;真正发送前仍完整校验,PID 重用与账号切换不会绕过检查。
- 原文件备份:`C:\wechat_rpa\backups\protocol-file-identity-20260917\wecom_native_sender.py`。
- `C:\kefu\wechat_rpa` 不包含此原生协议模块,没有为它复制新增协议功能。
## 验证
- Python 3.12.14:105 项协议相关隔离测试全部通过,0 失败、0 错误、0 跳过。
- Python 3.11.9:同样 105 项全部通过。
- 其中新增 8 项覆盖真实 Windows 临时文件时间差异、跨接口元数据差异、同长度/时间文件替换、哈希中修改、只读缓存、PID 重用、发送前重新校验。
- 独立复核也在两种运行时各通过这 8 项。
- Python 3.12 完整本机只读检测:企业微信 5.0.11.6018、当前登录账号、当前账号消息库均已核对,错误列表为空,耗时约 2.48 秒。见 `source-probe-python312.json`。
- 当前安装版数据目录缺少此账号的首次发送及回执记录,因此状态仍为 `native_validation_required`;本次不发送消息、不伪造回执、不启动监听、不修改任务队列。
## 安装包
- 1.4.17 使用生产构建环境 Python 3.12.14 打包,包含 `python312.dll`。
- 生产打包自检通过;独立检查冻结 PYZ 确认包含本次 `fstat` 修复,冻结函数在 Python 3.12 的临时文件哈希测试通过,UI 资源匹配,没有混入私有配置。
- 主程序 SHA256:`dceb8289a6d5d8a9fb5b6e14ce7acd5a1dd82399f3ea3e1d74ae0cb24cc7ac19`。
- **打包后真实验证**:用新 EXE 的 `--protocol-diagnostics` 隐藏运行只读诊断,退出码 0,错误列表为空,企业微信版本/当前登录/消息库均核对通过。协议构建校验约 2.33 秒;包含额外模块静态扫描的完整深度诊断共 10.69 秒,不能与普通按钮检测耗时直接对比。结果见 `frozen-protocol-diagnostics.json`。
- 打包版同样保留缺少真实回执时的首次发送验证要求。
- 安装包:`C:\wechat_rpa\releases\甄AI客服-安装包-v1.4.17.exe`。
- 安装包 SHA256:`ec11843342b3f136ff1d017489bbc388ac55818b026731c1d413d1be2e8d8165`。
- 本次没有关闭用户当前 1.4.16 程序,没有替换正在使用的安装目录,也没有发布到服务器。退出旧版后安装 1.4.17,再点击“检测本机协议”;如提示首次发送验证,需按当前账号完成真实验证。