fix: CPU显示修复 + 报表面板添加浏览器池状态

1. CPU 显示修复:
   - routes/admin_api/core.py: 新增 _get_server_cpu_percent()
   - 首次调用使用 interval=0.1 避免返回 0.0
   - 后续调用使用缓存,TTL 1秒

2. 报表面板浏览器池状态:
   - admin-frontend/src/api/browser_pool.js: 新增 API 调用
   - ReportPage.vue: 添加浏览器池状态卡片
   - 显示总/活跃/空闲 Worker 数和队列等待数
   - Worker 表格带状态颜色标签(活跃/空闲/异常)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-27 20:15:48 +08:00
parent 1b20478a08
commit 01ffaf96a3
26 changed files with 193 additions and 48 deletions

View File

@@ -1,34 +1,34 @@
{
"_email-DSz2K4-y.js": {
"file": "assets/email-DSz2K4-y.js",
"_email-JmyL2jV4.js": {
"file": "assets/email-JmyL2jV4.js",
"name": "email",
"imports": [
"index.html"
]
},
"_system-C_4M4EtK.js": {
"file": "assets/system-C_4M4EtK.js",
"_system-DIc9L1cQ.js": {
"file": "assets/system-DIc9L1cQ.js",
"name": "system",
"imports": [
"index.html"
]
},
"_tasks-yIlAy2Ne.js": {
"file": "assets/tasks-yIlAy2Ne.js",
"_tasks-DILta43B.js": {
"file": "assets/tasks-DILta43B.js",
"name": "tasks",
"imports": [
"index.html"
]
},
"_users-BNPg4OEj.js": {
"file": "assets/users-BNPg4OEj.js",
"_users-BxS2U-Si.js": {
"file": "assets/users-BxS2U-Si.js",
"name": "users",
"imports": [
"index.html"
]
},
"index.html": {
"file": "assets/index-Dx-1XhY8.js",
"file": "assets/index-B9zsNTKQ.js",
"name": "index",
"src": "index.html",
"isEntry": true,
@@ -48,7 +48,7 @@
]
},
"src/pages/AnnouncementsPage.vue": {
"file": "assets/AnnouncementsPage-DP-v4_4f.js",
"file": "assets/AnnouncementsPage-C3uZDqOR.js",
"name": "AnnouncementsPage",
"src": "src/pages/AnnouncementsPage.vue",
"isDynamicEntry": true,
@@ -60,12 +60,12 @@
]
},
"src/pages/EmailPage.vue": {
"file": "assets/EmailPage-4etTfx9H.js",
"file": "assets/EmailPage-DmFgLrFm.js",
"name": "EmailPage",
"src": "src/pages/EmailPage.vue",
"isDynamicEntry": true,
"imports": [
"_email-DSz2K4-y.js",
"_email-JmyL2jV4.js",
"index.html"
],
"css": [
@@ -73,7 +73,7 @@
]
},
"src/pages/FeedbacksPage.vue": {
"file": "assets/FeedbacksPage-BlN6FFbD.js",
"file": "assets/FeedbacksPage-BEa--2pl.js",
"name": "FeedbacksPage",
"src": "src/pages/FeedbacksPage.vue",
"isDynamicEntry": true,
@@ -85,13 +85,13 @@
]
},
"src/pages/LogsPage.vue": {
"file": "assets/LogsPage-adLViVmd.js",
"file": "assets/LogsPage-CQsGwFRH.js",
"name": "LogsPage",
"src": "src/pages/LogsPage.vue",
"isDynamicEntry": true,
"imports": [
"_users-BNPg4OEj.js",
"_tasks-yIlAy2Ne.js",
"_users-BxS2U-Si.js",
"_tasks-DILta43B.js",
"index.html"
],
"css": [
@@ -99,22 +99,22 @@
]
},
"src/pages/ReportPage.vue": {
"file": "assets/ReportPage-DxDL6AXa.js",
"file": "assets/ReportPage-nXQwTJlk.js",
"name": "ReportPage",
"src": "src/pages/ReportPage.vue",
"isDynamicEntry": true,
"imports": [
"index.html",
"_email-DSz2K4-y.js",
"_tasks-yIlAy2Ne.js",
"_system-C_4M4EtK.js"
"_email-JmyL2jV4.js",
"_tasks-DILta43B.js",
"_system-DIc9L1cQ.js"
],
"css": [
"assets/ReportPage-CW7RwLmI.css"
"assets/ReportPage-D7trjjOv.css"
]
},
"src/pages/SecurityPage.vue": {
"file": "assets/SecurityPage-BkxWxQhW.js",
"file": "assets/SecurityPage-Czxm2GJx.js",
"name": "SecurityPage",
"src": "src/pages/SecurityPage.vue",
"isDynamicEntry": true,
@@ -126,7 +126,7 @@
]
},
"src/pages/SettingsPage.vue": {
"file": "assets/SettingsPage-D_cVneyv.js",
"file": "assets/SettingsPage-IGV4in6c.js",
"name": "SettingsPage",
"src": "src/pages/SettingsPage.vue",
"isDynamicEntry": true,
@@ -138,12 +138,12 @@
]
},
"src/pages/SystemPage.vue": {
"file": "assets/SystemPage-Cph4odbt.js",
"file": "assets/SystemPage-BPHukDdR.js",
"name": "SystemPage",
"src": "src/pages/SystemPage.vue",
"isDynamicEntry": true,
"imports": [
"_system-C_4M4EtK.js",
"_system-DIc9L1cQ.js",
"index.html"
],
"css": [
@@ -151,12 +151,12 @@
]
},
"src/pages/UsersPage.vue": {
"file": "assets/UsersPage-19tzoQBx.js",
"file": "assets/UsersPage-DLsmihq2.js",
"name": "UsersPage",
"src": "src/pages/UsersPage.vue",
"isDynamicEntry": true,
"imports": [
"_users-BNPg4OEj.js",
"_users-BxS2U-Si.js",
"index.html"
],
"css": [