{ "schemaVersion": 1, "coreBundles": [ "login-logout", "reimbursement", "approval", "invoice", "procurement", "project-contract", "payment-ap", "people-audit", "attendance-archive", "mobile-workspace" ], "acceptanceSpecs": [ "client/tests/e2e/r102-reimbursement-main-flow.spec.ts", "client/tests/e2e/r103-cross-page-ui-consistency.spec.ts", "client/tests/e2e/pc-detail-mobile-visual-wave3.spec.ts", "client/tests/e2e/pc-finance-admin-visual-wave4.spec.ts", "client/tests/e2e/management-navigation-contract.spec.ts", "client/tests/e2e/internal-readiness-ui.spec.ts", "client/tests/e2e/system-action-confirmation.spec.ts", "client/tests/e2e/payment-reviewer-permissions.spec.ts", "client/tests/e2e/r5-real-device-feedback-mobile-ux.spec.ts", "client/tests/e2e/contract-detail-workspace.spec.ts" ], "localCandidateFlows": [ { "bundle": "login-logout", "witnessRoute": "/login", "witnessTag": "@local-candidate:login-logout", "expectedH1": "海音达 OA", "roleFixture": "employee", "primaryAction": { "allowed": "登录", "forbidden": "应急超级管理员" }, "witnessSpec": "client/tests/e2e/local-candidate-witnesses.spec.ts" }, { "bundle": "reimbursement", "witnessRoute": "/reimbursements", "witnessTag": "@local-candidate:reimbursement", "expectedH1": "我的报销", "roleFixture": "employee", "primaryAction": { "allowed": "新建报销", "forbidden": "导出" }, "witnessSpec": "client/tests/e2e/local-candidate-witnesses.spec.ts" }, { "bundle": "approval", "witnessRoute": "/workflow/tasks", "witnessTag": "@local-candidate:approval", "expectedH1": "待我审批", "roleFixture": "manager", "primaryAction": { "allowed": "处理", "forbidden": "通过" }, "witnessSpec": "client/tests/e2e/local-candidate-witnesses.spec.ts" }, { "bundle": "invoice", "witnessRoute": "/invoice-pool", "witnessTag": "@local-candidate:invoice", "expectedH1": "票据", "roleFixture": "employee", "primaryAction": { "allowed": "上传票据", "forbidden": "作废" }, "witnessSpec": "client/tests/e2e/local-candidate-witnesses.spec.ts" }, { "bundle": "procurement", "witnessRoute": "/purchase-requests", "witnessTag": "@local-candidate:procurement", "expectedH1": "采购", "roleFixture": "employee", "primaryAction": { "allowed": "新建采购", "forbidden": "通过" }, "witnessSpec": "client/tests/e2e/local-candidate-witnesses.spec.ts" }, { "bundle": "project-contract", "witnessRoute": "/contracts-registry", "witnessTag": "@local-candidate:project-contract", "expectedH1": "合同", "roleFixture": "manager", "primaryAction": { "allowed": "新增合同", "forbidden": "执行付款" }, "witnessSpec": "client/tests/e2e/local-candidate-witnesses.spec.ts" }, { "bundle": "payment-ap", "witnessRoute": "/payment-batches", "witnessTag": "@local-candidate:payment-ap", "expectedH1": "付款", "roleFixture": "finance", "primaryAction": { "allowed": "搜索待组批报销", "forbidden": "复核批次" }, "witnessSpec": "client/tests/e2e/local-candidate-witnesses.spec.ts" }, { "bundle": "people-audit", "witnessRoute": "/system/users", "witnessTag": "@local-candidate:people-audit", "expectedH1": "系统用户管理", "roleFixture": "system_admin", "primaryAction": { "allowed": "新建用户", "forbidden": "应急超级管理员" }, "witnessSpec": "client/tests/e2e/local-candidate-witnesses.spec.ts" }, { "bundle": "attendance-archive", "witnessRoute": "/mobile/attendance", "witnessTag": "@local-candidate:attendance-archive", "expectedH1": "考勤", "roleFixture": "employee", "primaryAction": { "allowed": "修正申请", "forbidden": "提交应急修正" }, "witnessSpec": "client/tests/e2e/local-candidate-witnesses.spec.ts" }, { "bundle": "mobile-workspace", "witnessRoute": "/mobile", "witnessTag": "@local-candidate:mobile-workspace", "expectedH1": "今日待处理", "roleFixture": "employee", "primaryAction": { "allowed": "新建报销", "forbidden": "财务" }, "witnessSpec": "client/tests/e2e/local-candidate-witnesses.spec.ts" } ], "routes": [ { "path": "*", "classification": "supported-noncore" }, { "path": "/", "classification": "supported-noncore" }, { "path": "/403", "classification": "supported-noncore" }, { "path": "/announcements", "classification": "supported-noncore" }, { "path": "/ap-operations", "classification": "core", "bundle": "payment-ap", "behaviorSpecs": ["client/tests/e2e/reimbursement-payment-batch-flow.spec.ts"] }, { "path": "/assets", "classification": "supported-noncore", "visualRequired": true, "visualSpecs": ["client/tests/e2e/r103-cross-page-ui-consistency.spec.ts"] }, { "path": "/assets/:assetId", "classification": "supported-noncore", "behaviorSpecs": ["client/tests/e2e/r103-cross-page-ui-consistency.spec.ts"], "visualRequired": true, "visualSpecs": ["client/tests/e2e/pc-detail-mobile-visual-wave3.spec.ts"] }, { "path": "/assets/new", "classification": "supported-noncore", "behaviorSpecs": ["client/tests/e2e/r103-cross-page-ui-consistency.spec.ts"] }, { "path": "/attendance", "classification": "core", "bundle": "attendance-archive", "behaviorSpecs": ["client/tests/e2e/r75-automation-gap-fill.spec.ts"] }, { "path": "/audit-logs", "classification": "core", "bundle": "people-audit", "behaviorSpecs": ["client/tests/e2e/settings-governance.spec.ts"] }, { "path": "/budgets", "classification": "supported-noncore" }, { "path": "/change-password", "classification": "supported-noncore" }, { "path": "/contracts-registry", "classification": "core", "bundle": "project-contract", "behaviorSpecs": ["client/tests/e2e/pc-detail-mobile-visual-wave3.spec.ts"], "visualRequired": true, "visualSpecs": ["client/tests/e2e/pc-detail-mobile-visual-wave3.spec.ts"] }, { "path": "/contracts-registry/:contractId", "classification": "core", "bundle": "project-contract", "behaviorSpecs": ["client/tests/e2e/contract-detail-workspace.spec.ts"], "visualRequired": true, "visualSpecs": ["client/tests/e2e/contract-detail-workspace.spec.ts"] }, { "path": "/contracts-registry/new", "classification": "supported-noncore", "behaviorSpecs": ["client/tests/e2e/contract-detail-workspace.spec.ts"] }, { "path": "/dashboard", "classification": "deferred" }, { "path": "/delegations", "classification": "supported-noncore" }, { "path": "/forgot-password", "classification": "supported-noncore" }, { "path": "/inventory-checks", "classification": "supported-noncore" }, { "path": "/invoice-pool", "classification": "core", "bundle": "invoice", "behaviorSpecs": ["client/tests/e2e/pc-finance-admin-visual-wave4.spec.ts"], "visualRequired": true, "visualSpecs": ["client/tests/e2e/pc-finance-admin-visual-wave4.spec.ts"] }, { "path": "/leave-requests", "classification": "supported-noncore" }, { "path": "/login", "classification": "core", "bundle": "login-logout", "behaviorSpecs": ["client/tests/e2e/login-portal-ux.spec.ts"] }, { "path": "/mobile", "classification": "core", "bundle": "mobile-workspace", "behaviorSpecs": ["client/tests/e2e/r124-mobile-entry-matrix.spec.ts"], "visualRequired": true, "visualSpecs": ["client/tests/e2e/r108-mobile-wecom-visual.spec.ts"] }, { "path": "/mobile/approvals", "classification": "core", "bundle": "approval", "behaviorSpecs": ["client/tests/e2e/mobile-approvals-offline.spec.ts"] }, { "path": "/mobile/approvals/:taskId", "classification": "core", "bundle": "approval", "behaviorSpecs": ["client/tests/e2e/mobile-approvals-offline.spec.ts"] }, { "path": "/mobile/assets/scan", "classification": "supported-noncore" }, { "path": "/mobile/attendance", "classification": "core", "bundle": "attendance-archive", "behaviorSpecs": ["client/tests/e2e/internal-readiness-ui.spec.ts"], "visualRequired": true, "visualSpecs": ["client/tests/e2e/internal-readiness-ui.spec.ts"] }, { "path": "/mobile/capture", "classification": "core", "bundle": "invoice", "behaviorSpecs": ["client/tests/e2e/r124-mobile-entry-matrix.spec.ts"] }, { "path": "/mobile/leave", "classification": "supported-noncore" }, { "path": "/mobile/leave/:leaveRequestId", "classification": "supported-noncore" }, { "path": "/mobile/me", "classification": "core", "bundle": "mobile-workspace", "behaviorSpecs": ["client/tests/e2e/r124-mobile-entry-matrix.spec.ts"] }, { "path": "/mobile/notifications", "classification": "core", "bundle": "mobile-workspace", "behaviorSpecs": ["client/tests/e2e/dg7-mobile-information-dedupe.spec.ts"] }, { "path": "/mobile/payment-batches", "classification": "core", "bundle": "payment-ap", "behaviorSpecs": ["client/tests/e2e/dg7-mobile-information-dedupe.spec.ts"] }, { "path": "/mobile/profile", "classification": "supported-noncore" }, { "path": "/mobile/purchase-requests", "classification": "core", "bundle": "procurement", "behaviorSpecs": ["client/tests/e2e/pc-detail-mobile-visual-wave3.spec.ts"] }, { "path": "/mobile/purchase-requests/:purchaseRequestId", "classification": "core", "bundle": "procurement", "behaviorSpecs": ["client/tests/e2e/pc-detail-mobile-visual-wave3.spec.ts"] }, { "path": "/mobile/reimbursements", "classification": "core", "bundle": "reimbursement", "behaviorSpecs": ["client/tests/e2e/r102-reimbursement-main-flow.spec.ts"] }, { "path": "/mobile/reimbursements/:reimbursementId", "classification": "core", "bundle": "reimbursement", "behaviorSpecs": ["client/tests/e2e/r102-reimbursement-main-flow.spec.ts"] }, { "path": "/mobile/wecom-approval-archive", "classification": "core", "bundle": "attendance-archive", "behaviorSpecs": ["client/tests/e2e/internal-readiness-ui.spec.ts"], "visualRequired": true, "visualSpecs": ["client/tests/e2e/internal-readiness-ui.spec.ts"] }, { "path": "/notifications", "classification": "supported-noncore" }, { "path": "/organization", "classification": "supported-noncore" }, { "path": "/payment-batches", "classification": "core", "bundle": "payment-ap", "behaviorSpecs": ["client/tests/e2e/reimbursement-payment-batch-flow.spec.ts"], "visualRequired": true, "visualSpecs": ["client/tests/e2e/pc-finance-admin-visual-wave4.spec.ts"] }, { "path": "/payroll", "classification": "supported-noncore" }, { "path": "/people", "classification": "core", "bundle": "people-audit", "behaviorSpecs": ["client/tests/e2e/r75-automation-gap-fill.spec.ts"] }, { "path": "/people/:employeeId", "classification": "core", "bundle": "people-audit", "behaviorSpecs": ["client/tests/e2e/r75-automation-gap-fill.spec.ts"] }, { "path": "/people/stats", "classification": "supported-noncore" }, { "path": "/performance", "classification": "supported-noncore" }, { "path": "/portal", "classification": "core", "bundle": "login-logout", "behaviorSpecs": ["client/tests/e2e/login-portal-ux.spec.ts"] }, { "path": "/projects", "classification": "core", "bundle": "project-contract", "behaviorSpecs": ["client/tests/e2e/project-workbench.spec.ts"], "visualRequired": true, "visualSpecs": ["client/tests/e2e/r103-cross-page-ui-consistency.spec.ts"] }, { "path": "/projects/:projectId", "classification": "core", "bundle": "project-contract", "behaviorSpecs": ["client/tests/e2e/project-workbench.spec.ts"] }, { "path": "/purchase-requests", "classification": "core", "bundle": "procurement", "behaviorSpecs": ["client/tests/e2e/procurement-flow.spec.ts"], "visualRequired": true, "visualSpecs": ["client/tests/e2e/r103-cross-page-ui-consistency.spec.ts"] }, { "path": "/purchase-requests/:purchaseRequestId", "classification": "core", "bundle": "procurement", "behaviorSpecs": ["client/tests/e2e/procurement-flow.spec.ts", "client/tests/e2e/r103-cross-page-ui-consistency.spec.ts"], "visualRequired": true, "visualSpecs": ["client/tests/e2e/r103-cross-page-ui-consistency.spec.ts"] }, { "path": "/reimbursements", "classification": "core", "bundle": "reimbursement", "behaviorSpecs": ["client/tests/e2e/r102-reimbursement-main-flow.spec.ts"], "visualRequired": true, "visualSpecs": ["client/tests/e2e/r103-cross-page-ui-consistency.spec.ts"] }, { "path": "/reimbursements/:reimbursementId", "classification": "core", "bundle": "reimbursement", "behaviorSpecs": ["client/tests/e2e/r102-reimbursement-main-flow.spec.ts"] }, { "path": "/reimbursements/:reimbursementId/print", "classification": "supported-noncore" }, { "path": "/reimbursements/dashboard", "classification": "supported-noncore" }, { "path": "/settings/profile", "classification": "supported-noncore" }, { "path": "/system/announcements", "classification": "supported-noncore" }, { "path": "/system/approval-rules", "classification": "supported-noncore" }, { "path": "/system/cutover", "classification": "frozen" }, { "path": "/system/departments", "classification": "supported-noncore" }, { "path": "/system/expense-standards", "classification": "supported-noncore" }, { "path": "/system/feature-flags", "classification": "supported-noncore" }, { "path": "/system/master-data", "classification": "supported-noncore" }, { "path": "/system/notification-channels", "classification": "supported-noncore" }, { "path": "/system/payment-accounts", "classification": "supported-noncore", "behaviorSpecs": ["client/tests/e2e/pc-finance-admin-visual-wave4.spec.ts", "client/tests/e2e/management-navigation-contract.spec.ts"] }, { "path": "/system/reimbursement-templates", "classification": "supported-noncore" }, { "path": "/system/settings", "classification": "supported-noncore" }, { "path": "/system/users", "classification": "core", "bundle": "people-audit", "behaviorSpecs": ["client/tests/e2e/pc-finance-admin-visual-wave4.spec.ts"] }, { "path": "/system/workflow-definitions", "classification": "supported-noncore" }, { "path": "/system/workspace", "classification": "supported-noncore" }, { "path": "/team", "classification": "supported-noncore" }, { "path": "/todos", "classification": "supported-noncore" }, { "path": "/travel-requests", "classification": "frozen" }, { "path": "/wecom-approval-archive", "classification": "core", "bundle": "attendance-archive", "behaviorSpecs": ["client/tests/e2e/internal-readiness-ui.spec.ts"], "visualRequired": true, "visualSpecs": ["client/tests/e2e/internal-readiness-ui.spec.ts"] }, { "path": "/weekly-reports", "classification": "supported-noncore" }, { "path": "/workflow/tasks", "classification": "core", "bundle": "approval", "behaviorSpecs": ["client/tests/e2e/workflow-action-confirm-ui.spec.ts"] }, { "path": "/workflow/tasks/:taskId", "classification": "core", "bundle": "approval", "behaviorSpecs": ["client/tests/e2e/workflow-action-confirm-ui.spec.ts"] } ] }