文件
hyb-oa/artifacts/r70/manual-trialrun-checklist.md
T

14 KiB
原始文件 Blame 文件历史

R70 人工业务试运行清单

日期:2026-04-28

目标

用 10 人以下科技公司的真实日常路径验证系统是否可试运行。R70 不追求覆盖所有功能,重点发现阻断真实使用的问题。

执行原则

  • 每个角色试用 30-60 分钟。
  • 发现问题先记录,不现场扩展需求。
  • P0/P1 才中断并进入立即修复判断。
  • 涉及 workflow、权限、状态机、审批规则、迁移的问题必须单独 review。
  • 截图放在本地即可,不提交到仓库;问题记录写入 artifacts/r70/issue-log.csv。

严重级别

  • P0:无法登录、系统不可用、核心数据丢失、权限泄露。
  • P1:核心业务无法完成,例如请假/报销/审批/关键管理入口阻断。
  • P2:业务可绕过但明显影响效率或理解,例如入口难找、文案误导、状态不清。
  • P3:轻微体验问题,例如间距、提示、非关键排序。

环境记录

  • 环境 URL:http://192.168.123.7:3000
  • 执行日期:2026-04-28
  • 浏览器:Firefox (Playwright CLI)
  • 数据库/分支: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=%2Fmobile
    • 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=%2Fmobile 返回 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=%2Fmobile:返回 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、错误截图和时间点给我,我继续抓线上日志定位。

R89 登录与移动端 UX 自动复核(2026-05-05)

  • 本轮目标:把登录页从说明型入口收敛为操作型入口,并修复手机端菜单/导航不可用的问题。
  • 本地验证地址:http://127.0.0.1:5173
  • 自动化覆盖:
    • 企业微信移动 UA 打开 /login 时,首屏只突出“进入工作台”,并生成 returnTo=/mobile 的企微 OAuth URL。
    • iPhone 视口密码登录后默认进入 /mobile,并完成:首页今日重点 -> 移动审批 -> 票据上传 -> 我的/更多入口。
    • Pixel 视口进入非 /mobile 页面时,顶部菜单抽屉可打开、可关闭。
  • 回归命令:
    • cd client && E2E_BASE_URL=http://127.0.0.1:5173 npx playwright test tests/e2e/r89-mobile-login-navigation.spec.ts --workers=1 --reporter=list
    • cd client && npm run typecheck
    • cd client && npm run build
  • 当前结论:R89 移动端自动化关键路径已通过;仍需真实手机企业微信在公网应用中复核一次真实 OAuth、cookie 与移动工作台落点。

员工路径

账号:员工测试账号。

  1. 登录并进入 Portal。
  2. 查看今日动作、常用入口、公告和通知。
  3. 新建请假草稿,提交或撤回一次。
  4. 新建报销草稿,确认空白报销入口可理解。
  5. 写一份周报并生成待办,完成待办。
  6. 使用全局搜索查找一个业务对象。
  7. 打开移动入口,确认移动审批/移动工作台入口可理解。
  8. 将问题写入 artifacts/r70/issue-log.csv。

验收关注:

  • 是否知道下一步该点哪里。
  • 表单必填项和错误提示是否清楚。
  • 提交后状态是否能理解。
  • 移动端是否能完成最小查看/处理。

经理路径

账号:经理测试账号。

  1. 登录并确认 Portal 是管理视角。
  2. 进入待我处理,完成一条快捷审批或详情审批。
  3. 查看请假团队日历,判断团队成员可用性。
  4. 查看团队状态和通知。
  5. 进入项目工作台,确认项目协同信息是否可理解。
  6. 将问题写入 artifacts/r70/issue-log.csv。

验收关注:

  • 审批入口是否明显。
  • 快捷审批和详情审批是否有足够上下文。
  • 团队日历是否能支持实际排班/请假判断。
  • 审批后状态是否及时刷新。

管理员路径

账号:管理员测试账号。

  1. 登录并确认管理入口可见。
  2. 检查人员管理、组织架构入口。
  3. 检查系统设置和功能开关文案。
  4. 查询审计日志,确认关键操作可追踪。
  5. 用普通员工视角对比,确认不应出现的管理入口不可见。
  6. 将问题写入 artifacts/r70/issue-log.csv。

验收关注:

  • 管理入口是否按小团队常用频率排序。
  • 配置项是否会误导非技术管理员。
  • 权限边界是否符合预期。
  • 审计日志是否足以追踪关键操作。

结束条件

  • 员工、经理、管理员三类路径都完成。
  • 所有发现的问题已记录严重级别。
  • P0/P1 已明确是否暂停试运行。
  • artifacts/r70/manual-trialrun-report.md 已回填结论。

R71 定向复测回填

  • 复测时间:2026-04-28 19:08 - 19:11 CST
  • manager:/leave-requests 的“团队日历”页签打开成功,显示 2026-04-27 ~ 2026-05-03 窗口内本部门请假数据,通过。
  • employee:无发票时,报销详情页在提交按钮附近即时提示“提交前需先绑定至少 1 张发票,可在‘关联票据’区域添加。”,通过。
  • employee:上传 /home/shunli/Projects/hyb-oa/artifacts/北京悦海堂餐饮管理有限公司_发票金额1683.00元.pdf -> 绑定 -> 再次提交后,报销单 4931211b-34b4-43b8-9e9f-917569d47c33 进入 reviewing,编号 BX-20260428-0001,通过。
  • 结论:R70 初始两条问题已闭环,可恢复下一轮本地人工试运行。

