文件
hyb-oa/.trellis/tasks/07-28-all-account-login-readiness/implement.md
T
wangsli 9b12451b85
ci-e2e / e2e (push) Canceled after 0s
ci-minimal / check-minimal (push) Canceled after 0s
实现企微首次免密自动绑定(07-28-all-account-login-readiness)
2026-07-28 11:18:50 +08:00

4.8 KiB

全员登录可用性实施计划

1. Read-only Baseline

  • 核对公网 /ready 和认证 capabilities;企业邮箱验证码登录、忘记密码均启用。
  • 聚合核对 4 个 active 账户的邮箱/手机号、密码状态、锁定、企微 binding 和成功登录类型,不输出个人标识或认证数据。
  • 确认唯一管理员缺企微 binding,其余 3 个 active 账户已有 binding;当前企微成功登录证据为 0。
  • 确认 3 个账户仍需首次改密且未知随机初始密码无法作为已交付凭据。

2. Administrator Self-Recovery

  • 用户批准进入实施并确认本人可访问企业邮箱。
  • 首次电脑自助请求已签发新的有效验证码;旧验证码失效后被误用 1 次,账户未锁定,服务端未记录邮件发送失败。
  • 失败现场已定性并保留:失败发生在 /reset-password 成功之前,是第二次签发使旧验证码失效;没有前端缓存跳转证据。
  • 执行已批准的管理员 break-glass:精确定位唯一 active 管理员,设置受控一次性密码,清除锁定、撤销旧会话、递增 token version、失效旧验证码并写脱敏审计。
  • 独立只读复核通过:必须首次改密、锁定清零、活动会话与活动验证码均为 0,审计存在;公网 /ready 返回 200。
  • 用户以一次性密码登录并完成强制改密;只读核对首次改密标记已清除、当前仅 1 个活动会话、改密与 break-glass 审计均存在。
  • 新版部署后用户从企微工作台重新进入,由 userid/唯一企业邮箱自动补 binding 并直接登录,不输入 OA 密码。
  • 首次复测仍显示 unbound;只读诊断确认管理员尚无 binding,近 30 分钟没有来自企微 WebView 的成功或失败密码登录,也没有 bind 审计,说明尚未提交页面下方的账号密码表单。
  • 用户再次从企微工作台进入,确认直接到 OA 且不再出现 unbound。
  • 只读核对管理员新增密码成功、binding 和企微登录审计,输出仅限布尔值。

3. Remaining Active Accounts

  • 为其余 3 名已有 binding 的 active 员工发送不含账号/密码的操作说明,由本人先直接测试企微工作台免登。
  • 每名企微成员从工作台真机进入,验证唯一 binding 与免登;免登通过者不因密码流程而阻塞主入口验收。
  • 企微免登验证后,再逐人完成密码回退和首次改密状态收口;管理员不接触其密码或验证码。
  • 邮件失败者单独登记稳定失败类别;确需管理员一次性密码时先给出目标数量、审计和交付方案并另行获批。

4. Verification and Prevention

  • 聚合复核 active 总数、密码登录覆盖、企微 binding 覆盖、企微成功登录覆盖和锁定数;不得输出人员明细。
  • 验证无 binding conflict、无角色变化、无企微通讯录写入、无异常会话残留。
  • 更新现有管理员手册/试运行 checklist:active 账号启用必须包含安全凭据交付、首次改密、密码登录和企微本人免登。
  • 运行认证聚焦测试、前端 typecheck/build、Trellis task/governance、敏感扫描、文档审计和 git diff --check;生产部署后的公网 smoke test 仍待独立批准后执行。

4A. Passwordless First WeCom Login

  • 抽取只读企微成员资料获取能力:输入 OAuth 已确认的内部 userid,只返回规范化企业邮箱和必要状态,不记录原始 payload。
  • 普通企微登录在 binding 缺失时,按 userid/唯一企业邮箱匹配既有 active OA 账户;事务内二次检查双向冲突、建立 binding、写脱敏审计并创建会话。
  • 对无匹配、inactive、userid 已绑定他人、账户已绑定其他 userid 和企微 API 失败逐类失败关闭;不按姓名绑定、不创建账户、不改角色。企微邮箱缺失时仅允许 userid 精确匹配。
  • 保持已有 binding 快路径不变,避免每次登录都调用通讯录详情接口;密码登录不再消费 pending bind 建立企微映射。
  • 修正 unbound 页面文案:不再把账号密码作为首次企微绑定说明,显示稳定的映射缺失/冲突处理指引。
  • 增加后端路由与服务测试、前端文案/交互测试;覆盖首次免密自动绑定、已有 binding、负向矩阵和审计脱敏。
  • 生成生产存量 dry-run 脱敏汇总;部署和 apply 回填分别取得明确批准后执行。

5. Stop Conditions

  • 企业邮箱不可达、验证码投递异常或账户锁定:停止该员工操作,不连续请求。
  • 企微回调缺 userid、binding conflict 或映射不唯一:停止写入并只读诊断。
  • 任何步骤要求在聊天、任务、命令参数或普通日志中暴露密码、验证码、完整账号或 userid:立即停止并改用受控现场交付。