之前记的「svn status 会长期列出 8 个 ? 模型文件」已过期:r41 已给 CadOcr/onnx 与 CadOcr/src/models 设置 svn:ignore,工作区恢复干净。
4.0 KiB
4.0 KiB
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: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。