R7E WF8 真机 deeplink 验证与收口回填
引用 R7E-9 WF8-11 WF8-12 WF8-CLOSE QAOPS8-17 BIZ8-12
这个提交包含在:
@@ -10,8 +10,8 @@ WF8-7,邮件通道决策记录,"决定邮件通道是否进入当前验收,若
|
||||
WF8-8,三渠道通知验收设计,"设计站内、企业微信个人应用消息和邮件或冻结替代通道的三渠道验收口径。","1) 三渠道或二渠道加冻结说明清楚;2) deeplink 回 OA;3) 缺配置时 SKIP 不等于 PASS;4) 真机和公网边界明确。","流程级验证:人工审查通知矩阵;必要时执行 live readiness 和企业微信真机验证。",manual|bash|playwright,DONE,DONE,DONE,docs/试运行与自动化验证手册.md|docs/需求-企业微信基础设施规约.md,"[""WF8-6"",""WF8-7""]",Runbook 已新增 WF8 通知渠道验收矩阵:站内/企业微信个人应用/邮件冻结/失败追溯四类口径;明确本地自动化/公网匿名/公网带凭据/企业微信真机证据边界;rg Test_Method 已通过;本任务仅设计验收口径 未执行真机验收。
|
||||
WF8-9,催办和超时提醒回归,"回归既有催办和超时提醒,避免转审或通知增强引入倒退。","1) 催办不改变审批状态;2) 超时提醒不重复刷屏;3) 通知对象正确;4) 历史记录可追溯。","流程级验证:创建待审批任务 -> 触发催办或超时提醒 -> 检查通知和 workflow history。",node|bash|manual,DONE,DONE,DONE,server/src|server/scripts|docs/需求-统一审批中心规约.md,"[""WF8-6""]",AP6 后提醒能力是当前事实;已跑 E2E AP6 审批催办与待办汇总 1 passed 覆盖申请人催办/经理和 admin 禁止/重复 24h 限制/history/notification/audit/summary;已跑 workflow.travel、workflowOverdueReminderJob、notificationTypes 单测 7 passed 覆盖超时提醒 job 和通知类型;node --check workflow.js/workflowOverdueReminderJob.js 通过。
|
||||
WF8-10,审批历史一致性,"确保转审、催办、通过、驳回和通知事件在审批历史中一致展示。","1) 历史顺序清楚;2) 操作人和目标人可解释;3) 不泄露敏感字段;4) PC 和移动展示一致。","流程级验证:提交审批 -> 转审 -> 催办 -> 审批处理 -> PC 和移动查看历史。",playwright|node|manual,DONE,DONE,DONE,server/src|client/src,"[""WF8-3"",""WF8-4"",""WF8-5"",""WF8-9""]",完成:MobileApprovalsPage 渲染 selectedTask.history 的移动处理历史卡片并复用动作中文映射;仅展示动作 操作人 意见 时间和空态 不渲染 payload;不改后端 数据结构 权限或状态机;验证 npm run typecheck 通过;npm run build 通过;npx playwright test tests/e2e/dg7-mobile-information-dedupe.spec.ts --workers=1 --reporter=list 在启动本地 3000 服务后 5 passed。
|
||||
WF8-11,通知 deeplink 回 OA 验证,"验证企业微信个人应用消息或站内通知 deeplink 能回到 OA 目标页面。","1) deeplink 指向具体业务目标;2) 不只返回通知中心;3) 未登录或未绑定有可解释提示;4) 移动布局正常。","流程级验证:触发通知 -> 点击 deeplink -> 企业微信或移动浏览器打开 OA 目标详情 -> 检查权限和页面。",playwright|manual,TODO,TODO,TODO,client/src|server/src|docs/trialrun/真机公网测试清单.md,"[""WF8-8"",""WF8-10"",""WF8-11A""]",真机验收不能被自动化替代;2026-05-14 用户真机反馈为企业微信免登录通过 但个人应用消息点击均提示 requestid tokenexpired 或深链已过期;2026-05-14 22:05 修复提交 5491e92 已部署到 oa.hyinda.com,公网 /ready、public bundle、live readiness、WeCom UA 自动化均通过;本行等待新企业微信个人应用消息在代表设备点击目标单据或审批页后再关闭。
|
||||
WF8-11,通知 deeplink 回 OA 验证,"验证企业微信个人应用消息或站内通知 deeplink 能回到 OA 目标页面。","1) deeplink 指向具体业务目标;2) 不只返回通知中心;3) 未登录或未绑定有可解释提示;4) 移动布局正常。","流程级验证:触发通知 -> 点击 deeplink -> 企业微信或移动浏览器打开 OA 目标详情 -> 检查权限和页面。",playwright|manual,DONE,DONE,DONE,client/src|server/src|docs/trialrun/真机公网测试清单.md,"[""WF8-8"",""WF8-10"",""WF8-11A""]",2026-05-14 用户真机反馈为企业微信免登录通过 但个人应用消息点击均提示 requestid tokenexpired 或深链已过期;2026-05-14 22:05 修复提交 5491e92 已部署到 oa.hyinda.com 并通过公网 /ready public bundle live readiness WeCom UA 自动化;2026-05-15 用户确认 wangshunli 当前手机点击企业微信个人应用审批消息已可免登录进入对应详情 不再出现 requestid tokenexpired 或深链已过期;代表消息 taskId 822b2159-dc3c-4a65-8a49-abd70000f1b8 目标 /mobile/approvals?taskId=822b2159-dc3c-4a65-8a49-abd70000f1b8;本结论为代表设备真机证据 不扩大为全设备承诺。
|
||||
WF8-11A,企业微信消息过期深链修复,"修复企业微信个人应用消息中的 OA deeplink 过期后无法回到目标单据或审批页的问题,保留签名校验和内部路径白名单。","1) 签名有效且 targetPath 为内部相对路径时 过期旧 token 也能回 OA;2) 企业微信 WebView 优先进入 wecom login 并带 returnTo;3) 普通浏览器仍走目标路径和现有登录 redirect;4) 无效签名 绝对 URL 和 // 路径仍拒绝。","流程级验证:cd server && node --check src/routes/auth.js src/services/notifications/detailUrl.js;cd server && npm test -- tests/unit/services/imEnqueue.test.js tests/unit/services/notificationDispatcher.test.js tests/unit/routes/auth.login.test.js tests/unit/routes/wecomAuth.test.js。",node|npm,DONE,DONE,DONE,server/src/routes/auth.js|server/src/services/notifications/detailUrl.js|server/tests/unit,"[""WF8-10""]",回滚路径:恢复 /api/auth/deeplink 的 exp 硬过期检查和旧 detailUrl payload;不会修改 workflow 状态机或通知通道配置。
|
||||
WF8-12,workflow reviewer 审查,"对 WF8 涉及的 workflow 状态、权限和通知副作用做独立 review。","1) 非法状态跳转无阻断;2) 权限泄漏无阻断;3) 重复审批和并发风险可控;4) 漏测项有归属。","流程级验证:reviewer 人工审查 diff、Issue CSV 和测试证据。",manual,TODO,TODO,TODO,issues/2026-05-13_18-23-52-wf8-approval-notification.csv|server/src|client/src,"[""WF8-10"",""WF8-11""]",实现后立即 review。
|
||||
WF8-13,WF8 收口准备,"整理 WF8 验证摘要、通知矩阵、未完成项和后续业务影响。","1) DONE 行均有证据;2) 通知渠道结论清楚;3) 未完成项不伪装完成;4) 文档入口同步。","流程级验证:人工核对 WF8 CSV 状态、验证摘要、通知矩阵和 git diff。",manual|git,TODO,TODO,TODO,issues/2026-05-13_18-23-52-wf8-approval-notification.csv|docs/文档索引.md,"[""WF8-12""]",对应原规划 WF8-13。
|
||||
WF8-CLOSE,WF8 阶段 CLOSE,"阶段性关闭 WF8,完成状态回填、验证摘要和中文提交。","1) CSV 校验通过;2) git diff --check 通过;3) 所有 DONE 有命令或人工证据;4) 中文提交引用 WF8;5) 后续风险有归属。","流程级验证:validate_issues_csv.py 本 CSV;git diff --check;人工核对最终摘要。",python3|git|manual,TODO,TODO,TODO,issues/2026-05-13_18-23-52-wf8-approval-notification.csv,"[""WF8-13""]",每个连续 CSV 保留 CLOSE 行。
|
||||
WF8-12,workflow reviewer 审查,"对 WF8 涉及的 workflow 状态、权限和通知副作用做独立 review。","1) 非法状态跳转无阻断;2) 权限泄漏无阻断;3) 重复审批和并发风险可控;4) 漏测项有归属。","流程级验证:reviewer 人工审查 diff、Issue CSV 和测试证据。",manual,DONE,DONE,DONE,issues/2026-05-13_18-23-52-wf8-approval-notification.csv|server/src|client/src,"[""WF8-10"",""WF8-11""]",只读 reviewer 复核结论:deeplink 仅接受签名有效且 targetPath 为 OA 内部相对路径的目标 无效签名 绝对 URL 和 // 路径仍拒绝;企业微信 UA 通过 /api/auth/wecom/login returnTo 免登录回流;本轮不修改 workflow 状态机 权限模型 审批动作或通知通道配置;后端相关单测 4 files 29 tests passed。
|
||||
WF8-13,WF8 收口准备,"整理 WF8 验证摘要、通知矩阵、未完成项和后续业务影响。","1) DONE 行均有证据;2) 通知渠道结论清楚;3) 未完成项不伪装完成;4) 文档入口同步。","流程级验证:人工核对 WF8 CSV 状态、验证摘要、通知矩阵和 git diff。",manual|git,DONE,DONE,DONE,issues/2026-05-13_18-23-52-wf8-approval-notification.csv|docs/文档索引.md,"[""WF8-12""]",WF8 DONE 行均有自动化或代表真机证据;邮件通道继续冻结不作为当前门禁;企业微信个人应用消息 deeplink 已经代表设备验证回目标页;后续通知模板 偏好 失败重试扩展转入 P2 另行规划。
|
||||
WF8-CLOSE,WF8 阶段 CLOSE,"阶段性关闭 WF8,完成状态回填、验证摘要和中文提交。","1) CSV 校验通过;2) git diff --check 通过;3) 所有 DONE 有命令或人工证据;4) 中文提交引用 WF8;5) 后续风险有归属。","流程级验证:validate_issues_csv.py 本 CSV;git diff --check;人工核对最终摘要。",python3|git|manual,DONE,DONE,DONE,issues/2026-05-13_18-23-52-wf8-approval-notification.csv,"[""WF8-13""]",WF8 阶段关闭:转审 通知失败追踪 催办 超时 历史一致性 deeplink 回流均完成;P2 仅保留通知模板 偏好设置 失败重试 邮件通道解冻等扩展项;本次提交将引用 WF8。
|
||||
|
||||
|
在新工单中引用
屏蔽一个用户