feat: KDocs 上传增强 + 离线监控 + Bug修复

KDocs 上传功能增强:
- 搜索优化:只用姓名搜索 + C列验证,避免匹配到错误单元格
- 有效行范围:支持配置起始行/结束行,限制上传区域
- 图片覆盖:支持覆盖单元格已有图片(Escape + Delete)
- 配置持久化:kdocs_row_start/row_end 保存到数据库(v18迁移)

二次登录功能:
- 登录后立即再次登录,让"上次登录时间"显示为刚刚

KDocs 离线监控:
- 每5分钟检测金山文档登录状态
- 离线时发送邮件通知管理员(每次掉线只通知一次)
- 恢复在线后重置通知状态

Bug 修复:
- 任务日志搜索账号关键词报错500:添加异常处理

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-07 23:40:46 +08:00
parent 13544867aa
commit b0fe325154
31 changed files with 604 additions and 141 deletions

View File

@@ -1,34 +1,34 @@
{
"_email-BBYDqLKN.js": {
"file": "assets/email-BBYDqLKN.js",
"_email-C4xyG93p.js": {
"file": "assets/email-C4xyG93p.js",
"name": "email",
"imports": [
"index.html"
]
},
"_system-BDTy0cf_.js": {
"file": "assets/system-BDTy0cf_.js",
"_system-C6kBIFhi.js": {
"file": "assets/system-C6kBIFhi.js",
"name": "system",
"imports": [
"index.html"
]
},
"_tasks-CeZTKYlS.js": {
"file": "assets/tasks-CeZTKYlS.js",
"_tasks-dxahzB_w.js": {
"file": "assets/tasks-dxahzB_w.js",
"name": "tasks",
"imports": [
"index.html"
]
},
"_users-CWMQV7em.js": {
"file": "assets/users-CWMQV7em.js",
"_users-ecMaaAFD.js": {
"file": "assets/users-ecMaaAFD.js",
"name": "users",
"imports": [
"index.html"
]
},
"index.html": {
"file": "assets/index-BDEpmftQ.js",
"file": "assets/index-DKH_HvPt.js",
"name": "index",
"src": "index.html",
"isEntry": true,
@@ -44,11 +44,11 @@
"src/pages/SettingsPage.vue"
],
"css": [
"assets/index-DxTKnDeo.css"
"assets/index-_5Ec1Hmd.css"
]
},
"src/pages/AnnouncementsPage.vue": {
"file": "assets/AnnouncementsPage-D9Qeb7XP.js",
"file": "assets/AnnouncementsPage-kpoSCxEP.js",
"name": "AnnouncementsPage",
"src": "src/pages/AnnouncementsPage.vue",
"isDynamicEntry": true,
@@ -60,12 +60,12 @@
]
},
"src/pages/EmailPage.vue": {
"file": "assets/EmailPage-wPg_LfpQ.js",
"file": "assets/EmailPage-CEtsoP5P.js",
"name": "EmailPage",
"src": "src/pages/EmailPage.vue",
"isDynamicEntry": true,
"imports": [
"_email-BBYDqLKN.js",
"_email-C4xyG93p.js",
"index.html"
],
"css": [
@@ -73,7 +73,7 @@
]
},
"src/pages/FeedbacksPage.vue": {
"file": "assets/FeedbacksPage-DZkgKcO5.js",
"file": "assets/FeedbacksPage-ByHln3Ce.js",
"name": "FeedbacksPage",
"src": "src/pages/FeedbacksPage.vue",
"isDynamicEntry": true,
@@ -85,13 +85,13 @@
]
},
"src/pages/LogsPage.vue": {
"file": "assets/LogsPage-CjnNneeo.js",
"file": "assets/LogsPage-vZFAwgb-.js",
"name": "LogsPage",
"src": "src/pages/LogsPage.vue",
"isDynamicEntry": true,
"imports": [
"_users-CWMQV7em.js",
"_tasks-CeZTKYlS.js",
"_users-ecMaaAFD.js",
"_tasks-dxahzB_w.js",
"index.html"
],
"css": [
@@ -99,22 +99,22 @@
]
},
"src/pages/ReportPage.vue": {
"file": "assets/ReportPage-CuHgaMnw.js",
"file": "assets/ReportPage--ClMBhif.js",
"name": "ReportPage",
"src": "src/pages/ReportPage.vue",
"isDynamicEntry": true,
"imports": [
"index.html",
"_email-BBYDqLKN.js",
"_tasks-CeZTKYlS.js",
"_system-BDTy0cf_.js"
"_email-C4xyG93p.js",
"_tasks-dxahzB_w.js",
"_system-C6kBIFhi.js"
],
"css": [
"assets/ReportPage-Q8rCsG8A.css"
]
},
"src/pages/SecurityPage.vue": {
"file": "assets/SecurityPage-hp7dnVAc.js",
"file": "assets/SecurityPage-DBhX0IuO.js",
"name": "SecurityPage",
"src": "src/pages/SecurityPage.vue",
"isDynamicEntry": true,
@@ -126,7 +126,7 @@
]
},
"src/pages/SettingsPage.vue": {
"file": "assets/SettingsPage-DfeoFZRa.js",
"file": "assets/SettingsPage-D91FOriC.js",
"name": "SettingsPage",
"src": "src/pages/SettingsPage.vue",
"isDynamicEntry": true,
@@ -138,25 +138,25 @@
]
},
"src/pages/SystemPage.vue": {
"file": "assets/SystemPage-CMSxrPFY.js",
"file": "assets/SystemPage-DVj-4Lnp.js",
"name": "SystemPage",
"src": "src/pages/SystemPage.vue",
"isDynamicEntry": true,
"imports": [
"_system-BDTy0cf_.js",
"_system-C6kBIFhi.js",
"index.html"
],
"css": [
"assets/SystemPage-DHDS5_BP.css"
"assets/SystemPage-C8GQyKcD.css"
]
},
"src/pages/UsersPage.vue": {
"file": "assets/UsersPage-CPdD81iA.js",
"file": "assets/UsersPage-C_vL5-r3.js",
"name": "UsersPage",
"src": "src/pages/UsersPage.vue",
"isDynamicEntry": true,
"imports": [
"_users-CWMQV7em.js",
"_users-ecMaaAFD.js",
"index.html"
],
"css": [