From 79799018abe48e8772f4a4f6cab15ea7c1b82314 Mon Sep 17 00:00:00 2001 From: shunli Date: Wed, 6 May 2026 00:05:29 +0800 Subject: [PATCH] =?UTF-8?q?R93=20=E8=AE=B0=E5=BD=95=E5=85=AC=E7=BD=91?= =?UTF-8?q?=E9=83=A8=E7=BD=B2=E5=A4=8D=E6=B5=8B=E4=B8=8E=20OCR=20=E8=BF=90?= =?UTF-8?q?=E8=A1=8C=E6=89=8B=E5=86=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../r93/interaction-audit-2026-05-05.json | 25 + artifacts/r93/live-data-probe-2026-05-05.json | 46 + .../r93/main-region-audit-2026-05-05.json | 12640 ++++++++++++++++ artifacts/r93/main-region-audit-report.md | 85 + artifacts/r93/main-region-issue-log.csv | 12 + .../post-deploy-data-probe-2026-05-05.json | 20 + .../post-deploy-visual-check-2026-05-05.json | 71 + artifacts/r93/remediation-report.md | 33 + artifacts/r93/visual-audit-issue-log.csv | 16 + artifacts/r93/visual-audit-report.md | 104 + .../r93/visual-audit-session-2026-05-05.json | 5972 ++++++++ deploy/trialrun/checklist.md | 6 + deploy/trialrun/runbook.md | 78 +- ...05_22-48-01-r93-live-ocr-mobile-polish.csv | 7 + 14 files changed, 19114 insertions(+), 1 deletion(-) create mode 100644 artifacts/r93/interaction-audit-2026-05-05.json create mode 100644 artifacts/r93/live-data-probe-2026-05-05.json create mode 100644 artifacts/r93/main-region-audit-2026-05-05.json create mode 100644 artifacts/r93/main-region-audit-report.md create mode 100644 artifacts/r93/main-region-issue-log.csv create mode 100644 artifacts/r93/post-deploy-data-probe-2026-05-05.json create mode 100644 artifacts/r93/post-deploy-visual-check-2026-05-05.json create mode 100644 artifacts/r93/remediation-report.md create mode 100644 artifacts/r93/visual-audit-issue-log.csv create mode 100644 artifacts/r93/visual-audit-report.md create mode 100644 artifacts/r93/visual-audit-session-2026-05-05.json create mode 100644 issues/2026-05-05_22-48-01-r93-live-ocr-mobile-polish.csv diff --git a/artifacts/r93/interaction-audit-2026-05-05.json b/artifacts/r93/interaction-audit-2026-05-05.json new file mode 100644 index 00000000..511a3fcf --- /dev/null +++ b/artifacts/r93/interaction-audit-2026-05-05.json @@ -0,0 +1,25 @@ +{ + "generatedAt": "2026-05-05T15:21:58.712Z", + "route": "/portal", + "viewport": "mobile390", + "results": [ + { + "check": "topbar mobile menu opens and closes", + "ok": true, + "durationMs": 1301, + "screenshot": "output/playwright/r93-interaction-audit/mobile390-portal-menu-open.png" + }, + { + "check": "topbar mobile search opens and closes", + "ok": true, + "durationMs": 782, + "screenshot": "output/playwright/r93-interaction-audit/mobile390-portal-search-open.png" + }, + { + "check": "topbar notifications opens and closes", + "ok": true, + "durationMs": 681, + "screenshot": "output/playwright/r93-interaction-audit/mobile390-portal-notifications-open.png" + } + ] +} \ No newline at end of file diff --git a/artifacts/r93/live-data-probe-2026-05-05.json b/artifacts/r93/live-data-probe-2026-05-05.json new file mode 100644 index 00000000..649f73f1 --- /dev/null +++ b/artifacts/r93/live-data-probe-2026-05-05.json @@ -0,0 +1,46 @@ +{ + "generatedAt": "2026-05-05T15:33:14.069Z", + "baseURL": "https://oa.hyinda.com", + "role": "employee", + "loginStatus": 200, + "me": { + "status": 200, + "id": "26de456c-8522-4b6a-86a0-e87c156bbe93", + "name": "Employee", + "roleCodes": [ + "employee" + ], + "permissionCount": null + }, + "invoicePool": { + "status": 200, + "total": 1, + "pageItems": 1, + "byStatus": { + "available": 1 + }, + "byProvider": { + "tencent": 1 + }, + "pendingOrFailedSamples": [] + }, + "draftReimbursements": { + "status": 200, + "total": 0, + "pageItems": 0, + "samples": [] + }, + "contractsRegistryDependency": { + "endpoint": "/api/employees?page=1&pageSize=100&status=active", + "status": 403, + "error": { + "code": "PERM_001", + "message": "无权限", + "details": {} + } + }, + "mobileCaptureHtml": { + "status": 404, + "note": "HTML shell only; real multiple attribute verified by browser audit DOM metrics." + } +} \ No newline at end of file diff --git a/artifacts/r93/main-region-audit-2026-05-05.json b/artifacts/r93/main-region-audit-2026-05-05.json new file mode 100644 index 00000000..6cfcbaa1 --- /dev/null +++ b/artifacts/r93/main-region-audit-2026-05-05.json @@ -0,0 +1,12640 @@ +{ + "summary": { + "generatedAt": "2026-05-05T15:31:38.072Z", + "baseURL": "https://oa.hyinda.com", + "routeCount": 27, + "viewportCount": 3, + "resultCount": 84, + "findingCount": 19, + "findingsByCode": { + "MOBILE_VISIBLE_TABLE_MAIN": 8, + "API_403_IN_PAGE": 3, + "OFFSCREEN_INTERACTIVE_MAIN": 2, + "SMALL_TOUCH_TARGET_CLUSTER": 4, + "SOURCE_LIVE_PARITY_INVOICE_MOBILE": 1, + "SOURCE_LIVE_PARITY_REIMBURSEMENT_MOBILE": 1 + }, + "findingsBySeverity": { + "HIGH": 15, + "MEDIUM": 4 + } + }, + "results": [ + { + "route": { + "path": "/login", + "title": "Login", + "unauthenticated": true + }, + "viewport": { + "key": "mobile360", + "width": 360, + "height": 740, + "mobile": true + }, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-login.png", + "metrics": { + "title": "海音达工作台", + "path": "/login", + "viewport": { + "width": 360, + "height": 740 + }, + "bodyScrollWidth": 360, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 360, + "bottom": 740, + "width": 360, + "height": 740 + }, + "mainClientWidth": 360, + "mainScrollWidth": 360, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 4, + "initialInteractiveCount": 4, + "offscreenInteractives": [], + "smallTouchTargets": [], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 2, + "textareas": 0 + } + }, + "probes": [] + }, + { + "route": { + "path": "/login", + "title": "Login", + "unauthenticated": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "mobile": true + }, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-login.png", + "metrics": { + "title": "海音达工作台", + "path": "/login", + "viewport": { + "width": 390, + "height": 844 + }, + "bodyScrollWidth": 390, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 390, + "bottom": 844, + "width": 390, + "height": 844 + }, + "mainClientWidth": 390, + "mainScrollWidth": 390, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 4, + "initialInteractiveCount": 4, + "offscreenInteractives": [], + "smallTouchTargets": [], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 2, + "textareas": 0 + } + }, + "probes": [] + }, + { + "route": { + "path": "/login", + "title": "Login", + "unauthenticated": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "mobile": false + }, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/desktop1440-login.png", + "metrics": { + "title": "海音达工作台", + "path": "/login", + "viewport": { + "width": 1440, + "height": 900 + }, + "bodyScrollWidth": 1440, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 1440, + "bottom": 900, + "width": 1440, + "height": 900 + }, + "mainClientWidth": 1440, + "mainScrollWidth": 1440, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 4, + "initialInteractiveCount": 4, + "offscreenInteractives": [], + "smallTouchTargets": [], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 2, + "textareas": 0 + } + }, + "probes": [] + }, + { + "route": { + "path": "/announcements", + "title": "公告", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile360", + "width": 360, + "height": 740, + "mobile": true + }, + "durationMs": 1725, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-announcements.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/announcements", + "viewport": { + "width": 360, + "height": 740 + }, + "bodyScrollWidth": 360, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 360, + "bottom": 740, + "width": 360, + "height": 740 + }, + "mainClientWidth": 360, + "mainScrollWidth": 360, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 4, + "initialInteractiveCount": 4, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "button", + "label": "打开菜单", + "rect": { + "left": 16, + "top": 36, + "right": 43, + "bottom": 80, + "width": 27, + "height": 44 + } + } + ], + "clippedText": [], + "scrollableOverflow": [ + { + "selector": "div", + "label": "主导航 公告 你好,Employee", + "rect": { + "left": 16, + "top": 12, + "right": 121, + "bottom": 104, + "width": 105, + "height": 92 + }, + "clientWidth": 105, + "scrollWidth": 108 + }, + { + "selector": "div", + "label": "主导航 公告 你好,Employee", + "rect": { + "left": 55, + "top": 12, + "right": 121, + "bottom": 104, + "width": 66, + "height": 92 + }, + "clientWidth": 66, + "scrollWidth": 69 + }, + { + "selector": "div", + "label": "你好,Employee", + "rect": { + "left": 55, + "top": 64, + "right": 121, + "bottom": 104, + "width": 66, + "height": 40 + }, + "clientWidth": 66, + "scrollWidth": 69 + } + ], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 0, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/ap-operations", + "title": "应付运营", + "group": "backup", + "expectedEmployee": false + }, + "viewport": { + "key": "mobile360", + "width": 360, + "height": 740, + "mobile": true + }, + "durationMs": 1700, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-ap-operations.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/403", + "viewport": { + "width": 360, + "height": 740 + }, + "bodyScrollWidth": 360, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 360, + "bottom": 740, + "width": 360, + "height": 740 + }, + "mainClientWidth": 360, + "mainScrollWidth": 360, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 2, + "initialInteractiveCount": 2, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "a", + "label": "返回仪表盘", + "rect": { + "left": 86, + "top": 422, + "right": 166, + "bottom": 446, + "width": 80, + "height": 24 + } + }, + { + "selector": "a", + "label": "查看账号信息", + "rect": { + "left": 178, + "top": 422, + "right": 274, + "bottom": 446, + "width": 96, + "height": 24 + } + } + ], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 0, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/assets", + "title": "资产", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile360", + "width": 360, + "height": 740, + "mobile": true + }, + "durationMs": 1896, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-assets.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/assets", + "viewport": { + "width": 360, + "height": 740 + }, + "bodyScrollWidth": 360, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 360, + "bottom": 1413, + "width": 360, + "height": 1413 + }, + "mainClientWidth": 360, + "mainScrollWidth": 360, + "mainOverflowX": 0, + "visibleTableCount": 1, + "tables": [ + { + "selector": "table", + "label": "编码 名称 状态", + "rect": { + "left": 42, + "top": 695, + "right": 318, + "bottom": 735, + "width": 276, + "height": 40 + }, + "visibleInInitialViewport": true + }, + { + "selector": "table", + "label": "资产 分类 状态 归属人 暂无资产卡片", + "rect": { + "left": 42, + "top": 1095, + "right": 318, + "bottom": 1187, + "width": 276, + "height": 92 + }, + "visibleInInitialViewport": false + } + ], + "interactiveCount": 9, + "initialInteractiveCount": 5, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "button", + "label": "打开菜单", + "rect": { + "left": 16, + "top": 36, + "right": 43, + "bottom": 80, + "width": 27, + "height": 44 + } + } + ], + "clippedText": [], + "scrollableOverflow": [ + { + "selector": "div", + "label": "主导航 资产 你好,Employee", + "rect": { + "left": 16, + "top": 12, + "right": 121, + "bottom": 104, + "width": 105, + "height": 92 + }, + "clientWidth": 105, + "scrollWidth": 108 + }, + { + "selector": "div", + "label": "主导航 资产 你好,Employee", + "rect": { + "left": 55, + "top": 12, + "right": 121, + "bottom": 104, + "width": 66, + "height": 92 + }, + "clientWidth": 66, + "scrollWidth": 69 + }, + { + "selector": "div", + "label": "你好,Employee", + "rect": { + "left": 55, + "top": 64, + "right": 121, + "bottom": 104, + "width": 66, + "height": 40 + }, + "clientWidth": 66, + "scrollWidth": 69 + } + ], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 9, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/attendance", + "title": "考勤", + "group": "backup", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile360", + "width": 360, + "height": 740, + "mobile": true + }, + "durationMs": 2217, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-attendance.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/attendance", + "viewport": { + "width": 360, + "height": 740 + }, + "bodyScrollWidth": 360, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 360, + "bottom": 3746, + "width": 360, + "height": 3746 + }, + "mainClientWidth": 360, + "mainScrollWidth": 360, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [ + { + "selector": "table", + "label": "日期 上班 下班 工时 状态 备注 2026-05-01 - - - 缺卡 - 2026-05-02 - - - 周末 周末 2026-05-03 - - - ", + "rect": { + "left": 37, + "top": 1896, + "right": 323, + "bottom": 3705, + "width": 286, + "height": 1809 + }, + "visibleInInitialViewport": false + } + ], + "interactiveCount": 9, + "initialInteractiveCount": 8, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "button", + "label": "打开菜单", + "rect": { + "left": 16, + "top": 36, + "right": 43, + "bottom": 80, + "width": 27, + "height": 44 + } + }, + { + "selector": "#radix-:ra:-trigger-mine", + "label": "我的考勤", + "rect": { + "left": 21, + "top": 250, + "right": 101, + "bottom": 286, + "width": 80, + "height": 36 + } + } + ], + "clippedText": [], + "scrollableOverflow": [ + { + "selector": "div", + "label": "备用模块 考勤 你好,Employee", + "rect": { + "left": 16, + "top": 12, + "right": 121, + "bottom": 104, + "width": 105, + "height": 92 + }, + "clientWidth": 105, + "scrollWidth": 108 + }, + { + "selector": "div", + "label": "备用模块 考勤 你好,Employee", + "rect": { + "left": 55, + "top": 12, + "right": 121, + "bottom": 104, + "width": 66, + "height": 92 + }, + "clientWidth": 66, + "scrollWidth": 69 + }, + { + "selector": "div", + "label": "你好,Employee", + "rect": { + "left": 55, + "top": 64, + "right": 121, + "bottom": 104, + "width": 66, + "height": 40 + }, + "clientWidth": 66, + "scrollWidth": 69 + } + ], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 1, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/budgets", + "title": "预算", + "group": "backup", + "expectedEmployee": false + }, + "viewport": { + "key": "mobile360", + "width": 360, + "height": 740, + "mobile": true + }, + "durationMs": 1588, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-budgets.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/403", + "viewport": { + "width": 360, + "height": 740 + }, + "bodyScrollWidth": 360, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 360, + "bottom": 740, + "width": 360, + "height": 740 + }, + "mainClientWidth": 360, + "mainScrollWidth": 360, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 2, + "initialInteractiveCount": 2, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "a", + "label": "返回仪表盘", + "rect": { + "left": 86, + "top": 422, + "right": 166, + "bottom": 446, + "width": 80, + "height": 24 + } + }, + { + "selector": "a", + "label": "查看账号信息", + "rect": { + "left": 178, + "top": 422, + "right": 274, + "bottom": 446, + "width": 96, + "height": 24 + } + } + ], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 0, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/contracts-registry", + "title": "合同台账", + "group": "backup", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile360", + "width": 360, + "height": 740, + "mobile": true + }, + "durationMs": 1956, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-contracts-registry.png", + "consoleErrors": [ + "Failed to load resource: the server responded with a status of 403 ()", + "Failed to load resource: the server responded with a status of 403 ()" + ], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [ + { + "url": "https://oa.hyinda.com/api/employees?page=1&pageSize=100&status=active", + "status": 403 + }, + { + "url": "https://oa.hyinda.com/api/employees?page=1&pageSize=100&status=active", + "status": 403 + } + ], + "metrics": { + "title": "海音达工作台", + "path": "/contracts-registry", + "viewport": { + "width": 360, + "height": 740 + }, + "bodyScrollWidth": 360, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 360, + "bottom": 2927, + "width": 360, + "height": 2927 + }, + "mainClientWidth": 360, + "mainScrollWidth": 360, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 30, + "initialInteractiveCount": 9, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "button", + "label": "打开菜单", + "rect": { + "left": 16, + "top": 36, + "right": 43, + "bottom": 80, + "width": 27, + "height": 44 + } + } + ], + "clippedText": [], + "scrollableOverflow": [ + { + "selector": "p", + "label": "合同台账", + "rect": { + "left": 55, + "top": 32, + "right": 121, + "bottom": 60, + "width": 66, + "height": 28 + }, + "clientWidth": 66, + "scrollWidth": 70 + }, + { + "selector": "div", + "label": "备用模块 合同台账 你好,Employee", + "rect": { + "left": 16, + "top": 12, + "right": 121, + "bottom": 104, + "width": 105, + "height": 92 + }, + "clientWidth": 105, + "scrollWidth": 108 + }, + { + "selector": "div", + "label": "备用模块 合同台账 你好,Employee", + "rect": { + "left": 55, + "top": 12, + "right": 121, + "bottom": 104, + "width": 66, + "height": 92 + }, + "clientWidth": 66, + "scrollWidth": 69 + }, + { + "selector": "div", + "label": "你好,Employee", + "rect": { + "left": 55, + "top": 64, + "right": 121, + "bottom": 104, + "width": 66, + "height": 40 + }, + "clientWidth": 66, + "scrollWidth": 69 + } + ], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 21, + "textareas": 1 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/dashboard", + "title": "仪表盘", + "group": "backup", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile360", + "width": 360, + "height": 740, + "mobile": true + }, + "durationMs": 1680, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-dashboard.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/dashboard", + "viewport": { + "width": 360, + "height": 740 + }, + "bodyScrollWidth": 360, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 360, + "bottom": 740, + "width": 360, + "height": 740 + }, + "mainClientWidth": 360, + "mainScrollWidth": 360, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 4, + "initialInteractiveCount": 4, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "button", + "label": "打开菜单", + "rect": { + "left": 16, + "top": 36, + "right": 43, + "bottom": 80, + "width": 27, + "height": 44 + } + } + ], + "clippedText": [ + { + "selector": "p", + "label": "/dashboard", + "rect": { + "left": 55, + "top": 32, + "right": 121, + "bottom": 60, + "width": 66, + "height": 28 + } + } + ], + "scrollableOverflow": [ + { + "selector": "p", + "label": "/dashboard", + "rect": { + "left": 55, + "top": 32, + "right": 121, + "bottom": 60, + "width": 66, + "height": 28 + }, + "clientWidth": 66, + "scrollWidth": 110 + }, + { + "selector": "div", + "label": "工作台 /dashboard 你好,Employee", + "rect": { + "left": 16, + "top": 12, + "right": 121, + "bottom": 104, + "width": 105, + "height": 92 + }, + "clientWidth": 105, + "scrollWidth": 108 + }, + { + "selector": "div", + "label": "工作台 /dashboard 你好,Employee", + "rect": { + "left": 55, + "top": 12, + "right": 121, + "bottom": 104, + "width": 66, + "height": 92 + }, + "clientWidth": 66, + "scrollWidth": 69 + }, + { + "selector": "div", + "label": "你好,Employee", + "rect": { + "left": 55, + "top": 64, + "right": 121, + "bottom": 104, + "width": 66, + "height": 40 + }, + "clientWidth": 66, + "scrollWidth": 69 + } + ], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 0, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/inventory-checks", + "title": "盘点", + "group": "backup", + "expectedEmployee": false + }, + "viewport": { + "key": "mobile360", + "width": 360, + "height": 740, + "mobile": true + }, + "durationMs": 1562, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-inventory-checks.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/403", + "viewport": { + "width": 360, + "height": 740 + }, + "bodyScrollWidth": 360, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 360, + "bottom": 740, + "width": 360, + "height": 740 + }, + "mainClientWidth": 360, + "mainScrollWidth": 360, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 2, + "initialInteractiveCount": 2, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "a", + "label": "返回仪表盘", + "rect": { + "left": 86, + "top": 422, + "right": 166, + "bottom": 446, + "width": 80, + "height": 24 + } + }, + { + "selector": "a", + "label": "查看账号信息", + "rect": { + "left": 178, + "top": 422, + "right": 274, + "bottom": 446, + "width": 96, + "height": 24 + } + } + ], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 0, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/invoice-pool", + "title": "票据中心", + "group": "backup", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile360", + "width": 360, + "height": 740, + "mobile": true + }, + "durationMs": 1947, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-invoice-pool.png", + "consoleErrors": [ + "Failed to load resource: the server responded with a status of 401 ()" + ], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [ + { + "url": "https://oa.hyinda.com/api/invoice-pool?page=1&pageSize=20&ownerScope=own", + "status": 401 + } + ], + "metrics": { + "title": "海音达工作台", + "path": "/invoice-pool", + "viewport": { + "width": 360, + "height": 740 + }, + "bodyScrollWidth": 360, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 360, + "bottom": 1592, + "width": 360, + "height": 1592 + }, + "mainClientWidth": 360, + "mainScrollWidth": 360, + "mainOverflowX": 0, + "visibleTableCount": 1, + "tables": [ + { + "selector": "[data-testid=\"invoice-pool-table\"]", + "label": "invoice-pool-table", + "rect": { + "left": 42, + "top": 529, + "right": 831, + "bottom": 705, + "width": 789, + "height": 176 + }, + "visibleInInitialViewport": true + } + ], + "interactiveCount": 12, + "initialInteractiveCount": 8, + "offscreenInteractives": [ + { + "selector": "#radix-:rf:", + "label": "more_horiz", + "rect": { + "left": 779, + "top": 641, + "right": 807, + "bottom": 674, + "width": 28, + "height": 33 + } + } + ], + "smallTouchTargets": [ + { + "selector": "button", + "label": "打开菜单", + "rect": { + "left": 16, + "top": 36, + "right": 41, + "bottom": 80, + "width": 25, + "height": 44 + } + }, + { + "selector": "[data-testid=\"invoice-filter-status\"]", + "label": "invoice-filter-status", + "rect": { + "left": 139, + "top": 480, + "right": 225, + "bottom": 512, + "width": 86, + "height": 32 + } + }, + { + "selector": "[data-testid=\"invoice-filter-owner-scope\"]", + "label": "invoice-filter-owner-scope", + "rect": { + "left": 233, + "top": 480, + "right": 319, + "bottom": 512, + "width": 86, + "height": 32 + } + }, + { + "selector": "#radix-:rf:", + "label": "more_horiz", + "rect": { + "left": 779, + "top": 641, + "right": 807, + "bottom": 674, + "width": 28, + "height": 33 + } + } + ], + "clippedText": [ + { + "selector": "p", + "label": "/invoice-pool", + "rect": { + "left": 53, + "top": 32, + "right": 121, + "bottom": 60, + "width": 68, + "height": 28 + } + }, + { + "selector": "div", + "label": "票据流水号 状态 发票号码 识别情况 (OCR) 操作 3c0ba5ae-e01b-4a58-8a6f-0e137134d0a0 可用 261120000009", + "rect": { + "left": 41, + "top": 528, + "right": 319, + "bottom": 706, + "width": 278, + "height": 178 + } + } + ], + "scrollableOverflow": [ + { + "selector": "div", + "label": "票据流水号 状态 发票号码 识别情况 (OCR) 操作 3c0ba5ae-e01b-4a58-8a6f-0e137134d0a0 可用 261120000009", + "rect": { + "left": 41, + "top": 528, + "right": 319, + "bottom": 706, + "width": 278, + "height": 178 + }, + "clientWidth": 276, + "scrollWidth": 789 + }, + { + "selector": "p", + "label": "/invoice-pool", + "rect": { + "left": 53, + "top": 32, + "right": 121, + "bottom": 60, + "width": 68, + "height": 28 + }, + "clientWidth": 68, + "scrollWidth": 124 + } + ], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 1, + "visibleCount": 1, + "initialVisibleCount": 1 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [ + { + "selector": "[data-testid=\"invoice-upload-file\"]", + "multiple": false, + "accept": "application/pdf,image/jpeg,image/png,image/webp", + "capture": "" + } + ], + "forms": { + "controls": 4, + "textareas": 0 + } + }, + "probes": [ + { + "name": "invoice mobile list visible", + "ok": false + }, + { + "name": "invoice first mobile detail button visible", + "ok": false + } + ], + "api": { + "endpoint": "/api/invoice-pool?page=1&pageSize=20&ownerScope=own", + "status": 401, + "total": null, + "pageItems": 0, + "byStatus": {}, + "byProvider": {}, + "pendingSamples": [] + } + }, + { + "route": { + "path": "/leave-requests", + "title": "请假", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile360", + "width": 360, + "height": 740, + "mobile": true + }, + "durationMs": 1923, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-leave-requests.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/leave-requests", + "viewport": { + "width": 360, + "height": 740 + }, + "bodyScrollWidth": 360, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 360, + "bottom": 3156, + "width": 360, + "height": 3156 + }, + "mainClientWidth": 360, + "mainScrollWidth": 360, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [ + { + "selector": "table", + "label": "假种 / 申请人 时间段 天数 状态 附件 更新时间 操作 暂无请假记录", + "rect": { + "left": 38, + "top": 2879, + "right": 322, + "bottom": 3054, + "width": 284, + "height": 175 + }, + "visibleInInitialViewport": false + } + ], + "interactiveCount": 14, + "initialInteractiveCount": 4, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "button", + "label": "打开菜单", + "rect": { + "left": 16, + "top": 36, + "right": 43, + "bottom": 80, + "width": 27, + "height": 44 + } + } + ], + "clippedText": [], + "scrollableOverflow": [ + { + "selector": "div", + "label": "主导航 请假 你好,Employee", + "rect": { + "left": 16, + "top": 12, + "right": 121, + "bottom": 104, + "width": 105, + "height": 92 + }, + "clientWidth": 105, + "scrollWidth": 108 + }, + { + "selector": "div", + "label": "主导航 请假 你好,Employee", + "rect": { + "left": 55, + "top": 12, + "right": 121, + "bottom": 104, + "width": 66, + "height": 92 + }, + "clientWidth": 66, + "scrollWidth": 69 + }, + { + "selector": "div", + "label": "你好,Employee", + "rect": { + "left": 55, + "top": 64, + "right": 121, + "bottom": 104, + "width": 66, + "height": 40 + }, + "clientWidth": 66, + "scrollWidth": 69 + } + ], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [ + { + "selector": "#leave-attachment", + "multiple": false, + "accept": "", + "capture": "" + } + ], + "forms": { + "controls": 8, + "textareas": 1 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/mobile", + "title": "移动首页", + "group": "mobile", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile360", + "width": 360, + "height": 740, + "mobile": true + }, + "durationMs": 2225, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-mobile.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/mobile", + "viewport": { + "width": 360, + "height": 740 + }, + "bodyScrollWidth": 360, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 360, + "bottom": 2010, + "width": 360, + "height": 2010 + }, + "mainClientWidth": 360, + "mainScrollWidth": 360, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 12, + "initialInteractiveCount": 5, + "offscreenInteractives": [], + "smallTouchTargets": [], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 0, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/mobile/approvals", + "title": "移动审批", + "group": "mobile", + "expectedEmployee": false + }, + "viewport": { + "key": "mobile360", + "width": 360, + "height": 740, + "mobile": true + }, + "durationMs": 1562, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-mobile-approvals.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/403", + "viewport": { + "width": 360, + "height": 740 + }, + "bodyScrollWidth": 360, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 360, + "bottom": 740, + "width": 360, + "height": 740 + }, + "mainClientWidth": 360, + "mainScrollWidth": 360, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 2, + "initialInteractiveCount": 2, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "a", + "label": "返回仪表盘", + "rect": { + "left": 86, + "top": 422, + "right": 166, + "bottom": 446, + "width": 80, + "height": 24 + } + }, + { + "selector": "a", + "label": "查看账号信息", + "rect": { + "left": 178, + "top": 422, + "right": 274, + "bottom": 446, + "width": 96, + "height": 24 + } + } + ], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 0, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/mobile/assets/scan", + "title": "移动资产扫描", + "group": "mobile", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile360", + "width": 360, + "height": 740, + "mobile": true + }, + "durationMs": 1797, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-mobile-assets-scan.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/mobile/assets/scan", + "viewport": { + "width": 360, + "height": 740 + }, + "bodyScrollWidth": 360, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 360, + "bottom": 786, + "width": 360, + "height": 786 + }, + "mainClientWidth": 360, + "mainScrollWidth": 360, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 7, + "initialInteractiveCount": 7, + "offscreenInteractives": [], + "smallTouchTargets": [], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 1, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/mobile/capture", + "title": "移动票据", + "group": "mobile", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile360", + "width": 360, + "height": 740, + "mobile": true + }, + "durationMs": 1824, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-mobile-capture.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/mobile/capture", + "viewport": { + "width": 360, + "height": 740 + }, + "bodyScrollWidth": 360, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 360, + "bottom": 762, + "width": 360, + "height": 762 + }, + "mainClientWidth": 360, + "mainScrollWidth": 360, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 4, + "initialInteractiveCount": 4, + "offscreenInteractives": [], + "smallTouchTargets": [], + "clippedText": [], + "scrollableOverflow": [ + { + "selector": "[data-testid=\"mobile-capture-file\"]", + "label": "mobile-capture-file", + "rect": { + "left": 32, + "top": 377, + "right": 33, + "bottom": 378, + "width": 1, + "height": 1 + }, + "clientWidth": 1, + "scrollWidth": 224 + } + ], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 1, + "visibleCount": 1, + "initialVisibleCount": 1 + }, + "mobile-capture-upload": { + "count": 1, + "visibleCount": 1, + "initialVisibleCount": 1 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [ + { + "selector": "[data-testid=\"mobile-capture-file\"]", + "multiple": false, + "accept": "image/*,application/pdf", + "capture": "environment" + } + ], + "forms": { + "controls": 1, + "textareas": 0 + } + }, + "probes": [ + { + "name": "mobile capture supports multiple files", + "ok": false + } + ], + "api": null + }, + { + "route": { + "path": "/mobile/me", + "title": "移动我的", + "group": "mobile", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile360", + "width": 360, + "height": 740, + "mobile": true + }, + "durationMs": 1750, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-mobile-me.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/mobile/me", + "viewport": { + "width": 360, + "height": 740 + }, + "bodyScrollWidth": 360, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 360, + "bottom": 1536, + "width": 360, + "height": 1536 + }, + "mainClientWidth": 360, + "mainScrollWidth": 360, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 12, + "initialInteractiveCount": 6, + "offscreenInteractives": [], + "smallTouchTargets": [], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 1, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/notifications", + "title": "通知", + "group": "settings", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile360", + "width": 360, + "height": 740, + "mobile": true + }, + "durationMs": 1718, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-notifications.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/notifications", + "viewport": { + "width": 360, + "height": 740 + }, + "bodyScrollWidth": 360, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 360, + "bottom": 740, + "width": 360, + "height": 740 + }, + "mainClientWidth": 360, + "mainScrollWidth": 360, + "mainOverflowX": 0, + "visibleTableCount": 1, + "tables": [ + { + "selector": "[data-testid=\"notifications-table\"]", + "label": "notifications-table", + "rect": { + "left": 42, + "top": 475, + "right": 318, + "bottom": 561, + "width": 276, + "height": 86 + }, + "visibleInInitialViewport": true + } + ], + "interactiveCount": 9, + "initialInteractiveCount": 9, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "button", + "label": "打开菜单", + "rect": { + "left": 16, + "top": 36, + "right": 40, + "bottom": 80, + "width": 24, + "height": 44 + } + }, + { + "selector": "[data-testid=\"notifications-filter-all\"]", + "label": "notifications-filter-all", + "rect": { + "left": 46, + "top": 335, + "right": 98, + "bottom": 371, + "width": 52, + "height": 36 + } + }, + { + "selector": "[data-testid=\"notifications-filter-unread\"]", + "label": "notifications-filter-unread", + "rect": { + "left": 102, + "top": 335, + "right": 154, + "bottom": 371, + "width": 52, + "height": 36 + } + } + ], + "clippedText": [ + { + "selector": "p", + "label": "/notifications", + "rect": { + "left": 52, + "top": 32, + "right": 121, + "bottom": 60, + "width": 68, + "height": 28 + } + } + ], + "scrollableOverflow": [ + { + "selector": "p", + "label": "/notifications", + "rect": { + "left": 52, + "top": 32, + "right": 121, + "bottom": 60, + "width": 68, + "height": 28 + }, + "clientWidth": 68, + "scrollWidth": 128 + } + ], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 1, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/payment-batches", + "title": "付款批次", + "group": "backup", + "expectedEmployee": false + }, + "viewport": { + "key": "mobile360", + "width": 360, + "height": 740, + "mobile": true + }, + "durationMs": 1566, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-payment-batches.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/403", + "viewport": { + "width": 360, + "height": 740 + }, + "bodyScrollWidth": 360, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 360, + "bottom": 740, + "width": 360, + "height": 740 + }, + "mainClientWidth": 360, + "mainScrollWidth": 360, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 2, + "initialInteractiveCount": 2, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "a", + "label": "返回仪表盘", + "rect": { + "left": 86, + "top": 422, + "right": 166, + "bottom": 446, + "width": 80, + "height": 24 + } + }, + { + "selector": "a", + "label": "查看账号信息", + "rect": { + "left": 178, + "top": 422, + "right": 274, + "bottom": 446, + "width": 96, + "height": 24 + } + } + ], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 0, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/portal", + "title": "Portal", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile360", + "width": 360, + "height": 740, + "mobile": true + }, + "durationMs": 2290, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-portal.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/portal", + "viewport": { + "width": 360, + "height": 740 + }, + "bodyScrollWidth": 360, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 360, + "bottom": 2743, + "width": 360, + "height": 2743 + }, + "mainClientWidth": 360, + "mainScrollWidth": 360, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 45, + "initialInteractiveCount": 8, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "button", + "label": "打开菜单", + "rect": { + "left": 16, + "top": 36, + "right": 43, + "bottom": 80, + "width": 27, + "height": 44 + } + } + ], + "clippedText": [], + "scrollableOverflow": [ + { + "selector": "section", + "label": "个人工作台 你好,Employee 先处理今天必须完成的事,再继续查看项目、周报和公告。", + "rect": { + "left": 16, + "top": 137, + "right": 344, + "bottom": 291, + "width": 328, + "height": 154 + }, + "clientWidth": 326, + "scrollWidth": 425 + }, + { + "selector": "div", + "label": "工作台 Portal 你好,Employee", + "rect": { + "left": 16, + "top": 12, + "right": 121, + "bottom": 104, + "width": 105, + "height": 92 + }, + "clientWidth": 105, + "scrollWidth": 108 + }, + { + "selector": "div", + "label": "工作台 Portal 你好,Employee", + "rect": { + "left": 55, + "top": 12, + "right": 121, + "bottom": 104, + "width": 66, + "height": 92 + }, + "clientWidth": 66, + "scrollWidth": 69 + }, + { + "selector": "div", + "label": "你好,Employee", + "rect": { + "left": 55, + "top": 64, + "right": 121, + "bottom": 104, + "width": 66, + "height": 40 + }, + "clientWidth": 66, + "scrollWidth": 69 + } + ], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 0, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/projects", + "title": "项目", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile360", + "width": 360, + "height": 740, + "mobile": true + }, + "durationMs": 1784, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-projects.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/projects", + "viewport": { + "width": 360, + "height": 740 + }, + "bodyScrollWidth": 360, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 360, + "bottom": 1549, + "width": 360, + "height": 1549 + }, + "mainClientWidth": 360, + "mainScrollWidth": 360, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 8, + "initialInteractiveCount": 5, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "button", + "label": "打开菜单", + "rect": { + "left": 16, + "top": 36, + "right": 43, + "bottom": 80, + "width": 27, + "height": 44 + } + } + ], + "clippedText": [], + "scrollableOverflow": [ + { + "selector": "div", + "label": "主导航 项目 你好,Employee", + "rect": { + "left": 16, + "top": 12, + "right": 121, + "bottom": 104, + "width": 105, + "height": 92 + }, + "clientWidth": 105, + "scrollWidth": 108 + }, + { + "selector": "div", + "label": "主导航 项目 你好,Employee", + "rect": { + "left": 55, + "top": 12, + "right": 121, + "bottom": 104, + "width": 66, + "height": 92 + }, + "clientWidth": 66, + "scrollWidth": 69 + }, + { + "selector": "div", + "label": "你好,Employee", + "rect": { + "left": 55, + "top": 64, + "right": 121, + "bottom": 104, + "width": 66, + "height": 40 + }, + "clientWidth": 66, + "scrollWidth": 69 + } + ], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 2, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/purchase-requests", + "title": "采购", + "group": "backup", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile360", + "width": 360, + "height": 740, + "mobile": true + }, + "durationMs": 1836, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-purchase-requests.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/purchase-requests", + "viewport": { + "width": 360, + "height": 740 + }, + "bodyScrollWidth": 360, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 360, + "bottom": 1059, + "width": 360, + "height": 1059 + }, + "mainClientWidth": 360, + "mainScrollWidth": 360, + "mainOverflowX": 0, + "visibleTableCount": 1, + "tables": [ + { + "selector": "[data-testid=\"purchase-requests-table\"]", + "label": "purchase-requests-table", + "rect": { + "left": 42, + "top": 681, + "right": 318, + "bottom": 773, + "width": 276, + "height": 92 + }, + "visibleInInitialViewport": true + } + ], + "interactiveCount": 9, + "initialInteractiveCount": 9, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "button", + "label": "打开菜单", + "rect": { + "left": 16, + "top": 36, + "right": 38, + "bottom": 80, + "width": 22, + "height": 44 + } + } + ], + "clippedText": [ + { + "selector": "p", + "label": "/purchase-requests", + "rect": { + "left": 50, + "top": 32, + "right": 121, + "bottom": 60, + "width": 71, + "height": 28 + } + } + ], + "scrollableOverflow": [ + { + "selector": "p", + "label": "/purchase-requests", + "rect": { + "left": 50, + "top": 32, + "right": 121, + "bottom": 60, + "width": 71, + "height": 28 + }, + "clientWidth": 71, + "scrollWidth": 188 + } + ], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 4, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/reimbursements", + "title": "报销", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile360", + "width": 360, + "height": 740, + "mobile": true + }, + "durationMs": 1892, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-reimbursements.png", + "consoleErrors": [ + "Failed to load resource: the server responded with a status of 401 ()" + ], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [ + { + "url": "https://oa.hyinda.com/api/reimbursements?status=draft&page=1&pageSize=20&scope=own", + "status": 401 + } + ], + "metrics": { + "title": "海音达工作台", + "path": "/reimbursements", + "viewport": { + "width": 360, + "height": 740 + }, + "bodyScrollWidth": 360, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 360, + "bottom": 1338, + "width": 360, + "height": 1338 + }, + "mainClientWidth": 360, + "mainScrollWidth": 360, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [ + { + "selector": "[data-testid=\"reimbursements-table\"]", + "label": "reimbursements-table", + "rect": { + "left": 17, + "top": 1084, + "right": 379, + "bottom": 1249, + "width": 362, + "height": 165 + }, + "visibleInInitialViewport": false + } + ], + "interactiveCount": 13, + "initialInteractiveCount": 6, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "button", + "label": "打开菜单", + "rect": { + "left": 16, + "top": 36, + "right": 43, + "bottom": 80, + "width": 27, + "height": 44 + } + } + ], + "clippedText": [], + "scrollableOverflow": [ + { + "selector": "div", + "label": "主导航 报销 你好,Employee", + "rect": { + "left": 16, + "top": 12, + "right": 121, + "bottom": 104, + "width": 105, + "height": 92 + }, + "clientWidth": 105, + "scrollWidth": 108 + }, + { + "selector": "div", + "label": "主导航 报销 你好,Employee", + "rect": { + "left": 55, + "top": 12, + "right": 121, + "bottom": 104, + "width": 66, + "height": 92 + }, + "clientWidth": 66, + "scrollWidth": 69 + }, + { + "selector": "div", + "label": "你好,Employee", + "rect": { + "left": 55, + "top": 64, + "right": 121, + "bottom": 104, + "width": 66, + "height": 40 + }, + "clientWidth": 66, + "scrollWidth": 69 + } + ], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 1, + "visibleCount": 1, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 0, + "textareas": 0 + } + }, + "probes": [ + { + "name": "reimbursement mobile list visible", + "ok": false + }, + { + "name": "draft/detail mobile link visible", + "ok": false + } + ], + "api": { + "endpoint": "/api/reimbursements?status=draft&page=1&pageSize=20&scope=own", + "status": 401, + "total": null, + "pageItems": 0, + "draftSamples": [] + } + }, + { + "route": { + "path": "/settings/profile", + "title": "个人设置", + "group": "settings", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile360", + "width": 360, + "height": 740, + "mobile": true + }, + "durationMs": 2009, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-settings-profile.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/settings/profile", + "viewport": { + "width": 360, + "height": 740 + }, + "bodyScrollWidth": 360, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 360, + "bottom": 2955, + "width": 360, + "height": 2955 + }, + "mainClientWidth": 360, + "mainScrollWidth": 360, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 8, + "initialInteractiveCount": 5, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "button", + "label": "打开菜单", + "rect": { + "left": 16, + "top": 36, + "right": 43, + "bottom": 80, + "width": 27, + "height": 44 + } + } + ], + "clippedText": [], + "scrollableOverflow": [ + { + "selector": "p", + "label": "个人设置", + "rect": { + "left": 55, + "top": 32, + "right": 121, + "bottom": 60, + "width": 66, + "height": 28 + }, + "clientWidth": 66, + "scrollWidth": 70 + }, + { + "selector": "div", + "label": "账号设置 个人设置 你好,Employee", + "rect": { + "left": 16, + "top": 12, + "right": 121, + "bottom": 104, + "width": 105, + "height": 92 + }, + "clientWidth": 105, + "scrollWidth": 108 + }, + { + "selector": "div", + "label": "账号设置 个人设置 你好,Employee", + "rect": { + "left": 55, + "top": 12, + "right": 121, + "bottom": 104, + "width": 66, + "height": 92 + }, + "clientWidth": 66, + "scrollWidth": 69 + }, + { + "selector": "div", + "label": "你好,Employee", + "rect": { + "left": 55, + "top": 64, + "right": 121, + "bottom": 104, + "width": 66, + "height": 40 + }, + "clientWidth": 66, + "scrollWidth": 69 + } + ], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 1, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/team", + "title": "团队", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile360", + "width": 360, + "height": 740, + "mobile": true + }, + "durationMs": 1841, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-team.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/team", + "viewport": { + "width": 360, + "height": 740 + }, + "bodyScrollWidth": 360, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 360, + "bottom": 2143, + "width": 360, + "height": 2143 + }, + "mainClientWidth": 360, + "mainScrollWidth": 360, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [ + { + "selector": "table", + "label": "成员 部门 状态 备注 E Employee 试运行员工 公司 未更新 - 王顺 王顺利 员工 管理部 未更新 - 马建 马建勇 员工 管理部 未更新 - SA", + "rect": { + "left": 41, + "top": 1570, + "right": 319, + "bottom": 2098, + "width": 278, + "height": 528 + }, + "visibleInInitialViewport": false + } + ], + "interactiveCount": 13, + "initialInteractiveCount": 10, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "button", + "label": "打开菜单", + "rect": { + "left": 16, + "top": 36, + "right": 43, + "bottom": 80, + "width": 27, + "height": 44 + } + } + ], + "clippedText": [], + "scrollableOverflow": [ + { + "selector": "div", + "label": "主导航 团队 你好,Employee", + "rect": { + "left": 16, + "top": 12, + "right": 121, + "bottom": 104, + "width": 105, + "height": 92 + }, + "clientWidth": 105, + "scrollWidth": 108 + }, + { + "selector": "div", + "label": "主导航 团队 你好,Employee", + "rect": { + "left": 55, + "top": 12, + "right": 121, + "bottom": 104, + "width": 66, + "height": 92 + }, + "clientWidth": 66, + "scrollWidth": 69 + }, + { + "selector": "div", + "label": "你好,Employee", + "rect": { + "left": 55, + "top": 64, + "right": 121, + "bottom": 104, + "width": 66, + "height": 40 + }, + "clientWidth": 66, + "scrollWidth": 69 + } + ], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 3, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/todos", + "title": "待办", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile360", + "width": 360, + "height": 740, + "mobile": true + }, + "durationMs": 1790, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-todos.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/todos", + "viewport": { + "width": 360, + "height": 740 + }, + "bodyScrollWidth": 360, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 360, + "bottom": 1684, + "width": 360, + "height": 1684 + }, + "mainClientWidth": 360, + "mainScrollWidth": 360, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [ + { + "selector": "table", + "label": "标题 项目 负责人 优先级 状态 操作 当前没有符合条件的待办。", + "rect": { + "left": 38, + "top": 1129, + "right": 322, + "bottom": 1256, + "width": 284, + "height": 127 + }, + "visibleInInitialViewport": false + } + ], + "interactiveCount": 9, + "initialInteractiveCount": 4, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "button", + "label": "打开菜单", + "rect": { + "left": 16, + "top": 36, + "right": 43, + "bottom": 80, + "width": 27, + "height": 44 + } + } + ], + "clippedText": [], + "scrollableOverflow": [ + { + "selector": "div", + "label": "主导航 待办 你好,Employee", + "rect": { + "left": 16, + "top": 12, + "right": 121, + "bottom": 104, + "width": 105, + "height": 92 + }, + "clientWidth": 105, + "scrollWidth": 108 + }, + { + "selector": "div", + "label": "主导航 待办 你好,Employee", + "rect": { + "left": 55, + "top": 12, + "right": 121, + "bottom": 104, + "width": 66, + "height": 92 + }, + "clientWidth": 66, + "scrollWidth": 69 + }, + { + "selector": "div", + "label": "你好,Employee", + "rect": { + "left": 55, + "top": 64, + "right": 121, + "bottom": 104, + "width": 66, + "height": 40 + }, + "clientWidth": 66, + "scrollWidth": 69 + } + ], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 4, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/travel-requests", + "title": "差旅", + "group": "backup", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile360", + "width": 360, + "height": 740, + "mobile": true + }, + "durationMs": 1871, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-travel-requests.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/travel-requests?tab=requests", + "viewport": { + "width": 360, + "height": 740 + }, + "bodyScrollWidth": 360, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 360, + "bottom": 2635, + "width": 360, + "height": 2635 + }, + "mainClientWidth": 360, + "mainScrollWidth": 360, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 25, + "initialInteractiveCount": 10, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "button", + "label": "打开菜单", + "rect": { + "left": 16, + "top": 36, + "right": 38, + "bottom": 80, + "width": 22, + "height": 44 + } + } + ], + "clippedText": [ + { + "selector": "p", + "label": "/travel-requests", + "rect": { + "left": 50, + "top": 32, + "right": 121, + "bottom": 60, + "width": 71, + "height": 28 + } + } + ], + "scrollableOverflow": [ + { + "selector": "p", + "label": "/travel-requests", + "rect": { + "left": 50, + "top": 32, + "right": 121, + "bottom": 60, + "width": 71, + "height": 28 + }, + "clientWidth": 71, + "scrollWidth": 156 + } + ], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 17, + "textareas": 1 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/weekly-reports", + "title": "周报", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile360", + "width": 360, + "height": 740, + "mobile": true + }, + "durationMs": 1957, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-weekly-reports.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/weekly-reports", + "viewport": { + "width": 360, + "height": 740 + }, + "bodyScrollWidth": 360, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 360, + "bottom": 2453, + "width": 360, + "height": 2453 + }, + "mainClientWidth": 360, + "mainScrollWidth": 360, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 18, + "initialInteractiveCount": 5, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "button", + "label": "打开菜单", + "rect": { + "left": 16, + "top": 36, + "right": 43, + "bottom": 80, + "width": 27, + "height": 44 + } + } + ], + "clippedText": [], + "scrollableOverflow": [ + { + "selector": "div", + "label": "主导航 周报 你好,Employee", + "rect": { + "left": 16, + "top": 12, + "right": 121, + "bottom": 104, + "width": 105, + "height": 92 + }, + "clientWidth": 105, + "scrollWidth": 108 + }, + { + "selector": "div", + "label": "主导航 周报 你好,Employee", + "rect": { + "left": 55, + "top": 12, + "right": 121, + "bottom": 104, + "width": 66, + "height": 92 + }, + "clientWidth": 66, + "scrollWidth": 69 + }, + { + "selector": "div", + "label": "你好,Employee", + "rect": { + "left": 55, + "top": 64, + "right": 121, + "bottom": 104, + "width": 66, + "height": 40 + }, + "clientWidth": 66, + "scrollWidth": 69 + } + ], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 9, + "textareas": 6 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/workflow/tasks", + "title": "审批待办", + "group": "backup", + "expectedEmployee": false + }, + "viewport": { + "key": "mobile360", + "width": 360, + "height": 740, + "mobile": true + }, + "durationMs": 1569, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-workflow-tasks.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/403", + "viewport": { + "width": 360, + "height": 740 + }, + "bodyScrollWidth": 360, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 360, + "bottom": 740, + "width": 360, + "height": 740 + }, + "mainClientWidth": 360, + "mainScrollWidth": 360, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 2, + "initialInteractiveCount": 2, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "a", + "label": "返回仪表盘", + "rect": { + "left": 86, + "top": 422, + "right": 166, + "bottom": 446, + "width": 80, + "height": 24 + } + }, + { + "selector": "a", + "label": "查看账号信息", + "rect": { + "left": 178, + "top": 422, + "right": 274, + "bottom": 446, + "width": 96, + "height": 24 + } + } + ], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 0, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/announcements", + "title": "公告", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "mobile": true + }, + "durationMs": 1647, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-announcements.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/announcements", + "viewport": { + "width": 390, + "height": 844 + }, + "bodyScrollWidth": 390, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 390, + "bottom": 844, + "width": 390, + "height": 844 + }, + "mainClientWidth": 390, + "mainScrollWidth": 390, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 4, + "initialInteractiveCount": 4, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "button", + "label": "打开菜单", + "rect": { + "left": 16, + "top": 36, + "right": 51, + "bottom": 80, + "width": 35, + "height": 44 + } + } + ], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 0, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/ap-operations", + "title": "应付运营", + "group": "backup", + "expectedEmployee": false + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "mobile": true + }, + "durationMs": 1742, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-ap-operations.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/403", + "viewport": { + "width": 390, + "height": 844 + }, + "bodyScrollWidth": 390, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 390, + "bottom": 844, + "width": 390, + "height": 844 + }, + "mainClientWidth": 390, + "mainScrollWidth": 390, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 2, + "initialInteractiveCount": 2, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "a", + "label": "返回仪表盘", + "rect": { + "left": 101, + "top": 474, + "right": 181, + "bottom": 498, + "width": 80, + "height": 24 + } + }, + { + "selector": "a", + "label": "查看账号信息", + "rect": { + "left": 193, + "top": 474, + "right": 289, + "bottom": 498, + "width": 96, + "height": 24 + } + } + ], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 0, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/assets", + "title": "资产", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "mobile": true + }, + "durationMs": 1809, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-assets.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/assets", + "viewport": { + "width": 390, + "height": 844 + }, + "bodyScrollWidth": 390, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 390, + "bottom": 1413, + "width": 390, + "height": 1413 + }, + "mainClientWidth": 390, + "mainScrollWidth": 390, + "mainOverflowX": 0, + "visibleTableCount": 1, + "tables": [ + { + "selector": "table", + "label": "编码 名称 状态", + "rect": { + "left": 42, + "top": 695, + "right": 348, + "bottom": 735, + "width": 306, + "height": 40 + }, + "visibleInInitialViewport": true + }, + { + "selector": "table", + "label": "资产 分类 状态 归属人 暂无资产卡片", + "rect": { + "left": 42, + "top": 1095, + "right": 348, + "bottom": 1187, + "width": 306, + "height": 92 + }, + "visibleInInitialViewport": false + } + ], + "interactiveCount": 9, + "initialInteractiveCount": 6, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "button", + "label": "打开菜单", + "rect": { + "left": 16, + "top": 36, + "right": 51, + "bottom": 80, + "width": 35, + "height": 44 + } + } + ], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 9, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/attendance", + "title": "考勤", + "group": "backup", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "mobile": true + }, + "durationMs": 2261, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-attendance.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/attendance", + "viewport": { + "width": 390, + "height": 844 + }, + "bodyScrollWidth": 390, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 390, + "bottom": 3746, + "width": 390, + "height": 3746 + }, + "mainClientWidth": 390, + "mainScrollWidth": 390, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [ + { + "selector": "table", + "label": "日期 上班 下班 工时 状态 备注 2026-05-01 - - - 缺卡 - 2026-05-02 - - - 周末 周末 2026-05-03 - - - ", + "rect": { + "left": 37, + "top": 1896, + "right": 353, + "bottom": 3705, + "width": 316, + "height": 1809 + }, + "visibleInInitialViewport": false + } + ], + "interactiveCount": 9, + "initialInteractiveCount": 8, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "button", + "label": "打开菜单", + "rect": { + "left": 16, + "top": 36, + "right": 51, + "bottom": 80, + "width": 35, + "height": 44 + } + }, + { + "selector": "#radix-:ra:-trigger-mine", + "label": "我的考勤", + "rect": { + "left": 21, + "top": 250, + "right": 101, + "bottom": 286, + "width": 80, + "height": 36 + } + } + ], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 1, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/budgets", + "title": "预算", + "group": "backup", + "expectedEmployee": false + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "mobile": true + }, + "durationMs": 1542, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-budgets.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/403", + "viewport": { + "width": 390, + "height": 844 + }, + "bodyScrollWidth": 390, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 390, + "bottom": 844, + "width": 390, + "height": 844 + }, + "mainClientWidth": 390, + "mainScrollWidth": 390, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 2, + "initialInteractiveCount": 2, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "a", + "label": "返回仪表盘", + "rect": { + "left": 101, + "top": 474, + "right": 181, + "bottom": 498, + "width": 80, + "height": 24 + } + }, + { + "selector": "a", + "label": "查看账号信息", + "rect": { + "left": 193, + "top": 474, + "right": 289, + "bottom": 498, + "width": 96, + "height": 24 + } + } + ], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 0, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/contracts-registry", + "title": "合同台账", + "group": "backup", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "mobile": true + }, + "durationMs": 1864, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-contracts-registry.png", + "consoleErrors": [ + "Failed to load resource: the server responded with a status of 403 ()", + "Failed to load resource: the server responded with a status of 403 ()" + ], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [ + { + "url": "https://oa.hyinda.com/api/employees?page=1&pageSize=100&status=active", + "status": 403 + }, + { + "url": "https://oa.hyinda.com/api/employees?page=1&pageSize=100&status=active", + "status": 403 + } + ], + "metrics": { + "title": "海音达工作台", + "path": "/contracts-registry", + "viewport": { + "width": 390, + "height": 844 + }, + "bodyScrollWidth": 390, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 390, + "bottom": 2927, + "width": 390, + "height": 2927 + }, + "mainClientWidth": 390, + "mainScrollWidth": 390, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 30, + "initialInteractiveCount": 10, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "button", + "label": "打开菜单", + "rect": { + "left": 16, + "top": 36, + "right": 51, + "bottom": 80, + "width": 35, + "height": 44 + } + } + ], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 21, + "textareas": 1 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/dashboard", + "title": "仪表盘", + "group": "backup", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "mobile": true + }, + "durationMs": 1603, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-dashboard.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/dashboard", + "viewport": { + "width": 390, + "height": 844 + }, + "bodyScrollWidth": 390, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 390, + "bottom": 844, + "width": 390, + "height": 844 + }, + "mainClientWidth": 390, + "mainScrollWidth": 390, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 4, + "initialInteractiveCount": 4, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "button", + "label": "打开菜单", + "rect": { + "left": 16, + "top": 36, + "right": 51, + "bottom": 80, + "width": 35, + "height": 44 + } + } + ], + "clippedText": [ + { + "selector": "p", + "label": "/dashboard", + "rect": { + "left": 63, + "top": 32, + "right": 151, + "bottom": 60, + "width": 88, + "height": 28 + } + } + ], + "scrollableOverflow": [ + { + "selector": "p", + "label": "/dashboard", + "rect": { + "left": 63, + "top": 32, + "right": 151, + "bottom": 60, + "width": 88, + "height": 28 + }, + "clientWidth": 88, + "scrollWidth": 110 + } + ], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 0, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/inventory-checks", + "title": "盘点", + "group": "backup", + "expectedEmployee": false + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "mobile": true + }, + "durationMs": 1569, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-inventory-checks.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/403", + "viewport": { + "width": 390, + "height": 844 + }, + "bodyScrollWidth": 390, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 390, + "bottom": 844, + "width": 390, + "height": 844 + }, + "mainClientWidth": 390, + "mainScrollWidth": 390, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 2, + "initialInteractiveCount": 2, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "a", + "label": "返回仪表盘", + "rect": { + "left": 101, + "top": 474, + "right": 181, + "bottom": 498, + "width": 80, + "height": 24 + } + }, + { + "selector": "a", + "label": "查看账号信息", + "rect": { + "left": 193, + "top": 474, + "right": 289, + "bottom": 498, + "width": 96, + "height": 24 + } + } + ], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 0, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/invoice-pool", + "title": "票据中心", + "group": "backup", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "mobile": true + }, + "durationMs": 1847, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-invoice-pool.png", + "consoleErrors": [ + "Failed to load resource: the server responded with a status of 401 ()" + ], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [ + { + "url": "https://oa.hyinda.com/api/invoice-pool?page=1&pageSize=20&ownerScope=own", + "status": 401 + } + ], + "metrics": { + "title": "海音达工作台", + "path": "/invoice-pool", + "viewport": { + "width": 390, + "height": 844 + }, + "bodyScrollWidth": 390, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 390, + "bottom": 1572, + "width": 390, + "height": 1572 + }, + "mainClientWidth": 390, + "mainScrollWidth": 390, + "mainOverflowX": 0, + "visibleTableCount": 1, + "tables": [ + { + "selector": "[data-testid=\"invoice-pool-table\"]", + "label": "invoice-pool-table", + "rect": { + "left": 42, + "top": 529, + "right": 831, + "bottom": 705, + "width": 789, + "height": 176 + }, + "visibleInInitialViewport": true + } + ], + "interactiveCount": 12, + "initialInteractiveCount": 8, + "offscreenInteractives": [ + { + "selector": "#radix-:rf:", + "label": "more_horiz", + "rect": { + "left": 779, + "top": 641, + "right": 807, + "bottom": 674, + "width": 28, + "height": 33 + } + } + ], + "smallTouchTargets": [ + { + "selector": "button", + "label": "打开菜单", + "rect": { + "left": 16, + "top": 36, + "right": 49, + "bottom": 80, + "width": 33, + "height": 44 + } + }, + { + "selector": "[data-testid=\"invoice-filter-status\"]", + "label": "invoice-filter-status", + "rect": { + "left": 169, + "top": 480, + "right": 255, + "bottom": 512, + "width": 86, + "height": 32 + } + }, + { + "selector": "[data-testid=\"invoice-filter-owner-scope\"]", + "label": "invoice-filter-owner-scope", + "rect": { + "left": 263, + "top": 480, + "right": 349, + "bottom": 512, + "width": 86, + "height": 32 + } + }, + { + "selector": "#radix-:rf:", + "label": "more_horiz", + "rect": { + "left": 779, + "top": 641, + "right": 807, + "bottom": 674, + "width": 28, + "height": 33 + } + } + ], + "clippedText": [ + { + "selector": "p", + "label": "/invoice-pool", + "rect": { + "left": 61, + "top": 32, + "right": 151, + "bottom": 60, + "width": 90, + "height": 28 + } + }, + { + "selector": "div", + "label": "票据流水号 状态 发票号码 识别情况 (OCR) 操作 3c0ba5ae-e01b-4a58-8a6f-0e137134d0a0 可用 261120000009", + "rect": { + "left": 41, + "top": 528, + "right": 349, + "bottom": 706, + "width": 308, + "height": 178 + } + } + ], + "scrollableOverflow": [ + { + "selector": "div", + "label": "票据流水号 状态 发票号码 识别情况 (OCR) 操作 3c0ba5ae-e01b-4a58-8a6f-0e137134d0a0 可用 261120000009", + "rect": { + "left": 41, + "top": 528, + "right": 349, + "bottom": 706, + "width": 308, + "height": 178 + }, + "clientWidth": 306, + "scrollWidth": 789 + }, + { + "selector": "p", + "label": "/invoice-pool", + "rect": { + "left": 61, + "top": 32, + "right": 151, + "bottom": 60, + "width": 90, + "height": 28 + }, + "clientWidth": 90, + "scrollWidth": 124 + } + ], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 1, + "visibleCount": 1, + "initialVisibleCount": 1 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [ + { + "selector": "[data-testid=\"invoice-upload-file\"]", + "multiple": false, + "accept": "application/pdf,image/jpeg,image/png,image/webp", + "capture": "" + } + ], + "forms": { + "controls": 4, + "textareas": 0 + } + }, + "probes": [ + { + "name": "invoice mobile list visible", + "ok": false + }, + { + "name": "invoice first mobile detail button visible", + "ok": false + } + ], + "api": { + "endpoint": "/api/invoice-pool?page=1&pageSize=20&ownerScope=own", + "status": 401, + "total": null, + "pageItems": 0, + "byStatus": {}, + "byProvider": {}, + "pendingSamples": [] + } + }, + { + "route": { + "path": "/leave-requests", + "title": "请假", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "mobile": true + }, + "durationMs": 2363, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-leave-requests.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/leave-requests", + "viewport": { + "width": 390, + "height": 844 + }, + "bodyScrollWidth": 390, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 390, + "bottom": 3132, + "width": 390, + "height": 3132 + }, + "mainClientWidth": 390, + "mainScrollWidth": 390, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [ + { + "selector": "table", + "label": "假种 / 申请人 时间段 天数 状态 附件 更新时间 操作 暂无请假记录", + "rect": { + "left": 38, + "top": 2855, + "right": 352, + "bottom": 3030, + "width": 314, + "height": 175 + }, + "visibleInInitialViewport": false + } + ], + "interactiveCount": 14, + "initialInteractiveCount": 4, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "button", + "label": "打开菜单", + "rect": { + "left": 16, + "top": 36, + "right": 51, + "bottom": 80, + "width": 35, + "height": 44 + } + } + ], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [ + { + "selector": "#leave-attachment", + "multiple": false, + "accept": "", + "capture": "" + } + ], + "forms": { + "controls": 8, + "textareas": 1 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/mobile", + "title": "移动首页", + "group": "mobile", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "mobile": true + }, + "durationMs": 2007, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-mobile.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/mobile", + "viewport": { + "width": 390, + "height": 844 + }, + "bodyScrollWidth": 390, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 390, + "bottom": 1994, + "width": 390, + "height": 1994 + }, + "mainClientWidth": 390, + "mainScrollWidth": 390, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 12, + "initialInteractiveCount": 6, + "offscreenInteractives": [], + "smallTouchTargets": [], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 0, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/mobile/approvals", + "title": "移动审批", + "group": "mobile", + "expectedEmployee": false + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "mobile": true + }, + "durationMs": 1630, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-mobile-approvals.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/403", + "viewport": { + "width": 390, + "height": 844 + }, + "bodyScrollWidth": 390, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 390, + "bottom": 844, + "width": 390, + "height": 844 + }, + "mainClientWidth": 390, + "mainScrollWidth": 390, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 2, + "initialInteractiveCount": 2, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "a", + "label": "返回仪表盘", + "rect": { + "left": 101, + "top": 474, + "right": 181, + "bottom": 498, + "width": 80, + "height": 24 + } + }, + { + "selector": "a", + "label": "查看账号信息", + "rect": { + "left": 193, + "top": 474, + "right": 289, + "bottom": 498, + "width": 96, + "height": 24 + } + } + ], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 0, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/mobile/assets/scan", + "title": "移动资产扫描", + "group": "mobile", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "mobile": true + }, + "durationMs": 1608, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-mobile-assets-scan.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/mobile/assets/scan", + "viewport": { + "width": 390, + "height": 844 + }, + "bodyScrollWidth": 390, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 390, + "bottom": 844, + "width": 390, + "height": 844 + }, + "mainClientWidth": 390, + "mainScrollWidth": 390, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 7, + "initialInteractiveCount": 7, + "offscreenInteractives": [], + "smallTouchTargets": [], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 1, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/mobile/capture", + "title": "移动票据", + "group": "mobile", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "mobile": true + }, + "durationMs": 1674, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-mobile-capture.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/mobile/capture", + "viewport": { + "width": 390, + "height": 844 + }, + "bodyScrollWidth": 390, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 390, + "bottom": 844, + "width": 390, + "height": 844 + }, + "mainClientWidth": 390, + "mainScrollWidth": 390, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 4, + "initialInteractiveCount": 4, + "offscreenInteractives": [], + "smallTouchTargets": [], + "clippedText": [], + "scrollableOverflow": [ + { + "selector": "[data-testid=\"mobile-capture-file\"]", + "label": "mobile-capture-file", + "rect": { + "left": 32, + "top": 357, + "right": 33, + "bottom": 358, + "width": 1, + "height": 1 + }, + "clientWidth": 1, + "scrollWidth": 224 + } + ], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 1, + "visibleCount": 1, + "initialVisibleCount": 1 + }, + "mobile-capture-upload": { + "count": 1, + "visibleCount": 1, + "initialVisibleCount": 1 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [ + { + "selector": "[data-testid=\"mobile-capture-file\"]", + "multiple": false, + "accept": "image/*,application/pdf", + "capture": "environment" + } + ], + "forms": { + "controls": 1, + "textareas": 0 + } + }, + "probes": [ + { + "name": "mobile capture supports multiple files", + "ok": false + } + ], + "api": null + }, + { + "route": { + "path": "/mobile/me", + "title": "移动我的", + "group": "mobile", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "mobile": true + }, + "durationMs": 1799, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-mobile-me.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/mobile/me", + "viewport": { + "width": 390, + "height": 844 + }, + "bodyScrollWidth": 390, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 390, + "bottom": 1512, + "width": 390, + "height": 1512 + }, + "mainClientWidth": 390, + "mainScrollWidth": 390, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 12, + "initialInteractiveCount": 7, + "offscreenInteractives": [], + "smallTouchTargets": [], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 1, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/notifications", + "title": "通知", + "group": "settings", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "mobile": true + }, + "durationMs": 1601, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-notifications.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/notifications", + "viewport": { + "width": 390, + "height": 844 + }, + "bodyScrollWidth": 390, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 390, + "bottom": 844, + "width": 390, + "height": 844 + }, + "mainClientWidth": 390, + "mainScrollWidth": 390, + "mainOverflowX": 0, + "visibleTableCount": 1, + "tables": [ + { + "selector": "[data-testid=\"notifications-table\"]", + "label": "notifications-table", + "rect": { + "left": 42, + "top": 475, + "right": 348, + "bottom": 561, + "width": 306, + "height": 86 + }, + "visibleInInitialViewport": true + } + ], + "interactiveCount": 9, + "initialInteractiveCount": 9, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "button", + "label": "打开菜单", + "rect": { + "left": 16, + "top": 36, + "right": 48, + "bottom": 80, + "width": 32, + "height": 44 + } + }, + { + "selector": "[data-testid=\"notifications-filter-all\"]", + "label": "notifications-filter-all", + "rect": { + "left": 46, + "top": 335, + "right": 98, + "bottom": 371, + "width": 52, + "height": 36 + } + }, + { + "selector": "[data-testid=\"notifications-filter-unread\"]", + "label": "notifications-filter-unread", + "rect": { + "left": 102, + "top": 335, + "right": 154, + "bottom": 371, + "width": 52, + "height": 36 + } + } + ], + "clippedText": [ + { + "selector": "p", + "label": "/notifications", + "rect": { + "left": 60, + "top": 32, + "right": 151, + "bottom": 60, + "width": 91, + "height": 28 + } + } + ], + "scrollableOverflow": [ + { + "selector": "p", + "label": "/notifications", + "rect": { + "left": 60, + "top": 32, + "right": 151, + "bottom": 60, + "width": 91, + "height": 28 + }, + "clientWidth": 91, + "scrollWidth": 128 + } + ], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 1, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/payment-batches", + "title": "付款批次", + "group": "backup", + "expectedEmployee": false + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "mobile": true + }, + "durationMs": 1616, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-payment-batches.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/403", + "viewport": { + "width": 390, + "height": 844 + }, + "bodyScrollWidth": 390, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 390, + "bottom": 844, + "width": 390, + "height": 844 + }, + "mainClientWidth": 390, + "mainScrollWidth": 390, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 2, + "initialInteractiveCount": 2, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "a", + "label": "返回仪表盘", + "rect": { + "left": 101, + "top": 474, + "right": 181, + "bottom": 498, + "width": 80, + "height": 24 + } + }, + { + "selector": "a", + "label": "查看账号信息", + "rect": { + "left": 193, + "top": 474, + "right": 289, + "bottom": 498, + "width": 96, + "height": 24 + } + } + ], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 0, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/portal", + "title": "Portal", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "mobile": true + }, + "durationMs": 2140, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-portal.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/portal", + "viewport": { + "width": 390, + "height": 844 + }, + "bodyScrollWidth": 390, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 390, + "bottom": 2743, + "width": 390, + "height": 2743 + }, + "mainClientWidth": 390, + "mainScrollWidth": 390, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 45, + "initialInteractiveCount": 8, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "button", + "label": "打开菜单", + "rect": { + "left": 16, + "top": 36, + "right": 51, + "bottom": 80, + "width": 35, + "height": 44 + } + } + ], + "clippedText": [], + "scrollableOverflow": [ + { + "selector": "section", + "label": "个人工作台 你好,Employee 先处理今天必须完成的事,再继续查看项目、周报和公告。", + "rect": { + "left": 16, + "top": 137, + "right": 374, + "bottom": 291, + "width": 358, + "height": 154 + }, + "clientWidth": 356, + "scrollWidth": 455 + } + ], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 0, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/projects", + "title": "项目", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "mobile": true + }, + "durationMs": 1845, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-projects.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/projects", + "viewport": { + "width": 390, + "height": 844 + }, + "bodyScrollWidth": 390, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 390, + "bottom": 1549, + "width": 390, + "height": 1549 + }, + "mainClientWidth": 390, + "mainScrollWidth": 390, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 8, + "initialInteractiveCount": 5, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "button", + "label": "打开菜单", + "rect": { + "left": 16, + "top": 36, + "right": 51, + "bottom": 80, + "width": 35, + "height": 44 + } + } + ], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 2, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/purchase-requests", + "title": "采购", + "group": "backup", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "mobile": true + }, + "durationMs": 1764, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-purchase-requests.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/purchase-requests", + "viewport": { + "width": 390, + "height": 844 + }, + "bodyScrollWidth": 390, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 390, + "bottom": 1059, + "width": 390, + "height": 1059 + }, + "mainClientWidth": 390, + "mainScrollWidth": 390, + "mainOverflowX": 0, + "visibleTableCount": 1, + "tables": [ + { + "selector": "[data-testid=\"purchase-requests-table\"]", + "label": "purchase-requests-table", + "rect": { + "left": 42, + "top": 681, + "right": 348, + "bottom": 773, + "width": 306, + "height": 92 + }, + "visibleInInitialViewport": true + } + ], + "interactiveCount": 9, + "initialInteractiveCount": 9, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "button", + "label": "打开菜单", + "rect": { + "left": 16, + "top": 36, + "right": 40, + "bottom": 80, + "width": 24, + "height": 44 + } + } + ], + "clippedText": [ + { + "selector": "p", + "label": "/purchase-requests", + "rect": { + "left": 52, + "top": 32, + "right": 151, + "bottom": 60, + "width": 99, + "height": 28 + } + } + ], + "scrollableOverflow": [ + { + "selector": "p", + "label": "/purchase-requests", + "rect": { + "left": 52, + "top": 32, + "right": 151, + "bottom": 60, + "width": 99, + "height": 28 + }, + "clientWidth": 99, + "scrollWidth": 188 + } + ], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 4, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/reimbursements", + "title": "报销", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "mobile": true + }, + "durationMs": 1726, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-reimbursements.png", + "consoleErrors": [ + "Failed to load resource: the server responded with a status of 401 ()" + ], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [ + { + "url": "https://oa.hyinda.com/api/reimbursements?status=draft&page=1&pageSize=20&scope=own", + "status": 401 + } + ], + "metrics": { + "title": "海音达工作台", + "path": "/reimbursements", + "viewport": { + "width": 390, + "height": 844 + }, + "bodyScrollWidth": 390, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 390, + "bottom": 1338, + "width": 390, + "height": 1338 + }, + "mainClientWidth": 390, + "mainScrollWidth": 390, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [ + { + "selector": "[data-testid=\"reimbursements-table\"]", + "label": "reimbursements-table", + "rect": { + "left": 17, + "top": 1084, + "right": 379, + "bottom": 1249, + "width": 362, + "height": 165 + }, + "visibleInInitialViewport": false + } + ], + "interactiveCount": 13, + "initialInteractiveCount": 6, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "button", + "label": "打开菜单", + "rect": { + "left": 16, + "top": 36, + "right": 51, + "bottom": 80, + "width": 35, + "height": 44 + } + } + ], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 1, + "visibleCount": 1, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 0, + "textareas": 0 + } + }, + "probes": [ + { + "name": "reimbursement mobile list visible", + "ok": false + }, + { + "name": "draft/detail mobile link visible", + "ok": false + } + ], + "api": { + "endpoint": "/api/reimbursements?status=draft&page=1&pageSize=20&scope=own", + "status": 401, + "total": null, + "pageItems": 0, + "draftSamples": [] + } + }, + { + "route": { + "path": "/settings/profile", + "title": "个人设置", + "group": "settings", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "mobile": true + }, + "durationMs": 1819, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-settings-profile.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/settings/profile", + "viewport": { + "width": 390, + "height": 844 + }, + "bodyScrollWidth": 390, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 390, + "bottom": 2803, + "width": 390, + "height": 2803 + }, + "mainClientWidth": 390, + "mainScrollWidth": 390, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 8, + "initialInteractiveCount": 5, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "button", + "label": "打开菜单", + "rect": { + "left": 16, + "top": 36, + "right": 51, + "bottom": 80, + "width": 35, + "height": 44 + } + } + ], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 1, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/team", + "title": "团队", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "mobile": true + }, + "durationMs": 1744, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-team.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/team", + "viewport": { + "width": 390, + "height": 844 + }, + "bodyScrollWidth": 390, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 390, + "bottom": 2131, + "width": 390, + "height": 2131 + }, + "mainClientWidth": 390, + "mainScrollWidth": 390, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [ + { + "selector": "table", + "label": "成员 部门 状态 备注 E Employee 试运行员工 公司 未更新 - 王顺 王顺利 员工 管理部 未更新 - 马建 马建勇 员工 管理部 未更新 - SA", + "rect": { + "left": 41, + "top": 1570, + "right": 349, + "bottom": 2086, + "width": 308, + "height": 516 + }, + "visibleInInitialViewport": false + } + ], + "interactiveCount": 13, + "initialInteractiveCount": 10, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "button", + "label": "打开菜单", + "rect": { + "left": 16, + "top": 36, + "right": 51, + "bottom": 80, + "width": 35, + "height": 44 + } + } + ], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 3, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/todos", + "title": "待办", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "mobile": true + }, + "durationMs": 1790, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-todos.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/todos", + "viewport": { + "width": 390, + "height": 844 + }, + "bodyScrollWidth": 390, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 390, + "bottom": 1684, + "width": 390, + "height": 1684 + }, + "mainClientWidth": 390, + "mainScrollWidth": 390, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [ + { + "selector": "table", + "label": "标题 项目 负责人 优先级 状态 操作 当前没有符合条件的待办。", + "rect": { + "left": 38, + "top": 1129, + "right": 352, + "bottom": 1256, + "width": 314, + "height": 127 + }, + "visibleInInitialViewport": false + } + ], + "interactiveCount": 9, + "initialInteractiveCount": 4, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "button", + "label": "打开菜单", + "rect": { + "left": 16, + "top": 36, + "right": 51, + "bottom": 80, + "width": 35, + "height": 44 + } + } + ], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 4, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/travel-requests", + "title": "差旅", + "group": "backup", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "mobile": true + }, + "durationMs": 2093, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-travel-requests.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/travel-requests?tab=requests", + "viewport": { + "width": 390, + "height": 844 + }, + "bodyScrollWidth": 390, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 390, + "bottom": 2635, + "width": 390, + "height": 2635 + }, + "mainClientWidth": 390, + "mainScrollWidth": 390, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 25, + "initialInteractiveCount": 10, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "button", + "label": "打开菜单", + "rect": { + "left": 16, + "top": 36, + "right": 44, + "bottom": 80, + "width": 28, + "height": 44 + } + } + ], + "clippedText": [ + { + "selector": "p", + "label": "/travel-requests", + "rect": { + "left": 56, + "top": 32, + "right": 151, + "bottom": 60, + "width": 95, + "height": 28 + } + } + ], + "scrollableOverflow": [ + { + "selector": "p", + "label": "/travel-requests", + "rect": { + "left": 56, + "top": 32, + "right": 151, + "bottom": 60, + "width": 95, + "height": 28 + }, + "clientWidth": 95, + "scrollWidth": 156 + } + ], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 17, + "textareas": 1 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/weekly-reports", + "title": "周报", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "mobile": true + }, + "durationMs": 1829, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-weekly-reports.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/weekly-reports", + "viewport": { + "width": 390, + "height": 844 + }, + "bodyScrollWidth": 390, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 390, + "bottom": 2429, + "width": 390, + "height": 2429 + }, + "mainClientWidth": 390, + "mainScrollWidth": 390, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 18, + "initialInteractiveCount": 5, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "button", + "label": "打开菜单", + "rect": { + "left": 16, + "top": 36, + "right": 51, + "bottom": 80, + "width": 35, + "height": 44 + } + } + ], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 9, + "textareas": 6 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/workflow/tasks", + "title": "审批待办", + "group": "backup", + "expectedEmployee": false + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "mobile": true + }, + "durationMs": 1558, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-workflow-tasks.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/403", + "viewport": { + "width": 390, + "height": 844 + }, + "bodyScrollWidth": 390, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 390, + "bottom": 844, + "width": 390, + "height": 844 + }, + "mainClientWidth": 390, + "mainScrollWidth": 390, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 2, + "initialInteractiveCount": 2, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "a", + "label": "返回仪表盘", + "rect": { + "left": 101, + "top": 474, + "right": 181, + "bottom": 498, + "width": 80, + "height": 24 + } + }, + { + "selector": "a", + "label": "查看账号信息", + "rect": { + "left": 193, + "top": 474, + "right": 289, + "bottom": 498, + "width": 96, + "height": 24 + } + } + ], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 0, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/announcements", + "title": "公告", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "mobile": false + }, + "durationMs": 1958, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/desktop1440-announcements.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/announcements", + "viewport": { + "width": 1440, + "height": 900 + }, + "bodyScrollWidth": 1440, + "bodyOverflowX": 0, + "mainRect": { + "left": 288, + "top": 0, + "right": 1440, + "bottom": 900, + "width": 1152, + "height": 900 + }, + "mainClientWidth": 1152, + "mainScrollWidth": 1152, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 3, + "initialInteractiveCount": 3, + "offscreenInteractives": [], + "smallTouchTargets": [], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 0, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/ap-operations", + "title": "应付运营", + "group": "backup", + "expectedEmployee": false + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "mobile": false + }, + "durationMs": 1796, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/desktop1440-ap-operations.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/403", + "viewport": { + "width": 1440, + "height": 900 + }, + "bodyScrollWidth": 1440, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 1440, + "bottom": 900, + "width": 1440, + "height": 900 + }, + "mainClientWidth": 1440, + "mainScrollWidth": 1440, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 2, + "initialInteractiveCount": 2, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "a", + "label": "返回仪表盘", + "rect": { + "left": 626, + "top": 492, + "right": 706, + "bottom": 516, + "width": 80, + "height": 24 + } + }, + { + "selector": "a", + "label": "查看账号信息", + "rect": { + "left": 718, + "top": 492, + "right": 814, + "bottom": 516, + "width": 96, + "height": 24 + } + } + ], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 0, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/assets", + "title": "资产", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "mobile": false + }, + "durationMs": 2067, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/desktop1440-assets.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/assets", + "viewport": { + "width": 1440, + "height": 900 + }, + "bodyScrollWidth": 1440, + "bodyOverflowX": 0, + "mainRect": { + "left": 288, + "top": 0, + "right": 1440, + "bottom": 900, + "width": 1152, + "height": 900 + }, + "mainClientWidth": 1152, + "mainScrollWidth": 1152, + "mainOverflowX": 0, + "visibleTableCount": 2, + "tables": [ + { + "selector": "table", + "label": "编码 名称 状态", + "rect": { + "left": 354, + "top": 599, + "right": 682, + "bottom": 639, + "width": 328, + "height": 40 + }, + "visibleInInitialViewport": true + }, + { + "selector": "table", + "label": "资产 分类 状态 归属人 暂无资产卡片", + "rect": { + "left": 758, + "top": 319, + "right": 1374, + "bottom": 411, + "width": 616, + "height": 92 + }, + "visibleInInitialViewport": true + } + ], + "interactiveCount": 8, + "initialInteractiveCount": 8, + "offscreenInteractives": [], + "smallTouchTargets": [], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 9, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/attendance", + "title": "考勤", + "group": "backup", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "mobile": false + }, + "durationMs": 2706, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/desktop1440-attendance.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/attendance", + "viewport": { + "width": 1440, + "height": 900 + }, + "bodyScrollWidth": 1440, + "bodyOverflowX": 0, + "mainRect": { + "left": 288, + "top": 0, + "right": 1440, + "bottom": 2219, + "width": 1152, + "height": 2219 + }, + "mainClientWidth": 1152, + "mainScrollWidth": 1152, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [ + { + "selector": "table", + "label": "日期 上班 下班 工时 状态 备注 2026-05-01 - - - 缺卡 - 2026-05-02 - - - 周末 周末 2026-05-03 - - - ", + "rect": { + "left": 353, + "top": 918, + "right": 1375, + "bottom": 2166, + "width": 1022, + "height": 1248 + }, + "visibleInInitialViewport": false + } + ], + "interactiveCount": 8, + "initialInteractiveCount": 8, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "#radix-:ra:-trigger-mine", + "label": "我的考勤", + "rect": { + "left": 333, + "top": 238, + "right": 413, + "bottom": 274, + "width": 80, + "height": 36 + } + } + ], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 1, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/budgets", + "title": "预算", + "group": "backup", + "expectedEmployee": false + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "mobile": false + }, + "durationMs": 1682, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/desktop1440-budgets.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/403", + "viewport": { + "width": 1440, + "height": 900 + }, + "bodyScrollWidth": 1440, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 1440, + "bottom": 900, + "width": 1440, + "height": 900 + }, + "mainClientWidth": 1440, + "mainScrollWidth": 1440, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 2, + "initialInteractiveCount": 2, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "a", + "label": "返回仪表盘", + "rect": { + "left": 626, + "top": 492, + "right": 706, + "bottom": 516, + "width": 80, + "height": 24 + } + }, + { + "selector": "a", + "label": "查看账号信息", + "rect": { + "left": 718, + "top": 492, + "right": 814, + "bottom": 516, + "width": 96, + "height": 24 + } + } + ], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 0, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/contracts-registry", + "title": "合同台账", + "group": "backup", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "mobile": false + }, + "durationMs": 2708, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/desktop1440-contracts-registry.png", + "consoleErrors": [ + "Failed to load resource: the server responded with a status of 403 ()", + "Failed to load resource: the server responded with a status of 403 ()" + ], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [ + { + "url": "https://oa.hyinda.com/api/employees?page=1&pageSize=100&status=active", + "status": 403 + }, + { + "url": "https://oa.hyinda.com/api/employees?page=1&pageSize=100&status=active", + "status": 403 + } + ], + "metrics": { + "title": "海音达工作台", + "path": "/contracts-registry", + "viewport": { + "width": 1440, + "height": 900 + }, + "bodyScrollWidth": 1440, + "bodyOverflowX": 0, + "mainRect": { + "left": 288, + "top": 0, + "right": 1440, + "bottom": 1589, + "width": 1152, + "height": 1589 + }, + "mainClientWidth": 1152, + "mainScrollWidth": 1152, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 29, + "initialInteractiveCount": 20, + "offscreenInteractives": [], + "smallTouchTargets": [], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 21, + "textareas": 1 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/dashboard", + "title": "仪表盘", + "group": "backup", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "mobile": false + }, + "durationMs": 2099, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/desktop1440-dashboard.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/dashboard", + "viewport": { + "width": 1440, + "height": 900 + }, + "bodyScrollWidth": 1440, + "bodyOverflowX": 0, + "mainRect": { + "left": 288, + "top": 0, + "right": 1440, + "bottom": 900, + "width": 1152, + "height": 900 + }, + "mainClientWidth": 1152, + "mainScrollWidth": 1152, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 3, + "initialInteractiveCount": 3, + "offscreenInteractives": [], + "smallTouchTargets": [], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 0, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/inventory-checks", + "title": "盘点", + "group": "backup", + "expectedEmployee": false + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "mobile": false + }, + "durationMs": 1708, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/desktop1440-inventory-checks.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/403", + "viewport": { + "width": 1440, + "height": 900 + }, + "bodyScrollWidth": 1440, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 1440, + "bottom": 900, + "width": 1440, + "height": 900 + }, + "mainClientWidth": 1440, + "mainScrollWidth": 1440, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 2, + "initialInteractiveCount": 2, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "a", + "label": "返回仪表盘", + "rect": { + "left": 626, + "top": 492, + "right": 706, + "bottom": 516, + "width": 80, + "height": 24 + } + }, + { + "selector": "a", + "label": "查看账号信息", + "rect": { + "left": 718, + "top": 492, + "right": 814, + "bottom": 516, + "width": 96, + "height": 24 + } + } + ], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 0, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/invoice-pool", + "title": "票据中心", + "group": "backup", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "mobile": false + }, + "durationMs": 2708, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/desktop1440-invoice-pool.png", + "consoleErrors": [ + "Failed to load resource: the server responded with a status of 401 ()" + ], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [ + { + "url": "https://oa.hyinda.com/api/invoice-pool?page=1&pageSize=20&ownerScope=own", + "status": 401 + } + ], + "metrics": { + "title": "海音达工作台", + "path": "/invoice-pool", + "viewport": { + "width": 1440, + "height": 900 + }, + "bodyScrollWidth": 1440, + "bodyOverflowX": 0, + "mainRect": { + "left": 288, + "top": 0, + "right": 1440, + "bottom": 1381, + "width": 1152, + "height": 1381 + }, + "mainClientWidth": 1152, + "mainScrollWidth": 1152, + "mainOverflowX": 0, + "visibleTableCount": 1, + "tables": [ + { + "selector": "[data-testid=\"invoice-pool-table\"]", + "label": "invoice-pool-table", + "rect": { + "left": 354, + "top": 457, + "right": 1374, + "bottom": 586, + "width": 1020, + "height": 129 + }, + "visibleInInitialViewport": true + } + ], + "interactiveCount": 11, + "initialInteractiveCount": 9, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "[data-testid=\"invoice-filter-status\"]", + "label": "invoice-filter-status", + "rect": { + "left": 1195, + "top": 408, + "right": 1281, + "bottom": 440, + "width": 86, + "height": 32 + } + }, + { + "selector": "[data-testid=\"invoice-filter-owner-scope\"]", + "label": "invoice-filter-owner-scope", + "rect": { + "left": 1289, + "top": 408, + "right": 1375, + "bottom": 440, + "width": 86, + "height": 32 + } + }, + { + "selector": "#radix-:rf:", + "label": "more_horiz", + "rect": { + "left": 1322, + "top": 537, + "right": 1350, + "bottom": 570, + "width": 28, + "height": 33 + } + } + ], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 1, + "visibleCount": 1, + "initialVisibleCount": 1 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [ + { + "selector": "[data-testid=\"invoice-upload-file\"]", + "multiple": false, + "accept": "application/pdf,image/jpeg,image/png,image/webp", + "capture": "" + } + ], + "forms": { + "controls": 4, + "textareas": 0 + } + }, + "probes": [], + "api": { + "endpoint": "/api/invoice-pool?page=1&pageSize=20&ownerScope=own", + "status": 401, + "total": null, + "pageItems": 0, + "byStatus": {}, + "byProvider": {}, + "pendingSamples": [] + } + }, + { + "route": { + "path": "/leave-requests", + "title": "请假", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "mobile": false + }, + "durationMs": 2924, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/desktop1440-leave-requests.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/leave-requests", + "viewport": { + "width": 1440, + "height": 900 + }, + "bodyScrollWidth": 1440, + "bodyOverflowX": 0, + "mainRect": { + "left": 288, + "top": 0, + "right": 1440, + "bottom": 1604, + "width": 1152, + "height": 1604 + }, + "mainClientWidth": 1152, + "mainScrollWidth": 1152, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [ + { + "selector": "table", + "label": "假种 / 申请人 时间段 天数 状态 附件 更新时间 操作 暂无请假记录", + "rect": { + "left": 354, + "top": 1397, + "right": 1374, + "bottom": 1490, + "width": 1020, + "height": 93 + }, + "visibleInInitialViewport": false + } + ], + "interactiveCount": 13, + "initialInteractiveCount": 11, + "offscreenInteractives": [], + "smallTouchTargets": [], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [ + { + "selector": "#leave-attachment", + "multiple": false, + "accept": "", + "capture": "" + } + ], + "forms": { + "controls": 8, + "textareas": 1 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/mobile", + "title": "移动首页", + "group": "mobile", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "mobile": false + }, + "durationMs": 3072, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/desktop1440-mobile.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/mobile", + "viewport": { + "width": 1440, + "height": 900 + }, + "bodyScrollWidth": 1440, + "bodyOverflowX": 0, + "mainRect": { + "left": 288, + "top": 0, + "right": 1440, + "bottom": 1933, + "width": 1152, + "height": 1933 + }, + "mainClientWidth": 1152, + "mainScrollWidth": 1152, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 12, + "initialInteractiveCount": 6, + "offscreenInteractives": [], + "smallTouchTargets": [], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 0, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/mobile/approvals", + "title": "移动审批", + "group": "mobile", + "expectedEmployee": false + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "mobile": false + }, + "durationMs": 1712, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/desktop1440-mobile-approvals.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/403", + "viewport": { + "width": 1440, + "height": 900 + }, + "bodyScrollWidth": 1440, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 1440, + "bottom": 900, + "width": 1440, + "height": 900 + }, + "mainClientWidth": 1440, + "mainScrollWidth": 1440, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 2, + "initialInteractiveCount": 2, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "a", + "label": "返回仪表盘", + "rect": { + "left": 626, + "top": 492, + "right": 706, + "bottom": 516, + "width": 80, + "height": 24 + } + }, + { + "selector": "a", + "label": "查看账号信息", + "rect": { + "left": 718, + "top": 492, + "right": 814, + "bottom": 516, + "width": 96, + "height": 24 + } + } + ], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 0, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/mobile/assets/scan", + "title": "移动资产扫描", + "group": "mobile", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "mobile": false + }, + "durationMs": 2087, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/desktop1440-mobile-assets-scan.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/mobile/assets/scan", + "viewport": { + "width": 1440, + "height": 900 + }, + "bodyScrollWidth": 1440, + "bodyOverflowX": 0, + "mainRect": { + "left": 288, + "top": 0, + "right": 1440, + "bottom": 1118, + "width": 1152, + "height": 1118 + }, + "mainClientWidth": 1152, + "mainScrollWidth": 1152, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 7, + "initialInteractiveCount": 5, + "offscreenInteractives": [], + "smallTouchTargets": [], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 1, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/mobile/capture", + "title": "移动票据", + "group": "mobile", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "mobile": false + }, + "durationMs": 1838, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/desktop1440-mobile-capture.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/mobile/capture", + "viewport": { + "width": 1440, + "height": 900 + }, + "bodyScrollWidth": 1440, + "bodyOverflowX": 0, + "mainRect": { + "left": 288, + "top": 0, + "right": 1440, + "bottom": 900, + "width": 1152, + "height": 900 + }, + "mainClientWidth": 1152, + "mainScrollWidth": 1152, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 4, + "initialInteractiveCount": 4, + "offscreenInteractives": [], + "smallTouchTargets": [], + "clippedText": [], + "scrollableOverflow": [ + { + "selector": "[data-testid=\"mobile-capture-file\"]", + "label": "mobile-capture-file", + "rect": { + "left": 344, + "top": 466, + "right": 345, + "bottom": 467, + "width": 1, + "height": 1 + }, + "clientWidth": 1, + "scrollWidth": 224 + } + ], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 1, + "visibleCount": 1, + "initialVisibleCount": 1 + }, + "mobile-capture-upload": { + "count": 1, + "visibleCount": 1, + "initialVisibleCount": 1 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [ + { + "selector": "[data-testid=\"mobile-capture-file\"]", + "multiple": false, + "accept": "image/*,application/pdf", + "capture": "environment" + } + ], + "forms": { + "controls": 1, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/mobile/me", + "title": "移动我的", + "group": "mobile", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "mobile": false + }, + "durationMs": 2508, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/desktop1440-mobile-me.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/mobile/me", + "viewport": { + "width": 1440, + "height": 900 + }, + "bodyScrollWidth": 1440, + "bodyOverflowX": 0, + "mainRect": { + "left": 288, + "top": 0, + "right": 1440, + "bottom": 1541, + "width": 1152, + "height": 1541 + }, + "mainClientWidth": 1152, + "mainScrollWidth": 1152, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 12, + "initialInteractiveCount": 6, + "offscreenInteractives": [], + "smallTouchTargets": [], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 1, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/notifications", + "title": "通知", + "group": "settings", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "mobile": false + }, + "durationMs": 1915, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/desktop1440-notifications.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/notifications", + "viewport": { + "width": 1440, + "height": 900 + }, + "bodyScrollWidth": 1440, + "bodyOverflowX": 0, + "mainRect": { + "left": 288, + "top": 0, + "right": 1440, + "bottom": 900, + "width": 1152, + "height": 900 + }, + "mainClientWidth": 1152, + "mainScrollWidth": 1152, + "mainOverflowX": 0, + "visibleTableCount": 1, + "tables": [ + { + "selector": "[data-testid=\"notifications-table\"]", + "label": "notifications-table", + "rect": { + "left": 354, + "top": 319, + "right": 1374, + "bottom": 403, + "width": 1020, + "height": 84 + }, + "visibleInInitialViewport": true + } + ], + "interactiveCount": 8, + "initialInteractiveCount": 8, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "[data-testid=\"notifications-filter-all\"]", + "label": "notifications-filter-all", + "rect": { + "left": 358, + "top": 263, + "right": 410, + "bottom": 299, + "width": 52, + "height": 36 + } + }, + { + "selector": "[data-testid=\"notifications-filter-unread\"]", + "label": "notifications-filter-unread", + "rect": { + "left": 414, + "top": 263, + "right": 466, + "bottom": 299, + "width": 52, + "height": 36 + } + } + ], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 1, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/payment-batches", + "title": "付款批次", + "group": "backup", + "expectedEmployee": false + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "mobile": false + }, + "durationMs": 1702, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/desktop1440-payment-batches.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/403", + "viewport": { + "width": 1440, + "height": 900 + }, + "bodyScrollWidth": 1440, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 1440, + "bottom": 900, + "width": 1440, + "height": 900 + }, + "mainClientWidth": 1440, + "mainScrollWidth": 1440, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 2, + "initialInteractiveCount": 2, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "a", + "label": "返回仪表盘", + "rect": { + "left": 626, + "top": 492, + "right": 706, + "bottom": 516, + "width": 80, + "height": 24 + } + }, + { + "selector": "a", + "label": "查看账号信息", + "rect": { + "left": 718, + "top": 492, + "right": 814, + "bottom": 516, + "width": 96, + "height": 24 + } + } + ], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 0, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/portal", + "title": "Portal", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "mobile": false + }, + "durationMs": 2744, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/desktop1440-portal.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/portal", + "viewport": { + "width": 1440, + "height": 900 + }, + "bodyScrollWidth": 1440, + "bodyOverflowX": 0, + "mainRect": { + "left": 288, + "top": 0, + "right": 1440, + "bottom": 1625, + "width": 1152, + "height": 1625 + }, + "mainClientWidth": 1152, + "mainScrollWidth": 1152, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 44, + "initialInteractiveCount": 12, + "offscreenInteractives": [], + "smallTouchTargets": [], + "clippedText": [], + "scrollableOverflow": [ + { + "selector": "section", + "label": "个人工作台 你好,Employee 先处理今天必须完成的事,再继续查看项目、周报和公告。", + "rect": { + "left": 328, + "top": 125, + "right": 1400, + "bottom": 267, + "width": 1072, + "height": 142 + }, + "clientWidth": 1070, + "scrollWidth": 1169 + } + ], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 0, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/projects", + "title": "项目", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "mobile": false + }, + "durationMs": 1983, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/desktop1440-projects.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/projects", + "viewport": { + "width": 1440, + "height": 900 + }, + "bodyScrollWidth": 1440, + "bodyOverflowX": 0, + "mainRect": { + "left": 288, + "top": 0, + "right": 1440, + "bottom": 900, + "width": 1152, + "height": 900 + }, + "mainClientWidth": 1152, + "mainScrollWidth": 1152, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 7, + "initialInteractiveCount": 7, + "offscreenInteractives": [], + "smallTouchTargets": [], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 2, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/purchase-requests", + "title": "采购", + "group": "backup", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "mobile": false + }, + "durationMs": 1939, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/desktop1440-purchase-requests.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/purchase-requests", + "viewport": { + "width": 1440, + "height": 900 + }, + "bodyScrollWidth": 1440, + "bodyOverflowX": 0, + "mainRect": { + "left": 288, + "top": 0, + "right": 1440, + "bottom": 900, + "width": 1152, + "height": 900 + }, + "mainClientWidth": 1152, + "mainScrollWidth": 1152, + "mainOverflowX": 0, + "visibleTableCount": 1, + "tables": [ + { + "selector": "[data-testid=\"purchase-requests-table\"]", + "label": "purchase-requests-table", + "rect": { + "left": 354, + "top": 417, + "right": 722, + "bottom": 509, + "width": 368, + "height": 92 + }, + "visibleInInitialViewport": true + } + ], + "interactiveCount": 8, + "initialInteractiveCount": 8, + "offscreenInteractives": [], + "smallTouchTargets": [], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 4, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/reimbursements", + "title": "报销", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "mobile": false + }, + "durationMs": 1927, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/desktop1440-reimbursements.png", + "consoleErrors": [ + "Failed to load resource: the server responded with a status of 401 ()" + ], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [ + { + "url": "https://oa.hyinda.com/api/reimbursements?status=draft&page=1&pageSize=20&scope=own", + "status": 401 + } + ], + "metrics": { + "title": "海音达工作台", + "path": "/reimbursements", + "viewport": { + "width": 1440, + "height": 900 + }, + "bodyScrollWidth": 1440, + "bodyOverflowX": 0, + "mainRect": { + "left": 288, + "top": 0, + "right": 1440, + "bottom": 900, + "width": 1152, + "height": 900 + }, + "mainClientWidth": 1152, + "mainScrollWidth": 1152, + "mainOverflowX": 0, + "visibleTableCount": 1, + "tables": [ + { + "selector": "[data-testid=\"reimbursements-table\"]", + "label": "reimbursements-table", + "rect": { + "left": 329, + "top": 502, + "right": 1399, + "bottom": 635, + "width": 1070, + "height": 133 + }, + "visibleInInitialViewport": true + } + ], + "interactiveCount": 12, + "initialInteractiveCount": 12, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "[data-testid=\"reimbursements-tab-draft\"]", + "label": "reimbursements-tab-draft", + "rect": { + "left": 354, + "top": 417, + "right": 406, + "bottom": 453, + "width": 52, + "height": 36 + } + }, + { + "selector": "[data-testid=\"reimbursements-tab-reviewing\"]", + "label": "reimbursements-tab-reviewing", + "rect": { + "left": 410, + "top": 417, + "right": 476, + "bottom": 453, + "width": 66, + "height": 36 + } + }, + { + "selector": "[data-testid=\"reimbursements-tab-approved\"]", + "label": "reimbursements-tab-approved", + "rect": { + "left": 480, + "top": 417, + "right": 546, + "bottom": 453, + "width": 66, + "height": 36 + } + }, + { + "selector": "[data-testid=\"reimbursements-tab-paid\"]", + "label": "reimbursements-tab-paid", + "rect": { + "left": 550, + "top": 417, + "right": 616, + "bottom": 453, + "width": 66, + "height": 36 + } + }, + { + "selector": "[data-testid=\"reimbursements-tab-rejected\"]", + "label": "reimbursements-tab-rejected", + "rect": { + "left": 620, + "top": 417, + "right": 686, + "bottom": 453, + "width": 66, + "height": 36 + } + }, + { + "selector": "[data-testid=\"reimbursements-tab-cancelled\"]", + "label": "reimbursements-tab-cancelled", + "rect": { + "left": 690, + "top": 417, + "right": 756, + "bottom": 453, + "width": 66, + "height": 36 + } + } + ], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 1, + "visibleCount": 1, + "initialVisibleCount": 1 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 0, + "textareas": 0 + } + }, + "probes": [], + "api": { + "endpoint": "/api/reimbursements?status=draft&page=1&pageSize=20&scope=own", + "status": 401, + "total": null, + "pageItems": 0, + "draftSamples": [] + } + }, + { + "route": { + "path": "/settings/profile", + "title": "个人设置", + "group": "settings", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "mobile": false + }, + "durationMs": 2552, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/desktop1440-settings-profile.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/settings/profile", + "viewport": { + "width": 1440, + "height": 900 + }, + "bodyScrollWidth": 1440, + "bodyOverflowX": 0, + "mainRect": { + "left": 288, + "top": 0, + "right": 1440, + "bottom": 1291, + "width": 1152, + "height": 1291 + }, + "mainClientWidth": 1152, + "mainScrollWidth": 1152, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 7, + "initialInteractiveCount": 6, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "input", + "label": "input", + "rect": { + "left": 353, + "top": 820, + "right": 369, + "bottom": 836, + "width": 16, + "height": 16 + } + } + ], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 1, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/team", + "title": "团队", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "mobile": false + }, + "durationMs": 2264, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/desktop1440-team.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/team", + "viewport": { + "width": 1440, + "height": 900 + }, + "bodyScrollWidth": 1440, + "bodyOverflowX": 0, + "mainRect": { + "left": 288, + "top": 0, + "right": 1440, + "bottom": 1172, + "width": 1152, + "height": 1172 + }, + "mainClientWidth": 1152, + "mainScrollWidth": 1152, + "mainOverflowX": 0, + "visibleTableCount": 1, + "tables": [ + { + "selector": "table", + "label": "成员 部门 状态 备注 E Employee 试运行员工 公司 未更新 - 王顺 王顺利 员工 管理部 未更新 - 马建 马建勇 员工 管理部 未更新 - SA", + "rect": { + "left": 353, + "top": 714, + "right": 1375, + "bottom": 1119, + "width": 1022, + "height": 405 + }, + "visibleInInitialViewport": true + } + ], + "interactiveCount": 12, + "initialInteractiveCount": 12, + "offscreenInteractives": [], + "smallTouchTargets": [], + "clippedText": [], + "scrollableOverflow": [ + { + "selector": "div", + "label": "unspecified", + "rect": { + "left": 1289, + "top": 311, + "right": 1362, + "bottom": 331, + "width": 73, + "height": 20 + }, + "clientWidth": 73, + "scrollWidth": 80 + } + ], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 3, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/todos", + "title": "待办", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "mobile": false + }, + "durationMs": 2026, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/desktop1440-todos.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/todos", + "viewport": { + "width": 1440, + "height": 900 + }, + "bodyScrollWidth": 1440, + "bodyOverflowX": 0, + "mainRect": { + "left": 288, + "top": 0, + "right": 1440, + "bottom": 900, + "width": 1152, + "height": 900 + }, + "mainClientWidth": 1152, + "mainScrollWidth": 1152, + "mainOverflowX": 0, + "visibleTableCount": 1, + "tables": [ + { + "selector": "table", + "label": "标题 项目 负责人 优先级 状态 操作 当前没有符合条件的待办。", + "rect": { + "left": 354, + "top": 599, + "right": 990, + "bottom": 724, + "width": 636, + "height": 125 + }, + "visibleInInitialViewport": true + } + ], + "interactiveCount": 8, + "initialInteractiveCount": 8, + "offscreenInteractives": [], + "smallTouchTargets": [], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 4, + "textareas": 0 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/travel-requests", + "title": "差旅", + "group": "backup", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "mobile": false + }, + "durationMs": 2433, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/desktop1440-travel-requests.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/travel-requests?tab=requests", + "viewport": { + "width": 1440, + "height": 900 + }, + "bodyScrollWidth": 1440, + "bodyOverflowX": 0, + "mainRect": { + "left": 288, + "top": 0, + "right": 1440, + "bottom": 1323, + "width": 1152, + "height": 1323 + }, + "mainClientWidth": 1152, + "mainScrollWidth": 1152, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 24, + "initialInteractiveCount": 16, + "offscreenInteractives": [], + "smallTouchTargets": [], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 17, + "textareas": 1 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/weekly-reports", + "title": "周报", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "mobile": false + }, + "durationMs": 2753, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/desktop1440-weekly-reports.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/weekly-reports", + "viewport": { + "width": 1440, + "height": 900 + }, + "bodyScrollWidth": 1440, + "bodyOverflowX": 0, + "mainRect": { + "left": 288, + "top": 0, + "right": 1440, + "bottom": 1843, + "width": 1152, + "height": 1843 + }, + "mainClientWidth": 1152, + "mainScrollWidth": 1152, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 17, + "initialInteractiveCount": 6, + "offscreenInteractives": [], + "smallTouchTargets": [], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 9, + "textareas": 6 + } + }, + "probes": [], + "api": null + }, + { + "route": { + "path": "/workflow/tasks", + "title": "审批待办", + "group": "backup", + "expectedEmployee": false + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "mobile": false + }, + "durationMs": 1594, + "navError": null, + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/desktop1440-workflow-tasks.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "title": "海音达工作台", + "path": "/403", + "viewport": { + "width": 1440, + "height": 900 + }, + "bodyScrollWidth": 1440, + "bodyOverflowX": 0, + "mainRect": { + "left": 0, + "top": 0, + "right": 1440, + "bottom": 900, + "width": 1440, + "height": 900 + }, + "mainClientWidth": 1440, + "mainScrollWidth": 1440, + "mainOverflowX": 0, + "visibleTableCount": 0, + "tables": [], + "interactiveCount": 2, + "initialInteractiveCount": 2, + "offscreenInteractives": [], + "smallTouchTargets": [ + { + "selector": "a", + "label": "返回仪表盘", + "rect": { + "left": 626, + "top": 492, + "right": 706, + "bottom": 516, + "width": 80, + "height": 24 + } + }, + { + "selector": "a", + "label": "查看账号信息", + "rect": { + "left": 718, + "top": 492, + "right": 814, + "bottom": 516, + "width": 96, + "height": 24 + } + } + ], + "clippedText": [], + "scrollableOverflow": [], + "known": { + "invoice-pool-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-pool-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "invoice-mobile-row": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-mobile-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursements-table": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "reimbursement-mobile-card": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-file": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-capture-upload": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-list": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-detail": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + }, + "mobile-approvals-queue": { + "count": 0, + "visibleCount": 0, + "initialVisibleCount": 0 + } + }, + "fileInputs": [], + "forms": { + "controls": 0, + "textareas": 0 + } + }, + "probes": [], + "api": null + } + ], + "findings": [ + { + "severity": "HIGH", + "route": "/assets", + "viewport": "mobile360", + "code": "MOBILE_VISIBLE_TABLE_MAIN", + "symptom": "主区域首屏仍可见 1 个表格。", + "evidence": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-assets.png", + "recommendation": "移动端改为卡片或分组列表,桌面表格仅在 md 以上显示。" + }, + { + "severity": "HIGH", + "route": "/contracts-registry", + "viewport": "mobile360", + "code": "API_403_IN_PAGE", + "symptom": "页面可进入但存在 API 403 请求。", + "evidence": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-contracts-registry.png", + "recommendation": "统一导航权限、路由权限与页面内 API 权限,避免员工看到空白/半错误页面。" + }, + { + "severity": "HIGH", + "route": "/invoice-pool", + "viewport": "mobile360", + "code": "MOBILE_VISIBLE_TABLE_MAIN", + "symptom": "主区域首屏仍可见 1 个表格。", + "evidence": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-invoice-pool.png", + "recommendation": "移动端改为卡片或分组列表,桌面表格仅在 md 以上显示。" + }, + { + "severity": "HIGH", + "route": "/invoice-pool", + "viewport": "mobile360", + "code": "OFFSCREEN_INTERACTIVE_MAIN", + "symptom": "主区域可交互控件跑出视口:more_horiz {\"left\":779,\"top\":641,\"right\":807,\"bottom\":674,\"width\":28,\"height\":33}。", + "evidence": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-invoice-pool.png", + "recommendation": "移动端操作入口必须在 360/390px 内可见,必要时改为卡片底部按钮或底部操作栏。" + }, + { + "severity": "MEDIUM", + "route": "/invoice-pool", + "viewport": "mobile360", + "code": "SMALL_TOUCH_TARGET_CLUSTER", + "symptom": "首屏存在 4 个小触控目标。", + "evidence": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-invoice-pool.png", + "recommendation": "移动端按钮、图标按钮、复选框外层点击区域统一不低于 40-44px。" + }, + { + "severity": "HIGH", + "route": "/notifications", + "viewport": "mobile360", + "code": "MOBILE_VISIBLE_TABLE_MAIN", + "symptom": "主区域首屏仍可见 1 个表格。", + "evidence": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-notifications.png", + "recommendation": "移动端改为卡片或分组列表,桌面表格仅在 md 以上显示。" + }, + { + "severity": "MEDIUM", + "route": "/notifications", + "viewport": "mobile360", + "code": "SMALL_TOUCH_TARGET_CLUSTER", + "symptom": "首屏存在 3 个小触控目标。", + "evidence": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-notifications.png", + "recommendation": "移动端按钮、图标按钮、复选框外层点击区域统一不低于 40-44px。" + }, + { + "severity": "HIGH", + "route": "/purchase-requests", + "viewport": "mobile360", + "code": "MOBILE_VISIBLE_TABLE_MAIN", + "symptom": "主区域首屏仍可见 1 个表格。", + "evidence": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-purchase-requests.png", + "recommendation": "移动端改为卡片或分组列表,桌面表格仅在 md 以上显示。" + }, + { + "severity": "HIGH", + "route": "/assets", + "viewport": "mobile390", + "code": "MOBILE_VISIBLE_TABLE_MAIN", + "symptom": "主区域首屏仍可见 1 个表格。", + "evidence": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-assets.png", + "recommendation": "移动端改为卡片或分组列表,桌面表格仅在 md 以上显示。" + }, + { + "severity": "HIGH", + "route": "/contracts-registry", + "viewport": "mobile390", + "code": "API_403_IN_PAGE", + "symptom": "页面可进入但存在 API 403 请求。", + "evidence": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-contracts-registry.png", + "recommendation": "统一导航权限、路由权限与页面内 API 权限,避免员工看到空白/半错误页面。" + }, + { + "severity": "HIGH", + "route": "/invoice-pool", + "viewport": "mobile390", + "code": "MOBILE_VISIBLE_TABLE_MAIN", + "symptom": "主区域首屏仍可见 1 个表格。", + "evidence": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-invoice-pool.png", + "recommendation": "移动端改为卡片或分组列表,桌面表格仅在 md 以上显示。" + }, + { + "severity": "HIGH", + "route": "/invoice-pool", + "viewport": "mobile390", + "code": "OFFSCREEN_INTERACTIVE_MAIN", + "symptom": "主区域可交互控件跑出视口:more_horiz {\"left\":779,\"top\":641,\"right\":807,\"bottom\":674,\"width\":28,\"height\":33}。", + "evidence": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-invoice-pool.png", + "recommendation": "移动端操作入口必须在 360/390px 内可见,必要时改为卡片底部按钮或底部操作栏。" + }, + { + "severity": "MEDIUM", + "route": "/invoice-pool", + "viewport": "mobile390", + "code": "SMALL_TOUCH_TARGET_CLUSTER", + "symptom": "首屏存在 4 个小触控目标。", + "evidence": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-invoice-pool.png", + "recommendation": "移动端按钮、图标按钮、复选框外层点击区域统一不低于 40-44px。" + }, + { + "severity": "HIGH", + "route": "/invoice-pool", + "viewport": "mobile390", + "code": "SOURCE_LIVE_PARITY_INVOICE_MOBILE", + "symptom": "源码已有 invoice-pool-mobile-list,但公网 mobile390 可见数=0,table 可见数=1。", + "evidence": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-invoice-pool.png", + "recommendation": "优先排查公网构建版本、缓存/Caddy 静态文件、Tailwind 产物是否未部署最新。" + }, + { + "severity": "HIGH", + "route": "/notifications", + "viewport": "mobile390", + "code": "MOBILE_VISIBLE_TABLE_MAIN", + "symptom": "主区域首屏仍可见 1 个表格。", + "evidence": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-notifications.png", + "recommendation": "移动端改为卡片或分组列表,桌面表格仅在 md 以上显示。" + }, + { + "severity": "MEDIUM", + "route": "/notifications", + "viewport": "mobile390", + "code": "SMALL_TOUCH_TARGET_CLUSTER", + "symptom": "首屏存在 3 个小触控目标。", + "evidence": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-notifications.png", + "recommendation": "移动端按钮、图标按钮、复选框外层点击区域统一不低于 40-44px。" + }, + { + "severity": "HIGH", + "route": "/purchase-requests", + "viewport": "mobile390", + "code": "MOBILE_VISIBLE_TABLE_MAIN", + "symptom": "主区域首屏仍可见 1 个表格。", + "evidence": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-purchase-requests.png", + "recommendation": "移动端改为卡片或分组列表,桌面表格仅在 md 以上显示。" + }, + { + "severity": "HIGH", + "route": "/reimbursements", + "viewport": "mobile390", + "code": "SOURCE_LIVE_PARITY_REIMBURSEMENT_MOBILE", + "symptom": "源码已有 reimbursements-mobile-list,但公网 mobile390 可见数=0,table 可见数=1。", + "evidence": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-reimbursements.png", + "recommendation": "排查部署版本或 CSS 断点产物;草稿再次编辑能力应通过移动卡片的“继续编辑”入口暴露。" + }, + { + "severity": "HIGH", + "route": "/contracts-registry", + "viewport": "desktop1440", + "code": "API_403_IN_PAGE", + "symptom": "页面可进入但存在 API 403 请求。", + "evidence": "/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/desktop1440-contracts-registry.png", + "recommendation": "统一导航权限、路由权限与页面内 API 权限,避免员工看到空白/半错误页面。" + } + ] +} \ No newline at end of file diff --git a/artifacts/r93/main-region-audit-report.md b/artifacts/r93/main-region-audit-report.md new file mode 100644 index 00000000..f5a5576b --- /dev/null +++ b/artifacts/r93/main-region-audit-report.md @@ -0,0 +1,85 @@ +# R93 主区域深度视觉审计报告 + +生成日期:2026-05-05 + +## 范围 + +- 环境:`https://oa.hyinda.com` +- 员工视角路由:27 个 +- 视口:mobile360、mobile390、desktop1440 +- 页面结果:84 +- 发现项:19 +- 补充数据探针:`artifacts/r93/live-data-probe-2026-05-05.json` +- 修复复测:`artifacts/r93/remediation-report.md` +- 部署后视觉复测:`artifacts/r93/post-deploy-visual-check-2026-05-05.json` +- 原始 JSON:`artifacts/r93/main-region-audit-2026-05-05.json` +- 问题 CSV:`artifacts/r93/main-region-issue-log.csv` +- 截图目录:`output/playwright/r93-main-region-audit/` + +## 自动化检查项 + +- 主区域横向溢出与可见表格 +- 首屏可交互控件是否跑出手机视口 +- 移动端触控目标尺寸 +- 主区域文本裁切 +- 票据中心/报销列表移动卡片 test id 是否在公网可见 +- 移动票据上传是否支持多文件选择 +- 票据池与草稿报销只读 API 状态探针 + +说明:主区域审计 JSON 内的逐页 `api` 字段由浏览器原生 `fetch` 采集,未复用前端运行态 Bearer token,出现 401 时不作为业务接口失败证据。已用 `live-data-probe-2026-05-05.json` 重新执行带 token 的只读探针。 + +## 汇总 + +| 类型 | 数量 | +| --- | ---: | +| MOBILE_VISIBLE_TABLE_MAIN | 8 | +| SMALL_TOUCH_TARGET_CLUSTER | 4 | +| API_403_IN_PAGE | 3 | +| OFFSCREEN_INTERACTIVE_MAIN | 2 | +| SOURCE_LIVE_PARITY_INVOICE_MOBILE | 1 | +| SOURCE_LIVE_PARITY_REIMBURSEMENT_MOBILE | 1 | + +补充人工归类: + +| 类型 | 数量 | +| --- | ---: | +| SOURCE_LIVE_PARITY_MOBILE_CAPTURE_MULTIPLE | 1 | + +## 高优先级样本 + +- VA-D001 /assets mobile360+mobile390 MOBILE_VISIBLE_TABLE_MAIN:主区域首屏仍可见 1 个表格。 +- VA-D002 /contracts-registry mobile360+mobile390+desktop1440 API_403_IN_PAGE:页面可进入但存在 API 403 请求。 +- VA-D003 /invoice-pool mobile360+mobile390 MOBILE_VISIBLE_TABLE_MAIN:主区域首屏仍可见 1 个表格。 +- VA-D004 /invoice-pool mobile360+mobile390 OFFSCREEN_INTERACTIVE_MAIN:主区域可交互控件跑出视口:more_horiz {"left":779,"top":641,"right":807,"bottom":674,"width":28,"height":33}。 +- VA-D006 /notifications mobile360+mobile390 MOBILE_VISIBLE_TABLE_MAIN:主区域首屏仍可见 1 个表格。 +- VA-D008 /purchase-requests mobile360+mobile390 MOBILE_VISIBLE_TABLE_MAIN:主区域首屏仍可见 1 个表格。 +- VA-D009 /invoice-pool mobile390 SOURCE_LIVE_PARITY_INVOICE_MOBILE:源码已有 invoice-pool-mobile-list,但公网 mobile390 可见数=0,table 可见数=1。 +- VA-D010 /reimbursements mobile390 SOURCE_LIVE_PARITY_REIMBURSEMENT_MOBILE:源码已有 reimbursements-mobile-list,但公网 mobile390 可见数=0,table 可见数=1。 +- VA-D011 /mobile/capture mobile390 SOURCE_LIVE_PARITY_MOBILE_CAPTURE_MULTIPLE:源码文件选择器已支持 multiple,但公网 DOM 中 multiple=false,解释了“手机端一次只能选一张”的现象。 + +## 数据探针结论 + +- 票据池:`/api/invoice-pool?page=1&pageSize=20&ownerScope=own` 返回 200;当前共 1 张票据,状态为 `available`,OCR provider 为 `tencent`,没有 `pending_ocr` 或 `ocr_failed` 样本。 +- 草稿报销:`/api/reimbursements?status=draft&page=1&pageSize=20&scope=own` 返回 200;当前员工账号草稿数为 0,因此本轮无法用真实草稿复现“再次编辑”链路。 +- 合同台账依赖:`/api/employees?page=1&pageSize=100&status=active` 返回 403,确认不是截图误报,而是员工视角页面内请求了无权限接口。 +- 移动上传:本地源码的 `mobile-capture-file` 已有 `multiple`,公网 DOM 缺失 `multiple`,优先按部署/缓存不一致处理;若确认是企业微信内置浏览器限制,则需要改成“连续添加到待上传队列”的交互。 + +## 关键结论 + +1. 公网页面的移动端问题在 360px 下更明显,应把 360px 纳入后续视觉回归门槛。 +2. 票据中心和报销列表源码中已经存在移动卡片 test id,但公网 mobile390 仍可能显示桌面表格,优先怀疑部署产物或缓存,而不是先重写组件。 +3. 移动票据上传源码已支持 `multiple`,但公网 DOM 没有 `multiple`,这是明确的源码/公网差异。 +4. 合同台账员工视角仍有 API 403 噪声,应纳入权限一致性专项。 + +## 修复状态 + +2026-05-05 已重新构建并重启公网 server 镜像,以下问题已由部署一致性修复: + +- `/invoice-pool` mobile390:移动列表可见,桌面表格不可见,无出屏操作按钮。 +- `/reimbursements` mobile390:移动列表可见,桌面表格不可见。 +- `/mobile/capture` mobile390:文件 input 的 `multiple=true`。 + +保留后续专项: + +- R94:资产、通知、采购等移动端表格清零。 +- R95:合同台账员工视角 API 403 与多角色权限一致性。 diff --git a/artifacts/r93/main-region-issue-log.csv b/artifacts/r93/main-region-issue-log.csv new file mode 100644 index 00000000..879d84c2 --- /dev/null +++ b/artifacts/r93/main-region-issue-log.csv @@ -0,0 +1,12 @@ +ID,Severity,Page,Viewport,Category,Symptom,Evidence,Recommendation,Status +VA-D001,HIGH,/assets,mobile360+mobile390,MOBILE_VISIBLE_TABLE_MAIN,主区域首屏仍可见 1 个表格。,/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-assets.png,移动端改为卡片或分组列表,桌面表格仅在 md 以上显示。,TODO +VA-D002,HIGH,/contracts-registry,mobile360+mobile390+desktop1440,API_403_IN_PAGE,页面可进入但存在 API 403 请求。,/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-contracts-registry.png,统一导航权限、路由权限与页面内 API 权限,避免员工看到空白/半错误页面。,TODO +VA-D003,HIGH,/invoice-pool,mobile360+mobile390,MOBILE_VISIBLE_TABLE_MAIN,主区域首屏仍可见 1 个表格。,/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-invoice-pool.png,移动端改为卡片或分组列表,桌面表格仅在 md 以上显示。,DONE +VA-D004,HIGH,/invoice-pool,mobile360+mobile390,OFFSCREEN_INTERACTIVE_MAIN,"主区域可交互控件跑出视口:more_horiz {""left"":779,""top"":641,""right"":807,""bottom"":674,""width"":28,""height"":33}。",/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-invoice-pool.png,移动端操作入口必须在 360/390px 内可见,必要时改为卡片底部按钮或底部操作栏。,DONE +VA-D005,MEDIUM,/invoice-pool,mobile360+mobile390,SMALL_TOUCH_TARGET_CLUSTER,首屏存在 4 个小触控目标。,/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-invoice-pool.png,移动端按钮、图标按钮、复选框外层点击区域统一不低于 40-44px。,TODO +VA-D006,HIGH,/notifications,mobile360+mobile390,MOBILE_VISIBLE_TABLE_MAIN,主区域首屏仍可见 1 个表格。,/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-notifications.png,移动端改为卡片或分组列表,桌面表格仅在 md 以上显示。,TODO +VA-D007,MEDIUM,/notifications,mobile360+mobile390,SMALL_TOUCH_TARGET_CLUSTER,首屏存在 3 个小触控目标。,/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-notifications.png,移动端按钮、图标按钮、复选框外层点击区域统一不低于 40-44px。,TODO +VA-D008,HIGH,/purchase-requests,mobile360+mobile390,MOBILE_VISIBLE_TABLE_MAIN,主区域首屏仍可见 1 个表格。,/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile360-purchase-requests.png,移动端改为卡片或分组列表,桌面表格仅在 md 以上显示。,TODO +VA-D009,HIGH,/invoice-pool,mobile390,SOURCE_LIVE_PARITY_INVOICE_MOBILE,源码已有 invoice-pool-mobile-list,但公网 mobile390 可见数=0,table 可见数=1。,/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-invoice-pool.png,优先排查公网构建版本、缓存/Caddy 静态文件、Tailwind 产物是否未部署最新。,DONE +VA-D010,HIGH,/reimbursements,mobile390,SOURCE_LIVE_PARITY_REIMBURSEMENT_MOBILE,源码已有 reimbursements-mobile-list,但公网 mobile390 可见数=0,table 可见数=1。,/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-reimbursements.png,排查部署版本或 CSS 断点产物;草稿再次编辑能力应通过移动卡片的“继续编辑”入口暴露。,DONE +VA-D011,HIGH,/mobile/capture,mobile390,SOURCE_LIVE_PARITY_MOBILE_CAPTURE_MULTIPLE,源码已有 mobile-capture-file multiple,但公网 DOM 中 multiple=false,符合用户反馈的一次只能选择一张票据。,/home/shunli/Projects/hyb-oa/output/playwright/r93-main-region-audit/mobile390-mobile-capture.png;artifacts/r93/live-data-probe-2026-05-05.json,优先排查部署版本/Caddy 静态文件缓存;若确认是企业微信内置浏览器限制多选,则改为连续添加到待上传队列并明确提示。,DONE diff --git a/artifacts/r93/post-deploy-data-probe-2026-05-05.json b/artifacts/r93/post-deploy-data-probe-2026-05-05.json new file mode 100644 index 00000000..0669a902 --- /dev/null +++ b/artifacts/r93/post-deploy-data-probe-2026-05-05.json @@ -0,0 +1,20 @@ +{ + "generatedAt": "2026-05-05T15:52:41.944Z", + "baseURL": "https://oa.hyinda.com", + "invoicePool": { + "status": 200, + "total": 1, + "byStatus": { + "available": 1 + }, + "byProvider": { + "tencent": 1 + }, + "pendingOrFailedSamples": [] + }, + "draftReimbursements": { + "status": 200, + "total": 0, + "samples": [] + } +} \ No newline at end of file diff --git a/artifacts/r93/post-deploy-visual-check-2026-05-05.json b/artifacts/r93/post-deploy-visual-check-2026-05-05.json new file mode 100644 index 00000000..cbd1ee38 --- /dev/null +++ b/artifacts/r93/post-deploy-visual-check-2026-05-05.json @@ -0,0 +1,71 @@ +{ + "generatedAt": "2026-05-05T15:52:08.207Z", + "baseURL": "https://oa.hyinda.com", + "viewport": "mobile390", + "results": [ + { + "route": "/invoice-pool", + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-post-deploy/mobile390-invoice-pool.png", + "metrics": { + "path": "/invoice-pool", + "width": 390, + "tableVisible": false, + "visibleTableCount": 0, + "invoiceMobileListVisible": true, + "invoiceMobileRows": 1, + "reimbursementMobileListVisible": false, + "reimbursementMobileCards": 0, + "mobileCaptureFileExists": false, + "mobileCaptureMultiple": null, + "offscreenButtons": [], + "bodyOverflowX": 0 + } + }, + { + "route": "/reimbursements", + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-post-deploy/mobile390-reimbursements.png", + "metrics": { + "path": "/reimbursements", + "width": 390, + "tableVisible": false, + "visibleTableCount": 0, + "invoiceMobileListVisible": false, + "invoiceMobileRows": 0, + "reimbursementMobileListVisible": true, + "reimbursementMobileCards": 0, + "mobileCaptureFileExists": false, + "mobileCaptureMultiple": null, + "offscreenButtons": [], + "bodyOverflowX": 0 + } + }, + { + "route": "/mobile/capture", + "screenshot": "/home/shunli/Projects/hyb-oa/output/playwright/r93-post-deploy/mobile390-mobile-capture.png", + "metrics": { + "path": "/mobile/capture", + "width": 390, + "tableVisible": false, + "visibleTableCount": 0, + "invoiceMobileListVisible": false, + "invoiceMobileRows": 0, + "reimbursementMobileListVisible": false, + "reimbursementMobileCards": 0, + "mobileCaptureFileExists": true, + "mobileCaptureMultiple": true, + "offscreenButtons": [], + "bodyOverflowX": 0 + } + } + ], + "invoiceProbe": null, + "consoleErrors": [ + "Failed to load resource: the server responded with a status of 401 ()" + ], + "httpErrors": [ + { + "status": 401, + "url": "https://oa.hyinda.com/api/auth/refresh" + } + ] +} \ No newline at end of file diff --git a/artifacts/r93/remediation-report.md b/artifacts/r93/remediation-report.md new file mode 100644 index 00000000..83283e12 --- /dev/null +++ b/artifacts/r93/remediation-report.md @@ -0,0 +1,33 @@ +# R93 修复与复测报告 + +生成日期:2026-05-05 + +## 已处理 + +1. 公网前端部署一致性 + - 根因:远端源码已更新,但运行中的 Docker 镜像仍使用旧 `/app/client/dist`。 + - 处理:在 `118.89.77.218` 重新构建并重启 `hyb-oa-trialrun-server`。 + - 远端 smoke:`smoke-external-deps.js` 通过,`smoke-trialrun-runtime.js` 通过。 + +2. 手机端票据/报销/上传公网表现 + - 复测文件:`artifacts/r93/post-deploy-visual-check-2026-05-05.json` + - `/invoice-pool` mobile390:`tableVisible=false`,`invoiceMobileListVisible=true`,`offscreenButtons=[]` + - `/reimbursements` mobile390:`tableVisible=false`,`reimbursementMobileListVisible=true`,`offscreenButtons=[]` + - `/mobile/capture` mobile390:`mobileCaptureMultiple=true`,`offscreenButtons=[]` + +3. live OCR 自动化假失败 + - 根因:helper 使用 `not.toBe("pending_ocr")`,在详情文本短暂为空或未稳定时可能提前返回。 + - 处理:改为显式等待 `available | ocr_failed` 终态;断言使用 helper 返回的终态字段。 + - 复测:真实腾讯 OCR 用例通过。 + +## 当前数据 + +- 数据探针:`artifacts/r93/post-deploy-data-probe-2026-05-05.json` +- 票据池:公网员工账号当前可读,OCR provider 为 `tencent`,票据状态为 `available`,没有 `pending_ocr` 或 `ocr_failed` 样本。 +- 草稿报销:公网员工账号当前草稿数为 0,不能用真实草稿继续复现“再次编辑”链路;移动列表入口已恢复可见。 + +## 保留问题 + +- `/assets`、`/notifications`、`/purchase-requests` 等页面仍有移动端表格专项,建议进入 R94。 +- `/contracts-registry` 员工视角仍请求 `/api/employees` 并返回 403,建议进入 R95 权限一致性专项。 +- `cd client && npx playwright test tests/e2e/r92-mobile-invoice-usability.spec.ts ...` 本轮未作为通过门禁,原因是该用例默认依赖本地 `127.0.0.1:3000`,当前本地未启动服务;公网视觉复测已覆盖本次部署问题。 diff --git a/artifacts/r93/visual-audit-issue-log.csv b/artifacts/r93/visual-audit-issue-log.csv new file mode 100644 index 00000000..6c1b7896 --- /dev/null +++ b/artifacts/r93/visual-audit-issue-log.csv @@ -0,0 +1,16 @@ +ID,Severity,Page,Viewport,Category,Symptom,Evidence,Recommendation,Status +VA-001,HIGH,/invoice-pool,mobile390,mobile-table-overflow,"手机票据中心仍显示桌面表格,发票号码列和操作列被裁切,more_horiz 操作按钮跑到 390px 视口外。","output/playwright/r93-visual-audit-session/mobile390-invoice-pool.png;JSON: table=1, offscreen button right=807","优先修复为移动端卡片列表,隐藏桌面 table;详情字段改为分行 label/value,并加入视觉回归断言。",TODO +VA-002,HIGH,/reimbursements,mobile390,mobile-table-layout,"手机报销列表仍显示表格结构,空列表时尚可阅读,但有数据时很容易出现操作列不可达;与此前草稿可编辑诉求相关。","output/playwright/r93-visual-audit-session/mobile390-reimbursements.png;JSON: visibleTableCount=1","确认生产构建是否包含 R92 移动卡片改动;若组件已写卡片但公网仍显示表格,优先检查部署版本或 className 透传;否则补移动卡片。",TODO +VA-003,HIGH,/team,mobile390,mobile-table-layout,"团队列表在手机端以表格展示,部门/状态列被挤压为窄竖排,成员信息扫描效率差。","output/playwright/r93-visual-audit-session/mobile390-team.png;JSON: visibleTableCount=1","改为成员卡片:姓名、部门、今日状态、备注纵向展示;保留筛选按钮。",TODO +VA-004,HIGH,/leave-requests,mobile390,mobile-table-layout,"请假记录区域在手机端仍是表格,列名被拆成竖排;当前无记录时影响较小,有记录后会明显难读。","output/playwright/r93-visual-audit-session/mobile390-leave-requests.png;JSON: visibleTableCount=1","请假记录改为卡片式列表,展示假种、时间、天数、状态、操作。",TODO +VA-005,HIGH,/assets,mobile390,mobile-table-layout,"资产分类和资产列表两个区域在手机端仍有表格,列头拥挤;复选框触控目标也偏小。","output/playwright/r93-visual-audit-session/mobile390-assets.png;JSON: visibleTableCount=2, small checkbox 16x16","资产分类/资产卡片改成移动卡片或折叠列表;复选框外层增加可点区域。",TODO +VA-006,HIGH,/purchase-requests,mobile390,mobile-table-layout,"采购单列表在手机端仍显示表格;当前无数据时可接受,但后续有单据后操作列可能不可达。","output/playwright/r93-visual-audit-session/mobile390-purchase-requests.png;JSON: visibleTableCount=1","采购列表改为移动卡片;菜单按钮保持至少 44px 宽度。",TODO +VA-007,HIGH,/todos,mobile390,mobile-table-layout,"待办页手机端仍可见表格。","output/playwright/r93-visual-audit-session/mobile390-todos.png;JSON: visibleTableCount=1","待办列表改为任务卡片,优先展示标题、优先级、截止日期、状态和完成动作。",TODO +VA-008,HIGH,/notifications,mobile390,mobile-table-layout,"通知页手机端仍显示表格,标题/时间/状态/操作列拥挤。","output/playwright/r93-visual-audit-session/mobile390-notifications.png;JSON: visibleTableCount=1","通知改为消息卡片,按未读/类型筛选;操作放在卡片底部。",TODO +VA-009,HIGH,/attendance,mobile390,mobile-table-layout,"考勤页手机端仍可见表格且存在出屏交互风险。","output/playwright/r93-visual-audit-session/mobile390-attendance.png;JSON: visibleTableCount=1","考勤记录改为日期卡片或月历式摘要;管理员补录入口保持桌面优先。",TODO +VA-010,HIGH,/contracts-registry,mobile390+desktop1440,permission-noise,"合同台账页面可进入,但控制台出现 403 resource 错误;用户看不到明确错误,但自动化记录为 JS_ERROR。","output/playwright/r93-visual-audit-session/mobile390-contracts-registry.png;JSON: console error 403 x2","核对合同台账页面与 API 权限:若员工可进入页面,应避免后台请求未授权接口;若不应进入,应在导航和路由层统一隐藏/403。",TODO +VA-011,MEDIUM,multiple,mobile390,topbar-breadcrumb,"手机顶栏显示原始路径并被截断,例如 /invoice...、/purchase...,占用首屏且对国内用户不友好。","output/playwright/r93-visual-audit-session/mobile390-invoice-pool.png;output/playwright/r93-visual-audit-session/mobile390-purchase-requests.png","手机端顶栏改为中文页面名或隐藏路径,只保留返回/菜单、搜索、通知和用户入口。",TODO +VA-012,MEDIUM,/travel-requests,mobile390,heavy-mobile-form,"差旅页虽然没有表格溢出,但手机端表单很长,字段密集,一次创建差旅申请负担较重。","output/playwright/r93-visual-audit-session/mobile390-travel-requests.png","拆分为步骤式表单:基础信息、行程段、预算/成本中心;底部固定保存按钮。",TODO +VA-013,LOW,multiple,mobile390,touch-target,"若干移动页存在 16-28px 的小触控目标,包含复选框、短文本链接和图标菜单。","artifacts/r93/visual-audit-session-2026-05-05.json;SMALL_TOUCH_TARGET=14","统一移动端 touch target 最小 40-44px;复选框/短链增加外层点击区域。",TODO +VA-014,INFO,multiple,desktop1440,audit-false-positive,"桌面端 CLIPPED_TEXT 大多来自固定左侧导航滚动容器,初步判断为脚本误报,不作为优先缺陷。","artifacts/r93/visual-audit-session-2026-05-05.json;desktop CLIPPED_TEXT 多指向主导航容器","后续视觉脚本排除固定侧栏容器,聚焦 main 区域,减少噪声。",TODO +VA-015,INFO,multiple,role-coverage,coverage-gap,"本轮使用 employee@hyinda.com,只覆盖员工视角;审批、财务、管理员页面存在权限边界,不能代表全角色视觉质量。","artifacts/r93/visual-audit-session-2026-05-05.json;EXPECTED_FORBIDDEN=12","后续补 manager、finance、admin 三类账号的会话复用视觉巡检,并按角色输出独立问题清单。",TODO diff --git a/artifacts/r93/visual-audit-report.md b/artifacts/r93/visual-audit-report.md new file mode 100644 index 00000000..6e1fe22c --- /dev/null +++ b/artifacts/r93/visual-audit-report.md @@ -0,0 +1,104 @@ +# R93 公网页面视觉自动化巡检报告 + +生成日期:2026-05-05 + +## 范围 + +- 环境:`https://oa.hyinda.com` +- 账号:`employee@hyinda.com` +- 路由:27 个员工视角可达或可探测路由 +- 视口: + - `mobile390`: 390 x 844 + - `desktop1440`: 1440 x 900 +- 原始结果:`artifacts/r93/visual-audit-session-2026-05-05.json` +- 顶栏交互结果:`artifacts/r93/interaction-audit-2026-05-05.json` +- 截图目录:`output/playwright/r93-visual-audit-session/` +- 顶栏交互截图:`output/playwright/r93-interaction-audit/` +- 问题清单:`artifacts/r93/visual-audit-issue-log.csv` + +## 方法 + +本轮使用 Playwright 真实浏览器自动化,采用“每个视口登录一次、复用同一会话逐页巡检”的方式,避免频繁登录造成公网会话噪声。 + +每个页面记录: + +- 页面截图 +- 最终 URL +- JS `pageerror` / console error +- HTTP 5xx 与异常请求失败 +- 横向溢出 +- 手机端可见 `table` +- 跑出视口的可交互控件 +- 过小触控目标 +- 文本裁切 + +## 汇总 + +- 路由数:27 +- 视口数:2 +- 页面结果数:54 +- 自动化发现数:66 + +自动化分类: + +| 类型 | 数量 | 说明 | +| --- | ---: | --- | +| `MOBILE_VISIBLE_TABLE` | 9 | 手机端仍显示表格 | +| `OFFSCREEN_INTERACTIVE` | 1 | 可交互控件跑出视口 | +| `JS_ERROR` | 2 | 控制台资源 403 | +| `REQUEST_FAILED` | 1 | 请求被中断,需结合页面行为复核 | +| `CLIPPED_TEXT` | 27 | 大部分为顶栏路径或桌面侧栏误报 | +| `SMALL_TOUCH_TARGET` | 14 | 小触控目标 | +| `EXPECTED_FORBIDDEN` | 12 | 员工账号无权限,记录为覆盖边界 | + +## 高优先级问题 + +1. 票据中心手机端仍显示桌面表格,操作按钮跑出 390px 视口。 + - 证据:`output/playwright/r93-visual-audit-session/mobile390-invoice-pool.png` + - 指标:`visibleTableCount=1`,`offscreen button right=807` + - 建议:优先进入 R93 修复,改为移动卡片并加入视觉断言。 + +2. 报销、团队、请假、资产、采购、待办、通知、考勤等页面在手机端仍可见表格。 + - 证据:对应 `mobile390-*.png` + - 建议:按使用频率分批卡片化。10 人以下公司优先处理报销、票据、请假、团队、待办。 + +3. 合同台账页面出现 403 资源错误。 + - 证据:`output/playwright/r93-visual-audit-session/mobile390-contracts-registry.png` + - 指标:console error 403 x2 + - 建议:核对页面权限与 API 权限是否一致。若员工可进入页面,后台请求不应打未授权接口;若不应进入,导航和路由应统一隐藏或 403。 + +## 中低优先级问题 + +1. 手机顶栏显示原始路径并被截断。 + - 例如 `/invoice...`、`/purchase...` + - 建议:手机端显示中文页面名,或隐藏路径。 + +2. 差旅申请手机表单过长。 + - 当前没有明显溢出,但一次性表单负担较重。 + - 建议:后续拆成步骤式表单。 + +3. 多处小触控目标。 + - 主要是复选框、短文本链接、图标菜单。 + - 建议:移动端统一 40-44px 最小可点击区域。 + +## 覆盖限制 + +本轮只使用员工账号。经理、财务、管理员页面需要后续单独跑角色视角视觉巡检,否则审批、付款、系统设置等页面只能视为未充分覆盖。 + +## 交互抽查 + +补充对手机顶栏核心入口做了点击验证: + +| 检查项 | 结果 | 证据 | +| --- | --- | --- | +| 打开/关闭侧边菜单 | 通过 | `output/playwright/r93-interaction-audit/mobile390-portal-menu-open.png` | +| 打开/关闭全局搜索 | 通过 | `output/playwright/r93-interaction-audit/mobile390-portal-search-open.png` | +| 打开/关闭通知下拉 | 通过 | `output/playwright/r93-interaction-audit/mobile390-portal-notifications-open.png` | + +结论:当前手机端主要问题不是顶栏入口无法点击,而是进入业务页面后,内容区仍有大量桌面表格和字段挤压。 + +## 后续建议 + +1. R93 先修 `票据中心 + live OCR 自动化假失败 + runbook`。 +2. R94 做“移动端表格清零专项”,优先级:报销、请假、团队、待办、通知、采购、资产、考勤。 +3. R95 做多角色视觉巡检与权限一致性检查,至少覆盖 manager、finance、admin。 diff --git a/artifacts/r93/visual-audit-session-2026-05-05.json b/artifacts/r93/visual-audit-session-2026-05-05.json new file mode 100644 index 00000000..df247520 --- /dev/null +++ b/artifacts/r93/visual-audit-session-2026-05-05.json @@ -0,0 +1,5972 @@ +{ + "summary": { + "generatedAt": "2026-05-05T15:12:26.028Z", + "baseURL": "https://oa.hyinda.com", + "user": { + "identifier": "employee@hyinda.com" + }, + "routeCount": 27, + "viewportCount": 2, + "resultCount": 54, + "findingCount": 66, + "findingsByCode": { + "SMALL_TOUCH_TARGET": 14, + "MOBILE_VISIBLE_TABLE": 9, + "EXPECTED_FORBIDDEN": 12, + "JS_ERROR": 2, + "CLIPPED_TEXT": 27, + "OFFSCREEN_INTERACTIVE": 1, + "REQUEST_FAILED": 1 + } + }, + "results": [ + { + "route": { + "path": "/portal", + "title": "Portal", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "isMobileAudit": true + }, + "durationMs": 2984, + "screenshot": "output/playwright/r93-visual-audit-session/mobile390-portal.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/portal", + "title": "海音达工作台", + "innerWidth": 390, + "innerHeight": 844, + "documentScrollWidth": 390, + "bodyScrollWidth": 390, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 0, + "y": 0, + "width": 390, + "height": 2743, + "right": 390, + "bottom": 2743 + }, + "visibleTableCount": 0, + "visibleTables": [], + "offscreenInteractive": [], + "smallTouchTargets": [ + { + "tag": "a", + "text": "查看团队页", + "testId": "", + "rect": { + "x": 37, + "y": 1758, + "width": 70, + "height": 16, + "right": 107, + "bottom": 1774 + } + }, + { + "tag": "a", + "text": "查看全部", + "testId": "", + "rect": { + "x": 305, + "y": 2160, + "width": 48, + "height": 20, + "right": 353, + "bottom": 2180 + } + }, + { + "tag": "a", + "text": "公告页", + "testId": "", + "rect": { + "x": 37, + "y": 2338, + "width": 42, + "height": 16, + "right": 79, + "bottom": 2354 + } + } + ], + "clippedText": [], + "headings": [ + { + "text": "你好,Employee", + "rect": { + "x": 37, + "y": 182, + "width": 316, + "height": 32, + "right": 353, + "bottom": 214 + } + }, + { + "text": "今日待办聚合", + "rect": { + "x": 37, + "y": 880, + "width": 316, + "height": 24, + "right": 353, + "bottom": 904 + } + }, + { + "text": "快捷操作栏", + "rect": { + "x": 37, + "y": 1156, + "width": 316, + "height": 24, + "right": 353, + "bottom": 1180 + } + }, + { + "text": "团队全员状态", + "rect": { + "x": 37, + "y": 1666, + "width": 316, + "height": 24, + "right": 353, + "bottom": 1690 + } + }, + { + "text": "近期动态流", + "rect": { + "x": 37, + "y": 2246, + "width": 316, + "height": 24, + "right": 353, + "bottom": 2270 + } + }, + { + "text": "暂无近期动态", + "rect": { + "x": 70, + "y": 2471, + "width": 250, + "height": 24, + "right": 320, + "bottom": 2495 + } + }, + { + "text": "我的申请与资产", + "rect": { + "x": 58, + "y": 2743, + "width": 274, + "height": 24, + "right": 332, + "bottom": 2767 + } + }, + { + "text": "继续工作", + "rect": { + "x": 58, + "y": 3229, + "width": 274, + "height": 24, + "right": 332, + "bottom": 3253 + } + } + ], + "visibleTextStart": "工作台 Portal 你好,Employee search Employee 个人工作台 你好,Employee 先处理今天必须完成的事,再继续查看项目、周报和公告。 我的待办 0 arrow_forward 今日状态 未更新 arrow_forward 更新今日状态 本周周报 待填写 arrow_forward 待填写 我的项目 0 arrow_forward 今日待办聚合 合并审批、TODO 和高风险指标,只保留今天最该处理的事。 warning 本周周报:待填写 工作台 关注 进入处理 快捷操作栏 保留每天真正高频的动作,不把所有入口都放在首屏。 event_available 提交请假" + }, + "findings": [ + { + "code": "SMALL_TOUCH_TARGET", + "severity": "low", + "detail": "a:查看团队页 70x16 | a:查看全部 48x20 | a:公告页 42x16" + } + ] + }, + { + "route": { + "path": "/team", + "title": "团队", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "isMobileAudit": true + }, + "durationMs": 2594, + "screenshot": "output/playwright/r93-visual-audit-session/mobile390-team.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/team", + "title": "海音达工作台", + "innerWidth": 390, + "innerHeight": 844, + "documentScrollWidth": 390, + "bodyScrollWidth": 390, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 0, + "y": 0, + "width": 390, + "height": 2131, + "right": 390, + "bottom": 2131 + }, + "visibleTableCount": 1, + "visibleTables": [ + { + "testId": "", + "rect": { + "x": 41, + "y": 1570, + "width": 308, + "height": 516, + "right": 349, + "bottom": 2086 + }, + "scrollWidth": 308, + "clientWidth": 308, + "text": "成员\t部门\t状态\t备注\n\nE\nEmployee\n试运行员工\n\t公司\t未更新\t-\n\n王顺\n王顺利\n员工\n\t管理部\t未更新\t-\n\n马建\n马建勇\n员工\n\t管理部\t未更新\t-\n\nSA\nSmoke Admin\nSmoke Admin\n\t管理部\t未更新" + } + ], + "offscreenInteractive": [], + "smallTouchTargets": [], + "clippedText": [], + "headings": [ + { + "text": "团队状态", + "rect": { + "x": 16, + "y": 141, + "width": 358, + "height": 48, + "right": 374, + "bottom": 189 + } + }, + { + "text": "更新我的今日状态", + "rect": { + "x": 41, + "y": 354, + "width": 308, + "height": 24, + "right": 349, + "bottom": 378 + } + }, + { + "text": "今日汇总", + "rect": { + "x": 41, + "y": 754, + "width": 308, + "height": 24, + "right": 349, + "bottom": 778 + } + }, + { + "text": "团队列表", + "rect": { + "x": 41, + "y": 1522, + "width": 64, + "height": 24, + "right": 105, + "bottom": 1546 + } + } + ], + "visibleTextStart": "主导航 团队 你好,Employee search Employee 团队状态 不做打卡,只管理今天谁在岗 / 居家 / 外出 / 出差 / 请假。 今日 历史 更新我的今日状态 在岗 居家 外出 出差 保存状态 当前:未更新 今日汇总 office 0 remote 0 out 0 travel 0 leave 0 unspecified 6 total 6 团队列表 全部 在岗 不在岗 成员 部门 状态 备注 E Employee 试运行员工 公司 未更新 - 王顺 王顺利 员工 管理部 未更新 - 马建 马建勇 员工 管理部 未更新 - SA Smoke Admin Smoke Admi" + }, + "findings": [ + { + "code": "MOBILE_VISIBLE_TABLE", + "severity": "high", + "detail": "手机视口可见 table 1 个" + } + ] + }, + { + "route": { + "path": "/leave-requests", + "title": "请假", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "isMobileAudit": true + }, + "durationMs": 2809, + "screenshot": "output/playwright/r93-visual-audit-session/mobile390-leave-requests.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/leave-requests", + "title": "海音达工作台", + "innerWidth": 390, + "innerHeight": 844, + "documentScrollWidth": 390, + "bodyScrollWidth": 390, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 0, + "y": 0, + "width": 390, + "height": 3132, + "right": 390, + "bottom": 3132 + }, + "visibleTableCount": 1, + "visibleTables": [ + { + "testId": "", + "rect": { + "x": 38, + "y": 2855, + "width": 314, + "height": 175, + "right": 352, + "bottom": 3030 + }, + "scrollWidth": 314, + "clientWidth": 314, + "text": "假种 / 申请人\t时间段\t天数\t状态\t附件\t更新时间\t操作\n暂无请假记录" + } + ], + "offscreenInteractive": [], + "smallTouchTargets": [], + "clippedText": [], + "headings": [ + { + "text": "请假申请", + "rect": { + "x": 16, + "y": 141, + "width": 336, + "height": 48, + "right": 352, + "bottom": 189 + } + }, + { + "text": "新建请假草稿", + "rect": { + "x": 37, + "y": 874, + "width": 266, + "height": 24, + "right": 303, + "bottom": 898 + } + }, + { + "text": "额度概览", + "rect": { + "x": 37, + "y": 1826, + "width": 316, + "height": 24, + "right": 353, + "bottom": 1850 + } + }, + { + "text": "请假记录", + "rect": { + "x": 37, + "y": 2614, + "width": 316, + "height": 24, + "right": 353, + "bottom": 2638 + } + } + ], + "visibleTextStart": "主导航 请假 你好,Employee search Employee 请假申请 支持假种选择、半天粒度请假、额度冻结与撤回释放。 可用额度 30.0 按当前启用假种汇总 已冻结 0.0 审批中申请会占用额度 已使用 0.0 通过后计入已使用 本次预估 - 创建草稿前可先预览天数 新建请假草稿 先填写时间段与假种,再补充附件和说明。 假期类型 请选择 年假 病假 事假 开始日期 开始时段 上午 下午 结束日期 结束时段 上午 下午 附件 附件为可选项 请假说明 预计请假天数:- 创建草稿 额度概览 假种可用额度、冻结与已使用情况按自然周期汇总。 年假 2026-01-01 ~ 2026-12-3" + }, + "findings": [ + { + "code": "MOBILE_VISIBLE_TABLE", + "severity": "high", + "detail": "手机视口可见 table 1 个" + } + ] + }, + { + "route": { + "path": "/reimbursements", + "title": "报销", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "isMobileAudit": true + }, + "durationMs": 2452, + "screenshot": "output/playwright/r93-visual-audit-session/mobile390-reimbursements.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/reimbursements", + "title": "海音达工作台", + "innerWidth": 390, + "innerHeight": 844, + "documentScrollWidth": 390, + "bodyScrollWidth": 390, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 0, + "y": 0, + "width": 390, + "height": 1338, + "right": 390, + "bottom": 1338 + }, + "visibleTableCount": 1, + "visibleTables": [ + { + "testId": "reimbursements-table", + "rect": { + "x": 17, + "y": 1084, + "width": 362, + "height": 165, + "right": 379, + "bottom": 1249 + }, + "scrollWidth": 362, + "clientWidth": 362, + "text": "单号\t状态\t金额\t报销人\t日期\t操作\n暂无数据" + } + ], + "offscreenInteractive": [], + "smallTouchTargets": [], + "clippedText": [], + "headings": [ + { + "text": "我的报销", + "rect": { + "x": 16, + "y": 141, + "width": 275, + "height": 48, + "right": 291, + "bottom": 189 + } + } + ], + "visibleTextStart": "主导航 报销 你好,Employee search Employee 我的报销 报销列表、详情与提交/撤回/支付动作入口。 新建报销 导出 当前列表 0 共 0 条记录 当前金额 ¥0.00 按当前页与筛选统计 审批中 0 待继续推进的报销单 已支付 0 当前范围:仅自己 草稿 审批中 已通过 已支付 已驳回 已取消 单号 状态 金额 报销人 日期 操作 暂无数据 第 1 / 1 页 上一页 下一页" + }, + "findings": [ + { + "code": "MOBILE_VISIBLE_TABLE", + "severity": "high", + "detail": "手机视口可见 table 1 个" + } + ] + }, + { + "route": { + "path": "/assets", + "title": "资产", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "isMobileAudit": true + }, + "durationMs": 2526, + "screenshot": "output/playwright/r93-visual-audit-session/mobile390-assets.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/assets", + "title": "海音达工作台", + "innerWidth": 390, + "innerHeight": 844, + "documentScrollWidth": 390, + "bodyScrollWidth": 390, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 0, + "y": 0, + "width": 390, + "height": 1413, + "right": 390, + "bottom": 1413 + }, + "visibleTableCount": 2, + "visibleTables": [ + { + "testId": "", + "rect": { + "x": 42, + "y": 695, + "width": 306, + "height": 40, + "right": 348, + "bottom": 735 + }, + "scrollWidth": 306, + "clientWidth": 306, + "text": "编码\t名称\t状态" + }, + { + "testId": "", + "rect": { + "x": 42, + "y": 1095, + "width": 306, + "height": 92, + "right": 348, + "bottom": 1187 + }, + "scrollWidth": 306, + "clientWidth": 306, + "text": "资产\t分类\t状态\t归属人\n暂无资产卡片" + } + ], + "offscreenInteractive": [], + "smallTouchTargets": [ + { + "tag": "input", + "text": "", + "testId": "", + "rect": { + "x": 41, + "y": 660, + "width": 16, + "height": 16, + "right": 57, + "bottom": 676 + } + } + ], + "clippedText": [], + "headings": [ + { + "text": "资产台账", + "rect": { + "x": 16, + "y": 141, + "width": 358, + "height": 48, + "right": 374, + "bottom": 189 + } + }, + { + "text": "资产分类", + "rect": { + "x": 41, + "y": 354, + "width": 64, + "height": 24, + "right": 105, + "bottom": 378 + } + } + ], + "visibleTextStart": "主导航 资产 你好,Employee search Employee 资产台账 维护资产分类与资产卡片,支持法体、成本中心和采购来源引用。 移动扫码查找 资产分类 分类编码 分类名称 单据分类 使用系统默认 固定资产卡片 (ASSET_CARD_DEFAULT) 启用分类 编码 名称 状态 全部状态 库存中 使用中 维修中 已退役 已归档 全部分类 全部法体 试运行法体 全部成本中心 全部归属人 资产 分类 状态 归属人 暂无资产卡片 请先从列表选择资产卡片,或点击“新建资产卡片”。" + }, + "findings": [ + { + "code": "MOBILE_VISIBLE_TABLE", + "severity": "high", + "detail": "手机视口可见 table 2 个" + }, + { + "code": "SMALL_TOUCH_TARGET", + "severity": "low", + "detail": "input: 16x16" + } + ] + }, + { + "route": { + "path": "/weekly-reports", + "title": "周报", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "isMobileAudit": true + }, + "durationMs": 2605, + "screenshot": "output/playwright/r93-visual-audit-session/mobile390-weekly-reports.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/weekly-reports", + "title": "海音达工作台", + "innerWidth": 390, + "innerHeight": 844, + "documentScrollWidth": 390, + "bodyScrollWidth": 390, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 0, + "y": 0, + "width": 390, + "height": 2429, + "right": 390, + "bottom": 2429 + }, + "visibleTableCount": 0, + "visibleTables": [], + "offscreenInteractive": [], + "smallTouchTargets": [ + { + "tag": "input", + "text": "", + "testId": "", + "rect": { + "x": 37, + "y": 1644, + "width": 13, + "height": 13, + "right": 50, + "bottom": 1657 + } + } + ], + "clippedText": [], + "headings": [ + { + "text": "周报", + "rect": { + "x": 16, + "y": 141, + "width": 358, + "height": 48, + "right": 374, + "bottom": 189 + } + }, + { + "text": "本周周报", + "rect": { + "x": 37, + "y": 1076, + "width": 266, + "height": 24, + "right": 303, + "bottom": 1100 + } + }, + { + "text": "项目关联", + "rect": { + "x": 37, + "y": 1726, + "width": 308, + "height": 24, + "right": 345, + "bottom": 1750 + } + } + ], + "visibleTextStart": "主导航 周报 你好,Employee search Employee 周报 固定三段结构:本周完成、当前阻塞、下周计划,可按项目拆分进展。 按周归档 默认按周一归档;提交后会同步更新 Portal 与项目摘要。 当前状态 待完善 保存后可继续补充 关联项目 0 共 0 个我的项目可选 需协助 否 勾选后会在管理首页高亮 团队缺口 - 仅管理员可见 本周周报 先写本周完成,再补当前阻塞和下周计划。 本周完成 当前阻塞 下周计划 需要老板/管理员协助 项目关联 项目进展、风险与下一步动作建议按项目拆开写。 新增项目进展 选择项目 移除 转成待办 保存草稿 提交周报" + }, + "findings": [ + { + "code": "SMALL_TOUCH_TARGET", + "severity": "low", + "detail": "input: 13x13" + } + ] + }, + { + "route": { + "path": "/todos", + "title": "待办", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "isMobileAudit": true + }, + "durationMs": 2526, + "screenshot": "output/playwright/r93-visual-audit-session/mobile390-todos.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/todos", + "title": "海音达工作台", + "innerWidth": 390, + "innerHeight": 844, + "documentScrollWidth": 390, + "bodyScrollWidth": 390, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 0, + "y": 0, + "width": 390, + "height": 1684, + "right": 390, + "bottom": 1684 + }, + "visibleTableCount": 1, + "visibleTables": [ + { + "testId": "", + "rect": { + "x": 38, + "y": 1129, + "width": 314, + "height": 127, + "right": 352, + "bottom": 1256 + }, + "scrollWidth": 314, + "clientWidth": 314, + "text": "标题\t项目\t负责人\t优先级\t状态\t操作\n当前没有符合条件的待办。" + } + ], + "offscreenInteractive": [], + "smallTouchTargets": [], + "clippedText": [], + "headings": [ + { + "text": "待办", + "rect": { + "x": 16, + "y": 141, + "width": 358, + "height": 48, + "right": 374, + "bottom": 189 + } + }, + { + "text": "待办列表", + "rect": { + "x": 37, + "y": 1032, + "width": 316, + "height": 24, + "right": 353, + "bottom": 1056 + } + }, + { + "text": "新增待办", + "rect": { + "x": 37, + "y": 1323, + "width": 316, + "height": 24, + "right": 353, + "bottom": 1347 + } + } + ], + "visibleTextStart": "主导航 待办 你好,Employee search Employee 待办 员工维护个人待办,老板看高优先级和未完成项。支持直接挂到项目。 全部待办 0 当前筛选结果 待处理 0 建议优先清空新增事项 进行中 0 重点跟进阻塞项 已完成 0 已完成项会持续留痕 按状态筛选后,列表只保留当前关注的工作项。 全部状态 todo doing done cancelled 刷新列表 待办列表 暂无待办,建议从当前周计划或项目动作拆出任务。 标题 项目 负责人 优先级 状态 操作 当前没有符合条件的待办。 新增待办 建议把周报计划、项目跟进或临时事项都拆成清晰动作。 不关联项目 新建待办" + }, + "findings": [ + { + "code": "MOBILE_VISIBLE_TABLE", + "severity": "high", + "detail": "手机视口可见 table 1 个" + } + ] + }, + { + "route": { + "path": "/announcements", + "title": "公告", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "isMobileAudit": true + }, + "durationMs": 2366, + "screenshot": "output/playwright/r93-visual-audit-session/mobile390-announcements.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/announcements", + "title": "海音达工作台", + "innerWidth": 390, + "innerHeight": 844, + "documentScrollWidth": 390, + "bodyScrollWidth": 390, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 0, + "y": 0, + "width": 390, + "height": 844, + "right": 390, + "bottom": 844 + }, + "visibleTableCount": 0, + "visibleTables": [], + "offscreenInteractive": [], + "smallTouchTargets": [], + "clippedText": [], + "headings": [ + { + "text": "公告", + "rect": { + "x": 16, + "y": 141, + "width": 274, + "height": 48, + "right": 290, + "bottom": 189 + } + } + ], + "visibleTextStart": "主导航 公告 你好,Employee search Employee 公告 全员查看公司通知、制度链接和 FAQ 入口。" + }, + "findings": [] + }, + { + "route": { + "path": "/projects", + "title": "项目", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "isMobileAudit": true + }, + "durationMs": 2535, + "screenshot": "output/playwright/r93-visual-audit-session/mobile390-projects.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/projects", + "title": "海音达工作台", + "innerWidth": 390, + "innerHeight": 844, + "documentScrollWidth": 390, + "bodyScrollWidth": 390, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 0, + "y": 0, + "width": 390, + "height": 1549, + "right": 390, + "bottom": 1549 + }, + "visibleTableCount": 0, + "visibleTables": [], + "offscreenInteractive": [], + "smallTouchTargets": [], + "clippedText": [], + "headings": [ + { + "text": "项目", + "rect": { + "x": 16, + "y": 141, + "width": 358, + "height": 48, + "right": 374, + "bottom": 189 + } + }, + { + "text": "项目列表", + "rect": { + "x": 37, + "y": 1172, + "width": 224, + "height": 24, + "right": 261, + "bottom": 1196 + } + }, + { + "text": "新建项目", + "rect": { + "x": 37, + "y": 1396, + "width": 238, + "height": 24, + "right": 275, + "bottom": 1420 + } + } + ], + "visibleTextStart": "主导航 项目 你好,Employee search Employee 项目 轻项目主档、成员、里程碑、任务与风险统一在 OA 内跟进。 合同台账 当前项目 0 当前筛选结果 进行中 0 优先跟进活跃项目 逾期里程碑 0 建议先处理延期事项 未关闭风险 0 问题留痕建议绑定责任人 全部状态 草稿 进行中 暂停 完成 归档 切换到我的 项目列表 按项目名、客户或状态快速缩小范围 当前没有符合筛选条件的项目。 新建项目 先建主档,再补成员、里程碑与风险。 你当前只有查看权限,项目创建入口仅对老板 / 管理员 / 项目管理角色开放。" + }, + "findings": [] + }, + { + "route": { + "path": "/attendance", + "title": "考勤", + "group": "backup", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "isMobileAudit": true + }, + "durationMs": 2845, + "screenshot": "output/playwright/r93-visual-audit-session/mobile390-attendance.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/attendance", + "title": "海音达工作台", + "innerWidth": 390, + "innerHeight": 844, + "documentScrollWidth": 390, + "bodyScrollWidth": 390, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 0, + "y": 0, + "width": 390, + "height": 3746, + "right": 390, + "bottom": 3746 + }, + "visibleTableCount": 1, + "visibleTables": [ + { + "testId": "", + "rect": { + "x": 37, + "y": 1896, + "width": 316, + "height": 1809, + "right": 353, + "bottom": 3705 + }, + "scrollWidth": 316, + "clientWidth": 316, + "text": "日期\t上班\t下班\t工时\t状态\t备注\n2026-05-01\t-\t-\t-\t缺卡\t-\n2026-05-02\t-\t-\t-\t周末\t周末\n2026-05-03\t-\t-\t-\t周末\t周末\n2026-05-04\t-\t-\t-\t缺卡\t-\n2026-05-05\t-" + } + ], + "offscreenInteractive": [], + "smallTouchTargets": [], + "clippedText": [], + "headings": [ + { + "text": "考勤", + "rect": { + "x": 16, + "y": 141, + "width": 252, + "height": 48, + "right": 268, + "bottom": 189 + } + }, + { + "text": "今日打卡状态", + "rect": { + "x": 37, + "y": 326, + "width": 316, + "height": 24, + "right": 353, + "bottom": 350 + } + }, + { + "text": "本月统计", + "rect": { + "x": 37, + "y": 1032, + "width": 316, + "height": 24, + "right": 353, + "bottom": 1056 + } + }, + { + "text": "本月打卡记录", + "rect": { + "x": 37, + "y": 1824, + "width": 224, + "height": 24, + "right": 261, + "bottom": 1848 + } + } + ], + "visibleTextStart": "备用模块 考勤 你好,Employee search Employee 考勤 上下班打卡、月度统计和团队补卡入口。 我的考勤 今日打卡状态 工作日支持上下班打卡;请假、差旅、节假日与周末会自动免打卡。 点击打上班卡 考勤日期 2026-05-05 上班时间 - 下班时间 - 今日工时 - 今日尚未打上班卡 本月统计 缺卡仅统计应出勤工作日;请假、差旅、节假日和周末自动排除。 应出勤 21 已打卡 0 迟到 0 早退 0 缺卡 21 本月打卡记录 逐日展示上下班时间、工时和状态。 日期 上班 下班 工时 状态 备注 2026-05-01 - - - 缺卡 - 2026-05-02 - - - 周" + }, + "findings": [ + { + "code": "MOBILE_VISIBLE_TABLE", + "severity": "high", + "detail": "手机视口可见 table 1 个" + } + ] + }, + { + "route": { + "path": "/workflow/tasks", + "title": "审批待办", + "group": "backup", + "expectedEmployee": false + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "isMobileAudit": true + }, + "durationMs": 2359, + "screenshot": "output/playwright/r93-visual-audit-session/mobile390-workflow-tasks.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/403", + "title": "海音达工作台", + "innerWidth": 390, + "innerHeight": 844, + "documentScrollWidth": 390, + "bodyScrollWidth": 390, + "horizontalOverflow": 0, + "hasForbiddenText": true, + "hasLoginForm": false, + "mainRect": null, + "visibleTableCount": 0, + "visibleTables": [], + "offscreenInteractive": [], + "smallTouchTargets": [ + { + "tag": "a", + "text": "返回仪表盘", + "testId": "", + "rect": { + "x": 101, + "y": 474, + "width": 80, + "height": 24, + "right": 181, + "bottom": 498 + } + }, + { + "tag": "a", + "text": "查看账号信息", + "testId": "", + "rect": { + "x": 193, + "y": 474, + "width": 96, + "height": 24, + "right": 289, + "bottom": 498 + } + } + ], + "clippedText": [], + "headings": [ + { + "text": "无权限访问", + "rect": { + "x": 57, + "y": 374, + "width": 276, + "height": 32, + "right": 333, + "bottom": 406 + } + } + ], + "visibleTextStart": "403 无权限访问 当前账号没有访问该页面的权限,请联系管理员或返回可访问页面。 返回仪表盘 查看账号信息" + }, + "findings": [ + { + "code": "EXPECTED_FORBIDDEN", + "severity": "info", + "detail": "员工账号无权限,记录为覆盖边界而非缺陷" + }, + { + "code": "SMALL_TOUCH_TARGET", + "severity": "low", + "detail": "a:返回仪表盘 80x24 | a:查看账号信息 96x24" + } + ] + }, + { + "route": { + "path": "/contracts-registry", + "title": "合同台账", + "group": "backup", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "isMobileAudit": true + }, + "durationMs": 2615, + "screenshot": "output/playwright/r93-visual-audit-session/mobile390-contracts-registry.png", + "consoleErrors": [ + "Failed to load resource: the server responded with a status of 403 ()", + "Failed to load resource: the server responded with a status of 403 ()" + ], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/contracts-registry", + "title": "海音达工作台", + "innerWidth": 390, + "innerHeight": 844, + "documentScrollWidth": 390, + "bodyScrollWidth": 390, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 0, + "y": 0, + "width": 390, + "height": 2927, + "right": 390, + "bottom": 2927 + }, + "visibleTableCount": 0, + "visibleTables": [], + "offscreenInteractive": [], + "smallTouchTargets": [], + "clippedText": [], + "headings": [ + { + "text": "合同台账", + "rect": { + "x": 16, + "y": 141, + "width": 358, + "height": 48, + "right": 374, + "bottom": 189 + } + }, + { + "text": "新建合同台账", + "rect": { + "x": 41, + "y": 568, + "width": 308, + "height": 24, + "right": 349, + "bottom": 592 + } + }, + { + "text": "台账列表", + "rect": { + "x": 41, + "y": 2206, + "width": 308, + "height": 24, + "right": 349, + "bottom": 2230 + } + } + ], + "visibleTextStart": "备用模块 合同台账 你好,Employee search Employee 合同台账 维护合同元数据、生命周期、到期预警与导出,不在 OA 存放涉密正文附件。 导出 CSV 导出 Excel 返回项目 到期预警 0 份合同将在 30 天内到期 展开到期列表 新建合同台账 补齐合同类型、金额、签署/生效/到期日期,续约将自动创建新的草稿合同。 合同编号 合同类型 采购合同 销售合同 服务合同 框架协议 其他 状态 active draft archived 关联项目 未关联 相对方 摘要 合同金额 币种 签署日期 生效日期 到期日期 归档位置 离线档案号 密级 公开 内部 机密 限制 责任人 默" + }, + "findings": [ + { + "code": "JS_ERROR", + "severity": "high", + "detail": "Failed to load resource: the server responded with a status of 403 () | Failed to load resource: the server responded with a status of 403 ()" + } + ] + }, + { + "route": { + "path": "/purchase-requests", + "title": "采购", + "group": "backup", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "isMobileAudit": true + }, + "durationMs": 2446, + "screenshot": "output/playwright/r93-visual-audit-session/mobile390-purchase-requests.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/purchase-requests", + "title": "海音达工作台", + "innerWidth": 390, + "innerHeight": 844, + "documentScrollWidth": 390, + "bodyScrollWidth": 390, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 0, + "y": 0, + "width": 390, + "height": 1059, + "right": 390, + "bottom": 1059 + }, + "visibleTableCount": 1, + "visibleTables": [ + { + "testId": "purchase-requests-table", + "rect": { + "x": 42, + "y": 681, + "width": 306, + "height": 92, + "right": 348, + "bottom": 773 + }, + "scrollWidth": 306, + "clientWidth": 306, + "text": "单据\t申请人\t状态\t金额\n暂无采购申请" + } + ], + "offscreenInteractive": [], + "smallTouchTargets": [ + { + "tag": "button", + "text": "打开菜单", + "testId": "", + "rect": { + "x": 16, + "y": 36, + "width": 24, + "height": 44, + "right": 40, + "bottom": 80 + } + } + ], + "clippedText": [ + { + "tag": "p", + "text": "/purchase-requests", + "rect": { + "x": 52, + "y": 32, + "width": 99, + "height": 28, + "right": 151, + "bottom": 60 + }, + "scrollWidth": 188, + "clientWidth": 99, + "scrollHeight": 28, + "clientHeight": 28, + "testId": "" + } + ], + "headings": [ + { + "text": "采购申请", + "rect": { + "x": 16, + "y": 141, + "width": 358, + "height": 48, + "right": 374, + "bottom": 189 + } + }, + { + "text": "采购单列表", + "rect": { + "x": 41, + "y": 640, + "width": 80, + "height": 24, + "right": 121, + "bottom": 664 + } + } + ], + "visibleTextStart": "工作台 /purchase-requests 你好,Employee search Employee 采购申请 支持草稿、附件、提交、撤回与经理单步审批的轻采购流程。 新建采购 全部状态 草稿 审批中 已通过 已驳回 已取消 全部供应商 全部法体 试运行法体 全部成本中心 采购单列表 共 0 条 单据 申请人 状态 金额 暂无采购申请 第 1 / 1 页 上一页 下一页 请先在左侧选择采购单,或新建一张采购草稿。" + }, + "findings": [ + { + "code": "MOBILE_VISIBLE_TABLE", + "severity": "high", + "detail": "手机视口可见 table 1 个" + }, + { + "code": "CLIPPED_TEXT", + "severity": "medium", + "detail": "p:/purchase-requests" + }, + { + "code": "SMALL_TOUCH_TARGET", + "severity": "low", + "detail": "button:打开菜单 24x44" + } + ] + }, + { + "route": { + "path": "/travel-requests", + "title": "差旅", + "group": "backup", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "isMobileAudit": true + }, + "durationMs": 2649, + "screenshot": "output/playwright/r93-visual-audit-session/mobile390-travel-requests.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/travel-requests?tab=requests", + "title": "海音达工作台", + "innerWidth": 390, + "innerHeight": 844, + "documentScrollWidth": 390, + "bodyScrollWidth": 390, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 0, + "y": 0, + "width": 390, + "height": 2635, + "right": 390, + "bottom": 2635 + }, + "visibleTableCount": 0, + "visibleTables": [], + "offscreenInteractive": [], + "smallTouchTargets": [ + { + "tag": "button", + "text": "打开菜单", + "testId": "", + "rect": { + "x": 16, + "y": 36, + "width": 28, + "height": 44, + "right": 44, + "bottom": 80 + } + } + ], + "clippedText": [ + { + "tag": "p", + "text": "/travel-requests", + "rect": { + "x": 56, + "y": 32, + "width": 95, + "height": 28, + "right": 151, + "bottom": 60 + }, + "scrollWidth": 156, + "clientWidth": 95, + "scrollHeight": 28, + "clientHeight": 28, + "testId": "" + } + ], + "headings": [ + { + "text": "差旅管理", + "rect": { + "x": 16, + "y": 141, + "width": 358, + "height": 48, + "right": 374, + "bottom": 189 + } + }, + { + "text": "暂无差旅申请", + "rect": { + "x": 70, + "y": 791, + "width": 250, + "height": 24, + "right": 320, + "bottom": 815 + } + }, + { + "text": "新建差旅申请", + "rect": { + "x": 41, + "y": 1010, + "width": 308, + "height": 28, + "right": 349, + "bottom": 1038 + } + }, + { + "text": "行程段", + "rect": { + "x": 41, + "y": 1898, + "width": 48, + "height": 24, + "right": 89, + "bottom": 1922 + } + } + ], + "visibleTextStart": "工作台 /travel-requests 你好,Employee search Employee 差旅管理 差旅申请、对公支付轨道与批次对账在同一路径统一收口。 新建差旅申请 差旅申请 状态 全部状态 草稿 审批中 已通过 已驳回 出差类型 全部类型 国内 国际 法体 全部法体 试运行法体 成本中心 全部成本中心 暂无差旅申请 点击右上角创建新的差旅草稿。 第 1 / 1 页 上一页 下一页 新建差旅申请 填写主单与行程段,保存为草稿后可继续编辑并提交审批。 出差目的 出差类型 国内 国际 预估金额 开始日期 结束日期 法体 请选择法体 试运行法体 成本中心 请选择成本中心 预算池 待提交时自" + }, + "findings": [ + { + "code": "CLIPPED_TEXT", + "severity": "medium", + "detail": "p:/travel-requests" + }, + { + "code": "SMALL_TOUCH_TARGET", + "severity": "low", + "detail": "button:打开菜单 28x44" + } + ] + }, + { + "route": { + "path": "/budgets", + "title": "预算", + "group": "backup", + "expectedEmployee": false + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "isMobileAudit": true + }, + "durationMs": 2393, + "screenshot": "output/playwright/r93-visual-audit-session/mobile390-budgets.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/403", + "title": "海音达工作台", + "innerWidth": 390, + "innerHeight": 844, + "documentScrollWidth": 390, + "bodyScrollWidth": 390, + "horizontalOverflow": 0, + "hasForbiddenText": true, + "hasLoginForm": false, + "mainRect": null, + "visibleTableCount": 0, + "visibleTables": [], + "offscreenInteractive": [], + "smallTouchTargets": [ + { + "tag": "a", + "text": "返回仪表盘", + "testId": "", + "rect": { + "x": 101, + "y": 474, + "width": 80, + "height": 24, + "right": 181, + "bottom": 498 + } + }, + { + "tag": "a", + "text": "查看账号信息", + "testId": "", + "rect": { + "x": 193, + "y": 474, + "width": 96, + "height": 24, + "right": 289, + "bottom": 498 + } + } + ], + "clippedText": [], + "headings": [ + { + "text": "无权限访问", + "rect": { + "x": 57, + "y": 374, + "width": 276, + "height": 32, + "right": 333, + "bottom": 406 + } + } + ], + "visibleTextStart": "403 无权限访问 当前账号没有访问该页面的权限,请联系管理员或返回可访问页面。 返回仪表盘 查看账号信息" + }, + "findings": [ + { + "code": "EXPECTED_FORBIDDEN", + "severity": "info", + "detail": "员工账号无权限,记录为覆盖边界而非缺陷" + }, + { + "code": "SMALL_TOUCH_TARGET", + "severity": "low", + "detail": "a:返回仪表盘 80x24 | a:查看账号信息 96x24" + } + ] + }, + { + "route": { + "path": "/payment-batches", + "title": "付款批次", + "group": "backup", + "expectedEmployee": false + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "isMobileAudit": true + }, + "durationMs": 2353, + "screenshot": "output/playwright/r93-visual-audit-session/mobile390-payment-batches.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/403", + "title": "海音达工作台", + "innerWidth": 390, + "innerHeight": 844, + "documentScrollWidth": 390, + "bodyScrollWidth": 390, + "horizontalOverflow": 0, + "hasForbiddenText": true, + "hasLoginForm": false, + "mainRect": null, + "visibleTableCount": 0, + "visibleTables": [], + "offscreenInteractive": [], + "smallTouchTargets": [ + { + "tag": "a", + "text": "返回仪表盘", + "testId": "", + "rect": { + "x": 101, + "y": 474, + "width": 80, + "height": 24, + "right": 181, + "bottom": 498 + } + }, + { + "tag": "a", + "text": "查看账号信息", + "testId": "", + "rect": { + "x": 193, + "y": 474, + "width": 96, + "height": 24, + "right": 289, + "bottom": 498 + } + } + ], + "clippedText": [], + "headings": [ + { + "text": "无权限访问", + "rect": { + "x": 57, + "y": 374, + "width": 276, + "height": 32, + "right": 333, + "bottom": 406 + } + } + ], + "visibleTextStart": "403 无权限访问 当前账号没有访问该页面的权限,请联系管理员或返回可访问页面。 返回仪表盘 查看账号信息" + }, + "findings": [ + { + "code": "EXPECTED_FORBIDDEN", + "severity": "info", + "detail": "员工账号无权限,记录为覆盖边界而非缺陷" + }, + { + "code": "SMALL_TOUCH_TARGET", + "severity": "low", + "detail": "a:返回仪表盘 80x24 | a:查看账号信息 96x24" + } + ] + }, + { + "route": { + "path": "/ap-operations", + "title": "应付运营", + "group": "backup", + "expectedEmployee": false + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "isMobileAudit": true + }, + "durationMs": 2397, + "screenshot": "output/playwright/r93-visual-audit-session/mobile390-ap-operations.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/403", + "title": "海音达工作台", + "innerWidth": 390, + "innerHeight": 844, + "documentScrollWidth": 390, + "bodyScrollWidth": 390, + "horizontalOverflow": 0, + "hasForbiddenText": true, + "hasLoginForm": false, + "mainRect": null, + "visibleTableCount": 0, + "visibleTables": [], + "offscreenInteractive": [], + "smallTouchTargets": [ + { + "tag": "a", + "text": "返回仪表盘", + "testId": "", + "rect": { + "x": 101, + "y": 474, + "width": 80, + "height": 24, + "right": 181, + "bottom": 498 + } + }, + { + "tag": "a", + "text": "查看账号信息", + "testId": "", + "rect": { + "x": 193, + "y": 474, + "width": 96, + "height": 24, + "right": 289, + "bottom": 498 + } + } + ], + "clippedText": [], + "headings": [ + { + "text": "无权限访问", + "rect": { + "x": 57, + "y": 374, + "width": 276, + "height": 32, + "right": 333, + "bottom": 406 + } + } + ], + "visibleTextStart": "403 无权限访问 当前账号没有访问该页面的权限,请联系管理员或返回可访问页面。 返回仪表盘 查看账号信息" + }, + "findings": [ + { + "code": "EXPECTED_FORBIDDEN", + "severity": "info", + "detail": "员工账号无权限,记录为覆盖边界而非缺陷" + }, + { + "code": "SMALL_TOUCH_TARGET", + "severity": "low", + "detail": "a:返回仪表盘 80x24 | a:查看账号信息 96x24" + } + ] + }, + { + "route": { + "path": "/invoice-pool", + "title": "票据中心", + "group": "backup", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "isMobileAudit": true + }, + "durationMs": 2502, + "screenshot": "output/playwright/r93-visual-audit-session/mobile390-invoice-pool.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/invoice-pool", + "title": "海音达工作台", + "innerWidth": 390, + "innerHeight": 844, + "documentScrollWidth": 390, + "bodyScrollWidth": 390, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 0, + "y": 0, + "width": 390, + "height": 1572, + "right": 390, + "bottom": 1572 + }, + "visibleTableCount": 1, + "visibleTables": [ + { + "testId": "invoice-pool-table", + "rect": { + "x": 42, + "y": 529, + "width": 789, + "height": 176, + "right": 831, + "bottom": 705 + }, + "scrollWidth": 789, + "clientWidth": 789, + "text": "票据流水号\t状态\t发票号码\t识别情况 (OCR)\t操作\n\n3c0ba5ae-e01b-4a58-8a6f-0e137134d0a0\n\t可用\t26112000000938423851-26112000000938423851\t解析成功\tmor" + } + ], + "offscreenInteractive": [ + { + "tag": "button", + "text": "more_horiz", + "testId": "", + "rect": { + "x": 779, + "y": 641, + "width": 28, + "height": 33, + "right": 807, + "bottom": 674 + } + } + ], + "smallTouchTargets": [ + { + "tag": "button", + "text": "more_horiz", + "testId": "", + "rect": { + "x": 779, + "y": 641, + "width": 28, + "height": 33, + "right": 807, + "bottom": 674 + } + } + ], + "clippedText": [ + { + "tag": "p", + "text": "/invoice-pool", + "rect": { + "x": 61, + "y": 32, + "width": 90, + "height": 28, + "right": 151, + "bottom": 60 + }, + "scrollWidth": 124, + "clientWidth": 90, + "scrollHeight": 28, + "clientHeight": 28, + "testId": "" + }, + { + "tag": "div", + "text": "票据流水号状态发票号码识别情况 (OCR)操作3c0ba5ae-e01b-4a58-8a6f-0e137134d0a0可用26112000000938423851-261120000009384238", + "rect": { + "x": 41, + "y": 528, + "width": 308, + "height": 178, + "right": 349, + "bottom": 706 + }, + "scrollWidth": 789, + "clientWidth": 306, + "scrollHeight": 176, + "clientHeight": 176, + "testId": "" + } + ], + "headings": [ + { + "text": "票据中心", + "rect": { + "x": 16, + "y": 141, + "width": 315, + "height": 48, + "right": 331, + "bottom": 189 + } + }, + { + "text": "上传票据(VAT OCR)", + "rect": { + "x": 41, + "y": 330, + "width": 308, + "height": 16, + "right": 349, + "bottom": 346 + } + }, + { + "text": "筛选与列表", + "rect": { + "x": 41, + "y": 488, + "width": 71, + "height": 16, + "right": 112, + "bottom": 504 + } + }, + { + "text": "绑定业务单据", + "rect": { + "x": 41, + "y": 840, + "width": 85, + "height": 16, + "right": 126, + "bottom": 856 + } + }, + { + "text": "详情轮询", + "rect": { + "x": 41, + "y": 1118, + "width": 308, + "height": 16, + "right": 349, + "bottom": 1134 + } + } + ], + "visibleTextStart": "工作台 /invoice-pool 你好,Employee search Employee 票据中心 支持上传、OCR 状态轮询、绑定报销与签名预览。 导出 上传票据(VAT OCR) cloud_upload 选择文件 上传并触发 OCR 筛选与列表 全部状态 识别中 可用 识别失败 已绑定 已归档 仅看自己 查看全部 票据流水号 状态 发票号码 识别情况 (OCR) 操作 3c0ba5ae-e01b-4a58-8a6f-0e137134d0a0 可用 26112000000938423851-26112000000938423851 解析成功 more_horiz 第 1 / 1 页 上一" + }, + "findings": [ + { + "code": "MOBILE_VISIBLE_TABLE", + "severity": "high", + "detail": "手机视口可见 table 1 个" + }, + { + "code": "OFFSCREEN_INTERACTIVE", + "severity": "high", + "detail": "button:more_horiz@right=807" + }, + { + "code": "CLIPPED_TEXT", + "severity": "medium", + "detail": "p:/invoice-pool | div:票据流水号状态发票号码识别情况 (OCR)操作3c0ba5ae-e01b-4a58-8a6f-0e137134d0a0可用26112000000938423851-261120000009384238" + }, + { + "code": "SMALL_TOUCH_TARGET", + "severity": "low", + "detail": "button:more_horiz 28x33" + } + ] + }, + { + "route": { + "path": "/inventory-checks", + "title": "盘点", + "group": "backup", + "expectedEmployee": false + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "isMobileAudit": true + }, + "durationMs": 2347, + "screenshot": "output/playwright/r93-visual-audit-session/mobile390-inventory-checks.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/403", + "title": "海音达工作台", + "innerWidth": 390, + "innerHeight": 844, + "documentScrollWidth": 390, + "bodyScrollWidth": 390, + "horizontalOverflow": 0, + "hasForbiddenText": true, + "hasLoginForm": false, + "mainRect": null, + "visibleTableCount": 0, + "visibleTables": [], + "offscreenInteractive": [], + "smallTouchTargets": [ + { + "tag": "a", + "text": "返回仪表盘", + "testId": "", + "rect": { + "x": 101, + "y": 474, + "width": 80, + "height": 24, + "right": 181, + "bottom": 498 + } + }, + { + "tag": "a", + "text": "查看账号信息", + "testId": "", + "rect": { + "x": 193, + "y": 474, + "width": 96, + "height": 24, + "right": 289, + "bottom": 498 + } + } + ], + "clippedText": [], + "headings": [ + { + "text": "无权限访问", + "rect": { + "x": 57, + "y": 374, + "width": 276, + "height": 32, + "right": 333, + "bottom": 406 + } + } + ], + "visibleTextStart": "403 无权限访问 当前账号没有访问该页面的权限,请联系管理员或返回可访问页面。 返回仪表盘 查看账号信息" + }, + "findings": [ + { + "code": "EXPECTED_FORBIDDEN", + "severity": "info", + "detail": "员工账号无权限,记录为覆盖边界而非缺陷" + }, + { + "code": "SMALL_TOUCH_TARGET", + "severity": "low", + "detail": "a:返回仪表盘 80x24 | a:查看账号信息 96x24" + } + ] + }, + { + "route": { + "path": "/dashboard", + "title": "仪表盘", + "group": "backup", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "isMobileAudit": true + }, + "durationMs": 2380, + "screenshot": "output/playwright/r93-visual-audit-session/mobile390-dashboard.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/dashboard", + "title": "海音达工作台", + "innerWidth": 390, + "innerHeight": 844, + "documentScrollWidth": 390, + "bodyScrollWidth": 390, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 0, + "y": 0, + "width": 390, + "height": 844, + "right": 390, + "bottom": 844 + }, + "visibleTableCount": 0, + "visibleTables": [], + "offscreenInteractive": [], + "smallTouchTargets": [], + "clippedText": [ + { + "tag": "p", + "text": "/dashboard", + "rect": { + "x": 63, + "y": 32, + "width": 88, + "height": 28, + "right": 151, + "bottom": 60 + }, + "scrollWidth": 110, + "clientWidth": 88, + "scrollHeight": 28, + "clientHeight": 28, + "testId": "" + } + ], + "headings": [ + { + "text": "仪表盘", + "rect": { + "x": 16, + "y": 141, + "width": 266, + "height": 48, + "right": 282, + "bottom": 189 + } + } + ], + "visibleTextStart": "工作台 /dashboard 你好,Employee search Employee 仪表盘 你当前没有看板权限,请联系管理员开通。 当前用户:Employee 所需权限:report.dashboard.view" + }, + "findings": [ + { + "code": "CLIPPED_TEXT", + "severity": "medium", + "detail": "p:/dashboard" + } + ] + }, + { + "route": { + "path": "/settings/profile", + "title": "个人设置", + "group": "settings", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "isMobileAudit": true + }, + "durationMs": 2658, + "screenshot": "output/playwright/r93-visual-audit-session/mobile390-settings-profile.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/settings/profile", + "title": "海音达工作台", + "innerWidth": 390, + "innerHeight": 844, + "documentScrollWidth": 390, + "bodyScrollWidth": 390, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 0, + "y": 0, + "width": 390, + "height": 2803, + "right": 390, + "bottom": 2803 + }, + "visibleTableCount": 0, + "visibleTables": [], + "offscreenInteractive": [], + "smallTouchTargets": [ + { + "tag": "input", + "text": "", + "testId": "", + "rect": { + "x": 37, + "y": 1112, + "width": 16, + "height": 16, + "right": 53, + "bottom": 1128 + } + } + ], + "clippedText": [], + "headings": [ + { + "text": "个人设置", + "rect": { + "x": 16, + "y": 157, + "width": 358, + "height": 48, + "right": 374, + "bottom": 205 + } + }, + { + "text": "基本信息", + "rect": { + "x": 37, + "y": 338, + "width": 252, + "height": 24, + "right": 289, + "bottom": 362 + } + }, + { + "text": "完整员工档案", + "rect": { + "x": 37, + "y": 756, + "width": 316, + "height": 24, + "right": 353, + "bottom": 780 + } + }, + { + "text": "外部通知推送", + "rect": { + "x": 37, + "y": 1014, + "width": 316, + "height": 24, + "right": 353, + "bottom": 1038 + } + }, + { + "text": "企业微信绑定", + "rect": { + "x": 37, + "y": 1268, + "width": 316, + "height": 24, + "right": 353, + "bottom": 1292 + } + }, + { + "text": "组织信息", + "rect": { + "x": 37, + "y": 1814, + "width": 316, + "height": 24, + "right": 353, + "bottom": 1838 + } + }, + { + "text": "账号状态与角色", + "rect": { + "x": 37, + "y": 2302, + "width": 316, + "height": 24, + "right": 353, + "bottom": 2326 + } + } + ], + "visibleTextStart": "账号设置 个人设置 你好,Employee search Employee 账号与入口 个人设置 维护个人资料、角色摘要与企业微信绑定状态。复杂业务仍在海音达工作台内完成,企业微信只负责进入与提醒。 账号正常 基本信息 员工可直接理解的个人资料与联系方式。 查看完整档案 姓名 Employee 员工号(系统生成) EMP001 邮箱 employee@hyinda.com 手机号 13900000001 完整员工档案 办公地点、紧急联系人、绩效和薪资等员工档案信息在完整档案页维护或查看。 进入完整档案页后,可按当前权限查看本人绩效、已发放工资条,并编辑自助开放的档案字段。 进入完整员工档案 外" + }, + "findings": [ + { + "code": "SMALL_TOUCH_TARGET", + "severity": "low", + "detail": "input: 16x16" + } + ] + }, + { + "route": { + "path": "/notifications", + "title": "通知", + "group": "settings", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "isMobileAudit": true + }, + "durationMs": 2360, + "screenshot": "output/playwright/r93-visual-audit-session/mobile390-notifications.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/notifications", + "title": "海音达工作台", + "innerWidth": 390, + "innerHeight": 844, + "documentScrollWidth": 390, + "bodyScrollWidth": 390, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 0, + "y": 0, + "width": 390, + "height": 844, + "right": 390, + "bottom": 844 + }, + "visibleTableCount": 1, + "visibleTables": [ + { + "testId": "notifications-table", + "rect": { + "x": 42, + "y": 475, + "width": 306, + "height": 86, + "right": 348, + "bottom": 561 + }, + "scrollWidth": 306, + "clientWidth": 306, + "text": "标题\t时间\t状态\t操作\n暂无通知" + } + ], + "offscreenInteractive": [], + "smallTouchTargets": [], + "clippedText": [ + { + "tag": "p", + "text": "/notifications", + "rect": { + "x": 60, + "y": 32, + "width": 91, + "height": 28, + "right": 151, + "bottom": 60 + }, + "scrollWidth": 128, + "clientWidth": 91, + "scrollHeight": 28, + "clientHeight": 28, + "testId": "" + } + ], + "headings": [ + { + "text": "通知", + "rect": { + "x": 16, + "y": 141, + "width": 140, + "height": 48, + "right": 156, + "bottom": 189 + } + } + ], + "visibleTextStart": "工作台 /notifications 你好,Employee search Employee 通知 站内通知与待办提醒。 全部标为已读 返回仪表盘 全部 未读 类型 全部 审批待办 报销 请假 采购 差旅 资产 盘点 未读 0 条 标题 时间 状态 操作 暂无通知 第 1 / 1 页 上一页 下一页" + }, + "findings": [ + { + "code": "MOBILE_VISIBLE_TABLE", + "severity": "high", + "detail": "手机视口可见 table 1 个" + }, + { + "code": "CLIPPED_TEXT", + "severity": "medium", + "detail": "p:/notifications" + } + ] + }, + { + "route": { + "path": "/mobile", + "title": "移动首页", + "group": "mobile", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "isMobileAudit": true + }, + "durationMs": 2539, + "screenshot": "output/playwright/r93-visual-audit-session/mobile390-mobile.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/mobile", + "title": "海音达工作台", + "innerWidth": 390, + "innerHeight": 844, + "documentScrollWidth": 390, + "bodyScrollWidth": 390, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 0, + "y": 0, + "width": 390, + "height": 1994, + "right": 390, + "bottom": 1994 + }, + "visibleTableCount": 0, + "visibleTables": [], + "offscreenInteractive": [], + "smallTouchTargets": [], + "clippedText": [ + { + "tag": "div", + "text": "Smoke Admin", + "rect": { + "x": 90, + "y": 1011, + "width": 86, + "height": 20, + "right": 176, + "bottom": 1031 + }, + "scrollWidth": 96, + "clientWidth": 86, + "scrollHeight": 20, + "clientHeight": 20, + "testId": "" + }, + { + "tag": "div", + "text": "Smoke Employee", + "rect": { + "x": 258, + "y": 1011, + "width": 86, + "height": 20, + "right": 344, + "bottom": 1031 + }, + "scrollWidth": 121, + "clientWidth": 86, + "scrollHeight": 20, + "clientHeight": 20, + "testId": "" + }, + { + "tag": "div", + "text": "Trialrun Admin", + "rect": { + "x": 90, + "y": 1121, + "width": 86, + "height": 20, + "right": 176, + "bottom": 1141 + }, + "scrollWidth": 101, + "clientWidth": 86, + "scrollHeight": 20, + "clientHeight": 20, + "testId": "" + } + ], + "headings": [ + { + "text": "今天", + "rect": { + "x": 16, + "y": 20, + "width": 280, + "height": 48, + "right": 296, + "bottom": 68 + } + } + ], + "visibleTextStart": "今天 先处理待办,再进入报销、票据和团队事项。 今日重点 移动端只保留高频动作,低频模块放到“我的”。 暂无审批待办 0 审批待办 0 未读通知 处理审批 查看待办并快速处理 发起报销 提交报销和查看进度 上传票据 拍照或选择文件上传 今日考勤 2026-05-05 · 当前时间 23:10:54 2026-05-05 今日尚未打上班卡。 上班打卡 团队状态 查看全员今日在岗、请假和打卡状态。 6 人 王顺 王顺利 暂无打卡 未打卡 马建 马建勇 暂无打卡 未打卡 SA Smoke Admin 暂无打卡 未打卡 SE Smoke Employee 暂无打卡 未打卡 TA Trialrun Ad" + }, + "findings": [ + { + "code": "CLIPPED_TEXT", + "severity": "medium", + "detail": "div:Smoke Admin | div:Smoke Employee | div:Trialrun Admin" + } + ] + }, + { + "route": { + "path": "/mobile/capture", + "title": "移动票据", + "group": "mobile", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "isMobileAudit": true + }, + "durationMs": 2409, + "screenshot": "output/playwright/r93-visual-audit-session/mobile390-mobile-capture.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/mobile/capture", + "title": "海音达工作台", + "innerWidth": 390, + "innerHeight": 844, + "documentScrollWidth": 390, + "bodyScrollWidth": 390, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 0, + "y": 0, + "width": 390, + "height": 844, + "right": 390, + "bottom": 844 + }, + "visibleTableCount": 0, + "visibleTables": [], + "offscreenInteractive": [], + "smallTouchTargets": [], + "clippedText": [], + "headings": [ + { + "text": "票据上传", + "rect": { + "x": 16, + "y": 20, + "width": 322, + "height": 48, + "right": 338, + "bottom": 68 + } + }, + { + "text": "选择票据", + "rect": { + "x": 33, + "y": 133, + "width": 256, + "height": 24, + "right": 289, + "bottom": 157 + } + }, + { + "text": "离线上传队列", + "rect": { + "x": 33, + "y": 573, + "width": 96, + "height": 24, + "right": 129, + "bottom": 597 + } + } + ], + "visibleTextStart": "票据上传 拍照或选择发票文件,离线时自动加入待上传队列。 选择票据 支持图片和 PDF,手机会优先打开相机。 在线 add_photo_alternate 拍照或选择文件 JPG、PNG、PDF 均可上传 当前文件:未选择 立即上传 同步队列 离线上传队列 无待上传项 暂无待上传文件。 home 首页 fact_check 审批 receipt_long 票据 person 我的" + }, + "findings": [] + }, + { + "route": { + "path": "/mobile/me", + "title": "移动我的", + "group": "mobile", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "isMobileAudit": true + }, + "durationMs": 2560, + "screenshot": "output/playwright/r93-visual-audit-session/mobile390-mobile-me.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/mobile/me", + "title": "海音达工作台", + "innerWidth": 390, + "innerHeight": 844, + "documentScrollWidth": 390, + "bodyScrollWidth": 390, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 0, + "y": 0, + "width": 390, + "height": 1512, + "right": 390, + "bottom": 1512 + }, + "visibleTableCount": 0, + "visibleTables": [], + "offscreenInteractive": [], + "smallTouchTargets": [ + { + "tag": "input", + "text": "", + "testId": "", + "rect": { + "x": 37, + "y": 1257, + "width": 16, + "height": 16, + "right": 53, + "bottom": 1273 + } + } + ], + "clippedText": [], + "headings": [ + { + "text": "我的", + "rect": { + "x": 16, + "y": 20, + "width": 238, + "height": 48, + "right": 254, + "bottom": 68 + } + }, + { + "text": "个人信息", + "rect": { + "x": 37, + "y": 137, + "width": 238, + "height": 24, + "right": 275, + "bottom": 161 + } + }, + { + "text": "账号与绑定", + "rect": { + "x": 37, + "y": 363, + "width": 316, + "height": 24, + "right": 353, + "bottom": 387 + } + }, + { + "text": "更多入口", + "rect": { + "x": 37, + "y": 665, + "width": 252, + "height": 24, + "right": 289, + "bottom": 689 + } + }, + { + "text": "外部通知推送", + "rect": { + "x": 37, + "y": 1183, + "width": 294, + "height": 24, + "right": 331, + "bottom": 1207 + } + } + ], + "visibleTextStart": "我的 个人信息、常用入口和低频管理操作。 个人信息 头像与部门信息从完整员工档案读取。 E Employee 公司 员工号:EMP001 账号与绑定 个人设置里可维护企业微信绑定、通知偏好和账号资料。 manage_accounts 个人设置 绑定企业微信、维护账号与通知偏好 badge 完整员工档案 办公地点、紧急联系人和完整档案 更多入口 低频模块放在这里,避免干扰移动首页。 notifications 通知中心 查看全部站内通知 event_available 请假 提交或查看请假申请 request_quote 报销 提交报销和查看报销进度 inventory_2 资产 查看资产台账和" + }, + "findings": [ + { + "code": "SMALL_TOUCH_TARGET", + "severity": "low", + "detail": "input: 16x16" + } + ] + }, + { + "route": { + "path": "/mobile/approvals", + "title": "移动审批", + "group": "mobile", + "expectedEmployee": false + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "isMobileAudit": true + }, + "durationMs": 2416, + "screenshot": "output/playwright/r93-visual-audit-session/mobile390-mobile-approvals.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/403", + "title": "海音达工作台", + "innerWidth": 390, + "innerHeight": 844, + "documentScrollWidth": 390, + "bodyScrollWidth": 390, + "horizontalOverflow": 0, + "hasForbiddenText": true, + "hasLoginForm": false, + "mainRect": null, + "visibleTableCount": 0, + "visibleTables": [], + "offscreenInteractive": [], + "smallTouchTargets": [ + { + "tag": "a", + "text": "返回仪表盘", + "testId": "", + "rect": { + "x": 101, + "y": 474, + "width": 80, + "height": 24, + "right": 181, + "bottom": 498 + } + }, + { + "tag": "a", + "text": "查看账号信息", + "testId": "", + "rect": { + "x": 193, + "y": 474, + "width": 96, + "height": 24, + "right": 289, + "bottom": 498 + } + } + ], + "clippedText": [], + "headings": [ + { + "text": "无权限访问", + "rect": { + "x": 57, + "y": 374, + "width": 276, + "height": 32, + "right": 333, + "bottom": 406 + } + } + ], + "visibleTextStart": "403 无权限访问 当前账号没有访问该页面的权限,请联系管理员或返回可访问页面。 返回仪表盘 查看账号信息" + }, + "findings": [ + { + "code": "EXPECTED_FORBIDDEN", + "severity": "info", + "detail": "员工账号无权限,记录为覆盖边界而非缺陷" + }, + { + "code": "SMALL_TOUCH_TARGET", + "severity": "low", + "detail": "a:返回仪表盘 80x24 | a:查看账号信息 96x24" + } + ] + }, + { + "route": { + "path": "/mobile/assets/scan", + "title": "移动资产扫描", + "group": "mobile", + "expectedEmployee": true + }, + "viewport": { + "key": "mobile390", + "width": 390, + "height": 844, + "isMobileAudit": true + }, + "durationMs": 2498, + "screenshot": "output/playwright/r93-visual-audit-session/mobile390-mobile-assets-scan.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/mobile/assets/scan", + "title": "海音达工作台", + "innerWidth": 390, + "innerHeight": 844, + "documentScrollWidth": 390, + "bodyScrollWidth": 390, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 0, + "y": 0, + "width": 390, + "height": 844, + "right": 390, + "bottom": 844 + }, + "visibleTableCount": 0, + "visibleTables": [], + "offscreenInteractive": [], + "smallTouchTargets": [], + "clippedText": [], + "headings": [ + { + "text": "移动资产扫码", + "rect": { + "x": 16, + "y": 20, + "width": 294, + "height": 48, + "right": 310, + "bottom": 68 + } + }, + { + "text": "相机扫码", + "rect": { + "x": 33, + "y": 193, + "width": 278, + "height": 24, + "right": 311, + "bottom": 217 + } + }, + { + "text": "手工输入 / 搜索", + "rect": { + "x": 33, + "y": 558, + "width": 113, + "height": 24, + "right": 146, + "bottom": 582 + } + } + ], + "visibleTextStart": "移动资产扫码 扫码或手工输入资产编号,快速查看资产卡片。 返回资产台账 相机扫码 优先使用 BarcodeDetector,回退到 ZXing。 未启动 开始扫码 停止扫码 手工输入 / 搜索 在线 查询资产 home 首页 fact_check 审批 receipt_long 票据 person 我的" + }, + "findings": [] + }, + { + "route": { + "path": "/portal", + "title": "Portal", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "isMobileAudit": false + }, + "durationMs": 3715, + "screenshot": "output/playwright/r93-visual-audit-session/desktop1440-portal.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [ + { + "url": "https://oa.hyinda.com/api/portal/home", + "failure": "net::ERR_ABORTED" + } + ], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/portal", + "title": "海音达工作台", + "innerWidth": 1440, + "innerHeight": 900, + "documentScrollWidth": 1440, + "bodyScrollWidth": 1440, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 288, + "y": 0, + "width": 1152, + "height": 1625, + "right": 1440, + "bottom": 1625 + }, + "visibleTableCount": 0, + "visibleTables": [], + "offscreenInteractive": [], + "smallTouchTargets": [ + { + "tag": "a", + "text": "查看团队页", + "testId": "", + "rect": { + "x": 896, + "y": 996, + "width": 70, + "height": 16, + "right": 966, + "bottom": 1012 + } + }, + { + "tag": "a", + "text": "查看全部", + "testId": "", + "rect": { + "x": 918, + "y": 1426, + "width": 48, + "height": 20, + "right": 966, + "bottom": 1446 + } + }, + { + "tag": "a", + "text": "公告页", + "testId": "", + "rect": { + "x": 1040, + "y": 1084, + "width": 42, + "height": 16, + "right": 1082, + "bottom": 1100 + } + } + ], + "clippedText": [ + { + "tag": "div", + "text": "主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch", + "rect": { + "x": 0, + "y": 223, + "width": 287, + "height": 677, + "right": 287, + "bottom": 900 + }, + "scrollWidth": 287, + "clientWidth": 287, + "scrollHeight": 737, + "clientHeight": 677, + "testId": "" + } + ], + "headings": [ + { + "text": "你好,Employee", + "rect": { + "x": 353, + "y": 174, + "width": 364, + "height": 36, + "right": 717, + "bottom": 210 + } + }, + { + "text": "今日待办聚合", + "rect": { + "x": 353, + "y": 474, + "width": 382, + "height": 24, + "right": 735, + "bottom": 498 + } + }, + { + "text": "快捷操作栏", + "rect": { + "x": 1088, + "y": 474, + "width": 288, + "height": 24, + "right": 1375, + "bottom": 498 + } + }, + { + "text": "团队全员状态", + "rect": { + "x": 353, + "y": 992, + "width": 392, + "height": 24, + "right": 745, + "bottom": 1016 + } + }, + { + "text": "近期动态流", + "rect": { + "x": 1040, + "y": 992, + "width": 335, + "height": 24, + "right": 1375, + "bottom": 1016 + } + }, + { + "text": "暂无近期动态", + "rect": { + "x": 1073, + "y": 1217, + "width": 269, + "height": 24, + "right": 1342, + "bottom": 1241 + } + }, + { + "text": "我的申请与资产", + "rect": { + "x": 378, + "y": 1617, + "width": 280, + "height": 24, + "right": 658, + "bottom": 1641 + } + }, + { + "text": "继续工作", + "rect": { + "x": 901, + "y": 1617, + "width": 364, + "height": 24, + "right": 1265, + "bottom": 1641 + } + } + ], + "visibleTextStart": "海音达工作台 Hyinda OA · 小团队运营中枢 今日工作台 先处理待办和团队状态,再进入具体模块。 主导航 优先处理今日工作与高频协同。 home_app_logo Portal groups 团队 event_available 请假 request_quote 报销 inventory_2 资产 article 周报 check_circle 待办 campaign 公告 workspaces 项目 备用模块 默认收起,不干扰主路径 按需展开 工作台 Portal 你好,Employee search 搜索 Employee 个人工作台 你好,Employee 先处理今天必须完成的事" + }, + "findings": [ + { + "code": "REQUEST_FAILED", + "severity": "medium", + "detail": "net::ERR_ABORTED https://oa.hyinda.com/api/portal/home" + }, + { + "code": "CLIPPED_TEXT", + "severity": "medium", + "detail": "div:主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch" + } + ] + }, + { + "route": { + "path": "/team", + "title": "团队", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "isMobileAudit": false + }, + "durationMs": 3209, + "screenshot": "output/playwright/r93-visual-audit-session/desktop1440-team.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/team", + "title": "海音达工作台", + "innerWidth": 1440, + "innerHeight": 900, + "documentScrollWidth": 1440, + "bodyScrollWidth": 1440, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 288, + "y": 0, + "width": 1152, + "height": 1172, + "right": 1440, + "bottom": 1172 + }, + "visibleTableCount": 1, + "visibleTables": [ + { + "testId": "", + "rect": { + "x": 353, + "y": 714, + "width": 1022, + "height": 405, + "right": 1375, + "bottom": 1119 + }, + "scrollWidth": 1022, + "clientWidth": 1022, + "text": "成员\t部门\t状态\t备注\n\nE\nEmployee\n试运行员工\n\t公司\t未更新\t-\n\n王顺\n王顺利\n员工\n\t管理部\t未更新\t-\n\n马建\n马建勇\n员工\n\t管理部\t未更新\t-\n\nSA\nSmoke Admin\nSmoke Admin\n\t管理部\t未更新" + } + ], + "offscreenInteractive": [], + "smallTouchTargets": [], + "clippedText": [ + { + "tag": "div", + "text": "主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch", + "rect": { + "x": 0, + "y": 223, + "width": 287, + "height": 677, + "right": 287, + "bottom": 900 + }, + "scrollWidth": 287, + "clientWidth": 287, + "scrollHeight": 737, + "clientHeight": 677, + "testId": "" + } + ], + "headings": [ + { + "text": "团队状态", + "rect": { + "x": 328, + "y": 129, + "width": 362, + "height": 48, + "right": 690, + "bottom": 177 + } + }, + { + "text": "更新我的今日状态", + "rect": { + "x": 353, + "y": 258, + "width": 291, + "height": 24, + "right": 644, + "bottom": 282 + } + }, + { + "text": "今日汇总", + "rect": { + "x": 718, + "y": 258, + "width": 657, + "height": 24, + "right": 1375, + "bottom": 282 + } + }, + { + "text": "团队列表", + "rect": { + "x": 353, + "y": 666, + "width": 64, + "height": 24, + "right": 417, + "bottom": 690 + } + } + ], + "visibleTextStart": "海音达工作台 Hyinda OA · 小团队运营中枢 今日工作台 先处理待办和团队状态,再进入具体模块。 主导航 优先处理今日工作与高频协同。 home_app_logo Portal groups 团队 event_available 请假 request_quote 报销 inventory_2 资产 article 周报 check_circle 待办 campaign 公告 workspaces 项目 备用模块 默认收起,不干扰主路径 按需展开 主导航 团队 你好,Employee search 搜索 Employee 团队状态 不做打卡,只管理今天谁在岗 / 居家 / 外出 / 出差" + }, + "findings": [ + { + "code": "CLIPPED_TEXT", + "severity": "medium", + "detail": "div:主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch" + } + ] + }, + { + "route": { + "path": "/leave-requests", + "title": "请假", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "isMobileAudit": false + }, + "durationMs": 3400, + "screenshot": "output/playwright/r93-visual-audit-session/desktop1440-leave-requests.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/leave-requests", + "title": "海音达工作台", + "innerWidth": 1440, + "innerHeight": 900, + "documentScrollWidth": 1440, + "bodyScrollWidth": 1440, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 288, + "y": 0, + "width": 1152, + "height": 1604, + "right": 1440, + "bottom": 1604 + }, + "visibleTableCount": 1, + "visibleTables": [ + { + "testId": "", + "rect": { + "x": 354, + "y": 1397, + "width": 1020, + "height": 93, + "right": 1374, + "bottom": 1490 + }, + "scrollWidth": 1020, + "clientWidth": 1020, + "text": "假种 / 申请人\t时间段\t天数\t状态\t附件\t更新时间\t操作\n暂无请假记录" + } + ], + "offscreenInteractive": [], + "smallTouchTargets": [], + "clippedText": [ + { + "tag": "div", + "text": "主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch", + "rect": { + "x": 0, + "y": 223, + "width": 287, + "height": 677, + "right": 287, + "bottom": 900 + }, + "scrollWidth": 287, + "clientWidth": 287, + "scrollHeight": 737, + "clientHeight": 677, + "testId": "" + } + ], + "headings": [ + { + "text": "请假申请", + "rect": { + "x": 328, + "y": 129, + "width": 336, + "height": 48, + "right": 664, + "bottom": 177 + } + }, + { + "text": "新建请假草稿", + "rect": { + "x": 353, + "y": 416, + "width": 266, + "height": 24, + "right": 619, + "bottom": 440 + } + }, + { + "text": "额度概览", + "rect": { + "x": 1065, + "y": 416, + "width": 310, + "height": 24, + "right": 1375, + "bottom": 440 + } + }, + { + "text": "请假记录", + "rect": { + "x": 353, + "y": 1212, + "width": 350, + "height": 24, + "right": 703, + "bottom": 1236 + } + } + ], + "visibleTextStart": "海音达工作台 Hyinda OA · 小团队运营中枢 今日工作台 先处理待办和团队状态,再进入具体模块。 主导航 优先处理今日工作与高频协同。 home_app_logo Portal groups 团队 event_available 请假 request_quote 报销 inventory_2 资产 article 周报 check_circle 待办 campaign 公告 workspaces 项目 备用模块 默认收起,不干扰主路径 按需展开 主导航 请假 你好,Employee search 搜索 Employee 请假申请 支持假种选择、半天粒度请假、额度冻结与撤回释放。 可用额" + }, + "findings": [ + { + "code": "CLIPPED_TEXT", + "severity": "medium", + "detail": "div:主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch" + } + ] + }, + { + "route": { + "path": "/reimbursements", + "title": "报销", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "isMobileAudit": false + }, + "durationMs": 2636, + "screenshot": "output/playwright/r93-visual-audit-session/desktop1440-reimbursements.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/reimbursements", + "title": "海音达工作台", + "innerWidth": 1440, + "innerHeight": 900, + "documentScrollWidth": 1440, + "bodyScrollWidth": 1440, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 288, + "y": 0, + "width": 1152, + "height": 900, + "right": 1440, + "bottom": 900 + }, + "visibleTableCount": 1, + "visibleTables": [ + { + "testId": "reimbursements-table", + "rect": { + "x": 329, + "y": 502, + "width": 1070, + "height": 133, + "right": 1399, + "bottom": 635 + }, + "scrollWidth": 1070, + "clientWidth": 1070, + "text": "单号\t状态\t金额\t报销人\t日期\t操作\n暂无数据" + } + ], + "offscreenInteractive": [], + "smallTouchTargets": [], + "clippedText": [ + { + "tag": "div", + "text": "主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch", + "rect": { + "x": 0, + "y": 223, + "width": 287, + "height": 677, + "right": 287, + "bottom": 900 + }, + "scrollWidth": 287, + "clientWidth": 287, + "scrollHeight": 737, + "clientHeight": 677, + "testId": "" + } + ], + "headings": [ + { + "text": "我的报销", + "rect": { + "x": 328, + "y": 129, + "width": 275, + "height": 48, + "right": 603, + "bottom": 177 + } + } + ], + "visibleTextStart": "海音达工作台 Hyinda OA · 小团队运营中枢 今日工作台 先处理待办和团队状态,再进入具体模块。 主导航 优先处理今日工作与高频协同。 home_app_logo Portal groups 团队 event_available 请假 request_quote 报销 inventory_2 资产 article 周报 check_circle 待办 campaign 公告 workspaces 项目 备用模块 默认收起,不干扰主路径 按需展开 主导航 报销 你好,Employee search 搜索 Employee 我的报销 报销列表、详情与提交/撤回/支付动作入口。 新建报销 导" + }, + "findings": [ + { + "code": "CLIPPED_TEXT", + "severity": "medium", + "detail": "div:主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch" + } + ] + }, + { + "route": { + "path": "/assets", + "title": "资产", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "isMobileAudit": false + }, + "durationMs": 2636, + "screenshot": "output/playwright/r93-visual-audit-session/desktop1440-assets.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/assets", + "title": "海音达工作台", + "innerWidth": 1440, + "innerHeight": 900, + "documentScrollWidth": 1440, + "bodyScrollWidth": 1440, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 288, + "y": 0, + "width": 1152, + "height": 900, + "right": 1440, + "bottom": 900 + }, + "visibleTableCount": 2, + "visibleTables": [ + { + "testId": "", + "rect": { + "x": 354, + "y": 599, + "width": 328, + "height": 40, + "right": 682, + "bottom": 639 + }, + "scrollWidth": 328, + "clientWidth": 328, + "text": "编码\t名称\t状态" + }, + { + "testId": "", + "rect": { + "x": 758, + "y": 319, + "width": 616, + "height": 92, + "right": 1374, + "bottom": 411 + }, + "scrollWidth": 616, + "clientWidth": 616, + "text": "资产\t分类\t状态\t归属人\n暂无资产卡片" + } + ], + "offscreenInteractive": [], + "smallTouchTargets": [ + { + "tag": "input", + "text": "", + "testId": "", + "rect": { + "x": 353, + "y": 564, + "width": 16, + "height": 16, + "right": 369, + "bottom": 580 + } + } + ], + "clippedText": [ + { + "tag": "div", + "text": "主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch", + "rect": { + "x": 0, + "y": 223, + "width": 287, + "height": 677, + "right": 287, + "bottom": 900 + }, + "scrollWidth": 287, + "clientWidth": 287, + "scrollHeight": 737, + "clientHeight": 677, + "testId": "" + } + ], + "headings": [ + { + "text": "资产台账", + "rect": { + "x": 328, + "y": 129, + "width": 406, + "height": 48, + "right": 734, + "bottom": 177 + } + }, + { + "text": "资产分类", + "rect": { + "x": 353, + "y": 258, + "width": 64, + "height": 24, + "right": 417, + "bottom": 282 + } + } + ], + "visibleTextStart": "海音达工作台 Hyinda OA · 小团队运营中枢 今日工作台 先处理待办和团队状态,再进入具体模块。 主导航 优先处理今日工作与高频协同。 home_app_logo Portal groups 团队 event_available 请假 request_quote 报销 inventory_2 资产 article 周报 check_circle 待办 campaign 公告 workspaces 项目 备用模块 默认收起,不干扰主路径 按需展开 主导航 资产 你好,Employee search 搜索 Employee 资产台账 维护资产分类与资产卡片,支持法体、成本中心和采购来源引用" + }, + "findings": [ + { + "code": "CLIPPED_TEXT", + "severity": "medium", + "detail": "div:主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch" + } + ] + }, + { + "route": { + "path": "/weekly-reports", + "title": "周报", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "isMobileAudit": false + }, + "durationMs": 3738, + "screenshot": "output/playwright/r93-visual-audit-session/desktop1440-weekly-reports.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/weekly-reports", + "title": "海音达工作台", + "innerWidth": 1440, + "innerHeight": 900, + "documentScrollWidth": 1440, + "bodyScrollWidth": 1440, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 288, + "y": 0, + "width": 1152, + "height": 1843, + "right": 1440, + "bottom": 1843 + }, + "visibleTableCount": 0, + "visibleTables": [], + "offscreenInteractive": [], + "smallTouchTargets": [ + { + "tag": "input", + "text": "", + "testId": "", + "rect": { + "x": 353, + "y": 1094, + "width": 13, + "height": 13, + "right": 366, + "bottom": 1107 + } + } + ], + "clippedText": [ + { + "tag": "div", + "text": "主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch", + "rect": { + "x": 0, + "y": 223, + "width": 287, + "height": 677, + "right": 287, + "bottom": 900 + }, + "scrollWidth": 287, + "clientWidth": 287, + "scrollHeight": 737, + "clientHeight": 677, + "testId": "" + } + ], + "headings": [ + { + "text": "周报", + "rect": { + "x": 328, + "y": 129, + "width": 434, + "height": 48, + "right": 762, + "bottom": 177 + } + }, + { + "text": "本周周报", + "rect": { + "x": 353, + "y": 526, + "width": 266, + "height": 24, + "right": 619, + "bottom": 550 + } + }, + { + "text": "项目关联", + "rect": { + "x": 353, + "y": 1184, + "width": 308, + "height": 24, + "right": 661, + "bottom": 1208 + } + } + ], + "visibleTextStart": "海音达工作台 Hyinda OA · 小团队运营中枢 今日工作台 先处理待办和团队状态,再进入具体模块。 主导航 优先处理今日工作与高频协同。 home_app_logo Portal groups 团队 event_available 请假 request_quote 报销 inventory_2 资产 article 周报 check_circle 待办 campaign 公告 workspaces 项目 备用模块 默认收起,不干扰主路径 按需展开 主导航 周报 你好,Employee search 搜索 Employee 周报 固定三段结构:本周完成、当前阻塞、下周计划,可按项目拆分进展" + }, + "findings": [ + { + "code": "CLIPPED_TEXT", + "severity": "medium", + "detail": "div:主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch" + } + ] + }, + { + "route": { + "path": "/todos", + "title": "待办", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "isMobileAudit": false + }, + "durationMs": 2631, + "screenshot": "output/playwright/r93-visual-audit-session/desktop1440-todos.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/todos", + "title": "海音达工作台", + "innerWidth": 1440, + "innerHeight": 900, + "documentScrollWidth": 1440, + "bodyScrollWidth": 1440, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 288, + "y": 0, + "width": 1152, + "height": 900, + "right": 1440, + "bottom": 900 + }, + "visibleTableCount": 1, + "visibleTables": [ + { + "testId": "", + "rect": { + "x": 354, + "y": 599, + "width": 636, + "height": 125, + "right": 990, + "bottom": 724 + }, + "scrollWidth": 636, + "clientWidth": 636, + "text": "标题\t项目\t负责人\t优先级\t状态\t操作\n当前没有符合条件的待办。" + } + ], + "offscreenInteractive": [], + "smallTouchTargets": [], + "clippedText": [ + { + "tag": "div", + "text": "主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch", + "rect": { + "x": 0, + "y": 223, + "width": 287, + "height": 677, + "right": 287, + "bottom": 900 + }, + "scrollWidth": 287, + "clientWidth": 287, + "scrollHeight": 737, + "clientHeight": 677, + "testId": "" + } + ], + "headings": [ + { + "text": "待办", + "rect": { + "x": 328, + "y": 129, + "width": 434, + "height": 48, + "right": 762, + "bottom": 177 + } + }, + { + "text": "待办列表", + "rect": { + "x": 353, + "y": 526, + "width": 322, + "height": 24, + "right": 675, + "bottom": 550 + } + }, + { + "text": "新增待办", + "rect": { + "x": 1065, + "y": 416, + "width": 310, + "height": 24, + "right": 1375, + "bottom": 440 + } + } + ], + "visibleTextStart": "海音达工作台 Hyinda OA · 小团队运营中枢 今日工作台 先处理待办和团队状态,再进入具体模块。 主导航 优先处理今日工作与高频协同。 home_app_logo Portal groups 团队 event_available 请假 request_quote 报销 inventory_2 资产 article 周报 check_circle 待办 campaign 公告 workspaces 项目 备用模块 默认收起,不干扰主路径 按需展开 主导航 待办 你好,Employee search 搜索 Employee 待办 员工维护个人待办,老板看高优先级和未完成项。支持直接挂到项目" + }, + "findings": [ + { + "code": "CLIPPED_TEXT", + "severity": "medium", + "detail": "div:主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch" + } + ] + }, + { + "route": { + "path": "/announcements", + "title": "公告", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "isMobileAudit": false + }, + "durationMs": 2528, + "screenshot": "output/playwright/r93-visual-audit-session/desktop1440-announcements.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/announcements", + "title": "海音达工作台", + "innerWidth": 1440, + "innerHeight": 900, + "documentScrollWidth": 1440, + "bodyScrollWidth": 1440, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 288, + "y": 0, + "width": 1152, + "height": 900, + "right": 1440, + "bottom": 900 + }, + "visibleTableCount": 0, + "visibleTables": [], + "offscreenInteractive": [], + "smallTouchTargets": [], + "clippedText": [ + { + "tag": "div", + "text": "主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch", + "rect": { + "x": 0, + "y": 223, + "width": 287, + "height": 677, + "right": 287, + "bottom": 900 + }, + "scrollWidth": 287, + "clientWidth": 287, + "scrollHeight": 737, + "clientHeight": 677, + "testId": "" + } + ], + "headings": [ + { + "text": "公告", + "rect": { + "x": 328, + "y": 129, + "width": 274, + "height": 48, + "right": 602, + "bottom": 177 + } + } + ], + "visibleTextStart": "海音达工作台 Hyinda OA · 小团队运营中枢 今日工作台 先处理待办和团队状态,再进入具体模块。 主导航 优先处理今日工作与高频协同。 home_app_logo Portal groups 团队 event_available 请假 request_quote 报销 inventory_2 资产 article 周报 check_circle 待办 campaign 公告 workspaces 项目 备用模块 默认收起,不干扰主路径 按需展开 主导航 公告 你好,Employee search 搜索 Employee 公告 全员查看公司通知、制度链接和 FAQ 入口。" + }, + "findings": [ + { + "code": "CLIPPED_TEXT", + "severity": "medium", + "detail": "div:主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch" + } + ] + }, + { + "route": { + "path": "/projects", + "title": "项目", + "group": "main", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "isMobileAudit": false + }, + "durationMs": 2620, + "screenshot": "output/playwright/r93-visual-audit-session/desktop1440-projects.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/projects", + "title": "海音达工作台", + "innerWidth": 1440, + "innerHeight": 900, + "documentScrollWidth": 1440, + "bodyScrollWidth": 1440, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 288, + "y": 0, + "width": 1152, + "height": 900, + "right": 1440, + "bottom": 900 + }, + "visibleTableCount": 0, + "visibleTables": [], + "offscreenInteractive": [], + "smallTouchTargets": [], + "clippedText": [ + { + "tag": "div", + "text": "主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch", + "rect": { + "x": 0, + "y": 223, + "width": 287, + "height": 677, + "right": 287, + "bottom": 900 + }, + "scrollWidth": 287, + "clientWidth": 287, + "scrollHeight": 737, + "clientHeight": 677, + "testId": "" + } + ], + "headings": [ + { + "text": "项目", + "rect": { + "x": 328, + "y": 129, + "width": 379, + "height": 48, + "right": 707, + "bottom": 177 + } + }, + { + "text": "项目列表", + "rect": { + "x": 353, + "y": 526, + "width": 224, + "height": 24, + "right": 577, + "bottom": 550 + } + }, + { + "text": "新建项目", + "rect": { + "x": 1065, + "y": 416, + "width": 238, + "height": 24, + "right": 1303, + "bottom": 440 + } + } + ], + "visibleTextStart": "海音达工作台 Hyinda OA · 小团队运营中枢 今日工作台 先处理待办和团队状态,再进入具体模块。 主导航 优先处理今日工作与高频协同。 home_app_logo Portal groups 团队 event_available 请假 request_quote 报销 inventory_2 资产 article 周报 check_circle 待办 campaign 公告 workspaces 项目 备用模块 默认收起,不干扰主路径 按需展开 主导航 项目 你好,Employee search 搜索 Employee 项目 轻项目主档、成员、里程碑、任务与风险统一在 OA 内跟进。 " + }, + "findings": [ + { + "code": "CLIPPED_TEXT", + "severity": "medium", + "detail": "div:主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch" + } + ] + }, + { + "route": { + "path": "/attendance", + "title": "考勤", + "group": "backup", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "isMobileAudit": false + }, + "durationMs": 3337, + "screenshot": "output/playwright/r93-visual-audit-session/desktop1440-attendance.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/attendance", + "title": "海音达工作台", + "innerWidth": 1440, + "innerHeight": 900, + "documentScrollWidth": 1440, + "bodyScrollWidth": 1440, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 288, + "y": 0, + "width": 1152, + "height": 2219, + "right": 1440, + "bottom": 2219 + }, + "visibleTableCount": 1, + "visibleTables": [ + { + "testId": "", + "rect": { + "x": 353, + "y": 918, + "width": 1022, + "height": 1248, + "right": 1375, + "bottom": 2166 + }, + "scrollWidth": 1022, + "clientWidth": 1022, + "text": "日期\t上班\t下班\t工时\t状态\t备注\n2026-05-01\t-\t-\t-\t缺卡\t-\n2026-05-02\t-\t-\t-\t周末\t周末\n2026-05-03\t-\t-\t-\t周末\t周末\n2026-05-04\t-\t-\t-\t缺卡\t-\n2026-05-05\t-" + } + ], + "offscreenInteractive": [], + "smallTouchTargets": [], + "clippedText": [ + { + "tag": "div", + "text": "主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch", + "rect": { + "x": 0, + "y": 223, + "width": 287, + "height": 677, + "right": 287, + "bottom": 900 + }, + "scrollWidth": 287, + "clientWidth": 287, + "scrollHeight": 737, + "clientHeight": 677, + "testId": "" + } + ], + "headings": [ + { + "text": "考勤", + "rect": { + "x": 328, + "y": 129, + "width": 252, + "height": 48, + "right": 580, + "bottom": 177 + } + }, + { + "text": "今日打卡状态", + "rect": { + "x": 353, + "y": 318, + "width": 420, + "height": 24, + "right": 773, + "bottom": 342 + } + }, + { + "text": "本月统计", + "rect": { + "x": 353, + "y": 598, + "width": 406, + "height": 24, + "right": 759, + "bottom": 622 + } + }, + { + "text": "本月打卡记录", + "rect": { + "x": 353, + "y": 846, + "width": 224, + "height": 24, + "right": 577, + "bottom": 870 + } + } + ], + "visibleTextStart": "海音达工作台 Hyinda OA · 小团队运营中枢 今日工作台 先处理待办和团队状态,再进入具体模块。 主导航 优先处理今日工作与高频协同。 home_app_logo Portal groups 团队 event_available 请假 request_quote 报销 inventory_2 资产 article 周报 check_circle 待办 campaign 公告 workspaces 项目 备用模块 默认收起,不干扰主路径 按需展开 备用模块 考勤 你好,Employee search 搜索 Employee 考勤 上下班打卡、月度统计和团队补卡入口。 我的考勤 今日打卡状" + }, + "findings": [ + { + "code": "CLIPPED_TEXT", + "severity": "medium", + "detail": "div:主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch" + } + ] + }, + { + "route": { + "path": "/workflow/tasks", + "title": "审批待办", + "group": "backup", + "expectedEmployee": false + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "isMobileAudit": false + }, + "durationMs": 2412, + "screenshot": "output/playwright/r93-visual-audit-session/desktop1440-workflow-tasks.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/403", + "title": "海音达工作台", + "innerWidth": 1440, + "innerHeight": 900, + "documentScrollWidth": 1440, + "bodyScrollWidth": 1440, + "horizontalOverflow": 0, + "hasForbiddenText": true, + "hasLoginForm": false, + "mainRect": null, + "visibleTableCount": 0, + "visibleTables": [], + "offscreenInteractive": [], + "smallTouchTargets": [ + { + "tag": "a", + "text": "返回仪表盘", + "testId": "", + "rect": { + "x": 626, + "y": 492, + "width": 80, + "height": 24, + "right": 706, + "bottom": 516 + } + }, + { + "tag": "a", + "text": "查看账号信息", + "testId": "", + "rect": { + "x": 718, + "y": 492, + "width": 96, + "height": 24, + "right": 814, + "bottom": 516 + } + } + ], + "clippedText": [], + "headings": [ + { + "text": "无权限访问", + "rect": { + "x": 510, + "y": 412, + "width": 420, + "height": 32, + "right": 930, + "bottom": 444 + } + } + ], + "visibleTextStart": "403 无权限访问 当前账号没有访问该页面的权限,请联系管理员或返回可访问页面。 返回仪表盘 查看账号信息" + }, + "findings": [ + { + "code": "EXPECTED_FORBIDDEN", + "severity": "info", + "detail": "员工账号无权限,记录为覆盖边界而非缺陷" + } + ] + }, + { + "route": { + "path": "/contracts-registry", + "title": "合同台账", + "group": "backup", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "isMobileAudit": false + }, + "durationMs": 3266, + "screenshot": "output/playwright/r93-visual-audit-session/desktop1440-contracts-registry.png", + "consoleErrors": [ + "Failed to load resource: the server responded with a status of 403 ()", + "Failed to load resource: the server responded with a status of 403 ()" + ], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/contracts-registry", + "title": "海音达工作台", + "innerWidth": 1440, + "innerHeight": 900, + "documentScrollWidth": 1440, + "bodyScrollWidth": 1440, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 288, + "y": 0, + "width": 1152, + "height": 1589, + "right": 1440, + "bottom": 1589 + }, + "visibleTableCount": 0, + "visibleTables": [], + "offscreenInteractive": [], + "smallTouchTargets": [], + "clippedText": [ + { + "tag": "div", + "text": "主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch", + "rect": { + "x": 0, + "y": 223, + "width": 287, + "height": 677, + "right": 287, + "bottom": 900 + }, + "scrollWidth": 287, + "clientWidth": 287, + "scrollHeight": 737, + "clientHeight": 677, + "testId": "" + } + ], + "headings": [ + { + "text": "合同台账", + "rect": { + "x": 328, + "y": 129, + "width": 477, + "height": 48, + "right": 805, + "bottom": 177 + } + }, + { + "text": "新建合同台账", + "rect": { + "x": 353, + "y": 412, + "width": 350, + "height": 24, + "right": 703, + "bottom": 436 + } + }, + { + "text": "台账列表", + "rect": { + "x": 777, + "y": 412, + "width": 112, + "height": 24, + "right": 889, + "bottom": 436 + } + } + ], + "visibleTextStart": "海音达工作台 Hyinda OA · 小团队运营中枢 今日工作台 先处理待办和团队状态,再进入具体模块。 主导航 优先处理今日工作与高频协同。 home_app_logo Portal groups 团队 event_available 请假 request_quote 报销 inventory_2 资产 article 周报 check_circle 待办 campaign 公告 workspaces 项目 备用模块 默认收起,不干扰主路径 按需展开 备用模块 合同台账 你好,Employee search 搜索 Employee 合同台账 维护合同元数据、生命周期、到期预警与导出,不在 O" + }, + "findings": [ + { + "code": "JS_ERROR", + "severity": "high", + "detail": "Failed to load resource: the server responded with a status of 403 () | Failed to load resource: the server responded with a status of 403 ()" + }, + { + "code": "CLIPPED_TEXT", + "severity": "medium", + "detail": "div:主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch" + } + ] + }, + { + "route": { + "path": "/purchase-requests", + "title": "采购", + "group": "backup", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "isMobileAudit": false + }, + "durationMs": 2630, + "screenshot": "output/playwright/r93-visual-audit-session/desktop1440-purchase-requests.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/purchase-requests", + "title": "海音达工作台", + "innerWidth": 1440, + "innerHeight": 900, + "documentScrollWidth": 1440, + "bodyScrollWidth": 1440, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 288, + "y": 0, + "width": 1152, + "height": 900, + "right": 1440, + "bottom": 900 + }, + "visibleTableCount": 1, + "visibleTables": [ + { + "testId": "purchase-requests-table", + "rect": { + "x": 354, + "y": 417, + "width": 368, + "height": 92, + "right": 722, + "bottom": 509 + }, + "scrollWidth": 368, + "clientWidth": 368, + "text": "单据\t申请人\t状态\t金额\n暂无采购申请" + } + ], + "offscreenInteractive": [], + "smallTouchTargets": [], + "clippedText": [ + { + "tag": "div", + "text": "主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch", + "rect": { + "x": 0, + "y": 223, + "width": 287, + "height": 677, + "right": 287, + "bottom": 900 + }, + "scrollWidth": 287, + "clientWidth": 287, + "scrollHeight": 737, + "clientHeight": 677, + "testId": "" + } + ], + "headings": [ + { + "text": "采购申请", + "rect": { + "x": 328, + "y": 129, + "width": 378, + "height": 48, + "right": 706, + "bottom": 177 + } + }, + { + "text": "采购单列表", + "rect": { + "x": 353, + "y": 376, + "width": 80, + "height": 24, + "right": 433, + "bottom": 400 + } + } + ], + "visibleTextStart": "海音达工作台 Hyinda OA · 小团队运营中枢 今日工作台 先处理待办和团队状态,再进入具体模块。 主导航 优先处理今日工作与高频协同。 home_app_logo Portal groups 团队 event_available 请假 request_quote 报销 inventory_2 资产 article 周报 check_circle 待办 campaign 公告 workspaces 项目 备用模块 默认收起,不干扰主路径 按需展开 工作台 /purchase-requests 你好,Employee search 搜索 Employee 采购申请 支持草稿、附件、提交、撤" + }, + "findings": [ + { + "code": "CLIPPED_TEXT", + "severity": "medium", + "detail": "div:主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch" + } + ] + }, + { + "route": { + "path": "/travel-requests", + "title": "差旅", + "group": "backup", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "isMobileAudit": false + }, + "durationMs": 3270, + "screenshot": "output/playwright/r93-visual-audit-session/desktop1440-travel-requests.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/travel-requests?tab=requests", + "title": "海音达工作台", + "innerWidth": 1440, + "innerHeight": 900, + "documentScrollWidth": 1440, + "bodyScrollWidth": 1440, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 288, + "y": 0, + "width": 1152, + "height": 1323, + "right": 1440, + "bottom": 1323 + }, + "visibleTableCount": 0, + "visibleTables": [], + "offscreenInteractive": [], + "smallTouchTargets": [], + "clippedText": [ + { + "tag": "div", + "text": "主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch", + "rect": { + "x": 0, + "y": 223, + "width": 287, + "height": 677, + "right": 287, + "bottom": 900 + }, + "scrollWidth": 287, + "clientWidth": 287, + "scrollHeight": 737, + "clientHeight": 677, + "testId": "" + } + ], + "headings": [ + { + "text": "差旅管理", + "rect": { + "x": 328, + "y": 129, + "width": 364, + "height": 48, + "right": 692, + "bottom": 177 + } + }, + { + "text": "暂无差旅申请", + "rect": { + "x": 382, + "y": 695, + "width": 252, + "height": 24, + "right": 634, + "bottom": 719 + } + }, + { + "text": "新建差旅申请", + "rect": { + "x": 737, + "y": 326, + "width": 638, + "height": 28, + "right": 1375, + "bottom": 354 + } + }, + { + "text": "行程段", + "rect": { + "x": 737, + "y": 930, + "width": 48, + "height": 24, + "right": 785, + "bottom": 954 + } + } + ], + "visibleTextStart": "海音达工作台 Hyinda OA · 小团队运营中枢 今日工作台 先处理待办和团队状态,再进入具体模块。 主导航 优先处理今日工作与高频协同。 home_app_logo Portal groups 团队 event_available 请假 request_quote 报销 inventory_2 资产 article 周报 check_circle 待办 campaign 公告 workspaces 项目 备用模块 默认收起,不干扰主路径 按需展开 工作台 /travel-requests 你好,Employee search 搜索 Employee 差旅管理 差旅申请、对公支付轨道与批次" + }, + "findings": [ + { + "code": "CLIPPED_TEXT", + "severity": "medium", + "detail": "div:主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch" + } + ] + }, + { + "route": { + "path": "/budgets", + "title": "预算", + "group": "backup", + "expectedEmployee": false + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "isMobileAudit": false + }, + "durationMs": 2501, + "screenshot": "output/playwright/r93-visual-audit-session/desktop1440-budgets.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/403", + "title": "海音达工作台", + "innerWidth": 1440, + "innerHeight": 900, + "documentScrollWidth": 1440, + "bodyScrollWidth": 1440, + "horizontalOverflow": 0, + "hasForbiddenText": true, + "hasLoginForm": false, + "mainRect": null, + "visibleTableCount": 0, + "visibleTables": [], + "offscreenInteractive": [], + "smallTouchTargets": [ + { + "tag": "a", + "text": "返回仪表盘", + "testId": "", + "rect": { + "x": 626, + "y": 492, + "width": 80, + "height": 24, + "right": 706, + "bottom": 516 + } + }, + { + "tag": "a", + "text": "查看账号信息", + "testId": "", + "rect": { + "x": 718, + "y": 492, + "width": 96, + "height": 24, + "right": 814, + "bottom": 516 + } + } + ], + "clippedText": [], + "headings": [ + { + "text": "无权限访问", + "rect": { + "x": 510, + "y": 412, + "width": 420, + "height": 32, + "right": 930, + "bottom": 444 + } + } + ], + "visibleTextStart": "403 无权限访问 当前账号没有访问该页面的权限,请联系管理员或返回可访问页面。 返回仪表盘 查看账号信息" + }, + "findings": [ + { + "code": "EXPECTED_FORBIDDEN", + "severity": "info", + "detail": "员工账号无权限,记录为覆盖边界而非缺陷" + } + ] + }, + { + "route": { + "path": "/payment-batches", + "title": "付款批次", + "group": "backup", + "expectedEmployee": false + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "isMobileAudit": false + }, + "durationMs": 2416, + "screenshot": "output/playwright/r93-visual-audit-session/desktop1440-payment-batches.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/403", + "title": "海音达工作台", + "innerWidth": 1440, + "innerHeight": 900, + "documentScrollWidth": 1440, + "bodyScrollWidth": 1440, + "horizontalOverflow": 0, + "hasForbiddenText": true, + "hasLoginForm": false, + "mainRect": null, + "visibleTableCount": 0, + "visibleTables": [], + "offscreenInteractive": [], + "smallTouchTargets": [ + { + "tag": "a", + "text": "返回仪表盘", + "testId": "", + "rect": { + "x": 626, + "y": 492, + "width": 80, + "height": 24, + "right": 706, + "bottom": 516 + } + }, + { + "tag": "a", + "text": "查看账号信息", + "testId": "", + "rect": { + "x": 718, + "y": 492, + "width": 96, + "height": 24, + "right": 814, + "bottom": 516 + } + } + ], + "clippedText": [], + "headings": [ + { + "text": "无权限访问", + "rect": { + "x": 510, + "y": 412, + "width": 420, + "height": 32, + "right": 930, + "bottom": 444 + } + } + ], + "visibleTextStart": "403 无权限访问 当前账号没有访问该页面的权限,请联系管理员或返回可访问页面。 返回仪表盘 查看账号信息" + }, + "findings": [ + { + "code": "EXPECTED_FORBIDDEN", + "severity": "info", + "detail": "员工账号无权限,记录为覆盖边界而非缺陷" + } + ] + }, + { + "route": { + "path": "/ap-operations", + "title": "应付运营", + "group": "backup", + "expectedEmployee": false + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "isMobileAudit": false + }, + "durationMs": 2405, + "screenshot": "output/playwright/r93-visual-audit-session/desktop1440-ap-operations.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/403", + "title": "海音达工作台", + "innerWidth": 1440, + "innerHeight": 900, + "documentScrollWidth": 1440, + "bodyScrollWidth": 1440, + "horizontalOverflow": 0, + "hasForbiddenText": true, + "hasLoginForm": false, + "mainRect": null, + "visibleTableCount": 0, + "visibleTables": [], + "offscreenInteractive": [], + "smallTouchTargets": [ + { + "tag": "a", + "text": "返回仪表盘", + "testId": "", + "rect": { + "x": 626, + "y": 492, + "width": 80, + "height": 24, + "right": 706, + "bottom": 516 + } + }, + { + "tag": "a", + "text": "查看账号信息", + "testId": "", + "rect": { + "x": 718, + "y": 492, + "width": 96, + "height": 24, + "right": 814, + "bottom": 516 + } + } + ], + "clippedText": [], + "headings": [ + { + "text": "无权限访问", + "rect": { + "x": 510, + "y": 412, + "width": 420, + "height": 32, + "right": 930, + "bottom": 444 + } + } + ], + "visibleTextStart": "403 无权限访问 当前账号没有访问该页面的权限,请联系管理员或返回可访问页面。 返回仪表盘 查看账号信息" + }, + "findings": [ + { + "code": "EXPECTED_FORBIDDEN", + "severity": "info", + "detail": "员工账号无权限,记录为覆盖边界而非缺陷" + } + ] + }, + { + "route": { + "path": "/invoice-pool", + "title": "票据中心", + "group": "backup", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "isMobileAudit": false + }, + "durationMs": 3320, + "screenshot": "output/playwright/r93-visual-audit-session/desktop1440-invoice-pool.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/invoice-pool", + "title": "海音达工作台", + "innerWidth": 1440, + "innerHeight": 900, + "documentScrollWidth": 1440, + "bodyScrollWidth": 1440, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 288, + "y": 0, + "width": 1152, + "height": 1381, + "right": 1440, + "bottom": 1381 + }, + "visibleTableCount": 1, + "visibleTables": [ + { + "testId": "invoice-pool-table", + "rect": { + "x": 354, + "y": 457, + "width": 1020, + "height": 129, + "right": 1374, + "bottom": 586 + }, + "scrollWidth": 1020, + "clientWidth": 1020, + "text": "票据流水号\t状态\t发票号码\t识别情况 (OCR)\t操作\n\n3c0ba5ae-e01b-4a58-8a6f-0e137134d0a0\n\t可用\t26112000000938423851-26112000000938423851\t解析成功\tmor" + } + ], + "offscreenInteractive": [], + "smallTouchTargets": [ + { + "tag": "button", + "text": "more_horiz", + "testId": "", + "rect": { + "x": 1322, + "y": 537, + "width": 28, + "height": 33, + "right": 1350, + "bottom": 570 + } + } + ], + "clippedText": [ + { + "tag": "div", + "text": "主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch", + "rect": { + "x": 0, + "y": 223, + "width": 287, + "height": 677, + "right": 287, + "bottom": 900 + }, + "scrollWidth": 287, + "clientWidth": 287, + "scrollHeight": 737, + "clientHeight": 677, + "testId": "" + } + ], + "headings": [ + { + "text": "票据中心", + "rect": { + "x": 328, + "y": 129, + "width": 315, + "height": 48, + "right": 643, + "bottom": 177 + } + }, + { + "text": "上传票据(VAT OCR)", + "rect": { + "x": 353, + "y": 258, + "width": 1022, + "height": 16, + "right": 1375, + "bottom": 274 + } + }, + { + "text": "筛选与列表", + "rect": { + "x": 353, + "y": 416, + "width": 71, + "height": 16, + "right": 424, + "bottom": 432 + } + }, + { + "text": "绑定业务单据", + "rect": { + "x": 353, + "y": 721, + "width": 85, + "height": 16, + "right": 438, + "bottom": 737 + } + }, + { + "text": "详情轮询", + "rect": { + "x": 353, + "y": 999, + "width": 1022, + "height": 16, + "right": 1375, + "bottom": 1015 + } + } + ], + "visibleTextStart": "海音达工作台 Hyinda OA · 小团队运营中枢 今日工作台 先处理待办和团队状态,再进入具体模块。 主导航 优先处理今日工作与高频协同。 home_app_logo Portal groups 团队 event_available 请假 request_quote 报销 inventory_2 资产 article 周报 check_circle 待办 campaign 公告 workspaces 项目 备用模块 默认收起,不干扰主路径 按需展开 工作台 /invoice-pool 你好,Employee search 搜索 Employee 票据中心 支持上传、OCR 状态轮询、绑定报" + }, + "findings": [ + { + "code": "CLIPPED_TEXT", + "severity": "medium", + "detail": "div:主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch" + } + ] + }, + { + "route": { + "path": "/inventory-checks", + "title": "盘点", + "group": "backup", + "expectedEmployee": false + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "isMobileAudit": false + }, + "durationMs": 2447, + "screenshot": "output/playwright/r93-visual-audit-session/desktop1440-inventory-checks.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/403", + "title": "海音达工作台", + "innerWidth": 1440, + "innerHeight": 900, + "documentScrollWidth": 1440, + "bodyScrollWidth": 1440, + "horizontalOverflow": 0, + "hasForbiddenText": true, + "hasLoginForm": false, + "mainRect": null, + "visibleTableCount": 0, + "visibleTables": [], + "offscreenInteractive": [], + "smallTouchTargets": [ + { + "tag": "a", + "text": "返回仪表盘", + "testId": "", + "rect": { + "x": 626, + "y": 492, + "width": 80, + "height": 24, + "right": 706, + "bottom": 516 + } + }, + { + "tag": "a", + "text": "查看账号信息", + "testId": "", + "rect": { + "x": 718, + "y": 492, + "width": 96, + "height": 24, + "right": 814, + "bottom": 516 + } + } + ], + "clippedText": [], + "headings": [ + { + "text": "无权限访问", + "rect": { + "x": 510, + "y": 412, + "width": 420, + "height": 32, + "right": 930, + "bottom": 444 + } + } + ], + "visibleTextStart": "403 无权限访问 当前账号没有访问该页面的权限,请联系管理员或返回可访问页面。 返回仪表盘 查看账号信息" + }, + "findings": [ + { + "code": "EXPECTED_FORBIDDEN", + "severity": "info", + "detail": "员工账号无权限,记录为覆盖边界而非缺陷" + } + ] + }, + { + "route": { + "path": "/dashboard", + "title": "仪表盘", + "group": "backup", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "isMobileAudit": false + }, + "durationMs": 2621, + "screenshot": "output/playwright/r93-visual-audit-session/desktop1440-dashboard.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/dashboard", + "title": "海音达工作台", + "innerWidth": 1440, + "innerHeight": 900, + "documentScrollWidth": 1440, + "bodyScrollWidth": 1440, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 288, + "y": 0, + "width": 1152, + "height": 900, + "right": 1440, + "bottom": 900 + }, + "visibleTableCount": 0, + "visibleTables": [], + "offscreenInteractive": [], + "smallTouchTargets": [], + "clippedText": [ + { + "tag": "div", + "text": "主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch", + "rect": { + "x": 0, + "y": 223, + "width": 287, + "height": 677, + "right": 287, + "bottom": 900 + }, + "scrollWidth": 287, + "clientWidth": 287, + "scrollHeight": 737, + "clientHeight": 677, + "testId": "" + } + ], + "headings": [ + { + "text": "仪表盘", + "rect": { + "x": 328, + "y": 129, + "width": 266, + "height": 48, + "right": 594, + "bottom": 177 + } + } + ], + "visibleTextStart": "海音达工作台 Hyinda OA · 小团队运营中枢 今日工作台 先处理待办和团队状态,再进入具体模块。 主导航 优先处理今日工作与高频协同。 home_app_logo Portal groups 团队 event_available 请假 request_quote 报销 inventory_2 资产 article 周报 check_circle 待办 campaign 公告 workspaces 项目 备用模块 默认收起,不干扰主路径 按需展开 工作台 /dashboard 你好,Employee search 搜索 Employee 仪表盘 你当前没有看板权限,请联系管理员开通。 当" + }, + "findings": [ + { + "code": "CLIPPED_TEXT", + "severity": "medium", + "detail": "div:主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch" + } + ] + }, + { + "route": { + "path": "/settings/profile", + "title": "个人设置", + "group": "settings", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "isMobileAudit": false + }, + "durationMs": 3308, + "screenshot": "output/playwright/r93-visual-audit-session/desktop1440-settings-profile.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/settings/profile", + "title": "海音达工作台", + "innerWidth": 1440, + "innerHeight": 900, + "documentScrollWidth": 1440, + "bodyScrollWidth": 1440, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 288, + "y": 0, + "width": 1152, + "height": 1291, + "right": 1440, + "bottom": 1291 + }, + "visibleTableCount": 0, + "visibleTables": [], + "offscreenInteractive": [], + "smallTouchTargets": [ + { + "tag": "input", + "text": "", + "testId": "", + "rect": { + "x": 353, + "y": 820, + "width": 16, + "height": 16, + "right": 369, + "bottom": 836 + } + } + ], + "clippedText": [ + { + "tag": "div", + "text": "主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch", + "rect": { + "x": 0, + "y": 223, + "width": 287, + "height": 677, + "right": 287, + "bottom": 900 + }, + "scrollWidth": 287, + "clientWidth": 287, + "scrollHeight": 737, + "clientHeight": 677, + "testId": "" + } + ], + "headings": [ + { + "text": "个人设置", + "rect": { + "x": 328, + "y": 145, + "width": 700, + "height": 48, + "right": 1028, + "bottom": 193 + } + }, + { + "text": "基本信息", + "rect": { + "x": 353, + "y": 306, + "width": 252, + "height": 24, + "right": 605, + "bottom": 330 + } + }, + { + "text": "完整员工档案", + "rect": { + "x": 353, + "y": 556, + "width": 490, + "height": 24, + "right": 843, + "bottom": 580 + } + }, + { + "text": "外部通知推送", + "rect": { + "x": 353, + "y": 746, + "width": 602, + "height": 24, + "right": 955, + "bottom": 770 + } + }, + { + "text": "企业微信绑定", + "rect": { + "x": 353, + "y": 964, + "width": 616, + "height": 24, + "right": 969, + "bottom": 988 + } + }, + { + "text": "组织信息", + "rect": { + "x": 1065, + "y": 306, + "width": 310, + "height": 24, + "right": 1375, + "bottom": 330 + } + }, + { + "text": "账号状态与角色", + "rect": { + "x": 1065, + "y": 708, + "width": 310, + "height": 24, + "right": 1375, + "bottom": 732 + } + } + ], + "visibleTextStart": "海音达工作台 Hyinda OA · 小团队运营中枢 今日工作台 先处理待办和团队状态,再进入具体模块。 主导航 优先处理今日工作与高频协同。 home_app_logo Portal groups 团队 event_available 请假 request_quote 报销 inventory_2 资产 article 周报 check_circle 待办 campaign 公告 workspaces 项目 备用模块 默认收起,不干扰主路径 按需展开 账号设置 个人设置 你好,Employee search 搜索 Employee 账号与入口 个人设置 维护个人资料、角色摘要与企业微信绑定状" + }, + "findings": [ + { + "code": "CLIPPED_TEXT", + "severity": "medium", + "detail": "div:主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch" + } + ] + }, + { + "route": { + "path": "/notifications", + "title": "通知", + "group": "settings", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "isMobileAudit": false + }, + "durationMs": 2601, + "screenshot": "output/playwright/r93-visual-audit-session/desktop1440-notifications.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/notifications", + "title": "海音达工作台", + "innerWidth": 1440, + "innerHeight": 900, + "documentScrollWidth": 1440, + "bodyScrollWidth": 1440, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 288, + "y": 0, + "width": 1152, + "height": 900, + "right": 1440, + "bottom": 900 + }, + "visibleTableCount": 1, + "visibleTables": [ + { + "testId": "notifications-table", + "rect": { + "x": 354, + "y": 319, + "width": 1020, + "height": 84, + "right": 1374, + "bottom": 403 + }, + "scrollWidth": 1020, + "clientWidth": 1020, + "text": "标题\t时间\t状态\t操作\n暂无通知" + } + ], + "offscreenInteractive": [], + "smallTouchTargets": [], + "clippedText": [ + { + "tag": "div", + "text": "主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch", + "rect": { + "x": 0, + "y": 223, + "width": 287, + "height": 677, + "right": 287, + "bottom": 900 + }, + "scrollWidth": 287, + "clientWidth": 287, + "scrollHeight": 737, + "clientHeight": 677, + "testId": "" + } + ], + "headings": [ + { + "text": "通知", + "rect": { + "x": 328, + "y": 129, + "width": 140, + "height": 48, + "right": 468, + "bottom": 177 + } + } + ], + "visibleTextStart": "海音达工作台 Hyinda OA · 小团队运营中枢 今日工作台 先处理待办和团队状态,再进入具体模块。 主导航 优先处理今日工作与高频协同。 home_app_logo Portal groups 团队 event_available 请假 request_quote 报销 inventory_2 资产 article 周报 check_circle 待办 campaign 公告 workspaces 项目 备用模块 默认收起,不干扰主路径 按需展开 工作台 /notifications 你好,Employee search 搜索 Employee 通知 站内通知与待办提醒。 全部标为已读 " + }, + "findings": [ + { + "code": "CLIPPED_TEXT", + "severity": "medium", + "detail": "div:主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch" + } + ] + }, + { + "route": { + "path": "/mobile", + "title": "移动首页", + "group": "mobile", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "isMobileAudit": false + }, + "durationMs": 3685, + "screenshot": "output/playwright/r93-visual-audit-session/desktop1440-mobile.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/mobile", + "title": "海音达工作台", + "innerWidth": 1440, + "innerHeight": 900, + "documentScrollWidth": 1440, + "bodyScrollWidth": 1440, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 288, + "y": 0, + "width": 1152, + "height": 1933, + "right": 1440, + "bottom": 1933 + }, + "visibleTableCount": 0, + "visibleTables": [], + "offscreenInteractive": [], + "smallTouchTargets": [], + "clippedText": [ + { + "tag": "div", + "text": "主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch", + "rect": { + "x": 0, + "y": 223, + "width": 287, + "height": 677, + "right": 287, + "bottom": 900 + }, + "scrollWidth": 287, + "clientWidth": 287, + "scrollHeight": 737, + "clientHeight": 677, + "testId": "" + } + ], + "headings": [ + { + "text": "今天", + "rect": { + "x": 328, + "y": 129, + "width": 280, + "height": 48, + "right": 608, + "bottom": 177 + } + } + ], + "visibleTextStart": "海音达工作台 Hyinda OA · 小团队运营中枢 今日工作台 先处理待办和团队状态,再进入具体模块。 主导航 优先处理今日工作与高频协同。 home_app_logo Portal groups 团队 event_available 请假 request_quote 报销 inventory_2 资产 article 周报 check_circle 待办 campaign 公告 workspaces 项目 备用模块 默认收起,不干扰主路径 按需展开 移动工作台 移动首页 你好,Employee search 搜索 Employee 今天 先处理待办,再进入报销、票据和团队事项。 今日重点 " + }, + "findings": [ + { + "code": "CLIPPED_TEXT", + "severity": "medium", + "detail": "div:主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch" + } + ] + }, + { + "route": { + "path": "/mobile/capture", + "title": "移动票据", + "group": "mobile", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "isMobileAudit": false + }, + "durationMs": 2697, + "screenshot": "output/playwright/r93-visual-audit-session/desktop1440-mobile-capture.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/mobile/capture", + "title": "海音达工作台", + "innerWidth": 1440, + "innerHeight": 900, + "documentScrollWidth": 1440, + "bodyScrollWidth": 1440, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 288, + "y": 0, + "width": 1152, + "height": 900, + "right": 1440, + "bottom": 900 + }, + "visibleTableCount": 0, + "visibleTables": [], + "offscreenInteractive": [], + "smallTouchTargets": [], + "clippedText": [ + { + "tag": "div", + "text": "主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch", + "rect": { + "x": 0, + "y": 223, + "width": 287, + "height": 677, + "right": 287, + "bottom": 900 + }, + "scrollWidth": 287, + "clientWidth": 287, + "scrollHeight": 737, + "clientHeight": 677, + "testId": "" + } + ], + "headings": [ + { + "text": "票据上传", + "rect": { + "x": 328, + "y": 129, + "width": 322, + "height": 48, + "right": 650, + "bottom": 177 + } + }, + { + "text": "选择票据", + "rect": { + "x": 345, + "y": 242, + "width": 256, + "height": 24, + "right": 601, + "bottom": 266 + } + }, + { + "text": "离线上传队列", + "rect": { + "x": 345, + "y": 626, + "width": 96, + "height": 24, + "right": 441, + "bottom": 650 + } + } + ], + "visibleTextStart": "海音达工作台 Hyinda OA · 小团队运营中枢 今日工作台 先处理待办和团队状态,再进入具体模块。 主导航 优先处理今日工作与高频协同。 home_app_logo Portal groups 团队 event_available 请假 request_quote 报销 inventory_2 资产 article 周报 check_circle 待办 campaign 公告 workspaces 项目 备用模块 默认收起,不干扰主路径 按需展开 移动工作台 移动拍照上传 你好,Employee search 搜索 Employee 票据上传 拍照或选择发票文件,离线时自动加入待上传队列" + }, + "findings": [ + { + "code": "CLIPPED_TEXT", + "severity": "medium", + "detail": "div:主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch" + } + ] + }, + { + "route": { + "path": "/mobile/me", + "title": "移动我的", + "group": "mobile", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "isMobileAudit": false + }, + "durationMs": 3411, + "screenshot": "output/playwright/r93-visual-audit-session/desktop1440-mobile-me.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/mobile/me", + "title": "海音达工作台", + "innerWidth": 1440, + "innerHeight": 900, + "documentScrollWidth": 1440, + "bodyScrollWidth": 1440, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 288, + "y": 0, + "width": 1152, + "height": 1541, + "right": 1440, + "bottom": 1541 + }, + "visibleTableCount": 0, + "visibleTables": [], + "offscreenInteractive": [], + "smallTouchTargets": [ + { + "tag": "input", + "text": "", + "testId": "", + "rect": { + "x": 353, + "y": 1370, + "width": 16, + "height": 16, + "right": 369, + "bottom": 1386 + } + } + ], + "clippedText": [ + { + "tag": "div", + "text": "主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch", + "rect": { + "x": 0, + "y": 223, + "width": 287, + "height": 677, + "right": 287, + "bottom": 900 + }, + "scrollWidth": 287, + "clientWidth": 287, + "scrollHeight": 737, + "clientHeight": 677, + "testId": "" + } + ], + "headings": [ + { + "text": "我的", + "rect": { + "x": 328, + "y": 129, + "width": 238, + "height": 48, + "right": 566, + "bottom": 177 + } + }, + { + "text": "个人信息", + "rect": { + "x": 353, + "y": 250, + "width": 238, + "height": 24, + "right": 591, + "bottom": 274 + } + }, + { + "text": "账号与绑定", + "rect": { + "x": 353, + "y": 484, + "width": 350, + "height": 24, + "right": 703, + "bottom": 508 + } + }, + { + "text": "更多入口", + "rect": { + "x": 353, + "y": 770, + "width": 252, + "height": 24, + "right": 605, + "bottom": 794 + } + }, + { + "text": "外部通知推送", + "rect": { + "x": 353, + "y": 1296, + "width": 294, + "height": 24, + "right": 647, + "bottom": 1320 + } + } + ], + "visibleTextStart": "海音达工作台 Hyinda OA · 小团队运营中枢 今日工作台 先处理待办和团队状态,再进入具体模块。 主导航 优先处理今日工作与高频协同。 home_app_logo Portal groups 团队 event_available 请假 request_quote 报销 inventory_2 资产 article 周报 check_circle 待办 campaign 公告 workspaces 项目 备用模块 默认收起,不干扰主路径 按需展开 移动工作台 移动我的 你好,Employee search 搜索 Employee 我的 个人信息、常用入口和低频管理操作。 个人信息 头像与" + }, + "findings": [ + { + "code": "CLIPPED_TEXT", + "severity": "medium", + "detail": "div:主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch" + } + ] + }, + { + "route": { + "path": "/mobile/approvals", + "title": "移动审批", + "group": "mobile", + "expectedEmployee": false + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "isMobileAudit": false + }, + "durationMs": 2481, + "screenshot": "output/playwright/r93-visual-audit-session/desktop1440-mobile-approvals.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/403", + "title": "海音达工作台", + "innerWidth": 1440, + "innerHeight": 900, + "documentScrollWidth": 1440, + "bodyScrollWidth": 1440, + "horizontalOverflow": 0, + "hasForbiddenText": true, + "hasLoginForm": false, + "mainRect": null, + "visibleTableCount": 0, + "visibleTables": [], + "offscreenInteractive": [], + "smallTouchTargets": [ + { + "tag": "a", + "text": "返回仪表盘", + "testId": "", + "rect": { + "x": 626, + "y": 492, + "width": 80, + "height": 24, + "right": 706, + "bottom": 516 + } + }, + { + "tag": "a", + "text": "查看账号信息", + "testId": "", + "rect": { + "x": 718, + "y": 492, + "width": 96, + "height": 24, + "right": 814, + "bottom": 516 + } + } + ], + "clippedText": [], + "headings": [ + { + "text": "无权限访问", + "rect": { + "x": 510, + "y": 412, + "width": 420, + "height": 32, + "right": 930, + "bottom": 444 + } + } + ], + "visibleTextStart": "403 无权限访问 当前账号没有访问该页面的权限,请联系管理员或返回可访问页面。 返回仪表盘 查看账号信息" + }, + "findings": [ + { + "code": "EXPECTED_FORBIDDEN", + "severity": "info", + "detail": "员工账号无权限,记录为覆盖边界而非缺陷" + } + ] + }, + { + "route": { + "path": "/mobile/assets/scan", + "title": "移动资产扫描", + "group": "mobile", + "expectedEmployee": true + }, + "viewport": { + "key": "desktop1440", + "width": 1440, + "height": 900, + "isMobileAudit": false + }, + "durationMs": 2974, + "screenshot": "output/playwright/r93-visual-audit-session/desktop1440-mobile-assets-scan.png", + "consoleErrors": [], + "pageErrors": [], + "failedRequests": [], + "httpErrors": [], + "metrics": { + "finalUrl": "https://oa.hyinda.com/mobile/assets/scan", + "title": "海音达工作台", + "innerWidth": 1440, + "innerHeight": 900, + "documentScrollWidth": 1440, + "bodyScrollWidth": 1440, + "horizontalOverflow": 0, + "hasForbiddenText": false, + "hasLoginForm": false, + "mainRect": { + "x": 288, + "y": 0, + "width": 1152, + "height": 1118, + "right": 1440, + "bottom": 1118 + }, + "visibleTableCount": 0, + "visibleTables": [], + "offscreenInteractive": [], + "smallTouchTargets": [], + "clippedText": [ + { + "tag": "div", + "text": "主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch", + "rect": { + "x": 0, + "y": 223, + "width": 287, + "height": 677, + "right": 287, + "bottom": 900 + }, + "scrollWidth": 287, + "clientWidth": 287, + "scrollHeight": 737, + "clientHeight": 677, + "testId": "" + } + ], + "headings": [ + { + "text": "移动资产扫码", + "rect": { + "x": 328, + "y": 129, + "width": 294, + "height": 48, + "right": 622, + "bottom": 177 + } + }, + { + "text": "相机扫码", + "rect": { + "x": 345, + "y": 242, + "width": 294, + "height": 24, + "right": 639, + "bottom": 266 + } + }, + { + "text": "手工输入 / 搜索", + "rect": { + "x": 345, + "y": 989, + "width": 113, + "height": 24, + "right": 458, + "bottom": 1013 + } + } + ], + "visibleTextStart": "海音达工作台 Hyinda OA · 小团队运营中枢 今日工作台 先处理待办和团队状态,再进入具体模块。 主导航 优先处理今日工作与高频协同。 home_app_logo Portal groups 团队 event_available 请假 request_quote 报销 inventory_2 资产 article 周报 check_circle 待办 campaign 公告 workspaces 项目 备用模块 默认收起,不干扰主路径 按需展开 移动工作台 移动资产扫描 你好,Employee search 搜索 Employee 移动资产扫码 扫码或手工输入资产编号,快速查看资产卡片" + }, + "findings": [ + { + "code": "CLIPPED_TEXT", + "severity": "medium", + "detail": "div:主导航优先处理今日工作与高频协同。home_app_logoPortalgroups团队event_available请假request_quote报销inventory_2资产article周报ch" + } + ] + } + ] +} \ No newline at end of file diff --git a/deploy/trialrun/checklist.md b/deploy/trialrun/checklist.md index 84ba75bf..ce1dcae0 100644 --- a/deploy/trialrun/checklist.md +++ b/deploy/trialrun/checklist.md @@ -20,6 +20,7 @@ - [ ] 若要导数据,仅准备最小主数据:部门、员工、角色、在用资产、活跃项目、合同元数据 - [ ] 不导入历史审批单、通知历史、审计日志、聊天记录和涉密正文附件 - [ ] 已确认远端部署目录 `/opt/hyb-oa-trialrun` 不是 git 工作树,发布优先走 `bash deploy/trialrun/deploy.sh` +- [ ] 已确认 OA 前端静态资源由 server 容器内 `/app/client/dist` 提供,Caddy 只反代到 `127.0.0.1:3000` ## A. 发布前(Pre-flight) - [ ] 确认当前版本已打 tag:`git tag -a trialrun-YYYYMMDD-NN -m "trialrun release"` @@ -46,6 +47,8 @@ - [ ] external deps smoke: - [ ] `docker-compose -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/.env exec -T server node src/scripts/smoke-external-deps.js` - [ ] 若 external deps smoke 通过,已确认通过前提不是“企微关闭 + OCR mock”误通过 +- [ ] 若启用腾讯 OCR,已脱敏核查 `OCR_PROVIDER=tencent`、`TENCENT_SECRET_ID` 长度、`TENCENT_SECRET_KEY` 长度和 `TENCENT_OCR_REGION` +- [ ] 若本次包含前端体验修复,已在容器内确认 `/app/client/dist` 含关键 test id 或公网 asset hash 已更新 - [ ] 登录验证已由 live smoke 与 release gate 覆盖;仅首次接入或第三方后台配置变更时补做人工确认 ## C. 发布后(Post-check) @@ -56,6 +59,8 @@ - [ ] `docker logs --tail=200 hyb-oa-trialrun-server` - [ ] 已确认 smoke 账号为独立账号(`smoke-admin` / `smoke-employee`),且不参与真实业务 - [ ] 已确认 live smoke 仅检查 `/ready`、登录、Portal、项目、公告、个人设置和企微配置状态 +- [ ] 若涉及票据/OCR,已执行真实 OCR 辅助复核或记录跳过原因:`PLAYWRIGHT_MANUAL=1 PLAYWRIGHT_OCR_LIVE=1 ... npx playwright test tests/e2e/manual/live-invoice-ocr.spec.ts` +- [ ] 若涉及移动端体验,已用 Playwright 390px 视口检查 `/invoice-pool`、`/reimbursements`、`/mobile/capture`,确认无桌面表格、无出屏按钮,上传 input 的 `multiple` 与预期一致 ## D. 回滚(Rollback) > 原则:如果涉及迁移,最快回滚通常是 “恢复备份 + 回到上个 tag”。 @@ -67,6 +72,7 @@ - [ ] 重启并探活: - [ ] `docker-compose -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/.env up -d --build server` - [ ] `curl -fsS http://127.0.0.1:3000/ready` +- [ ] 若仅为 OCR 应急降级,已把远端 `.env` 的 `OCR_PROVIDER` 临时切回 `mock`,重启 server,并在 Issue/发布记录中写明原因、影响范围和恢复时间 diff --git a/deploy/trialrun/runbook.md b/deploy/trialrun/runbook.md index 81571336..75d95417 100644 --- a/deploy/trialrun/runbook.md +++ b/deploy/trialrun/runbook.md @@ -22,7 +22,8 @@ - 部署目录:`/opt/hyb-oa-trialrun` - 远端目录当前不是 git 工作树;发布应优先从本地执行 `bash deploy/trialrun/deploy.sh`,由脚本 `rsync` 到服务器 - 远端容器编排当前实际为 `docker-compose 1.29.2`;本 runbook 命令以 `docker-compose` 为准 -- 当前公网 `.env` 已确认:`APP_ORIGIN=https://oa.hyinda.com`、`COOKIE_SECURE=true`、`PUBLIC_SECURITY_HARDENING_ENABLED=true`,但 `WECOM_*` 仍为 `false`,`OCR_PROVIDER=mock` +- 当前公网 `.env` 已确认:`APP_ORIGIN=https://oa.hyinda.com`、`COOKIE_SECURE=true`、`PUBLIC_SECURITY_HARDENING_ENABLED=true` +- 企业微信与 OCR 已进入公网试运行配置。核查时只检查开关、长度和 smoke 结果,不在日志、Issue 或文档中输出 secret 明文。 ## 0. 前置条件 - Docker + Docker Compose(v1/v2 任一可用) @@ -104,10 +105,54 @@ docker-compose -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/ - 推荐直接执行 `bash scripts/qa/run-release-gate.sh all`,让 static / local smoke / full-local / deploy / live smoke 形成单一放行链。 - 若再出现“数据库开了但功能被环境硬关”的情况,部署会直接失败,不再等到手工点页面才发现。 - 2026-05-04 公网只读巡检显示:`smoke-external-deps.js` 可以通过,但前提是 `WECOM_*` 未启用且 `OCR_PROVIDER=mock`;`smoke-trialrun-runtime.js` 当前会因 `announcements_v1` 为 `force_off` 失败。 +- 2026-05-05 公网复核显示:`OCR_PROVIDER=tencent` 可用,真实发票上传后进入 `available`,provider 为 `tencent`;后续发布不能再把 OCR 回退到 mock 而不记录原因。 浏览器访问: - `http://127.0.0.1:3000`(单域托管前端) +### 1.4.1 腾讯 OCR 试运行核查 +远端 `.env` 是 OCR 配置事实源,禁止提交或复制密钥明文。只做以下脱敏检查: + +```bash +cd /opt/hyb-oa-trialrun +set -a +source deploy/trialrun/.env +set +a + +printf 'OCR_PROVIDER=%s\n' "$OCR_PROVIDER" +printf 'TENCENT_SECRET_ID length=%s\n' "${#TENCENT_SECRET_ID}" +printf 'TENCENT_SECRET_KEY length=%s\n' "${#TENCENT_SECRET_KEY}" +printf 'TENCENT_OCR_REGION=%s\n' "$TENCENT_OCR_REGION" +``` + +期望: +- `OCR_PROVIDER=tencent` +- `TENCENT_SECRET_ID` 和 `TENCENT_SECRET_KEY` 长度大于 0 +- `TENCENT_OCR_REGION` 与腾讯 OCR 开通地域一致,例如 `ap-beijing` + +发布后 smoke: + +```bash +docker-compose -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/.env exec -T server node src/scripts/smoke-external-deps.js +docker-compose -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/.env exec -T server node src/scripts/smoke-trialrun-runtime.js +``` + +真实 OCR 辅助复核(本地执行,不提交发票文件): + +```bash +cd client +PLAYWRIGHT_MANUAL=1 \ +PLAYWRIGHT_OCR_LIVE=1 \ +PLAYWRIGHT_OCR_LIVE_FILE=/path/to/invoice.pdf \ +E2E_BASE_URL=https://oa.hyinda.com \ +npx playwright test tests/e2e/manual/live-invoice-ocr.spec.ts --workers=1 --reporter=list --timeout=360000 +``` + +回滚到 mock 只允许作为应急降级: +1. 在远端 `.env` 将 `OCR_PROVIDER=tencent` 改为 `OCR_PROVIDER=mock`。 +2. 执行 `docker-compose -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/.env up -d server`。 +3. 在 Issue/发布记录中写明降级原因、预计恢复时间和影响范围。 + ## 1.5 备份与恢复演练(强烈建议至少做一次) > 备份建议做到“DB + 文件存储(票据上传目录)”双份齐全。 @@ -193,6 +238,37 @@ docker-compose -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/ docker-compose -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/.env run --rm init ``` +### 2.2 前端部署一致性排障 +当前 `oa.hyinda.com` 由 Caddy 反代到 `127.0.0.1:3000`,前端静态资源由 server 容器内的 `/app/client/dist` 提供,不是 `/etc/caddy/Caddyfile` 里的独立静态目录。 + +如果出现“本地源码已有功能,但公网仍显示旧 UI”,先按以下顺序核查: + +```bash +# 1) 确认 Caddy 仍是反代到 3000 +sudo sed -n '/oa.hyinda.com/,/}/p' /etc/caddy/Caddyfile + +# 2) 比对公网首页引用的 asset hash +curl -fsS https://oa.hyinda.com/ | grep -o '/assets/[^" ]*' | head + +# 3) 在容器内查构建产物是否包含关键 test id +docker exec hyb-oa-trialrun-server sh -lc \ + 'for pat in invoice-pool-mobile-list reimbursements-mobile-list mobile-capture-file multiple:!0; do printf "%s " "$pat"; grep -Rao "$pat" /app/client/dist/assets /app/client/dist/index.html 2>/dev/null | wc -l; done' +``` + +若远端源码已更新但容器内 `/app/client/dist` 仍旧,重建并重启: + +```bash +cd /opt/hyb-oa-trialrun +docker-compose -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/.env up -d --build server +docker-compose -f deploy/trialrun/docker-compose.yml --env-file deploy/trialrun/.env run --rm -T init 上传真实发票->腾讯 OCR->票据中心详情 available 且金额可见。",playwright|typescript,DONE,DONE,DONE,client/tests/e2e/manual/live-invoice-ocr.spec.ts|client/tests/e2e/helpers/liveInvoiceOcr.ts,["A1"],2026-05-05:复现假失败为 helper 在 pending_ocr/占位字段时提前返回;已改为等待 available/ocr_failed 明确终态;真实 OCR 用例通过;不新增真实密钥;回滚路径:恢复原 helper 与 spec。 +A3,优化手机票据中心列表与详情布局,"修复公网手机视口仍显示桌面表格/字段挤压的问题,改为移动端优先的票据卡片与详情字段分行展示。","1) 390px 手机视口不显示桌面票据表格,`invoice-pool-mobile-list` 可见;2) 发票号码、销售方、购买方、金额不被裁切或横向溢出;3) 详情操作按钮可点击且不重叠;4) 视觉自动化指标满足:`tableVisible=false`、`mobileListVisible=true`、`offscreenButtons=[]`、截图无明显遮挡;5) 桌面表格视图保持可用。","命令:`cd client && npm run typecheck && npm run build && npx playwright test tests/e2e/r92-mobile-invoice-usability.spec.ts --workers=1 --reporter=list --timeout=90000`;补充公网手机/桌面视觉脚本检查 `https://oa.hyinda.com/invoice-pool`,保存截图到 `output/playwright/r93-*invoice-pool.png`,并输出 viewport、table/mobile-list display、offscreenButtons、字段可见性。业务:员工在手机票据中心查看真实 OCR 票据,可读字段并可进入详情/人工修正/归档。",playwright|typescript,DONE,DONE,DONE,client/src/pages/invoice-pool/InvoiceListCard.tsx|client/src/pages/invoice-pool/InvoiceDetailPanel.tsx|client/tests/e2e/r92-mobile-invoice-usability.spec.ts,"[""A1"",""A6""]",2026-05-05:源码已有移动卡片,公网问题由旧镜像导致;重建部署后 `post-deploy-visual-check-2026-05-05.json` 显示 mobile390 `tableVisible=false`、`invoiceMobileListVisible=true`、`offscreenButtons=[]`;R92 本地用例未跑通因本地 127.0.0.1:3000 未启动,已由公网视觉复测覆盖;回滚路径:恢复 R92 票据组件或上一版镜像。 +A4,补齐试运行 OCR 配置运行手册,"把公网 OCR provider 从 mock 切到 tencent 的操作事实、验证命令、回滚方式写入 trialrun runbook/checklist,避免后续发布又回到 mock 或空密钥。","1) runbook 明确 `.env` 为事实源且不提交密钥;2) 写清 `OCR_PROVIDER=tencent`、Tencent key 长度检查、external deps smoke、runtime smoke、回滚到 mock 的步骤;3) 不暴露任何真实密钥。","命令:`git diff --check`;业务:按 runbook 可复现远端 OCR 配置检查与 smoke,不需要查看密钥明文。",manual,DONE,DONE,DONE,deploy/trialrun/runbook.md|deploy/trialrun/checklist.md,["A1"],2026-05-05:runbook/checklist 已补充腾讯 OCR 脱敏核查、真实 OCR 辅助复核、前端部署一致性排障和 OCR mock 应急回滚;不含真实密钥;回滚路径:恢复文档改动。 +A5,R93 回归与中文提交,"执行前端构建、移动端 Playwright、live OCR 辅助复核和公网视觉自动化复核,确认后按中文分批提交。","1) A2-A4/A6 Test_Method 通过或明确记录外部阻塞;2) 视觉自动化保留手机/桌面截图与 DOM 指标摘要;3) `git status --short` 仅剩预期未跟踪/ignored 产物;4) commit message 使用中文并引用 R93。","命令:`cd client && npm run typecheck && npm run build`;`cd client && npx playwright test tests/e2e/r92-mobile-invoice-usability.spec.ts --workers=1 --reporter=list --timeout=90000`;live OCR 命令见 A2;视觉复核:公网 390x844 与 1440x900 截图 + DOM 指标,检查 no offscreen buttons、手机列表/详情字段可见。业务:公网票据中心真实 OCR 票据在手机端可读可操作。",playwright|git|manual,DONE,DONE,DONE,N/A,"[""A2"",""A3"",""A4"",""A6""]",2026-05-05:`npm run typecheck` 通过,`npm run build` 通过,远端 external/runtime smoke 通过,真实 live OCR 用例通过,公网 post-deploy 视觉复测通过;R92 本地用例因本地 127.0.0.1:3000 未启动未作为门禁;提交前不纳入密钥、截图和 test-results;回滚路径:按分批 commit revert。