Files
wechat-scan/.ai-memory/project_cad_wxauth_integration.md
T
gjm 719f88105c chore: 记忆记录 CAD 插件改动已提交 SVN r40
- project_cad_wxauth_integration.md 补充 SVN r40 提交详情,并记下 .eonnx 模型有意不入库(clone 后无法直接构建 CadOcr)
- project_progress.md 同步该状态
2026-09-27 20:35:29 +08:00

3.9 KiB
Raw Blame History

name, description, type
name description type
CAD 插件微信授权集成 d:/Ethereal-Realm 里 CadOcr+cadAgent 接入微信扫码授权的进度、两端分工与构建顺序约束,以及本机只能编 R230/R243+ 工具集的事实 project

把 d:/Ethereal-Realm(SVN 工作区)里的 CAD 插件从「本地时间毒药」授权换成 服务端(本项目 d:/wx-scan-authorize)微信扫码授权。2026-09-27 完成编码 + 客户端侧端到端验证。

  • 公众号后台「服务器配置」URL 已改到 Cloudflare 快速隧道,微信真实 subscribe/SCAN 推送已打通(见 生产服务器部署环境)。
  • 仍需用户本人做:在 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 status 会长期列出 8 个 ? 模型文件——这是已知且有意的状态, 不是漏提交,不要"顺手"把它们 add 进去。
  • onnx/ 目录的 svn:ignore 只忽略了原始 .onnx(有意不提交原始模型), 未忽略 .eonnx。
  • 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。