文件
hyb-oa/issues/2026-04-28_18-26-58-r71-post-trialrun-fixes.csv

6.0 KiB

1IDTitleDescriptionAcceptanceTest_MethodToolsDev_StatusReview1_StatusRegression_StatusFilesDependenciesNotes
2A1R71 执行合同建档与范围冻结创建并校验 R71 试运行后修复合同,仅承接 R70-001 经理团队日历权限阻断与 R70-002 报销提交提示不清;不承接 Prisma 迁移、审批状态机重写、通用权限中心重构。issues/2026-04-28_18-26-58-r71-post-trialrun-fixes.csv 列完整且通过校验;A2-A5 依赖顺序清晰;Notes 明确本轮不改报销必须绑定发票规则。命令:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-04-28_18-26-58-r71-post-trialrun-fixes.csv。检查:12 列完整、Dependencies 为 JSON 数组字符串、Files 为实际路径。manualDONEDONEDONEissues/2026-04-28_18-26-58-r71-post-trialrun-fixes.csv[]回滚路径:删除本 CSV;不影响业务运行。2026-04-28:合同已写入并通过 validate_issues_csv.py 校验。
3A2经理团队日历权限矩阵对齐与后端回归修复 manager 角色在 server 侧缺失 leave.view_all 导致团队日历 403 的权限矩阵漂移,并补常量/路由回归测试,确保经理可查看团队请假窗口而普通员工仍不可越权。server 侧 manager 解析结果包含 leave.view_all;manager 访问 /api/leave-requests?scope=all&dateFrom=...&dateTo=... 不再返回 403;employee 同条件仍返回 403;不新增 leave.manage。命令:cd server && npm run prisma:validate && node --check src/constants/permissions.js && node --check src/routes/leave.js && npm test -- tests/unit/constants/permissions.test.js tests/unit/routes/leave.list-scope.test.js。业务:manager 登录 -> 请假 -> 团队日历,页面能加载当前窗口数据。manualDONEDONEDONEserver/src/constants/permissions.js|server/src/routes/leave.js|server/tests/unit/constants/permissions.test.js|server/tests/unit/routes/leave.list-scope.test.js["A1"]涉及权限模型,完成后必须进入 reviewer;2026-04-28:server manager 补齐 leave.view_all,权限单测、scope=all 路由回归与 Playwright 团队日历窗口复测通过。回滚路径:撤回 manager 的 leave.view_all 变更与新增测试。
4A3团队日历权限边界 reviewer 复核对 A2 做独立 review,确认修复只放开经理读取团队日历所需权限,不引入 employee 越权、leave.manage 扩权或跨部门错误放大。review 意见覆盖 client/server 权限矩阵一致性、/leave-requests all-scope 边界、employee 视角不可见/不可取数、manager 仅获得只读团队日历能力。人工 review:对照 server/src/constants/permissions.js、client/src/auth/permissions.ts、client/src/pages/LeaveRequestPage.tsx、server/src/routes/leave.js 输出 review 结论;若发现高风险问题,A5 前必须先修复。manualDONEDONEDONEserver/src/constants/permissions.js|server/src/routes/leave.js|client/src/auth/permissions.ts|client/src/pages/LeaveRequestPage.tsx["A2"]本 Issue 只输出 review 结论,不修改业务代码。2026-04-28 reviewer 结论:client/server 现已同时授予 manager leave.view_all;server 仍以 leave.manage 约束跨部门查询;employee 无 leave.view_all 时仍被 /leave-requests?scope=all 拒绝,未见扩权或越权泄漏。
5A4报销提交前置提示与缺票错误文案澄清保持“提交前必须先绑定发票”的后端规则不变,在报销详情页补显式提示,并为 bound_invoice_required 增加清晰中文文案;人工复核中若上传新发票,接口不得卡住。当 detail.invoices.length=0 时,提交入口附近可见明确提示;若仍收到 details.invoices=bound_invoice_required,页面显示可理解中文文案;上传新发票后可进入可绑定列表并完成绑定;不改后端校验与状态流。命令:cd server && npm run prisma:validate && node --check src/routes/invoicePool.js && npm test -- tests/unit/routes/invoicePool.upload.test.js && cd ../client && npm run typecheck && npm run build。业务:employee 登录 -> 新建空白报销/报销详情 -> 未绑定发票时尝试提交,页面给出明确提示;上传 PDF -> 绑定发票 -> 再次提交进入审批中。manualDONEDONEDONEclient/src/pages/ReimbursementDetailPage.tsx|client/src/api/errorMessages.ts|client/src/pages/reimbursement-detail/ReimbursementActions.tsx|server/src/routes/invoicePool.js|server/tests/unit/routes/invoicePool.upload.test.js["A1"]不承接票据自动绑定、报销状态机调整或发票规则放宽;2026-04-28:补齐前端缺票提示/错误映射,并修复人工复核中暴露的 multipart 文件流未消费导致上传挂起问题;回滚路径:撤回前端提示、错误映射与上传路由最小修复。
6A5定向回归与 R70 结论回填完成经理团队日历与员工报销缺票提示的定向复测,更新 R70 报告和 issue-log,对已修复项回填 disposition/notes,并给出是否恢复试运行的结论。manager 路径中团队日历可用且审批待办不回归;employee 路径中缺票提示清晰且绑定发票后可继续提交;artifacts/r70/manual-trialrun-report.md 与 artifacts/r70/issue-log.csv 已更新为最新结论。命令:cd server && npm run prisma:validate && cd ../client && npm run typecheck && npm run build。业务:1) manager 登录 -> 待办审批 -> 请假团队日历;2) employee 登录 -> 空白报销/现有报销详情 -> 无发票提交提示 -> 上传并绑定发票后再次提交;3) 回填 R70 报告、issue-log、checklist。manualDONEDONEDONEartifacts/r70/manual-trialrun-report.md|artifacts/r70/issue-log.csv|artifacts/r70/manual-trialrun-checklist.md["A2","A3","A4"]若 A3 reviewer 未通过,则 A5 不进入执行;2026-04-28:Playwright 定向复测通过,R70 报告/issue-log/checklist 已回填为最新结论,可恢复下一轮本地人工试运行。回滚路径:仅回退文档回填。