2026-09-27 20:27:45 +08:00
|
|
|
|
---
|
|
|
|
|
|
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`)。
|
|
|
|
|
|
|
2026-09-27 20:35:29 +08:00
|
|
|
|
**已提交 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**,
|
|
|
|
|
|
需另行准备模型文件。
|
2026-09-27 20:37:06 +08:00
|
|
|
|
- 已加 `svn:ignore` 让 `svn status` 保持干净(**r41**):`CadOcr/onnx` 在原有忽略
|
|
|
|
|
|
`.onnx` 的基础上追加 `*.eonnx`、`*.etxt`;`CadOcr/src/models` 新增同样两条。
|
|
|
|
|
|
所以那 8 个模型文件现在**不会**出现在 `svn status` 里,也**不该被 add**。
|
2026-09-27 20:35:29 +08:00
|
|
|
|
- `CadOcr/test/test_wxauth.rc` 是 UTF-16LE,SVN 自动标记为
|
|
|
|
|
|
`application/octet-stream`(二进制),与现有 `CadOcr/src/CadOcr.rc` 处理一致,属正常。
|
|
|
|
|
|
|
2026-09-27 20:27:45 +08:00
|
|
|
|
**分工**(用户拍板)
|
|
|
|
|
|
- `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。
|