R6 收口并创建后续优化合同

这个提交包含在:
2026-05-12 01:45:18 +08:00
父节点 a8b7351a4f
当前提交 e7bf57380e
共修改 12 个文件,包含 68 行新增和 14 行删除
+13 -8
查看文件
@@ -14,8 +14,8 @@
| 项目 | 记录 |
| --- | --- |
| 公网地址 | `https://oa.hyinda.com` |
| 当前门禁 | R5 已 `DONE/DONE/DONE`;R6 仍 `TODO`;R6-3 自动检查已完成,真实财务账号 `wangzhiling` 已创建并核验通过;R6-4 已部分执行,报销和请假通过,采购提交触发后端阻断,R6 暂停在 R6-4 |
| 当前代码基线 | `bcfb782`;公网 `https://oa.hyinda.com` 已部署 MUD6 移动统一设计并完成 R6-3 前置检查 |
| 当前门禁 | R5 已 `DONE/DONE/DONE`;R6 首轮小范围试运行已完成;R6-ISSUE-003 采购提交阻断已热修、部署并复跑通过;后续进入 PC/移动/审批效率/财务台账优化批次 |
| 当前代码基线 | `a8b7351`;公网 `https://oa.hyinda.com` 已部署 PS6 采购提交热修并完成 live smoke 复检 |
| 试运行窗口 | `2026-05-12 14:00-17:00 Asia/Shanghai`;若现场无法执行,顺延到 `2026-05-13 14:00-17:00 Asia/Shanghai` |
| 回滚联系人 | `wangshunli` |
| 问题登记负责人 | `wangshunli` |
@@ -41,10 +41,10 @@
| 用户 | 角色 | 入口 | 设备 | 负责流程 | 结果 | 备注 |
| --- | --- | --- | --- | --- | --- | --- |
| `SMOKE002` | 员工 / 提交人 | PC / 企业微信 / 手机浏览器 | iPhone 12 / iOS 14.1 / Redmi K60 | 报销、请假、采购提交 | 部分通过 | 已自动辅助提交报销、请假和采购草稿;报销、请假通过;采购提交因服务端 500 阻断。用户口径为 `smkoe02/smoke02`,按既有账号统一记录为 `SMOKE002` |
| `SMOKE101` | 经理 / 审批人 | PC / 企业微信 / 手机浏览器 | iPhone 12 / iOS 14.1 / Redmi K60 | 审批待办、退回或驳回 | 部分通过 | 已处理报销和请假待办并通过;采购未进入审批。审批人可以是经理;不使用 admin 解释审批权 |
| `SMOKE002` | 员工 / 提交人 | PC / 企业微信 / 手机浏览器 | iPhone 12 / iOS 14.1 / Redmi K60 | 报销、请假、采购提交 | 通过 | 已自动辅助提交报销、请假和采购;报销、请假通过;PS6 热修后采购复跑通过。用户口径为 `smkoe02/smoke02`,按既有账号统一记录为 `SMOKE002` |
| `SMOKE101` | 经理 / 审批人 | PC / 企业微信 / 手机浏览器 | iPhone 12 / iOS 14.1 / Redmi K60 | 审批待办、退回或驳回 | 通过 | 已处理报销、请假和采购待办并通过;审批人可以是经理;不使用 admin 解释审批权 |
| `wangshunli` | 管理员 / 回滚联系人 / 试运行拍板人 / 问题登记负责人 | PC | 管理员 PC | 管理后台、配置核对、试运行决策、问题分级和回滚拍板 | 已辅助执行 | 已用于试运行前账号、基础资料和问题登记辅助;不作为本轮普通业务审批人;财务由 `wangzhiling` 承担 |
| `wangzhiling` | 财务 | PC / 手机浏览器 | Redmi K60 | 财务复核、付款标记、导出 | 部分通过 | 首次登录已完成改密,账号只读核验为 `active`、角色 `employee,finance`、未锁定;已完成报销财务复核和付款标记。采购未进入财务节点。姓名和手机号后续可由管理员按真实信息更新,不写入仓库 |
| `wangzhiling` | 财务 | PC / 手机浏览器 | Redmi K60 | 财务复核、付款标记、导出 | 通过 | 首次登录已完成改密,账号只读核验为 `active`、角色 `employee,finance`、未锁定;已完成报销财务复核和付款标记。采购首轮只验证提交、审批和历史查看,未扩财务后处理。姓名和手机号后续可由管理员按真实信息更新,不写入仓库 |
### R6 流程执行矩阵
@@ -52,8 +52,8 @@
| --- | --- | --- | --- | --- | --- |
| 报销 | 员工提交报销 -> 上传 PDF 发票或附件 -> 提交审批 -> 审批人处理 -> 财务复核或付款标记 | 状态、审批历史、通知和财务动作一致 | `SMOKE002` / `SMOKE101` / `wangzhiling` | 通过 | 2026-05-12 自动辅助执行:`BX-20260512-0011`,id `fd89f7db-9b33-4364-b329-53f406ab38ee`,金额 `188.88`,终态 `paid`;经理任务 `41ef7694-6a0d-4229-ab4e-c85392fe3708`,财务任务 `dbc20c92-51ac-494f-9fe1-b9271bc91ac2`;不提交敏感截图 |
| 请假 | 员工提交请假 -> 审批人处理 -> 员工查看状态 | 待办、历史和团队状态一致 | `SMOKE002` / `SMOKE101` | 通过 | 2026-05-12 自动辅助执行:id `639acec8-bbfc-462c-bc3b-eaaa70e72153`,开始日期 `2026-07-28`,终态 `approved`;经理任务 `d9230348-2059-4dca-97f7-107621b0d40b` |
| 采购 | 员工提交采购 -> 审批人处理 -> 查看审批历史 | 采购状态和审批中心一致 | `SMOKE002` / `SMOKE101` | 阻断 | 2026-05-12 自动辅助执行:采购 id `ab69db11-87e3-48b0-8a8a-43324d1c70e5`,标题 `R6-20260511170941 R6小范围试运行采购`,金额 `99.00`,仍为 `draft`;提交 `/api/purchase-requests/:id/submit` 返回 500,server 日志为 `ReferenceError: budgetPrecheckGate is not defined` |
| 企业微信通知 | 待办产生 -> 审批人收到个人应用消息 -> 点击回 OA | 消息可达且 deeplink 回移动审批或详情 | `SMOKE101` / `oa_smoke_02` | 自动审计通过 / 财务待绑定 | 报销经理待办、报销通过、报销付款、请假通过等绑定用户通知记录为 `wecom_app_sent`;分配给财务角色时因 `wangzhiling` 尚未绑定企业微信,记录 `wecom_app_no_bound_recipients`,财务本轮以 PC 为主,不作为阻断 |
| 采购 | 员工提交采购 -> 审批人处理 -> 查看审批历史 | 采购状态和审批中心一致 | `SMOKE002` / `SMOKE101` | 通过 | 初次执行采购 id `ab69db11-87e3-48b0-8a8a-43324d1c70e5` 曾因 `budgetPrecheckGate is not defined` 阻断;PS6 热修部署后复跑通过:`CG-20260512-0001`,id `538c3c92-edce-4c28-bcdd-9bb8065c1d0e`,经理任务 `6d3cf41c-2a44-4bc3-9245-db6383fabdf0`,终态 `approved`,缺预算池按 legacy warn 返回 `missing_budget_pool`,无 500 |
| 企业微信通知 | 待办产生 -> 审批人收到个人应用消息 -> 点击回 OA | 消息可达且 deeplink 回移动审批或详情 | `SMOKE101` / `oa_smoke_02` | 通过 | 报销经理待办、报销通过、报销付款、请假通过等绑定用户通知记录为 `wecom_app_sent`;PS6 采购经理待办任务 `6d3cf41c-2a44-4bc3-9245-db6383fabdf0` delivery=`wecom_app_sent`、errcode=`0`;分配给财务角色时因 `wangzhiling` 尚未绑定企业微信,记录 `wecom_app_no_bound_recipients`,财务本轮以 PC 为主,不作为阻断 |
| 财务付款/导出 | 财务处理已通过单据 -> 标记付款或导出 | 权限、状态和审计记录正确 | `wangzhiling` | 通过 | `wangzhiling` 已完成登录改密和报销付款标记;采购未进入财务节点;不导出敏感数据到仓库 |
### R6 问题登记
@@ -62,7 +62,7 @@
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| R6-ISSUE-001 | 阻断 | 审批人 / 员工 | iPhone 12 / iOS 14.1 / 企业微信 WebView | 移动底部导航、审批入口、首页快捷卡 | 旧记录误写为 iPhone 11;用户更正为 iPhone 12 / iOS 14.1。真机截图显示首页快捷卡和底部 Tab 的字体图标漂移、重影、挤压,底部“审批”体验不稳定;自动化 Chromium UA 截图与真实 iOS 企业微信 WebView 存在差异 | 已关闭:WCM6/MME6 已部署公网并完成自动复检,移动核心图标改 SVG,补企业微信 WebView viewport/字号/safe-area,底部角标独立定位,`/mobile/me` 图文槽位和卡片顶边完成自适应收口;用户确认“看过了,可以没问题”。后续若出现移动回归,另建新 Issue 处理。 | Codex | closed | `issues/2026-05-11_20-38-33-r6-wecom-mobile-rendering-hardening.csv`; `issues/2026-05-11_22-42-11-r6-mobile-me-adaptive-visual-polish.csv`; `issues/2026-05-11_23-26-00-r6-mobile-unified-design-rollout.csv` |
| R6-ISSUE-002 | 一般 | 自动化 / 员工与财务测试账号 | 本地隔离 E2E / PC | 报销审批进度、报销支付批次 | `BUSINESS_FLOW_GROUPS=reimbursement bash scripts/qa/run-business-flow-gates.sh local` 中 2 条用例曾失败,失败点为 Playwright 查找旧导航入口 `票据中心`;当前正式员工路径应从报销详情添加 PDF 发票 | 已关闭:测试已改为报销详情页“添加发票”路径,不恢复普通员工“票据中心”入口;支付批次用例同步按业务编号定位待办,并按金额选择财务或财务主管二级审批;报销业务流 gate 10 passed、1 skipped | Codex | closed | `issues/2026-05-11_15-50-00-r6-reimbursement-e2e-nav-alignment.csv` |
| R6-ISSUE-003 | 阻断 | 员工 / 审批人 | 公网 PC / 自动化 API | 采购提交 | R6-4 中员工创建采购草稿后提交,`POST /api/purchase-requests/:id/submit` 返回 500;服务端日志定位到 `server/src/routes/purchaseRequests.js:1617`:`ReferenceError: budgetPrecheckGate is not defined`;该问题导致采购无法进入审批,采购主链路无法完成 R6 | 已暂停 R6-4 的采购流程;报销和请假结果保留;需先执行独立热修合同,修复后部署并复跑采购提交 -> 审批 -> 历史查看,再恢复 R6-4 | Codex | open | `issues/2026-05-12_01-12-20-r6-purchase-submit-budget-precheck-hotfix.csv` |
| R6-ISSUE-003 | 阻断 | 员工 / 审批人 | 公网 PC / 自动化 API | 采购提交 | R6-4 中员工创建采购草稿后提交,`POST /api/purchase-requests/:id/submit` 返回 500;服务端日志定位到 `server/src/routes/purchaseRequests.js:1617`:`ReferenceError: budgetPrecheckGate is not defined`;该问题导致采购无法进入审批,采购主链路无法完成 R6 | 已关闭:PS6 已修复采购提交事务中 `budgetPrecheckGate` 未定义问题,本地采购业务流通过,公网已部署 `a8b7351`;复跑 `CG-20260512-0001` 成功提交并由 `SMOKE101` 审批通过,企业微信个人应用消息 delivery=`wecom_app_sent`、errcode=`0` | Codex | closed | `issues/2026-05-12_01-12-20-r6-purchase-submit-budget-precheck-hotfix.csv` |
MME6 补充(2026-05-11):针对用户补充的 iPhone 12 / iOS 14.1 图文贴近与 iPhone 14 / iOS 16.2 卡片顶边观感,已把 `/mobile/me` 改为固定头像/图标槽 + `minmax(0, 1fr)` 文字槽,移动卡片顶边装饰线仅在 `/mobile` 作用域禁用,并将该规则写入产品设计规约。本地 `client typecheck`、`client build`、WCM6 视觉专项 8 passed、R5/R6/R124 移动相关回归 10 passed;部署后 `/ready` 正常、public bundle `findings=0`、live smoke readiness PASS、真实 OCR 样票返回重复发票可解释终态且测试通过,公网 WCM6 视觉专项 8 passed,报告 `artifacts/qa-flow/live-smoke-readiness-20260511-230918`。用户已确认当前设计可接受,`R6-ISSUE-001` 关闭;MUD6 继续把该设计推广到所有专用 `/mobile` 页面。
@@ -82,6 +82,11 @@ R6-3 试运行前自动检查(2026-05-12):公网 `/ready` 正常;public
| 日期 | 执行范围 | 新增问题 | 阻断数 | 严重数 | 结论 | 决策人 |
| --- | --- | --- | --- | --- | --- | --- |
| 2026-05-12 | R6-4 自动辅助小范围流程:报销、请假、采购、财务付款、企业微信通知审计 | `R6-ISSUE-003` 采购提交后端 500 | 1 | 0 | 暂停采购流程,先修复后继续;报销、请假、财务付款证据保留 | `wangshunli` |
| 2026-05-12 | PS6 热修部署后恢复 R6-4:采购提交、审批、历史查看、企业微信通知审计 | 无新增问题;`R6-ISSUE-003` 已关闭 | 0 | 0 | R6 首轮小范围试运行通过;进入后续 PC/移动/审批效率/财务台账优化 Issue | `wangshunli` |
### R6 结论(2026-05-12)
R6 首轮小范围试运行通过。已验证报销、请假、采购、审批、企业微信个人应用消息、移动入口既有门禁和财务付款主链路;采购提交阻断已通过 PS6 热修关闭。R6 通过不等于全面正式上线,下一批按独立 Issue 推进 PC 信息架构、移动二轮体验、审批催办/超时、审批效率摘要和财务台账增强。
## 结论