文件
hyb-oa/issues/2026-05-10_10-48-03-mvp-remaining-mainline-closeout.csv
T

7.3 KiB

1IDTitleDescriptionAcceptanceTest_MethodToolsDev_StatusReview1_StatusRegression_StatusFilesDependenciesNotes
2B1剩余主线收口批次基线为 A5-A8 建立本轮连续收口执行合同;主 CSV 仍作为 A5-A8 最终状态来源同步回填;本 Issue 不改业务代码。1) 新 CSV 校验通过;2) 主 CSV 校验通过;3) 明确 A5-A8 执行顺序、提交边界、测试矩阵和 SKIP 规则;4) 不修改后端、前端或数据库。流程级验证:确认当前主 CSV 中 A1-A4/A3 已 DONE 且 A5-A8 待执行;命令:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-10_10-48-03-mvp-remaining-mainline-closeout.csv;命令:python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-05-09_20-57-19-mvp-mainline-dev-kickoff.csv;命令:git diff --check。python3|git|manualDONEDONEDONEissues/2026-05-10_10-48-03-mvp-remaining-mainline-closeout.csv|issues/2026-05-09_20-57-19-mvp-mainline-dev-kickoff.csv[]本批次采用一次性规划、连续开发、分段提交、统一总回归;不部署;公网、企业微信真机、真实 OCR 缺配置时在 A8 记录 SKIP。
3B2A5请假考勤审批口径收口收口现有请假审批、移动请假、团队状态/日历展示和考勤解释文案;补卡、外出、加班若无运行时能力则记录缺口,不扩大为完整考勤系统。1) 请假提交、审批、驳回或撤回状态正确;2) 已批准请假影响团队状态或日历展示;3) PC 和移动入口不引导企业微信原生审批;4) 不接企业微信打卡同步,不新增定位、人脸、Wi-Fi 或排班能力。流程级验证:员工提交请假 -> 主管/HR 在 OA 审批 -> 团队状态或日历展示结果 -> 驳回/撤回后状态正确;命令:cd server && node --check src/routes/leave.js;命令:cd client && npm run typecheck;命令:cd client && npm run build;命令:cd client && npm run test:e2e -- leave-flow.spec.ts leave-team-calendar.spec.ts --workers=1;视觉检查 PC 请假、移动请假、团队状态或日历。node|npm|playwright|manualDONEDONEDONEserver/src/routes/leave.js|server/src/services/leave.js|client/src/pages/LeaveRequestPage.tsx|client/src/pages/MobileLeavePage.tsx|client/src/pages/TeamPresencePage.tsx["B1"]A5 已完成:未改业务状态机和数据库;E2E 修正为不依赖任务 UUID 主展示,日期改为远期动态日期以避免回归库历史数据冲突;同源 SERVE_CLIENT_DIST=true 本地服务下通过 leave-flow 与 leave-team-calendar;视觉截图 output/playwright/a5-leave-attendance;未接企业微信打卡 API。
4B3A6采购合同项目最小可用收口收口现有采购申请、合同台账和项目轻管理到最小可用;不扩展预算、支付、ERP、AI、复杂招采或重型项目管理。1) 采购/费用可申请并进入 OA 审批;2) 合同台账可登记、查询、展示编号、负责人和归档位置;3) 项目页能汇总成员、里程碑、任务、风险和业务关联摘要;4) P2 能力不作为普通员工主路径。流程级验证:创建采购申请 -> OA 审批 -> 项目页查看关联;登记合同台账 -> 查询合同摘要;项目页查看任务/里程碑/风险/业务关联;命令:cd server && ./scripts/regression-procurement.sh;命令:cd client && npm run typecheck;命令:cd client && npm run build;命令:cd client && npm run test:e2e -- procurement-flow.spec.ts project-workbench.spec.ts --workers=1;合同台账如无 E2E 则执行人工步骤并写入 Notes。bash|npm|playwright|manualDONEDONEDONEserver/src/routes/purchaseRequests.js|server/src/routes/contractsRegistry.js|server/src/routes/projects.js|client/src/pages/PurchaseRequestsPage.tsx|client/src/pages/ContractsRegistryPage.tsx|client/src/pages/ProjectsPage.tsx|client/src/pages/ProjectDetailPage.tsx["B1","B2"]A6 已完成:采购 E2E 修正为按审批任务 deeplink/href 定位,不依赖 UUID 主展示;项目 E2E 在 PROJECT_* 本地开关启用后通过;合同台账以 routes/contractsRegistry 与 exports/contractsRegistry 单测覆盖登记、查询、续约和导出;合同涉密正文、敏感报价、客户敏感资料不进入公网 OA 主路径;未扩展预算/ERP/AI。
5B4A7权限导航与备用模块护栏按当前 MVP 路线收口普通员工、主管、财务、管理员的 PC/移动导航和权限可见性,避免备用模块干扰主线。1) 普通员工不见预算、AP、ERP、AI、完整差旅等备用主路径;2) 审批、报销、请假、采购和项目入口按角色清晰可达;3) 财务、主管、管理员入口与权限边界符合 PRD;4) 服务端权限仍是最终授权依据。流程级验证:分别用员工、主管、财务、管理员登录 -> 检查 PC/移动导航、入口和关键页面访问性 -> 普通员工不可访问备用模块主路径;命令:cd client && npm run typecheck;命令:cd client && npm run build;命令:cd client && npm run test:e2e -- settings-governance.spec.ts login-portal-ux.spec.ts r110-mobile-pc-routing.spec.ts --workers=1;人工角色矩阵检查。npm|playwright|manualDONEDONEDONEclient/src/layouts/AppShellLayout.tsx|client/src/features/mobile/navigation.ts|server/src/services/workspaceSettings.js|server/tests/unit/workspaceSettings.navigation.test.js|client/src/components/navigation/NavLinks.tsx["B1","B2","B3"]A7 已完成:收紧服务端导航和前端兜底导航,普通员工不再通过导航看到完整差旅、票据中心、合同台账、预算/AP/ERP/仪表盘等备用主路径;采购仍保留为 P1 可用入口。验证通过:node --check workspaceSettings、workspaceSettings.navigation 单测、client typecheck/build、settings-governance、login-portal-ux、r110-mobile-pc-routing。
6B5A8总回归门禁与试运行证据汇总 A2-A7 的自动化、手工和 SKIP 条件,完成首轮开发本地总回归门禁和是否进入部署试运行的判断依据。1) server/client 本地检查通过;2) 关键业务流回归结果可追溯;3) 公网、企业微信真机、真实 OCR 缺配置时明确 SKIP;4) 主 CSV 和本批次 CSV 状态按真实验证结果回填;5) 未部署不引导用户公网或企业微信真机测试。流程级验证:执行统一审批、报销/OCR、企业微信入口、请假、采购/合同/项目和权限导航组合回归;命令:cd server && npm run prisma:validate;命令:cd server && ./scripts/regression-all.sh;命令:cd client && npm run typecheck;命令:cd client && npm run build;命令:bash scripts/qa/run-web-gates.sh smoke-local;命令:node scripts/qa/check-live-smoke-env.mjs。bash|npm|node|manualDONEDONEDONEserver/scripts/*|scripts/qa/*|client/tests/e2e/*|docs/trialrun-runbook.md|issues/2026-05-10_10-48-03-mvp-remaining-mainline-closeout.csv|issues/2026-05-09_20-57-19-mvp-mainline-dev-kickoff.csv["B1","B2","B3","B4"]A8 已完成本地门禁:prisma validate、regression-all、client typecheck/build、run-web-gates smoke-local 均通过;regression-all 需以本地 mock OCR + IM_NOTIFIER_ENABLED=true 启动服务。check-live-smoke-env 显示 publicReady=true、wecom=ready,但 liveSmokeReady=false、liveOcrReady=false,缺 LIVE_SMOKE_* 账号和真实 OCR 文件,公网/企微真机/真实 OCR 验证记为 SKIP;本轮未部署。