R123/A1-A6 收敛移动发票反馈并补部署检查
这个提交包含在:
@@ -0,0 +1,7 @@
|
||||
ID,Title,Description,Acceptance,Test_Method,Tools,Dev_Status,Review1_Status,Regression_Status,Files,Dependencies,Notes
|
||||
A1,R123执行合同与部署差异基线,"固定本轮范围:移动发票反馈瘦身、已有发票删除、跨页面术语检查、交付部署收口;以当前生产旧 bundle 仍含绑定整单为基线。","1) 新 Issue CSV 校验通过;2) 范围不混入后端状态机或 Prisma 迁移;3) 明确部署后必须告知用户可测试。","命令:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-08_11-58-47-r123-mobile-invoice-feedback-and-deploy-closeout.csv;业务流程:企业微信用户反馈进入可执行合同。","python|manual",DONE,DONE,DONE,"issues/2026-05-08_11-58-47-r123-mobile-invoice-feedback-and-deploy-closeout.csv","[]","CSV 已创建并校验通过;生产旧 bundle 仅作为本轮验收前置证据。"
|
||||
A2,移动发票识别状态单一反馈,"重做移动报销详情添加发票弹窗的上传后反馈,避免 toast、面板消息、底部提示同时显示 1 张识别中。","1) 上传 pending 后弹窗内只保留一个识别状态区;2) 状态区显示正在自动刷新或等待秒数;3) OCR 完成后自动添加并清除 pending;4) 不出现“识别完成后可在已有发票中绑定”。","Playwright mobile/wecom:打开报销草稿->添加发票->上传 pending->检查仅一个识别提示->mock status available->自动添加;截图检查无重复提示。","typescript|playwright",DONE,DONE,DONE,"client/src/pages/MobileReimbursementDetailPage.tsx|client/tests/e2e/r109-mobile-reimbursement-feedback.spec.ts|client/tests/e2e/r111-invoice-reimbursement-guard.spec.ts","[""A1""]","已通过 client typecheck/build、R111 mock 双端发票回归、R109 本地移动企微门禁;仅前端体验收敛,不改 OCR provider。"
|
||||
A3,移动已有发票删除入口,"在移动添加发票的已有发票列表中为未绑定的本人发票提供删除入口,底层复用归档接口;已添加到报销单的发票继续使用移除。","1) 可添加/识别失败且未绑定发票显示删除并二次确认;2) 删除后从已有发票列表消失;3) 已绑定发票不显示删除,只能按报销单状态移除;4) 普通用户不看到手工归档等内部文案。","Playwright mobile/wecom:已有发票列表->删除未绑定发票->刷新后不可选;报销详情已添加发票->移除仍可用;业务流程:员工能清理误上传票据。","typescript|playwright",DONE,DONE,DONE,"client/src/pages/MobileReimbursementDetailPage.tsx|client/src/api/invoicePool.ts|client/tests/e2e/r111-invoice-reimbursement-guard.spec.ts","[""A2""]","已通过 R111 移动删除发票断言;复用现有 POST /api/invoice-pool/:id/archive,不做物理 DELETE。"
|
||||
A4,跨页面普通用户术语与发布扫描,"扩展普通用户文案检查并清理已发现差旅付款中的发票池表达,防止绑定整单、发票池、OCR 等内部术语进入用户主流程。","1) 移动报销、PC 报销、差旅付款普通页面不显示绑定整单/不绑定明细/发票池/OCR;2) 静态检查能报告上述术语;3) 生产 bundle 扫描可发现公网旧包。","命令:node scripts/qa/check-ui-design-rules.mjs --strict;生产扫描:对 https://oa.hyinda.com 递归 JS asset 检查禁用词;业务流程:普通员工页面不暴露内部术语。","node|typescript|curl",DONE,DONE,TODO,"scripts/qa/check-ui-design-rules.mjs|scripts/qa|client/src/components/travel/TravelPaymentTrackCard.tsx|client/tests/e2e","[""A1""]","源码静态检查已清零;公网旧 bundle 扫描当前失败属部署前预期,部署后由 A6 复核。"
|
||||
A5,交付部署可测试规则固化,"把“完成后必须明确是否已部署、是否可以去企业微信测试”写入项目交付规则,避免只完成本地代码未部署。","1) 交付规则要求最终回复包含部署状态、URL、commit、生产资源检查和是否可测试;2) 未部署时必须明确说明不能测试;3) 部署失败必须说明阻塞原因。","人工阅读 .agents/skills/hyb-oa-delivery/SKILL.md 或 docs/agent-development-practices.md;业务流程:每次用户需求完成后可判断是否该去企业微信验收。","manual",DONE,DONE,DONE,".agents/skills/hyb-oa-delivery/SKILL.md|docs/agent-development-practices.md","[""A1""]","Skill quick_validate 已通过;只改交付规则,不涉及业务运行时。"
|
||||
A6,本地回归与公网部署验收,"完成 A2-A5 后执行本地前端检查、移动企微 Playwright、构建、部署和公网资源核实,并告知用户可测试。","1) client typecheck/build 通过;2) R109/R111 相关 Playwright 通过;3) deploy/trialrun/deploy.sh 成功;4) https://oa.hyinda.com 新 bundle 不含绑定整单和旧识别提示;5) 最终回复明确可以去企业微信测试。","命令:cd client && npm run typecheck && npm run build && npx playwright test tests/e2e/r109-mobile-reimbursement-feedback.spec.ts tests/e2e/r111-invoice-reimbursement-guard.spec.ts --workers=1 --reporter=list;部署:bash deploy/trialrun/deploy.sh;公网:curl /ready + bundle 扫描;业务流程:企业微信上传发票->状态变化->删除误上传票据。","npm|playwright|bash|curl|manual",DOING,TODO,TODO,"client|scripts/qa|deploy/trialrun|issues/2026-05-08_11-58-47-r123-mobile-invoice-feedback-and-deploy-closeout.csv","[""A2"",""A3"",""A4"",""A5""]","client typecheck/build、R111、R109 已通过;待部署与公网资源扫描。若 LIVE_SMOKE_* 不完整,记录 live smoke 跳过并给人工真机步骤。"
|
||||
|
在新工单中引用
屏蔽一个用户