diff --git a/.trellis/tasks/05-26-oaops1-seven-day-trial-prep/prd.md b/.trellis/tasks/05-26-oaops1-seven-day-trial-prep/prd.md index e259ada0..adbd5abf 100644 --- a/.trellis/tasks/05-26-oaops1-seven-day-trial-prep/prd.md +++ b/.trellis/tasks/05-26-oaops1-seven-day-trial-prep/prd.md @@ -25,8 +25,8 @@ - 数据治理培训和运营支持证据。 - Day 7 人工 Go/No-Go 结论。 - 巡检脚本已完成改进:父级 summary 能传播子报告 finding,报告引用使用相对路径,隐私扫描不会打印原始敏感命中。 -- 本机已有 live smoke env 文件;只读公网预检显示 live smoke、真实 OCR 样票、公网 `/ready` 和企业微信配置均满足启动前自动化条件。 -- 本轮只读权限矩阵预检已通过:7 个角色、43 个正例、42 个负例,报告见 `research/prep-permission-matrix/summary.json`。 +- 本机已有 live smoke env 文件;2026-05-26 只读公网复核显示 live smoke、真实 OCR 样票、公网 `/ready` 和企业微信配置均满足启动前自动化条件,报告见 `research/prep-live-smoke-env-current.json`。 +- 本轮只读权限矩阵复核已通过:7 个角色、43 个正例、42 个负例、0 个问题,报告见 `research/prep-permission-matrix-current/summary.json`。 ## Assumptions @@ -69,12 +69,12 @@ ## Acceptance Criteria -- [ ] 当前任务记录 7 天真实试运行的启动条件、边界和证据要求。 -- [ ] 当前任务记录本轮只读准备预检结果和证据引用。 -- [ ] 明确哪些事项启动前已具备,哪些仍需用户人工确认或执行。 -- [ ] 明确每日巡检命令、最终汇总命令和预期状态解释。 -- [ ] 明确不得自动执行的操作:部署、生产配置变更、真实业务写入、企业微信写入、真实付款、生产数据库恢复。 -- [ ] Trellis 任务校验和治理检查通过。 +- [x] 当前任务记录 7 天真实试运行的启动条件、边界和证据要求。 +- [x] 当前任务记录本轮只读准备预检结果和证据引用。 +- [x] 明确哪些事项启动前已具备,哪些仍需用户人工确认或执行。 +- [x] 明确每日巡检命令、最终汇总命令和预期状态解释。 +- [x] 明确不得自动执行的操作:部署、生产配置变更、真实业务写入、企业微信写入、真实付款、生产数据库恢复。 +- [x] Trellis 任务校验和治理检查通过。 ## Definition Of Done @@ -129,5 +129,6 @@ bash scripts/qa/run-oa-final-launch-readiness.sh - 上游证据: - OALAUNCH1 closeout:`.trellis/tasks/archive/2026-05/05-26-oalaunch1-final-readiness-closeout/research/initial-readiness/summary.json`。 - OAOPS1 巡检改进后验证:`.trellis/tasks/archive/2026-05/05-26-oaops1-patrol-feature-review/research/oaops1-after-patrol-fix-final/summary.json`。 - - 本任务权限矩阵预检:`research/prep-permission-matrix/summary.json`。 + - 本任务 live smoke/OCR/公网/企微复核:`research/prep-live-smoke-env-current.json`。 + - 本任务权限矩阵复核:`research/prep-permission-matrix-current/summary.json`。 - 前端体验后续任务建议:试运行后创建 `oa-frontend-experience-maturity`,先覆盖首页、报销、审批、移动入口和财务/AP 高频页;低频后台页和合同/项目/资产页面放第二批。 diff --git a/.trellis/tasks/05-26-oaops1-seven-day-trial-prep/research/prep-live-smoke-env-current.json b/.trellis/tasks/05-26-oaops1-seven-day-trial-prep/research/prep-live-smoke-env-current.json new file mode 100644 index 00000000..ec218d55 --- /dev/null +++ b/.trellis/tasks/05-26-oaops1-seven-day-trial-prep/research/prep-live-smoke-env-current.json @@ -0,0 +1,42 @@ +{ + "checkedAt": "2026-05-26T09:11:48.874Z", + "baseUrl": "https://oa.hyinda.com", + "liveSmokeReady": true, + "liveSmoke": { + "LIVE_SMOKE_ADMIN_IDENTIFIER": true, + "LIVE_SMOKE_ADMIN_PASSWORD": true, + "LIVE_SMOKE_EMPLOYEE_IDENTIFIER": true, + "LIVE_SMOKE_EMPLOYEE_PASSWORD": true + }, + "liveSmokeOptional": { + "LIVE_EXPECT_WECOM_STATUS": true, + "LIVE_SMOKE_MANAGER_IDENTIFIER": true, + "LIVE_SMOKE_MANAGER_PASSWORD": true, + "LIVE_SMOKE_FINANCE_IDENTIFIER": true, + "LIVE_SMOKE_FINANCE_PASSWORD": true + }, + "liveOcrReady": true, + "liveOcr": { + "userReady": true, + "invoiceSampleReady": true, + "invoiceFileProvided": true, + "invoiceFileReady": true, + "invoiceBatchDirProvided": false, + "invoiceBatchDirReady": false, + "allowDuplicate": true + }, + "missing": [], + "publicReady": { + "ok": true, + "status": 200 + }, + "wecomConfig": { + "ok": true, + "status": 200, + "statusText": "ready", + "entryEnabled": true, + "oauthEnabled": true, + "defaultReturnTo": "/mobile", + "loginUrl": "/api/auth/wecom/login?returnTo=%2Fmobile" + } +} diff --git a/.trellis/tasks/05-26-oaops1-seven-day-trial-prep/research/prep-permission-matrix-current/summary.json b/.trellis/tasks/05-26-oaops1-seven-day-trial-prep/research/prep-permission-matrix-current/summary.json new file mode 100644 index 00000000..44262ea6 --- /dev/null +++ b/.trellis/tasks/05-26-oaops1-seven-day-trial-prep/research/prep-permission-matrix-current/summary.json @@ -0,0 +1,2285 @@ +{ + "issueId": "OANEXT2-4", + "status": "PASS_PERMISSION_MATRIX_READY", + "checkedAt": "2026-05-26T09:12:30.877Z", + "baseUrl": "https://oa.hyinda.com", + "privacy": "redacted role/status/count evidence only; no password, token, Secret, full account, invoice, contract, attachment, or raw payload", + "counts": { + "roles": 7, + "positiveProbes": 43, + "negativeProbes": 42 + }, + "issues": [], + "results": [ + { + "key": "employee", + "expectedRoles": [ + "employee" + ], + "maskedIdentifier": "sm***@***.com", + "login": { + "status": "PASS", + "reason": null, + "code": null + }, + "roleMatch": "PASS", + "actualRoles": [ + "employee" + ], + "probes": [ + { + "id": "me", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "status": "active", + "notificationPushEnabled": true, + "roleCodes": [ + "employee" + ] + } + }, + { + "id": "portal", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [ + { + "path": "data.roleCapabilities.canApproveTasks", + "status": "PASS", + "expected": false, + "actual": false + }, + { + "path": "data.roleCapabilities.canUseFinance", + "status": "PASS", + "expected": false, + "actual": false + }, + { + "path": "data.roleCapabilities.canManageSystem", + "status": "PASS", + "expected": false, + "actual": false + }, + { + "path": "data.roleCapabilities.isAdminOnly", + "status": "PASS", + "expected": false, + "actual": false + } + ], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "roleCapabilities": { + "canApproveTasks": false, + "canManageSystem": false, + "canSubmitApplications": true, + "canUseFinance": false, + "canViewTeam": false, + "isAdminOnly": false + } + } + }, + { + "id": "own-invoices", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "itemCount": 5, + "total": 22 + } + }, + { + "id": "navigation", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [], + "navigationExpectations": [ + { + "type": "visible", + "href": "/portal", + "status": "PASS" + }, + { + "type": "visible", + "href": "/reimbursements", + "status": "PASS" + }, + { + "type": "visible", + "href": "/assets", + "status": "PASS" + }, + { + "type": "hidden", + "href": "/workflow/tasks", + "status": "PASS" + }, + { + "type": "hidden", + "href": "/ap-operations", + "status": "PASS" + }, + { + "type": "hidden", + "href": "/payment-batches", + "status": "PASS" + }, + { + "type": "hidden", + "href": "/audit-logs", + "status": "PASS" + }, + { + "type": "hidden", + "href": "/system/settings", + "status": "PASS" + }, + { + "type": "hidden", + "href": "/system/feature-flags", + "status": "PASS" + }, + { + "type": "hidden", + "href": "/system/integrations/erp", + "status": "PASS" + } + ], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "navigationItemCount": 10 + } + }, + { + "id": "budget", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "ap", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403, + 409 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "ap-ledger", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403, + 409 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "payment-batches", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403, + 409 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "all-invoices", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "audit-logs", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "notification-deliveries", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "system-feature-flags", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "erp-status", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "payroll-items", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "performance-cycles", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403, + 409 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "travel-requests", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403, + 409 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "global-search-sensitive", + "kind": "negative", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200, + 409 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [ + { + "type": "forbidden_entity_type", + "value": "contract_registry", + "status": "PASS", + "matchedCount": 0 + }, + { + "type": "forbidden_entity_type", + "value": "confidential_doc_ref", + "status": "PASS", + "matchedCount": 0 + }, + { + "type": "forbidden_entity_type", + "value": "travel_request", + "status": "PASS", + "matchedCount": 0 + }, + { + "type": "forbidden_href_prefix", + "value": "/contracts-registry", + "status": "PASS", + "matchedCount": 0 + }, + { + "type": "forbidden_href_prefix", + "value": "/travel-requests", + "status": "PASS", + "matchedCount": 0 + } + ], + "sensitiveKeyHits": [], + "summary": { + "itemCount": 7, + "total": null + } + } + ], + "missingRoles": [] + }, + { + "key": "manager", + "expectedRoles": [ + "manager", + "employee" + ], + "maskedIdentifier": "sm***@***.com", + "login": { + "status": "PASS", + "reason": null, + "code": null + }, + "roleMatch": "PASS", + "actualRoles": [ + "employee", + "manager" + ], + "probes": [ + { + "id": "me", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "status": "active", + "notificationPushEnabled": true, + "roleCodes": [ + "employee", + "manager" + ] + } + }, + { + "id": "portal", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [ + { + "path": "data.roleCapabilities.canApproveTasks", + "status": "PASS", + "expected": true, + "actual": true + }, + { + "path": "data.roleCapabilities.canUseFinance", + "status": "PASS", + "expected": false, + "actual": false + }, + { + "path": "data.roleCapabilities.canManageSystem", + "status": "PASS", + "expected": false, + "actual": false + }, + { + "path": "data.roleCapabilities.isAdminOnly", + "status": "PASS", + "expected": false, + "actual": false + } + ], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "roleCapabilities": { + "canApproveTasks": true, + "canManageSystem": false, + "canSubmitApplications": true, + "canUseFinance": false, + "canViewTeam": true, + "isAdminOnly": false + } + } + }, + { + "id": "workflow", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "itemCount": 1, + "total": 1 + } + }, + { + "id": "navigation", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [], + "navigationExpectations": [ + { + "type": "visible", + "href": "/workflow/tasks", + "status": "PASS" + }, + { + "type": "hidden", + "href": "/ap-operations", + "status": "PASS" + }, + { + "type": "hidden", + "href": "/payment-batches", + "status": "PASS" + }, + { + "type": "hidden", + "href": "/audit-logs", + "status": "PASS" + }, + { + "type": "hidden", + "href": "/system/settings", + "status": "PASS" + }, + { + "type": "hidden", + "href": "/system/feature-flags", + "status": "PASS" + }, + { + "type": "hidden", + "href": "/system/integrations/erp", + "status": "PASS" + } + ], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "navigationItemCount": 15 + } + }, + { + "id": "ap", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403, + 409 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "ap-ledger", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403, + 409 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "payment-batches", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403, + 409 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "audit-logs", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "erp-status", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "payroll-items", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "performance-cycles", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403, + 409 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "travel-requests", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403, + 409 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "global-search-sensitive", + "kind": "negative", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200, + 409 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [ + { + "type": "forbidden_entity_type", + "value": "contract_registry", + "status": "PASS", + "matchedCount": 0 + }, + { + "type": "forbidden_entity_type", + "value": "confidential_doc_ref", + "status": "PASS", + "matchedCount": 0 + }, + { + "type": "forbidden_entity_type", + "value": "travel_request", + "status": "PASS", + "matchedCount": 0 + }, + { + "type": "forbidden_href_prefix", + "value": "/contracts-registry", + "status": "PASS", + "matchedCount": 0 + }, + { + "type": "forbidden_href_prefix", + "value": "/travel-requests", + "status": "PASS", + "matchedCount": 0 + } + ], + "sensitiveKeyHits": [], + "summary": { + "itemCount": 10, + "total": null + } + } + ], + "missingRoles": [] + }, + { + "key": "finance", + "expectedRoles": [ + "finance", + "employee" + ], + "maskedIdentifier": "sm***@***.com", + "login": { + "status": "PASS", + "reason": null, + "code": null + }, + "roleMatch": "PASS", + "actualRoles": [ + "employee", + "finance" + ], + "probes": [ + { + "id": "me", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "status": "active", + "notificationPushEnabled": true, + "roleCodes": [ + "employee", + "finance" + ] + } + }, + { + "id": "portal", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [ + { + "path": "data.roleCapabilities.canApproveTasks", + "status": "PASS", + "expected": true, + "actual": true + }, + { + "path": "data.roleCapabilities.canUseFinance", + "status": "PASS", + "expected": true, + "actual": true + }, + { + "path": "data.roleCapabilities.canManageSystem", + "status": "PASS", + "expected": false, + "actual": false + }, + { + "path": "data.roleCapabilities.isAdminOnly", + "status": "PASS", + "expected": false, + "actual": false + } + ], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "roleCapabilities": { + "canApproveTasks": true, + "canManageSystem": false, + "canSubmitApplications": true, + "canUseFinance": true, + "canViewTeam": true, + "isAdminOnly": false + } + } + }, + { + "id": "all-invoices", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "itemCount": 5, + "total": 46 + } + }, + { + "id": "payment-batches", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200, + 409 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "itemCount": 9, + "total": null + } + }, + { + "id": "ap-ledger", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200, + 409 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "itemCount": 5, + "total": 33 + } + }, + { + "id": "navigation", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [], + "navigationExpectations": [ + { + "type": "visible", + "href": "/invoice-pool", + "status": "PASS" + }, + { + "type": "visible", + "href": "/payment-batches", + "status": "PASS" + }, + { + "type": "visible", + "href": "/ap-operations", + "status": "PASS" + }, + { + "type": "hidden", + "href": "/audit-logs", + "status": "PASS" + }, + { + "type": "hidden", + "href": "/system/settings", + "status": "PASS" + }, + { + "type": "hidden", + "href": "/system/feature-flags", + "status": "PASS" + }, + { + "type": "hidden", + "href": "/system/integrations/erp", + "status": "PASS" + } + ], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "navigationItemCount": 18 + } + }, + { + "id": "audit-logs", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "notification-deliveries", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "system-feature-flags", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "erp-status", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "payroll-items", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "performance-cycles", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403, + 409 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "travel-requests", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403, + 409 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "global-search-sensitive", + "kind": "negative", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200, + 409 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [ + { + "type": "forbidden_entity_type", + "value": "contract_registry", + "status": "PASS", + "matchedCount": 0 + }, + { + "type": "forbidden_entity_type", + "value": "confidential_doc_ref", + "status": "PASS", + "matchedCount": 0 + }, + { + "type": "forbidden_entity_type", + "value": "travel_request", + "status": "PASS", + "matchedCount": 0 + }, + { + "type": "forbidden_href_prefix", + "value": "/contracts-registry", + "status": "PASS", + "matchedCount": 0 + }, + { + "type": "forbidden_href_prefix", + "value": "/travel-requests", + "status": "PASS", + "matchedCount": 0 + } + ], + "sensitiveKeyHits": [], + "summary": { + "itemCount": 9, + "total": null + } + } + ], + "missingRoles": [] + }, + { + "key": "finance_mgr", + "expectedRoles": [ + "finance", + "finance_mgr", + "employee" + ], + "maskedIdentifier": "sm***@***.com", + "login": { + "status": "PASS", + "reason": null, + "code": null + }, + "roleMatch": "PASS", + "actualRoles": [ + "employee", + "finance", + "finance_mgr" + ], + "probes": [ + { + "id": "me", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "status": "active", + "notificationPushEnabled": true, + "roleCodes": [ + "employee", + "finance", + "finance_mgr" + ] + } + }, + { + "id": "portal", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [ + { + "path": "data.roleCapabilities.canApproveTasks", + "status": "PASS", + "expected": true, + "actual": true + }, + { + "path": "data.roleCapabilities.canUseFinance", + "status": "PASS", + "expected": true, + "actual": true + }, + { + "path": "data.roleCapabilities.canManageSystem", + "status": "PASS", + "expected": true, + "actual": true + }, + { + "path": "data.roleCapabilities.isAdminOnly", + "status": "PASS", + "expected": false, + "actual": false + } + ], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "roleCapabilities": { + "canApproveTasks": true, + "canManageSystem": true, + "canSubmitApplications": true, + "canUseFinance": true, + "canViewTeam": true, + "isAdminOnly": false + } + } + }, + { + "id": "all-invoices", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "itemCount": 5, + "total": 46 + } + }, + { + "id": "payment-batches", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200, + 409 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "itemCount": 9, + "total": null + } + }, + { + "id": "ap-ledger", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200, + 409 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "itemCount": 5, + "total": 33 + } + }, + { + "id": "erp-status", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "itemCount": 3, + "total": null + } + }, + { + "id": "audit-logs", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "itemCount": 5, + "total": 1917 + } + }, + { + "id": "notification-deliveries", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "itemCount": 5, + "total": null + } + }, + { + "id": "system-feature-flags", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "itemCount": 26, + "total": null + } + }, + { + "id": "navigation", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [], + "navigationExpectations": [ + { + "type": "visible", + "href": "/invoice-pool", + "status": "PASS" + }, + { + "type": "visible", + "href": "/payment-batches", + "status": "PASS" + }, + { + "type": "visible", + "href": "/ap-operations", + "status": "PASS" + }, + { + "type": "visible", + "href": "/audit-logs", + "status": "PASS" + }, + { + "type": "visible", + "href": "/system/feature-flags", + "status": "PASS" + }, + { + "type": "visible", + "href": "/system/integrations/erp", + "status": "PASS" + } + ], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "navigationItemCount": 27 + } + } + ], + "missingRoles": [] + }, + { + "key": "hr", + "expectedRoles": [ + "hr", + "employee" + ], + "maskedIdentifier": "sm***@***.com", + "login": { + "status": "PASS", + "reason": null, + "code": null + }, + "roleMatch": "PASS", + "actualRoles": [ + "employee", + "hr" + ], + "probes": [ + { + "id": "me", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "status": "active", + "notificationPushEnabled": true, + "roleCodes": [ + "employee", + "hr" + ] + } + }, + { + "id": "portal", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [ + { + "path": "data.roleCapabilities.canApproveTasks", + "status": "PASS", + "expected": false, + "actual": false + }, + { + "path": "data.roleCapabilities.canUseFinance", + "status": "PASS", + "expected": false, + "actual": false + }, + { + "path": "data.roleCapabilities.canManageSystem", + "status": "PASS", + "expected": true, + "actual": true + }, + { + "path": "data.roleCapabilities.isAdminOnly", + "status": "PASS", + "expected": false, + "actual": false + } + ], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "roleCapabilities": { + "canApproveTasks": false, + "canManageSystem": true, + "canSubmitApplications": true, + "canUseFinance": false, + "canViewTeam": true, + "isAdminOnly": false + } + } + }, + { + "id": "wecom-archive", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "itemCount": 5, + "total": 9 + } + }, + { + "id": "navigation", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [], + "navigationExpectations": [ + { + "type": "visible", + "href": "/people", + "status": "PASS" + }, + { + "type": "visible", + "href": "/system/settings", + "status": "PASS" + }, + { + "type": "hidden", + "href": "/ap-operations", + "status": "PASS" + }, + { + "type": "hidden", + "href": "/payment-batches", + "status": "PASS" + }, + { + "type": "hidden", + "href": "/audit-logs", + "status": "PASS" + }, + { + "type": "hidden", + "href": "/system/feature-flags", + "status": "PASS" + }, + { + "type": "hidden", + "href": "/system/integrations/erp", + "status": "PASS" + } + ], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "navigationItemCount": 16 + } + }, + { + "id": "ap-ledger", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403, + 409 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "payment-batches", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403, + 409 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "audit-logs", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "system-feature-flags", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "payroll-items", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "performance-cycles", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403, + 409 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "global-search-sensitive", + "kind": "negative", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200, + 409 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [ + { + "type": "forbidden_entity_type", + "value": "contract_registry", + "status": "PASS", + "matchedCount": 0 + }, + { + "type": "forbidden_entity_type", + "value": "confidential_doc_ref", + "status": "PASS", + "matchedCount": 0 + }, + { + "type": "forbidden_entity_type", + "value": "travel_request", + "status": "PASS", + "matchedCount": 0 + }, + { + "type": "forbidden_href_prefix", + "value": "/contracts-registry", + "status": "PASS", + "matchedCount": 0 + }, + { + "type": "forbidden_href_prefix", + "value": "/travel-requests", + "status": "PASS", + "matchedCount": 0 + } + ], + "sensitiveKeyHits": [], + "summary": { + "itemCount": 4, + "total": null + } + } + ], + "missingRoles": [] + }, + { + "key": "ceo", + "expectedRoles": [ + "ceo", + "employee" + ], + "maskedIdentifier": "sm***@***.com", + "login": { + "status": "PASS", + "reason": null, + "code": null + }, + "roleMatch": "PASS", + "actualRoles": [ + "ceo", + "employee" + ], + "probes": [ + { + "id": "me", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "status": "active", + "notificationPushEnabled": true, + "roleCodes": [ + "ceo", + "employee" + ] + } + }, + { + "id": "portal", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [ + { + "path": "data.roleCapabilities.canApproveTasks", + "status": "PASS", + "expected": true, + "actual": true + }, + { + "path": "data.roleCapabilities.canUseFinance", + "status": "PASS", + "expected": false, + "actual": false + }, + { + "path": "data.roleCapabilities.canManageSystem", + "status": "PASS", + "expected": false, + "actual": false + }, + { + "path": "data.roleCapabilities.isAdminOnly", + "status": "PASS", + "expected": false, + "actual": false + } + ], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "roleCapabilities": { + "canApproveTasks": true, + "canManageSystem": false, + "canSubmitApplications": true, + "canUseFinance": false, + "canViewTeam": true, + "isAdminOnly": false + } + } + }, + { + "id": "dashboard", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "totalCount": 33, + "paidCount": 8, + "reviewingCount": 3 + } + }, + { + "id": "navigation", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [], + "navigationExpectations": [ + { + "type": "visible", + "href": "/workflow/tasks", + "status": "PASS" + }, + { + "type": "visible", + "href": "/budgets", + "status": "PASS" + }, + { + "type": "hidden", + "href": "/ap-operations", + "status": "PASS" + }, + { + "type": "hidden", + "href": "/payment-batches", + "status": "PASS" + }, + { + "type": "hidden", + "href": "/audit-logs", + "status": "PASS" + }, + { + "type": "hidden", + "href": "/system/feature-flags", + "status": "PASS" + }, + { + "type": "hidden", + "href": "/system/integrations/erp", + "status": "PASS" + } + ], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "navigationItemCount": 15 + } + }, + { + "id": "system-feature-flags", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "notification-deliveries", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "payroll-items", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "performance-cycles", + "kind": "negative", + "status": "PASS", + "httpStatus": 403, + "expectedStatuses": [ + 403, + 409 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "code": "PERM_001", + "message": "无权限" + } + }, + { + "id": "global-search-sensitive", + "kind": "negative", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200, + 409 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [ + { + "type": "forbidden_entity_type", + "value": "contract_registry", + "status": "PASS", + "matchedCount": 0 + }, + { + "type": "forbidden_entity_type", + "value": "confidential_doc_ref", + "status": "PASS", + "matchedCount": 0 + }, + { + "type": "forbidden_entity_type", + "value": "travel_request", + "status": "PASS", + "matchedCount": 0 + }, + { + "type": "forbidden_href_prefix", + "value": "/contracts-registry", + "status": "PASS", + "matchedCount": 0 + }, + { + "type": "forbidden_href_prefix", + "value": "/travel-requests", + "status": "PASS", + "matchedCount": 0 + } + ], + "sensitiveKeyHits": [], + "summary": { + "itemCount": 9, + "total": null + } + } + ], + "missingRoles": [] + }, + { + "key": "admin", + "expectedRoles": [ + "admin", + "employee" + ], + "maskedIdentifier": "sm***@***.com", + "login": { + "status": "PASS", + "reason": null, + "code": null + }, + "roleMatch": "PASS", + "actualRoles": [ + "admin", + "employee" + ], + "probes": [ + { + "id": "me", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "status": "active", + "notificationPushEnabled": true, + "roleCodes": [ + "admin", + "employee" + ] + } + }, + { + "id": "portal", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [ + { + "path": "data.roleCapabilities.canApproveTasks", + "status": "PASS", + "expected": false, + "actual": false + }, + { + "path": "data.roleCapabilities.canUseFinance", + "status": "PASS", + "expected": false, + "actual": false + }, + { + "path": "data.roleCapabilities.canManageSystem", + "status": "PASS", + "expected": true, + "actual": true + }, + { + "path": "data.roleCapabilities.isAdminOnly", + "status": "PASS", + "expected": true, + "actual": true + } + ], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "roleCapabilities": { + "canApproveTasks": false, + "canManageSystem": true, + "canSubmitApplications": true, + "canUseFinance": false, + "canViewTeam": true, + "isAdminOnly": true + } + } + }, + { + "id": "users", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "itemCount": 1, + "total": 13 + } + }, + { + "id": "audit-logs", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "itemCount": 5, + "total": 1920 + } + }, + { + "id": "notification-deliveries", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "itemCount": 5, + "total": null + } + }, + { + "id": "system-feature-flags", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "itemCount": 26, + "total": null + } + }, + { + "id": "payroll-items", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "itemCount": 0, + "total": null + } + }, + { + "id": "performance-cycles", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200, + 409 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "itemCount": 1, + "total": null + } + }, + { + "id": "global-search", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200, + 409 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "itemCount": 10, + "total": null + } + }, + { + "id": "assets", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [], + "navigationExpectations": [], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "itemCount": 7, + "total": null + } + }, + { + "id": "navigation", + "kind": "positive", + "status": "PASS", + "httpStatus": 200, + "expectedStatuses": [ + 200 + ], + "dataExpectations": [], + "navigationExpectations": [ + { + "type": "visible", + "href": "/audit-logs", + "status": "PASS" + }, + { + "type": "visible", + "href": "/system/settings", + "status": "PASS" + }, + { + "type": "visible", + "href": "/system/feature-flags", + "status": "PASS" + }, + { + "type": "hidden", + "href": "/workflow/tasks", + "status": "PASS" + }, + { + "type": "hidden", + "href": "/ap-operations", + "status": "PASS" + }, + { + "type": "hidden", + "href": "/payment-batches", + "status": "PASS" + } + ], + "searchExpectations": [], + "sensitiveKeyHits": [], + "summary": { + "navigationItemCount": 26 + } + } + ], + "missingRoles": [] + } + ] +} diff --git a/.trellis/tasks/05-26-oaops1-seven-day-trial-prep/research/prep-permission-matrix-current/summary.md b/.trellis/tasks/05-26-oaops1-seven-day-trial-prep/research/prep-permission-matrix-current/summary.md new file mode 100644 index 00000000..d7203fc9 --- /dev/null +++ b/.trellis/tasks/05-26-oaops1-seven-day-trial-prep/research/prep-permission-matrix-current/summary.md @@ -0,0 +1,28 @@ +# OA 权限矩阵脱敏自动验证报告 + +生成时间:2026-05-26T09:12:30.877Z +结论:PASS_PERMISSION_MATRIX_READY + +## 统计 + +- 角色数:7 +- 正向探针:43 +- 负向探针:42 +- 问题数:0 + +## 角色结果 + +| 角色 | 登录 | 角色匹配 | 探针通过/总数 | +| --- | --- | --- | ---: | +| employee | PASS | PASS | 17/17 | +| manager | PASS | PASS | 13/13 | +| finance | PASS | PASS | 14/14 | +| finance_mgr | PASS | PASS | 10/10 | +| hr | PASS | PASS | 11/11 | +| ceo | PASS | PASS | 9/9 | +| admin | PASS | PASS | 11/11 | + +## 说明 + +- 本报告只输出角色、HTTP 状态、脱敏账号和摘要计数,不输出密码、token、Secret、完整账号、合同正文、票据内容或原始 payload。 +- 409 表示功能门禁关闭且未泄露数据;对财务/AP/付款等冻结或受控功能可作为可解释拒绝。 diff --git a/.trellis/tasks/05-26-oaops1-seven-day-trial-prep/research/prep-readiness.md b/.trellis/tasks/05-26-oaops1-seven-day-trial-prep/research/prep-readiness.md index ee47394a..97eaeca8 100644 --- a/.trellis/tasks/05-26-oaops1-seven-day-trial-prep/research/prep-readiness.md +++ b/.trellis/tasks/05-26-oaops1-seven-day-trial-prep/research/prep-readiness.md @@ -4,11 +4,11 @@ - `bash -n scripts/qa/run-oa-real-use-daily.sh`:通过。 - `bash -n scripts/qa/run-oa-final-launch-readiness.sh`:通过。 -- live smoke env 文件:存在。 -- live smoke / OCR 条件:已具备,缺项为空。 -- 公网 `/ready`:200。 -- 企业微信配置:ready,入口启用,OAuth 启用,默认回到移动端。 -- 权限矩阵:`PASS_PERMISSION_MATRIX_READY`,7 个角色、43 个正例、42 个负例。 +- live smoke env 文件:存在,且仅在本机仓库外加载。 +- live smoke / OCR 条件:2026-05-26 复核通过,缺项为空。 +- 公网 `/ready`:2026-05-26 复核为 200。 +- 企业微信配置:2026-05-26 复核为 ready,入口启用,OAuth 启用,默认回到移动端。 +- 权限矩阵:2026-05-26 复核为 `PASS_PERMISSION_MATRIX_READY`,7 个角色、43 个正例、42 个负例、0 个问题。 ## 已具备 @@ -43,7 +43,9 @@ ## 证据引用 -- 权限矩阵报告:`research/prep-permission-matrix/summary.json`。 +- live smoke/OCR/公网/企微复核:`research/prep-live-smoke-env-current.json`。 +- 权限矩阵历史报告:`research/prep-permission-matrix/summary.json`。 +- 权限矩阵当前复核:`research/prep-permission-matrix-current/summary.json`。 - 本准备 PRD:`prd.md`。 - 试运行前前端可改范围调研:`research/pretrial-frontend-scope.md`。 - 试运行前 PC 参考体系调研:`research/pretrial-reference-systems.md`。