R84 R86 收口用户开通界面与自动化回归
这个提交包含在:
@@ -29,6 +29,119 @@
|
||||
- 数据库/分支:`hyb_oa_manual_trialrun_20260428172231 / 2bce9c9`
|
||||
- 执行人:`Codex Playwright 辅助复核`
|
||||
|
||||
## R79 公网部署态辅助复核(2026-05-04)
|
||||
|
||||
当前已核实部署基线:
|
||||
|
||||
- 公网地址:`https://oa.hyinda.com`
|
||||
- 服务器:`118.89.77.218`
|
||||
- 反向代理:`caddy`
|
||||
- SSH:常规 `deploy`,系统配置 `root`
|
||||
- 部署目录:`/opt/hyb-oa-trialrun`
|
||||
- 远端容器命令:`docker-compose`
|
||||
|
||||
Codex 可代做:
|
||||
|
||||
1. SSH 登录服务器做只读巡检。
|
||||
2. 执行 `deploy/trialrun/deploy.sh`、`/ready`、`smoke-external-deps.js`、`smoke-trialrun-runtime.js`。
|
||||
3. 查看 `Caddyfile`、容器状态、日志、feature flag 与工作区配置。
|
||||
4. 在你提供账号后执行 `smoke-live` 和 Playwright 公网只读复核。
|
||||
|
||||
必须人工配合:
|
||||
|
||||
1. 企业微信后台配置工作台入口与 OAuth 回调。
|
||||
2. 提供独立 smoke 账号凭据,不使用真实业务账号。
|
||||
3. 若需要真实企微绑定、手机扫码、二次验证,必须由你本人完成。
|
||||
|
||||
最小人工操作清单:
|
||||
|
||||
1. 企微后台配置:
|
||||
- 工作台入口 URL:`https://oa.hyinda.com/api/auth/wecom/login?returnTo=%2Fportal`
|
||||
- OAuth 回调 URL:`https://oa.hyinda.com/api/auth/wecom/callback`
|
||||
2. 提供至少两组公网只读 smoke 账号:
|
||||
- `smoke-admin`
|
||||
- `smoke-employee`
|
||||
3. 若公网运行时 smoke 继续提示公告或搜索缺失,用管理员账号进入“功能开关”页,核对:
|
||||
- `portal_home_v1`
|
||||
- `announcements_v1`
|
||||
- `global_search_v1`
|
||||
- `wecom_entry_v1`
|
||||
4. 若你让我继续代跑公网 smoke,只需要把账号标识和密码给我;我会继续完成自动化部分。
|
||||
|
||||
## R80 企微公网启用回填(2026-05-04)
|
||||
|
||||
- 企业微信域名校验文件已可访问:
|
||||
- `https://oa.hyinda.com/WW_verify_StBYfdlboMaIoRRE.txt`
|
||||
- 公网企微入口运行时已启用:
|
||||
- 远端 `.env`:`WECOM_ENABLED=true`、`WECOM_ENTRY_ENABLED=true`、`WECOM_OAUTH_ENABLED=true`
|
||||
- 数据库 `feature_flags`:`wecom_entry_v1=inherit`
|
||||
- 自动化核验已完成:
|
||||
- `GET https://oa.hyinda.com/api/auth/wecom/config` 返回 `status=ready`
|
||||
- `GET https://oa.hyinda.com/api/auth/wecom/login?returnTo=%2Fportal` 返回 `302`,并跳转到 `open.weixin.qq.com`
|
||||
- Playwright 公网登录页快照已确认出现“使用企业微信进入工作台”按钮
|
||||
- Playwright 点击后,桌面浏览器落到企微提示页“请在企业微信客户端打开链接”,符合预期
|
||||
- 截图:`output/playwright/2026-05-04-wecom-login-page.png`
|
||||
|
||||
你现在必须人工完成的动作:
|
||||
|
||||
1. 用手机企业微信或桌面企业微信打开该应用,不要用普通浏览器代替。
|
||||
2. 若首次进入后回到 OA 登录页并带 `wecom=unbound`:
|
||||
- 用已有 OA 账号密码登录
|
||||
- 进入“个人设置”
|
||||
- 执行企微绑定
|
||||
- 绑定成功后,再次从企业微信工作台进入 OA
|
||||
3. 首次人工闭环时,建议只用 1 个员工测试账号,不要直接用高权限真实业务账号。
|
||||
4. 若你完成首次绑定后要我继续代跑公网 smoke,再把该 smoke 账号标识告诉我,我继续补 Playwright / curl 只读核验。
|
||||
|
||||
## R81 企微回调身份取证(2026-05-04)
|
||||
|
||||
- 当前线上已追加最小安全诊断:
|
||||
- 企微回调若缺少 `UserId`,server 会记录:
|
||||
- `requestId`
|
||||
- `mode`
|
||||
- `hasUserId`
|
||||
- `hasOpenId`
|
||||
- `hasDeviceId`
|
||||
- 不记录 token、secret、完整敏感回包。
|
||||
- 当前服务器复核结果:
|
||||
- `https://oa.hyinda.com/ready`:正常
|
||||
- `https://oa.hyinda.com/api/auth/wecom/config`:`status=ready`
|
||||
- `https://oa.hyinda.com/api/auth/wecom/login?returnTo=%2Fportal`:仍返回 `302` 到企微 OAuth
|
||||
|
||||
你现在需要做的人工操作:
|
||||
|
||||
1. 在手机企业微信里进入工作台,打开 OA 应用一次。
|
||||
2. 如果仍然失败,不要反复点,先停在错误页。
|
||||
3. 记录以下任一信息发给我:
|
||||
- 页面里的 `requestId`
|
||||
- 错误截图
|
||||
- 大致时间点(精确到分钟)
|
||||
4. 如果页面重新跳回登录页,也把最终 URL 或截图发给我。
|
||||
|
||||
我收到后会立刻去服务器抓对应日志,判断腾讯这次回包到底是:
|
||||
|
||||
- 有 `OpenId` 但没有 `UserId`
|
||||
- 还是两个字段都没有
|
||||
- 还是另外一种接口异常
|
||||
|
||||
## R83-R86 用户开通与首次绑定收口(2026-05-04)
|
||||
|
||||
- 本轮新增自动化覆盖:
|
||||
- `client/tests/e2e/user-onboarding.spec.ts`
|
||||
- 管理员在“系统用户管理”中创建用户时,不再手填工号和初始密码。
|
||||
- 创建成功后,页面展示系统生成的员工号与一次性口令。
|
||||
- 新用户首次登录后,被强制跳转到“修改密码”页,改密成功再进入 Portal。
|
||||
- `client/tests/e2e/wecom-first-bind.spec.ts`
|
||||
- 企业微信未绑定场景回退到密码登录页后,用户仍可继续进入目标页。
|
||||
- 当前代码口径:
|
||||
- 单个新建用户:系统自动生成员工号,管理员只维护基础资料与角色。
|
||||
- 首次登录:使用一次性口令登录,必须先改密。
|
||||
- 企微首次绑定:服务端已支持“未绑定回退登录后自动补绑定”的闭环,不再要求用户必须手动去“个人设置”补绑定。
|
||||
- 仍需人工完成的最小动作:
|
||||
1. 把本轮代码部署到目标环境。
|
||||
2. 用真实手机企业微信打开 OA 应用一次,确认真实 OAuth 回调、cookie 与企业身份都正常。
|
||||
3. 若仍失败,记录 `requestId`、错误截图和时间点给我,我继续抓线上日志定位。
|
||||
|
||||
## 员工路径
|
||||
|
||||
账号:员工测试账号。
|
||||
|
||||
在新工单中引用
屏蔽一个用户