893 行
25 KiB
JSON
893 行
25 KiB
JSON
{
|
|
"issueId": "OAFRONT3-1",
|
|
"mode": "pc-readonly-visual-evidence",
|
|
"status": "PASS_PC_READONLY_VISUAL_READY",
|
|
"conclusion": "PASS_PC_READONLY_VISUAL_READY",
|
|
"baseUrl": "https://oa.hyinda.com",
|
|
"checkedAt": "2026-05-26T09:49:00.322Z",
|
|
"readOnly": true,
|
|
"viewport": "1440x960",
|
|
"roleCount": 7,
|
|
"routeCount": 32,
|
|
"screenshotDir": "output/playwright/oafront3-pc-readonly-postdeploy",
|
|
"reportDir": ".trellis/tasks/05-26-oa-frontend-postdeploy-public-verification/research/postdeploy-oafront3-pc-readonly",
|
|
"roles": [
|
|
{
|
|
"role": "employee",
|
|
"login": "PASS"
|
|
},
|
|
{
|
|
"role": "manager",
|
|
"login": "PASS"
|
|
},
|
|
{
|
|
"role": "finance",
|
|
"login": "PASS"
|
|
},
|
|
{
|
|
"role": "finance_mgr",
|
|
"login": "PASS"
|
|
},
|
|
{
|
|
"role": "admin",
|
|
"login": "PASS"
|
|
},
|
|
{
|
|
"role": "ceo",
|
|
"login": "PASS"
|
|
},
|
|
{
|
|
"role": "hr",
|
|
"login": "PASS"
|
|
}
|
|
],
|
|
"routes": [
|
|
{
|
|
"role": "employee",
|
|
"route": "/portal",
|
|
"label": "员工工作台",
|
|
"layer": "A",
|
|
"expectation": "accessible",
|
|
"status": "PASS",
|
|
"finalPath": "/portal",
|
|
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/employee-portal.png",
|
|
"metrics": {
|
|
"title": "海音达工作台",
|
|
"textLength": 786,
|
|
"headingCount": 1,
|
|
"tableCount": 0,
|
|
"uuidCount": 0,
|
|
"rawStatusTokenCount": 0,
|
|
"longNumberCount": 0,
|
|
"rawJsonBlockCount": 0,
|
|
"englishFound": [],
|
|
"datePlaceholderCount": 0,
|
|
"clippedCount": 0,
|
|
"forbiddenLike": false,
|
|
"appErrorLike": false,
|
|
"navPortalCopy": false
|
|
}
|
|
},
|
|
{
|
|
"role": "employee",
|
|
"route": "/reimbursements",
|
|
"label": "员工报销列表",
|
|
"layer": "A",
|
|
"expectation": "accessible",
|
|
"status": "PASS",
|
|
"finalPath": "/reimbursements",
|
|
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/employee-reimbursements.png",
|
|
"metrics": {
|
|
"title": "海音达工作台",
|
|
"textLength": 718,
|
|
"headingCount": 1,
|
|
"tableCount": 1,
|
|
"uuidCount": 0,
|
|
"rawStatusTokenCount": 0,
|
|
"longNumberCount": 0,
|
|
"rawJsonBlockCount": 0,
|
|
"englishFound": [],
|
|
"datePlaceholderCount": 0,
|
|
"clippedCount": 0,
|
|
"forbiddenLike": false,
|
|
"appErrorLike": false,
|
|
"navPortalCopy": false
|
|
}
|
|
},
|
|
{
|
|
"role": "employee",
|
|
"route": "/invoice-pool",
|
|
"label": "员工票据中心",
|
|
"layer": "B",
|
|
"expectation": "accessible",
|
|
"status": "PASS",
|
|
"finalPath": "/invoice-pool",
|
|
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/employee-invoice-pool.png",
|
|
"metrics": {
|
|
"title": "海音达工作台",
|
|
"textLength": 3447,
|
|
"headingCount": 1,
|
|
"tableCount": 1,
|
|
"uuidCount": 0,
|
|
"rawStatusTokenCount": 0,
|
|
"longNumberCount": 0,
|
|
"rawJsonBlockCount": 0,
|
|
"englishFound": [],
|
|
"datePlaceholderCount": 0,
|
|
"clippedCount": 0,
|
|
"forbiddenLike": false,
|
|
"appErrorLike": false,
|
|
"navPortalCopy": false
|
|
}
|
|
},
|
|
{
|
|
"role": "employee",
|
|
"route": "/purchase-requests",
|
|
"label": "员工采购申请",
|
|
"layer": "B",
|
|
"expectation": "accessible",
|
|
"status": "PASS",
|
|
"finalPath": "/purchase-requests",
|
|
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/employee-purchase-requests.png",
|
|
"metrics": {
|
|
"title": "海音达工作台",
|
|
"textLength": 1085,
|
|
"headingCount": 1,
|
|
"tableCount": 3,
|
|
"uuidCount": 0,
|
|
"rawStatusTokenCount": 0,
|
|
"longNumberCount": 0,
|
|
"rawJsonBlockCount": 0,
|
|
"englishFound": [],
|
|
"datePlaceholderCount": 0,
|
|
"clippedCount": 0,
|
|
"forbiddenLike": false,
|
|
"appErrorLike": false,
|
|
"navPortalCopy": false
|
|
}
|
|
},
|
|
{
|
|
"role": "employee",
|
|
"route": "/assets",
|
|
"label": "员工资产台账",
|
|
"layer": "B",
|
|
"expectation": "accessible",
|
|
"status": "PASS",
|
|
"finalPath": "/assets",
|
|
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/employee-assets.png",
|
|
"metrics": {
|
|
"title": "海音达工作台",
|
|
"textLength": 830,
|
|
"headingCount": 1,
|
|
"tableCount": 2,
|
|
"uuidCount": 0,
|
|
"rawStatusTokenCount": 0,
|
|
"longNumberCount": 0,
|
|
"rawJsonBlockCount": 0,
|
|
"englishFound": [],
|
|
"datePlaceholderCount": 0,
|
|
"clippedCount": 0,
|
|
"forbiddenLike": false,
|
|
"appErrorLike": false,
|
|
"navPortalCopy": false
|
|
}
|
|
},
|
|
{
|
|
"role": "employee",
|
|
"route": "/payment-batches",
|
|
"label": "员工付款权限负例",
|
|
"layer": "B",
|
|
"expectation": "forbidden_ok",
|
|
"status": "FORBIDDEN_EXPECTED",
|
|
"finalPath": "/403",
|
|
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/employee-payment-batches.png",
|
|
"metrics": {
|
|
"title": "海音达工作台",
|
|
"textLength": 56,
|
|
"headingCount": 1,
|
|
"tableCount": 0,
|
|
"uuidCount": 0,
|
|
"rawStatusTokenCount": 0,
|
|
"longNumberCount": 0,
|
|
"rawJsonBlockCount": 0,
|
|
"englishFound": [],
|
|
"datePlaceholderCount": 0,
|
|
"clippedCount": 0,
|
|
"forbiddenLike": true,
|
|
"appErrorLike": false,
|
|
"navPortalCopy": false
|
|
}
|
|
},
|
|
{
|
|
"role": "manager",
|
|
"route": "/portal",
|
|
"label": "主管工作台",
|
|
"layer": "A",
|
|
"expectation": "accessible",
|
|
"status": "PASS",
|
|
"finalPath": "/portal",
|
|
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/manager-portal.png",
|
|
"metrics": {
|
|
"title": "海音达工作台",
|
|
"textLength": 984,
|
|
"headingCount": 1,
|
|
"tableCount": 0,
|
|
"uuidCount": 0,
|
|
"rawStatusTokenCount": 0,
|
|
"longNumberCount": 0,
|
|
"rawJsonBlockCount": 0,
|
|
"englishFound": [],
|
|
"datePlaceholderCount": 0,
|
|
"clippedCount": 0,
|
|
"forbiddenLike": false,
|
|
"appErrorLike": false,
|
|
"navPortalCopy": false
|
|
}
|
|
},
|
|
{
|
|
"role": "manager",
|
|
"route": "/workflow/tasks",
|
|
"label": "主管审批待办",
|
|
"layer": "A",
|
|
"expectation": "accessible",
|
|
"status": "PASS",
|
|
"finalPath": "/workflow/tasks",
|
|
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/manager-workflow-tasks.png",
|
|
"metrics": {
|
|
"title": "海音达工作台",
|
|
"textLength": 550,
|
|
"headingCount": 1,
|
|
"tableCount": 1,
|
|
"uuidCount": 0,
|
|
"rawStatusTokenCount": 0,
|
|
"longNumberCount": 0,
|
|
"rawJsonBlockCount": 0,
|
|
"englishFound": [],
|
|
"datePlaceholderCount": 0,
|
|
"clippedCount": 0,
|
|
"forbiddenLike": false,
|
|
"appErrorLike": false,
|
|
"navPortalCopy": false
|
|
}
|
|
},
|
|
{
|
|
"role": "manager",
|
|
"route": "/purchase-requests",
|
|
"label": "主管采购申请",
|
|
"layer": "B",
|
|
"expectation": "accessible",
|
|
"status": "PASS",
|
|
"finalPath": "/purchase-requests",
|
|
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/manager-purchase-requests.png",
|
|
"metrics": {
|
|
"title": "海音达工作台",
|
|
"textLength": 475,
|
|
"headingCount": 1,
|
|
"tableCount": 1,
|
|
"uuidCount": 0,
|
|
"rawStatusTokenCount": 0,
|
|
"longNumberCount": 0,
|
|
"rawJsonBlockCount": 0,
|
|
"englishFound": [],
|
|
"datePlaceholderCount": 0,
|
|
"clippedCount": 0,
|
|
"forbiddenLike": false,
|
|
"appErrorLike": false,
|
|
"navPortalCopy": false
|
|
}
|
|
},
|
|
{
|
|
"role": "manager",
|
|
"route": "/projects",
|
|
"label": "主管项目列表",
|
|
"layer": "B",
|
|
"expectation": "optional",
|
|
"status": "PASS",
|
|
"finalPath": "/projects",
|
|
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/manager-projects.png",
|
|
"metrics": {
|
|
"title": "海音达工作台",
|
|
"textLength": 777,
|
|
"headingCount": 1,
|
|
"tableCount": 0,
|
|
"uuidCount": 0,
|
|
"rawStatusTokenCount": 0,
|
|
"longNumberCount": 0,
|
|
"rawJsonBlockCount": 0,
|
|
"englishFound": [],
|
|
"datePlaceholderCount": 0,
|
|
"clippedCount": 0,
|
|
"forbiddenLike": false,
|
|
"appErrorLike": false,
|
|
"navPortalCopy": false
|
|
}
|
|
},
|
|
{
|
|
"role": "finance",
|
|
"route": "/portal",
|
|
"label": "财务工作台",
|
|
"layer": "A",
|
|
"expectation": "accessible",
|
|
"status": "PASS",
|
|
"finalPath": "/portal",
|
|
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/finance-portal.png",
|
|
"metrics": {
|
|
"title": "海音达工作台",
|
|
"textLength": 1009,
|
|
"headingCount": 1,
|
|
"tableCount": 0,
|
|
"uuidCount": 0,
|
|
"rawStatusTokenCount": 0,
|
|
"longNumberCount": 0,
|
|
"rawJsonBlockCount": 0,
|
|
"englishFound": [],
|
|
"datePlaceholderCount": 0,
|
|
"clippedCount": 0,
|
|
"forbiddenLike": false,
|
|
"appErrorLike": false,
|
|
"navPortalCopy": false
|
|
}
|
|
},
|
|
{
|
|
"role": "finance",
|
|
"route": "/invoice-pool",
|
|
"label": "财务票据中心",
|
|
"layer": "B",
|
|
"expectation": "accessible",
|
|
"status": "PASS",
|
|
"finalPath": "/invoice-pool",
|
|
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/finance-invoice-pool.png",
|
|
"metrics": {
|
|
"title": "海音达工作台",
|
|
"textLength": 526,
|
|
"headingCount": 1,
|
|
"tableCount": 1,
|
|
"uuidCount": 0,
|
|
"rawStatusTokenCount": 0,
|
|
"longNumberCount": 0,
|
|
"rawJsonBlockCount": 0,
|
|
"englishFound": [],
|
|
"datePlaceholderCount": 0,
|
|
"clippedCount": 0,
|
|
"forbiddenLike": false,
|
|
"appErrorLike": false,
|
|
"navPortalCopy": false
|
|
}
|
|
},
|
|
{
|
|
"role": "finance",
|
|
"route": "/payment-batches",
|
|
"label": "财务付款批次",
|
|
"layer": "B",
|
|
"expectation": "accessible",
|
|
"status": "PASS",
|
|
"finalPath": "/payment-batches",
|
|
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/finance-payment-batches.png",
|
|
"metrics": {
|
|
"title": "海音达工作台",
|
|
"textLength": 1726,
|
|
"headingCount": 1,
|
|
"tableCount": 0,
|
|
"uuidCount": 0,
|
|
"rawStatusTokenCount": 0,
|
|
"longNumberCount": 0,
|
|
"rawJsonBlockCount": 0,
|
|
"englishFound": [],
|
|
"datePlaceholderCount": 0,
|
|
"clippedCount": 0,
|
|
"forbiddenLike": false,
|
|
"appErrorLike": false,
|
|
"navPortalCopy": false
|
|
}
|
|
},
|
|
{
|
|
"role": "finance",
|
|
"route": "/ap-operations",
|
|
"label": "财务 AP 运营",
|
|
"layer": "B",
|
|
"expectation": "accessible",
|
|
"status": "PASS",
|
|
"finalPath": "/ap-operations",
|
|
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/finance-ap-operations.png",
|
|
"metrics": {
|
|
"title": "海音达工作台",
|
|
"textLength": 736,
|
|
"headingCount": 1,
|
|
"tableCount": 1,
|
|
"uuidCount": 0,
|
|
"rawStatusTokenCount": 0,
|
|
"longNumberCount": 0,
|
|
"rawJsonBlockCount": 0,
|
|
"englishFound": [],
|
|
"datePlaceholderCount": 0,
|
|
"clippedCount": 0,
|
|
"forbiddenLike": false,
|
|
"appErrorLike": false,
|
|
"navPortalCopy": false
|
|
}
|
|
},
|
|
{
|
|
"role": "finance",
|
|
"route": "/reimbursements",
|
|
"label": "财务报销列表",
|
|
"layer": "A",
|
|
"expectation": "accessible",
|
|
"status": "PASS",
|
|
"finalPath": "/reimbursements",
|
|
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/finance-reimbursements.png",
|
|
"metrics": {
|
|
"title": "海音达工作台",
|
|
"textLength": 453,
|
|
"headingCount": 1,
|
|
"tableCount": 1,
|
|
"uuidCount": 0,
|
|
"rawStatusTokenCount": 0,
|
|
"longNumberCount": 0,
|
|
"rawJsonBlockCount": 0,
|
|
"englishFound": [],
|
|
"datePlaceholderCount": 0,
|
|
"clippedCount": 0,
|
|
"forbiddenLike": false,
|
|
"appErrorLike": false,
|
|
"navPortalCopy": false
|
|
}
|
|
},
|
|
{
|
|
"role": "finance_mgr",
|
|
"route": "/portal",
|
|
"label": "财务负责人工作台",
|
|
"layer": "A",
|
|
"expectation": "accessible",
|
|
"status": "PASS",
|
|
"finalPath": "/portal",
|
|
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/finance_mgr-portal.png",
|
|
"metrics": {
|
|
"title": "海音达工作台",
|
|
"textLength": 1111,
|
|
"headingCount": 1,
|
|
"tableCount": 0,
|
|
"uuidCount": 0,
|
|
"rawStatusTokenCount": 0,
|
|
"longNumberCount": 0,
|
|
"rawJsonBlockCount": 0,
|
|
"englishFound": [],
|
|
"datePlaceholderCount": 0,
|
|
"clippedCount": 0,
|
|
"forbiddenLike": false,
|
|
"appErrorLike": false,
|
|
"navPortalCopy": false
|
|
}
|
|
},
|
|
{
|
|
"role": "finance_mgr",
|
|
"route": "/workflow/tasks",
|
|
"label": "财务负责人审批待办",
|
|
"layer": "A",
|
|
"expectation": "accessible",
|
|
"status": "PASS",
|
|
"finalPath": "/workflow/tasks",
|
|
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/finance_mgr-workflow-tasks.png",
|
|
"metrics": {
|
|
"title": "海音达工作台",
|
|
"textLength": 839,
|
|
"headingCount": 1,
|
|
"tableCount": 1,
|
|
"uuidCount": 0,
|
|
"rawStatusTokenCount": 0,
|
|
"longNumberCount": 0,
|
|
"rawJsonBlockCount": 0,
|
|
"englishFound": [],
|
|
"datePlaceholderCount": 0,
|
|
"clippedCount": 0,
|
|
"forbiddenLike": false,
|
|
"appErrorLike": false,
|
|
"navPortalCopy": false
|
|
}
|
|
},
|
|
{
|
|
"role": "finance_mgr",
|
|
"route": "/payment-batches",
|
|
"label": "财务负责人付款批次",
|
|
"layer": "B",
|
|
"expectation": "accessible",
|
|
"status": "PASS",
|
|
"finalPath": "/payment-batches",
|
|
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/finance_mgr-payment-batches.png",
|
|
"metrics": {
|
|
"title": "海音达工作台",
|
|
"textLength": 1792,
|
|
"headingCount": 1,
|
|
"tableCount": 0,
|
|
"uuidCount": 0,
|
|
"rawStatusTokenCount": 0,
|
|
"longNumberCount": 0,
|
|
"rawJsonBlockCount": 0,
|
|
"englishFound": [],
|
|
"datePlaceholderCount": 0,
|
|
"clippedCount": 0,
|
|
"forbiddenLike": false,
|
|
"appErrorLike": false,
|
|
"navPortalCopy": false
|
|
}
|
|
},
|
|
{
|
|
"role": "finance_mgr",
|
|
"route": "/ap-operations",
|
|
"label": "财务负责人 AP 运营",
|
|
"layer": "B",
|
|
"expectation": "accessible",
|
|
"status": "PASS",
|
|
"finalPath": "/ap-operations",
|
|
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/finance_mgr-ap-operations.png",
|
|
"metrics": {
|
|
"title": "海音达工作台",
|
|
"textLength": 809,
|
|
"headingCount": 1,
|
|
"tableCount": 1,
|
|
"uuidCount": 0,
|
|
"rawStatusTokenCount": 0,
|
|
"longNumberCount": 0,
|
|
"rawJsonBlockCount": 0,
|
|
"englishFound": [],
|
|
"datePlaceholderCount": 0,
|
|
"clippedCount": 0,
|
|
"forbiddenLike": false,
|
|
"appErrorLike": false,
|
|
"navPortalCopy": false
|
|
}
|
|
},
|
|
{
|
|
"role": "finance_mgr",
|
|
"route": "/audit-logs",
|
|
"label": "财务负责人审计日志",
|
|
"layer": "C",
|
|
"expectation": "accessible",
|
|
"status": "PASS",
|
|
"finalPath": "/audit-logs",
|
|
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/finance_mgr-audit-logs.png",
|
|
"metrics": {
|
|
"title": "海音达工作台",
|
|
"textLength": 3519,
|
|
"headingCount": 1,
|
|
"tableCount": 1,
|
|
"uuidCount": 40,
|
|
"rawStatusTokenCount": 0,
|
|
"longNumberCount": 0,
|
|
"rawJsonBlockCount": 0,
|
|
"englishFound": [],
|
|
"datePlaceholderCount": 0,
|
|
"clippedCount": 0,
|
|
"forbiddenLike": false,
|
|
"appErrorLike": false,
|
|
"navPortalCopy": false
|
|
}
|
|
},
|
|
{
|
|
"role": "admin",
|
|
"route": "/portal",
|
|
"label": "管理员工作台",
|
|
"layer": "A",
|
|
"expectation": "accessible",
|
|
"status": "PASS",
|
|
"finalPath": "/portal",
|
|
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/admin-portal.png",
|
|
"metrics": {
|
|
"title": "海音达工作台",
|
|
"textLength": 896,
|
|
"headingCount": 1,
|
|
"tableCount": 0,
|
|
"uuidCount": 0,
|
|
"rawStatusTokenCount": 0,
|
|
"longNumberCount": 0,
|
|
"rawJsonBlockCount": 0,
|
|
"englishFound": [],
|
|
"datePlaceholderCount": 0,
|
|
"clippedCount": 0,
|
|
"forbiddenLike": false,
|
|
"appErrorLike": false,
|
|
"navPortalCopy": false
|
|
}
|
|
},
|
|
{
|
|
"role": "admin",
|
|
"route": "/assets",
|
|
"label": "管理员资产台账",
|
|
"layer": "B",
|
|
"expectation": "accessible",
|
|
"status": "PASS",
|
|
"finalPath": "/assets",
|
|
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/admin-assets.png",
|
|
"metrics": {
|
|
"title": "海音达工作台",
|
|
"textLength": 3586,
|
|
"headingCount": 1,
|
|
"tableCount": 2,
|
|
"uuidCount": 0,
|
|
"rawStatusTokenCount": 0,
|
|
"longNumberCount": 0,
|
|
"rawJsonBlockCount": 0,
|
|
"englishFound": [],
|
|
"datePlaceholderCount": 0,
|
|
"clippedCount": 0,
|
|
"forbiddenLike": false,
|
|
"appErrorLike": false,
|
|
"navPortalCopy": false
|
|
}
|
|
},
|
|
{
|
|
"role": "admin",
|
|
"route": "/contracts-registry",
|
|
"label": "管理员合同台账",
|
|
"layer": "B",
|
|
"expectation": "accessible",
|
|
"status": "PASS",
|
|
"finalPath": "/contracts-registry",
|
|
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/admin-contracts-registry.png",
|
|
"metrics": {
|
|
"title": "海音达工作台",
|
|
"textLength": 1612,
|
|
"headingCount": 1,
|
|
"tableCount": 0,
|
|
"uuidCount": 0,
|
|
"rawStatusTokenCount": 0,
|
|
"longNumberCount": 0,
|
|
"rawJsonBlockCount": 0,
|
|
"englishFound": [],
|
|
"datePlaceholderCount": 0,
|
|
"clippedCount": 0,
|
|
"forbiddenLike": false,
|
|
"appErrorLike": false,
|
|
"navPortalCopy": false
|
|
}
|
|
},
|
|
{
|
|
"role": "admin",
|
|
"route": "/system/workspace",
|
|
"label": "管理员工作区设置",
|
|
"layer": "C",
|
|
"expectation": "accessible",
|
|
"status": "PASS",
|
|
"finalPath": "/system/workspace",
|
|
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/admin-system-workspace.png",
|
|
"metrics": {
|
|
"title": "海音达工作台",
|
|
"textLength": 1718,
|
|
"headingCount": 1,
|
|
"tableCount": 1,
|
|
"uuidCount": 0,
|
|
"rawStatusTokenCount": 0,
|
|
"longNumberCount": 0,
|
|
"rawJsonBlockCount": 0,
|
|
"englishFound": [],
|
|
"datePlaceholderCount": 0,
|
|
"clippedCount": 0,
|
|
"forbiddenLike": false,
|
|
"appErrorLike": false,
|
|
"navPortalCopy": false
|
|
}
|
|
},
|
|
{
|
|
"role": "admin",
|
|
"route": "/system/approval-rules",
|
|
"label": "管理员审批规则",
|
|
"layer": "C",
|
|
"expectation": "accessible",
|
|
"status": "PASS",
|
|
"finalPath": "/system/approval-rules",
|
|
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/admin-system-approval-rules.png",
|
|
"metrics": {
|
|
"title": "海音达工作台",
|
|
"textLength": 983,
|
|
"headingCount": 1,
|
|
"tableCount": 1,
|
|
"uuidCount": 3,
|
|
"rawStatusTokenCount": 0,
|
|
"longNumberCount": 0,
|
|
"rawJsonBlockCount": 0,
|
|
"englishFound": [],
|
|
"datePlaceholderCount": 0,
|
|
"clippedCount": 0,
|
|
"forbiddenLike": false,
|
|
"appErrorLike": false,
|
|
"navPortalCopy": false
|
|
}
|
|
},
|
|
{
|
|
"role": "admin",
|
|
"route": "/system/feature-flags",
|
|
"label": "管理员功能开关",
|
|
"layer": "C",
|
|
"expectation": "accessible",
|
|
"status": "PASS",
|
|
"finalPath": "/system/feature-flags",
|
|
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/admin-system-feature-flags.png",
|
|
"metrics": {
|
|
"title": "海音达工作台",
|
|
"textLength": 4638,
|
|
"headingCount": 1,
|
|
"tableCount": 1,
|
|
"uuidCount": 0,
|
|
"rawStatusTokenCount": 0,
|
|
"longNumberCount": 0,
|
|
"rawJsonBlockCount": 0,
|
|
"englishFound": [],
|
|
"datePlaceholderCount": 0,
|
|
"clippedCount": 0,
|
|
"forbiddenLike": false,
|
|
"appErrorLike": false,
|
|
"navPortalCopy": false
|
|
}
|
|
},
|
|
{
|
|
"role": "ceo",
|
|
"route": "/portal",
|
|
"label": "负责人工作台",
|
|
"layer": "A",
|
|
"expectation": "accessible",
|
|
"status": "PASS",
|
|
"finalPath": "/portal",
|
|
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/ceo-portal.png",
|
|
"metrics": {
|
|
"title": "海音达工作台",
|
|
"textLength": 928,
|
|
"headingCount": 1,
|
|
"tableCount": 0,
|
|
"uuidCount": 0,
|
|
"rawStatusTokenCount": 0,
|
|
"longNumberCount": 0,
|
|
"rawJsonBlockCount": 0,
|
|
"englishFound": [],
|
|
"datePlaceholderCount": 0,
|
|
"clippedCount": 0,
|
|
"forbiddenLike": false,
|
|
"appErrorLike": false,
|
|
"navPortalCopy": false
|
|
}
|
|
},
|
|
{
|
|
"role": "ceo",
|
|
"route": "/workflow/tasks",
|
|
"label": "负责人审批待办",
|
|
"layer": "A",
|
|
"expectation": "accessible",
|
|
"status": "PASS",
|
|
"finalPath": "/workflow/tasks",
|
|
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/ceo-workflow-tasks.png",
|
|
"metrics": {
|
|
"title": "海音达工作台",
|
|
"textLength": 465,
|
|
"headingCount": 1,
|
|
"tableCount": 1,
|
|
"uuidCount": 0,
|
|
"rawStatusTokenCount": 0,
|
|
"longNumberCount": 0,
|
|
"rawJsonBlockCount": 0,
|
|
"englishFound": [],
|
|
"datePlaceholderCount": 0,
|
|
"clippedCount": 0,
|
|
"forbiddenLike": false,
|
|
"appErrorLike": false,
|
|
"navPortalCopy": false
|
|
}
|
|
},
|
|
{
|
|
"role": "ceo",
|
|
"route": "/budgets",
|
|
"label": "负责人预算视图",
|
|
"layer": "B",
|
|
"expectation": "optional",
|
|
"status": "PASS",
|
|
"finalPath": "/budgets",
|
|
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/ceo-budgets.png",
|
|
"metrics": {
|
|
"title": "海音达工作台",
|
|
"textLength": 493,
|
|
"headingCount": 1,
|
|
"tableCount": 1,
|
|
"uuidCount": 0,
|
|
"rawStatusTokenCount": 0,
|
|
"longNumberCount": 0,
|
|
"rawJsonBlockCount": 0,
|
|
"englishFound": [],
|
|
"datePlaceholderCount": 0,
|
|
"clippedCount": 0,
|
|
"forbiddenLike": false,
|
|
"appErrorLike": false,
|
|
"navPortalCopy": false
|
|
}
|
|
},
|
|
{
|
|
"role": "hr",
|
|
"route": "/portal",
|
|
"label": "HR 工作台",
|
|
"layer": "A",
|
|
"expectation": "accessible",
|
|
"status": "PASS",
|
|
"finalPath": "/portal",
|
|
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/hr-portal.png",
|
|
"metrics": {
|
|
"title": "海音达工作台",
|
|
"textLength": 926,
|
|
"headingCount": 1,
|
|
"tableCount": 0,
|
|
"uuidCount": 0,
|
|
"rawStatusTokenCount": 0,
|
|
"longNumberCount": 0,
|
|
"rawJsonBlockCount": 0,
|
|
"englishFound": [],
|
|
"datePlaceholderCount": 0,
|
|
"clippedCount": 0,
|
|
"forbiddenLike": false,
|
|
"appErrorLike": false,
|
|
"navPortalCopy": false
|
|
}
|
|
},
|
|
{
|
|
"role": "hr",
|
|
"route": "/people",
|
|
"label": "HR 人员管理",
|
|
"layer": "C",
|
|
"expectation": "accessible",
|
|
"status": "PASS",
|
|
"finalPath": "/people",
|
|
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/hr-people.png",
|
|
"metrics": {
|
|
"title": "海音达工作台",
|
|
"textLength": 2822,
|
|
"headingCount": 2,
|
|
"tableCount": 1,
|
|
"uuidCount": 0,
|
|
"rawStatusTokenCount": 0,
|
|
"longNumberCount": 5,
|
|
"rawJsonBlockCount": 0,
|
|
"englishFound": [
|
|
"Employee",
|
|
"Admin"
|
|
],
|
|
"datePlaceholderCount": 0,
|
|
"clippedCount": 0,
|
|
"forbiddenLike": false,
|
|
"appErrorLike": false,
|
|
"navPortalCopy": false
|
|
}
|
|
},
|
|
{
|
|
"role": "hr",
|
|
"route": "/wecom-approval-archive",
|
|
"label": "HR 企微归档",
|
|
"layer": "B",
|
|
"expectation": "accessible",
|
|
"status": "PASS",
|
|
"finalPath": "/wecom-approval-archive",
|
|
"screenshot": "output/playwright/oafront3-pc-readonly-postdeploy/hr-wecom-approval-archive.png",
|
|
"metrics": {
|
|
"title": "海音达工作台",
|
|
"textLength": 728,
|
|
"headingCount": 1,
|
|
"tableCount": 0,
|
|
"uuidCount": 0,
|
|
"rawStatusTokenCount": 0,
|
|
"longNumberCount": 0,
|
|
"rawJsonBlockCount": 0,
|
|
"englishFound": [],
|
|
"datePlaceholderCount": 0,
|
|
"clippedCount": 0,
|
|
"forbiddenLike": false,
|
|
"appErrorLike": false,
|
|
"navPortalCopy": false
|
|
}
|
|
}
|
|
],
|
|
"findingCount": 0,
|
|
"findings": [],
|
|
"boundaries": {
|
|
"noBusinessWrites": true,
|
|
"noFileUploads": true,
|
|
"noFormSubmits": true,
|
|
"noExports": true,
|
|
"noWeComWrites": true,
|
|
"noRealPaymentExecution": true
|
|
},
|
|
"privacy": "no password/token/secret/full email/full phone/full local sensitive path/raw invoice/contract body/bank receipt/raw payload in JSON report"
|
|
}
|