Files
wechat-scan/.ai-memory/project_cad_wxauth_integration.md
T
gjm 553e416303 chore: 记忆更新——模型文件已加 svn:ignore(SVN r41)
之前记的「svn status 会长期列出 8 个 ? 模型文件」已过期:r41 已给 CadOcr/onnx 与
CadOcr/src/models 设置 svn:ignore,工作区恢复干净。
2026-09-27 20:37:06 +08:00

61 lines
4.0 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.
---
name: CAD 插件微信授权集成
description: d:/Ethereal-Realm 里 CadOcr+cadAgent 接入微信扫码授权的进度、两端分工与构建顺序约束,以及本机只能编 R230/R243+ 工具集的事实
type: project
---
把 `d:/Ethereal-Realm`(SVN 工作区)里的 CAD 插件从「本地时间毒药」授权换成
服务端(本项目 d:/wx-scan-authorize)微信扫码授权。2026-09-27 完成编码 +
客户端侧端到端验证。
- 公众号后台「服务器配置」URL 已改到 Cloudflare 快速隧道,微信真实
`subscribe`/`SCAN` 推送已打通(见 [生产服务器部署环境](project_server_deploy.md))。
- **仍需用户本人做**:在 AutoCAD 里加载 `cadAgent.arx`,人工验证二维码对话框
(我这边没有 AutoCAD)。用户 2026-09-27 表示暂不做。
- `test_wxauth.exe` 已从控制台程序改造成 **Win32 对话框**:二维码显示区 +
本地授权状态区 + 「清空令牌」「模拟新机器」两个按钮。为此 DLL 新增导出
序号 **44/45**(`ocr_wxAuthGetLocalState` / `ocr_wxAuthClearLocalState`)。
**已提交 SVN r40(2026-09-27 20:34)**
`d:/Ethereal-Realm` 用 SVN 管理(`svn://47.93.46.28/Ethereal-Realm`)。
微信授权相关改动共 22 个路径已提交:CadOcr 的 `wxAuth.cpp/.h`、`wx_auth_export.h`、
`securityEngine.h`、`cadOCR.def`、`impl_ocr.cpp`、`test/`,cadAgent 的 `WxAuthDlg.cpp/.h`
及接入改动,以及 `CODEBUDDY.md`、`CadOcr/mfc.md`。
- **`.eonnx` 加密模型未纳入版本控制**(用户 2026-09-27 明确决定):`CadOcr/src/models/`
下约 140 MB、`CadOcr/onnx/` 下同一份的另一拷贝。`src/CadOcr.rc` 通过
`IDR_ONNX_*` 引用它们(RC 把模型嵌进 DLL),**所以 clone 后无法直接构建 CadOcr**,
需另行准备模型文件。
- 已加 `svn:ignore` 让 `svn status` 保持干净(**r41**):`CadOcr/onnx` 在原有忽略
`.onnx` 的基础上追加 `*.eonnx`、`*.etxt`;`CadOcr/src/models` 新增同样两条。
所以那 8 个模型文件现在**不会**出现在 `svn status` 里,也**不该被 add**。
- `CadOcr/test/test_wxauth.rc` 是 UTF-16LE,SVN 自动标记为
`application/octet-stream`(二进制),与现有 `CadOcr/src/CadOcr.rc` 处理一致,属正常。
**分工**(用户拍板)
- `CadOcr`(DLL,无 MFC):全部网络 + 注册表 + 授权状态机(`src/wxAuth.cpp`)。
- `cadAgent`(ARX,MFC):只做 UI(`WxAuthDlg.cpp`)。
- 新增导出序号 **40~43**(`ocr_wxAuthBegin/Poll/Reset/FreeBuffer`),原有 2/5/13/25
一律不动。宿主侧 `ocr_check` 仍导出在序号 20,握手保留、时间毒药删除。
**关键约束**
- **必须先编 CadOcr 再编 cadAgent**:`CadOcr/include/*.h` 靠 PostBuildCopy 同步到
`CADProject/dep_inc/cadOcr/`,顺序反了会用到旧头文件。
- 服务端基址是编译期常量 `CADOCR_WX_BASE_URL`(默认域名),联调时用
`cmake --preset msvc-ocr -DCADOCR_WX_BASE_URL=http://39.107.55.179` 覆盖。
刻意不做运行时覆盖,避免被指向假服务端绕过授权。
- 本机 VS18 只装了 MSVC 14.16/14.29/14.42/14.44/14.51,**没有 v100(VS2010)、
v140(VS2015)**,所以 `R190`/`R220` 这两个 preset 编不出来(`CADProject/out/R190`
里连 vcxproj 都没生成)。实际能编的是 **R230/R243/R250/R260**;`build.bat`
里写的 R220 会失败。
- CadOcr 的 `test/test_wxauth.exe` 是独立验证程序,不装 AutoCAD 就能跑通整条链路。
它靠 `#pragma comment(linker, "/EXPORT:ocr_check,@20,NONAME")` 导出握手函数
—— CMake 只对库目标识别 `.def`,对可执行目标会当普通文件忽略。
**Why:** 这些跨了两个工作区的耦合约束(构建顺序、共享头同步、导出序号、
工具集可用性)从任一端的代码里都看不出来,踩了会很难查。
**How to apply:** 改 CadOcr 的公共头后务必先编 CadOcr;给用户的构建命令别用
R190/R220;讨论授权链路时记得 UI 在 cadAgent、网络在 CadOcr。