Skip to content

fix(dingtalk): preserve local auth and sync access-only cloud snapshots - #12

Open
luckjun529-lang wants to merge 2 commits into
wecode-ai:mainfrom
luckjun529-lang:codex/dingtalk-local-auth-cloud-snapshot
Open

luckjun529-lang wants to merge 2 commits into
wecode-ai:mainfrom
luckjun529-lang:codex/dingtalk-local-auth-cloud-snapshot

Conversation

@luckjun529-lang

Copy link
Copy Markdown

背景

DingTalk 0.3.3 的独占凭据交接会删除本地登录凭据,旧交接回执还会强制本地业务走 Broker。当当前任务没有可用 Broker 环境时,本地插件因此不可用。

本 PR 按 WeWork 0.5.4 已有协议实现一次 DWS 授权、本地唯一刷新、云端短期访问快照,不修改 WeWork 源码。插件版本更新为 0.3.4。

变更

  • 将本地登录连接 dingtalk-local 与可选 bearer 快照连接 dingtalk-access 分离,云端同步失败不再影响本地登录。
  • 本地默认直接调用 DWS,不因旧迁移回执强制走 Broker;显式云端/平台账号仍走认证代理,失败不回退或重放本地写操作。
  • 导出严格白名单访问快照,不上传 refresh token、persistent code 或 client secret,不注册 detach、云端 refresh/revoke。
  • 本地导出复用官方双层锁、刷新前持久化预检和刷新保存逻辑;失败不删除凭据或标记本地 profile 失效。
  • 云端校验身份和有效期,预留 30 秒余量;过期返回 dingtalk_cloud_token_expired,保持连接可被后续同步更新,包装器返回非零退出码。
  • 更新打包校验、来源库存、技能说明和升级/验收文档;保留 Windows 原生启动器等待及退出码传播。

验证

  • 本次复跑:公共入口/兼容性 29 项(28 通过,PowerShell 不可用跳过 1 项);打包与库存 18 项、共享 Python SDK 23 项通过。
  • 实现阶段:Go 隔离存储、并发刷新、失败保留、字段白名单、到期拒绝、真实 DWS 合成业务及原生通道测试通过。
  • 新声明通过固定 wework-v0.5.4 的认证 schema 校验。
  • 固定 Go 1.25.9 构建 darwin arm64/amd64、linux arm64/amd64、windows amd64 五个平台;macOS arm64 的包内真实私有通道与解压包 2 项测试通过。
  • vendor.py --check . 和 git diff --check 通过。
  • 测试包 SHA-256:348d79dd20308f5d4ae50812c2528bd5af6d272c836dcaa015624d840a584419。生成 ZIP 留在本地,不提交二进制到 Git。

发布门禁 / 升级限制

  • 不能对 0.3.3 已交接用户直接全量自动升级。 必须在旧定义仍可验证时停止旧同步、退役旧托管连接并处理在途交接/撤销,再恢复本地授权和安装新包;升级不能找回已删除的本地凭据。
  • 真实 WeWork 0.5.4 的一次授权 UI、后台周期同步、云端到期后恢复、系统钥匙串以及多设备/账号切换仍需端到端验收。Windows/Linux 本次为交叉编译,不冒充真机运行通过。
  • 本地退出不会立即撤销已上传的短期快照;停止云端共享需断开云端连接。
  • 未操作真实账号登录、刷新、迁移或撤销,未发布市场版本。远端 CI 结果以本 PR 检查为准。

详见 docs/dingtalk-auth-wework-0.5.4-design.md。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant