ID,Title,Description,Acceptance,Test_Method,Tools,Dev_Status,Review1_Status,Regression_Status,Files,Dependencies,Notes A1,R124执行合同与移动入口基线,"固定本轮范围:报销详情 SYS_001、企业微信移动入口矩阵、报销列表删除、票据 PDF 上传、部署迁移门禁。","1) Issue CSV 校验通过;2) 明确所有企业微信可达入口;3) 已知问题进入验收门禁;4) 不混入无关模块重构。","命令:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-08_13-37-47-r124-wecom-mobile-entry-hardening.csv;业务流程:企业微信用户进入首页、审批、票据、我的、报销、通知、个人设置。","python|manual",DONE,DONE,DONE,"issues/2026-05-08_13-37-47-r124-wecom-mobile-entry-hardening.csv","[]","用户已确认执行合同;CSV 校验通过;本轮包含受控数据库迁移。" A2,试运行数据库迁移补齐与门禁,"修复公网报销详情因 reimbursement_attachments 表缺失返回 SYS_001,并防止部署成功但迁移未应用。","1) prisma migrate status 无 pending;2) reimbursement_attachments 表存在;3) /api/reimbursements/:id 不再 500;4) deploy 脚本会在 pending migration 时失败。","远端执行 prisma migrate deploy;验证 migrate status、to_regclass、/ready、runtime smoke、报销详情接口。","ssh|prisma|curl",DONE,DONE,DONE,"deploy/trialrun/deploy.sh|server/prisma/migrations","[""A1""]","受控 schema 迁移已应用;deploy 脚本已加入 migrate status 门禁;回滚路径为停止部署并保留现有数据库。" A3,移动报销列表删除草稿,"企业微信移动报销列表补齐草稿删除能力,与 PC 报销列表一致。","1) 草稿显示删除;2) 非草稿不显示删除;3) 二次确认;4) 删除后列表刷新;5) 无权限用户不显示。","Playwright mobile/wecom:新建草稿->列表删除->确认->草稿消失;非草稿无删除。","typescript|playwright",DONE,DONE,DONE,"client/src/pages/MobileReimbursementsPage.tsx|client/tests/e2e","[""A1""]","复用 DELETE /api/reimbursements/:id;R124 Playwright 已覆盖草稿删除和非草稿无删除。" A4,移动票据上传区分拍照图片PDF,"底部票据页不再用一个 capture input 承担所有上传,避免 PDF 选择被摄像头拦截。","1) 有拍照上传、选择图片、选择 PDF;2) PDF input accept=application/pdf 且无 capture;3) 拍照 input 带 capture;4) 上传、离线队列仍可用。","Playwright mobile/wecom:检查三个入口属性;选择 PDF 后显示文件名;上传状态正常。","typescript|playwright",DONE,DONE,DONE,"client/src/pages/MobileCapturePage.tsx|client/tests/e2e","[""A1""]","不改 OCR provider;R124 Playwright 已覆盖 PDF 文件名回显;静态规则阻止 PDF input 带 capture。" A5,企业微信移动入口去 PC 化,"核查并修复 /mobile/profile、/mobile/notifications 等企业微信可达入口复用 PC 页面的问题。","1) /mobile/profile 使用移动页面或移动包装;2) /mobile/notifications 使用移动列表;3) 移动入口无桌面表格和 PC 操作栏;4) 我的页二级入口均可达。","Playwright mobile/wecom:逐个打开我的页入口,检查无 table、无横向溢出、底部导航存在。","typescript|playwright",DONE,DONE,DONE,"client/src/router/index.tsx|client/src/pages/Mobile*.tsx|client/tests/e2e","[""A1""]","新增 MobileProfilePage 和 MobileNotificationsPage;我的页员工档案入口改为移动账号资料;静态路由契约已通过。" A6,移动入口矩阵防回归,"新增静态和浏览器检查,防止后续 /mobile 路由重新挂 PC 页面或出现已知文案问题。","1) 静态脚本列出 /mobile 路由组件;2) 禁止已知 PC 页面直挂企业微信主入口;3) Playwright 覆盖底部 4 入口和我的二级入口;4) 已知旧文案扫描为 0。","命令:node scripts/qa/check-mobile-route-contract.mjs;Playwright r124-mobile-entry-matrix;check-ui-design-rules。","node|playwright",DONE,DONE,DONE,"scripts/qa|client/tests/e2e|client/src/router/index.tsx","[""A3"",""A4"",""A5""]","新增静态路由契约和 R124 Playwright;截图保存在 output/playwright/r124-mobile-entry-matrix。" A7,本地回归提交与公网部署复验,"完成 A2-A6 后执行本地回归、提交、部署和公网复验。","1) server prisma validate/node --check 通过;2) client typecheck/build 通过;3) R109/R111/R124 Playwright 通过;4) 部署成功;5) /ready、migrate status、runtime smoke、bundle 扫描通过;6) 最终明确可去企业微信测试。","命令:server checks、client checks、Playwright、deploy/trialrun/deploy.sh、curl /ready、public bundle scan、远端 migrate status。","npm|playwright|bash|curl|ssh",DONE,DONE,DONE,"client|server|deploy/trialrun|issues/2026-05-08_13-37-47-r124-wecom-mobile-entry-hardening.csv","[""A2"",""A3"",""A4"",""A5"",""A6""]","已部署到 https://oa.hyinda.com;LIVE_SMOKE_* 未配置因此部署脚本跳过网页 live smoke;R109/R110 因本机 3000 后端未运行未本地执行。"