Files
zsglpt/static/admin/.vite/manifest.json
yuyx 1b20478a08 feat: 风险分定时衰减 + 密码提示修复 + 浏览器池API + next回跳
1. 风险分衰减定时任务:
   - services/scheduler.py: 每天 CST 04:00 自动执行 decay_scores()
   - 支持 RISK_SCORE_DECAY_TIME_CST 环境变量覆盖

2. 密码长度提示统一为8位:
   - app-frontend/src/pages/RegisterPage.vue
   - app-frontend/src/layouts/AppLayout.vue
   - admin-frontend/src/pages/SettingsPage.vue
   - templates/register.html

3. 浏览器池统计API:
   - GET /yuyx/api/browser_pool/stats
   - 返回 worker 状态、队列等待数等信息
   - browser_pool_worker.py: 增强 get_stats() 方法

4. 登录后支持 next 参数回跳:
   - app-frontend/src/pages/LoginPage.vue: 检查 ?next= 参数
   - 仅允许站内路径(防止开放重定向)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 18:28:21 +08:00

166 lines
3.7 KiB
JSON

{
"_email-DSz2K4-y.js": {
"file": "assets/email-DSz2K4-y.js",
"name": "email",
"imports": [
"index.html"
]
},
"_system-C_4M4EtK.js": {
"file": "assets/system-C_4M4EtK.js",
"name": "system",
"imports": [
"index.html"
]
},
"_tasks-yIlAy2Ne.js": {
"file": "assets/tasks-yIlAy2Ne.js",
"name": "tasks",
"imports": [
"index.html"
]
},
"_users-BNPg4OEj.js": {
"file": "assets/users-BNPg4OEj.js",
"name": "users",
"imports": [
"index.html"
]
},
"index.html": {
"file": "assets/index-Dx-1XhY8.js",
"name": "index",
"src": "index.html",
"isEntry": true,
"dynamicImports": [
"src/pages/ReportPage.vue",
"src/pages/UsersPage.vue",
"src/pages/FeedbacksPage.vue",
"src/pages/LogsPage.vue",
"src/pages/AnnouncementsPage.vue",
"src/pages/EmailPage.vue",
"src/pages/SecurityPage.vue",
"src/pages/SystemPage.vue",
"src/pages/SettingsPage.vue"
],
"css": [
"assets/index-_5Ec1Hmd.css"
]
},
"src/pages/AnnouncementsPage.vue": {
"file": "assets/AnnouncementsPage-DP-v4_4f.js",
"name": "AnnouncementsPage",
"src": "src/pages/AnnouncementsPage.vue",
"isDynamicEntry": true,
"imports": [
"index.html"
],
"css": [
"assets/AnnouncementsPage-CjcC-aWD.css"
]
},
"src/pages/EmailPage.vue": {
"file": "assets/EmailPage-4etTfx9H.js",
"name": "EmailPage",
"src": "src/pages/EmailPage.vue",
"isDynamicEntry": true,
"imports": [
"_email-DSz2K4-y.js",
"index.html"
],
"css": [
"assets/EmailPage-BH6ksrcc.css"
]
},
"src/pages/FeedbacksPage.vue": {
"file": "assets/FeedbacksPage-BlN6FFbD.js",
"name": "FeedbacksPage",
"src": "src/pages/FeedbacksPage.vue",
"isDynamicEntry": true,
"imports": [
"index.html"
],
"css": [
"assets/FeedbacksPage-BKNQYWPz.css"
]
},
"src/pages/LogsPage.vue": {
"file": "assets/LogsPage-adLViVmd.js",
"name": "LogsPage",
"src": "src/pages/LogsPage.vue",
"isDynamicEntry": true,
"imports": [
"_users-BNPg4OEj.js",
"_tasks-yIlAy2Ne.js",
"index.html"
],
"css": [
"assets/LogsPage-Cmm-qHAH.css"
]
},
"src/pages/ReportPage.vue": {
"file": "assets/ReportPage-DxDL6AXa.js",
"name": "ReportPage",
"src": "src/pages/ReportPage.vue",
"isDynamicEntry": true,
"imports": [
"index.html",
"_email-DSz2K4-y.js",
"_tasks-yIlAy2Ne.js",
"_system-C_4M4EtK.js"
],
"css": [
"assets/ReportPage-CW7RwLmI.css"
]
},
"src/pages/SecurityPage.vue": {
"file": "assets/SecurityPage-BkxWxQhW.js",
"name": "SecurityPage",
"src": "src/pages/SecurityPage.vue",
"isDynamicEntry": true,
"imports": [
"index.html"
],
"css": [
"assets/SecurityPage-CH3QeiaV.css"
]
},
"src/pages/SettingsPage.vue": {
"file": "assets/SettingsPage-D_cVneyv.js",
"name": "SettingsPage",
"src": "src/pages/SettingsPage.vue",
"isDynamicEntry": true,
"imports": [
"index.html"
],
"css": [
"assets/SettingsPage-DKTq8S2K.css"
]
},
"src/pages/SystemPage.vue": {
"file": "assets/SystemPage-Cph4odbt.js",
"name": "SystemPage",
"src": "src/pages/SystemPage.vue",
"isDynamicEntry": true,
"imports": [
"_system-C_4M4EtK.js",
"index.html"
],
"css": [
"assets/SystemPage-DhVR0HeO.css"
]
},
"src/pages/UsersPage.vue": {
"file": "assets/UsersPage-19tzoQBx.js",
"name": "UsersPage",
"src": "src/pages/UsersPage.vue",
"isDynamicEntry": true,
"imports": [
"_users-BNPg4OEj.js",
"index.html"
],
"css": [
"assets/UsersPage-CC4Unpwt.css"
]
}
}