Files
wechat-scan/.ai-memory/project_cad_wxauth_integration.md
T
gjm 6c5770b754 chore: 新增 .ai-memory 记忆备份,换机器可恢复
CodeBuddy 的记忆原本只存在本机用户目录(不进版本控制),换机器即丢失。
把 5 个记忆文件备份进仓库,clone 后让助手「从 .ai-memory/ 导入记忆」即可恢复。

- README 说明用途、导入方法与维护约定
- CODEBUDDY.md 补充同步约定(改完记忆须同步本目录)
- 内容仅含基础设施信息(IP/域名/用户名),无任何密码或密钥
2026-09-27 20:27:45 +08:00

44 lines
2.8 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`)。
**分工**(用户拍板)
- `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。