R73 自动化覆盖回填

  • 自动化环境:http://127.0.0.1:3001
  • 自动化数据库:hyb_oa_manual_trialrun_20260428172231
  • 执行时间:2026-04-28 20:49 - 21:08 CST
  • 已自动化覆盖:
    • client/tests/e2e/reimbursement-workflow-progress.spec.ts
      • 报销提交后详情页展示当前审批进度。
    • client/tests/e2e/invoice-ocr-flow.spec.ts
      • 报销详情:上传发票 -> OCR 完成 -> 自动进入可绑定候选 -> 绑定 -> 提交报销。
      • 票据中心:OCR 缺关键字段 -> 当前页提示原因 -> 补齐字段 -> 标记 available。
  • 显式开关的辅助自动化:
    • client/tests/e2e/manual/live-invoice-ocr.spec.ts
    • 用途:接入真实腾讯 OCR + 真实 VAT 发票时做本地辅助复核,不进入常规本地回归。
    • 启动示例:PLAYWRIGHT_MANUAL=1 PLAYWRIGHT_OCR_LIVE=1 PLAYWRIGHT_OCR_LIVE_FILE=/home/shunli/Projects/hyb-oa/artifacts/北京悦海堂餐饮管理有限公司_发票金额1683.00元.pdf npm run test:e2e -- tests/e2e/manual/live-invoice-ocr.spec.ts
  • 仍需人工体验判断:
    • Portal 信息架构是否易懂。
    • 审批上下文是否足够。
    • 移动入口与管理员入口的认知负担。
    • 真实腾讯 OCR 在不同票样下的识别质量与耗时体感。

R73 本地环境基线回填

  • 2026-04-28 本地辅助复核中,client/tests/e2e/manual/r70-trialrun-assist.spec.ts 首次出现 5 个失败步骤;复盘确认根因是本地运行时 env 未开启试运行所需模块,不是当前业务链路回归。
  • 本地试运行前,server 运行时至少应开启:
    • PORTAL_HOME_ENABLED=true
    • GLOBAL_SEARCH_ENABLED=true
    • ANNOUNCEMENTS_ENABLED=true
    • PRESENCE_BOARD_ENABLED=true
    • ATTENDANCE_ENABLED=true
    • WEEKLY_REPORT_ENABLED=true
    • EMPLOYEE_LIFECYCLE_ENABLED=true
    • TODO_BOARD_ENABLED=true
    • PROJECT_DOMAIN_ENABLED=true
    • PROJECT_LINKING_ENABLED=true
    • PROJECT_COMMUNICATION_LOG_ENABLED=true
    • PROJECT_CLOSURE_CHECKLIST_ENABLED=true
  • 当前 trialrun 数据库内的 feature_flags 与 workspace_settings 已具备小团队试运行配置;若页面仍显示模块缺失,优先检查 server 进程的运行时 env,而不是先怀疑数据库种子。
  • 本地 HTTP 辅助复核不要强制 COOKIE_SECURE=true,否则 127.0.0.1 / 192.168.123.7 下登录态会失效;该项只在 HTTPS 试运行部署时开启。
  • 真实腾讯 OCR 已用运行时注入方式接入旧项目本地配置完成验证;不要把腾讯密钥写回仓库内 .env。
  • 本地先跑门禁:
    • cd server && TRIALRUN_RUNTIME_MODE=local node src/scripts/smoke-trialrun-runtime.js
  • 深层真实业务辅助回归:
    • cd client && PLAYWRIGHT_MANUAL=1 R70_TRIALRUN_DEEP_ASSIST=1 E2E_BASE_URL=http://127.0.0.1:3001 npm run test:e2e -- tests/e2e/manual/r70-trialrun-deep-assist.spec.ts
  • 批量真实腾讯 OCR 辅助回归:
    • cd client && PLAYWRIGHT_MANUAL=1 PLAYWRIGHT_OCR_LIVE=1 PLAYWRIGHT_OCR_LIVE_BATCH=1 PLAYWRIGHT_OCR_LIVE_DIR=<目录> E2E_BASE_URL=http://127.0.0.1:3001 npm run test:e2e -- tests/e2e/manual/live-invoice-ocr-batch.spec.ts

R77 OCR 收口回填

  • 2026-04-29 已在 http://127.0.0.1:3001 上用真实 PDF 发票完成单张与 batch Playwright 复测,两个用例均正常通过并退出。
  • 推荐本地 live OCR 复测顺序:
    • 先跑 cd server && TRIALRUN_RUNTIME_MODE=local node src/scripts/smoke-trialrun-runtime.js
    • 再跑单张:cd client && PLAYWRIGHT_MANUAL=1 PLAYWRIGHT_OCR_LIVE=1 PLAYWRIGHT_OCR_LIVE_FILE=/home/shunli/Projects/hyb-oa/artifacts/北京悦海堂餐饮管理有限公司_发票金额1683.00元.pdf E2E_BASE_URL=http://127.0.0.1:3001 npx playwright test tests/e2e/manual/live-invoice-ocr.spec.ts --workers=1 --reporter=list
    • 最后跑 batch:cd client && PLAYWRIGHT_MANUAL=1 PLAYWRIGHT_OCR_LIVE=1 PLAYWRIGHT_OCR_LIVE_BATCH=1 PLAYWRIGHT_OCR_LIVE_FILE=/home/shunli/Projects/hyb-oa/artifacts/北京悦海堂餐饮管理有限公司_发票金额1683.00元.pdf E2E_BASE_URL=http://127.0.0.1:3001 npx playwright test tests/e2e/manual/live-invoice-ocr-batch.spec.ts --workers=1 --reporter=list
  • 默认策略继续保持 PDF first,仅当后续遇到新的真实票样兼容性问题时,再评估是否补 PDF 转图片 fallback。