- 只翻注释/文档字符串:剥掉行尾注释后,每条「-」都有逐字节相同的「+」对应行(8 组,代码零改动) - 保留协议/线上标识符原文:errcode、bot_token、context_token、getupdates、binded_redirect、PKCS#7、ECB 等 - 术语对齐既有译法:owner→主人、peer→对端、long poll→长轮询、backoff→退避、sentinel error→哨兵错误 - 已知既有欠债(未顺手修):login_reuse_test.go 在 HEAD 上就未 gofmt 干净;login_test.go 的 TestStartLogin_ScanStatusTransition 91 行 >80(HEAD 同为 91 行)
适配器: login_admin.go(StartLogin 幂等取二维码/LoginStatus idle-waiting-confirmed-failed); login.go 重写 Connect 委托 StartLogin+等待,后台 runLogin 轮询,completeLogin/failLogin (锁序 loginMu->a.mu 不嵌套反向无死锁); adapter.go 加登录会话字段 网关: admin_channels_weixin.go(2 端点 login-qr/login-status owner+审计, confirmed 合并写回 channels.json 保留 base_url/cdn/黑白名单 + Reload 热重载连接; qrImage best-effort Base64, token 掩码) + server.go 路由 前端: WeixinLogin.tsx(token空→扫码按钮→二维码→1.5s轮询→confirmed提示已登录+显示bot_id), AdapterDetailPage 渲染, api/types 补类型 必需偏离(最小化): 允许空token的weixin账号被构建/持久化(channels.go+runtimeconfig移出 tokenRequiringPlatforms),否则空token账号无法注册调用StartLogin; 空token保持断开(configured 仍要求token非空),确认后才持久化连接——守红线。 测试: login_admin/admin端点用例; 后端 build/vet/test 全绿 + 前端 build 101模块绿.