 19174616018andClaude Opus 4.5
|
10be464265
|
fix: 修复连接池计数和任务调度器默认值问题
1. db_pool.py - 修复连接计数不一致问题
- 将 _created_connections 递增移到 put() 成功之后
- 确保 Full 异常和创建异常时正确关闭连接
- 避免计数器永久偏高
2. services/tasks.py - 统一 _running_by_user 默认值
- 将减少计数时的默认值从 1 改为 0
- 与增加计数时的默认值保持一致
- 添加注释说明
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-16 22:46:40 +08:00 |
|
 19174616018andClaude Opus 4.5
|
e65485cb1e
|
fix: 修复自动重试的竞态条件问题
问题:delayed_retry_submit 闭包捕获的是旧的 account 对象
- 5秒后检查 should_stop 时,可能检查的是旧对象
- 如果账户被删除/重建,会导致状态检查不可靠
- 可能导致重复任务提交
修复:
- 在 delayed_retry_submit 中重新调用 safe_get_account 获取最新账户对象
- 添加账户不存在的检查
- 添加取消时的日志输出,便于调试
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-16 22:32:37 +08:00 |
|
 19174616018andClaude Opus 4.5
|
42609651bd
|
fix: 修复截图登录检查逻辑的条件判断错误
问题:attempt > 0 应该是 attempt > 1
- attempt 从 range(1, max_retries + 1) 开始,值为 1, 2, 3
- 原条件 attempt > 0 在 attempt=1 时就为 True
- 导致 elif 分支(首次尝试逻辑)成为死代码
修复:
- 将 attempt > 0 改为 attempt > 1
- 更新注释使其更清晰准确
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-16 22:16:01 +08:00 |
|
 19174616018andClaude Opus 4.5
|
722dccdc78
|
fix: 登录路由添加CSRF豁免,解决重启后无法登录的问题
- 添加 /yuyx/api/login, /api/login, /api/auth/login 路由的CSRF豁免
- 登录本身就是建立session的过程,不需要CSRF保护
- 解决服务重启后旧session导致CSRF验证失败的问题
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-14 13:29:32 +08:00 |
|
 19174616018andClaude Opus 4.5
|
606cad43dc
|
fix: 修复无附件文章无法标记已读的问题
- 发现标记已读的正确 API: /tools/submit_ajax.ashx?action=saveread
- 添加 mark_article_read 方法调用 saveread API 标记文章已读
- 修改 get_article_attachments 返回文章的 channel_id 和 article_id
- 对每篇文章都调用 mark_article_read,无论是否有附件
- 解决米米88、黄紫夏99等账号文章无法标记已读的问题
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-14 13:24:29 +08:00 |
|
 19174616018andClaude Opus 4.5
|
6313631b09
|
fix: 改进分页逻辑,确保遍历所有页面不漏掉内容
- 当前页有新文章时,重新获取第1页(已读文章消失后页面上移)
- 当前页无新文章时,继续检查后续页面
- 遍历完所有页面后才结束循环
- 解决 mark_read 延迟导致后续页面内容被漏掉的问题
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-14 13:17:52 +08:00 |
|
 19174616018andClaude Opus 4.5
|
09188b8765
|
fix: 防止浏览时无限循环重复处理已处理文章
- 添加 processed_hrefs 集合跟踪已处理的文章 href
- 处理文章前检查是否已处理过,避免重复处理
- 添加 new_articles_in_page 计数器,当前页无新文章时退出循环
- 解决 mark_read 未立即生效导致的无限循环问题
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-14 13:14:22 +08:00 |
|
 19174616018andClaude Opus 4.5
|
b2b0dfd500
|
fix: 修复分页错位问题,改为循环获取第1页直到清空
问题:标记已读后文章从列表消失,导致后续页面上移,
造成按页码遍历时遗漏部分内容。
解决:每次处理完当前页后重新获取第1页,循环直到没有内容。
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-14 13:08:34 +08:00 |
|
 19174616018andClaude Opus 4.5
|
2ff9e18842
|
fix: 修复附件解析正则,匹配 download2.ashx
正则从 download\.ashx 改为 download2?\.ashx
以同时支持新旧两种附件下载链接格式
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-14 12:48:58 +08:00 |
|
 19174616018andClaude Opus 4.5
|
1bd49f804c
|
docs: 更新浏览逻辑注释,反映网站参数变更
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-14 12:45:40 +08:00 |
|
 19174616018andClaude Opus 4.5
|
f8bbe3da0d
|
fix: 修复应读参数,bz=2 改为 bz=0(适配网站更新)
网站参数变更:
- bz=0: 应读
- bz=1: 已读
- bz=2: 已读(旧参数,已废弃)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-14 12:43:25 +08:00 |
|
 19174616018andClaude Opus 4.5
|
1b85f34a0f
|
fix: 恢复截图顺序,保持完整框架样式
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-14 12:38:52 +08:00 |
|
 19174616018andClaude Opus 4.5
|
f04c5c1c8f
|
fix: 适配网站结构更新
1. 标记已读改用预览通道 (download2.ashx)
2. 截图优先直接访问目标页面,避免 iframe 加载问题
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-14 12:31:22 +08:00 |
|
 19174616018andClaude Opus 4.5
|
30b6e3144b
|
fix: database.py 添加缺失的 kdocs_row_start/row_end 参数
修复保存金山文档配置时报 500 错误的问题
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-08 01:03:19 +08:00 |
|
 19174616018andClaude Opus 4.5
|
da71b0ac5e
|
docs: 修正 README 中截图引擎描述
- 截图使用 wkhtmltoimage(不是 Playwright)
- Playwright 仅用于金山文档表格操作
- 修正技术栈、项目结构、更新日志相关描述
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-08 01:00:08 +08:00 |
|
 19174616018andClaude Opus 4.5
|
3c6799ce53
|
docs: 更新 README 文档至 v2.0
- 更新项目简介,添加新功能描述
- 更新技术栈(Vue 3, Playwright, Element Plus)
- 更新项目结构,添加新模块说明
- 添加更新日志章节,记录 v2.0 主要变更:
- 金山文档集成
- Vue 3 SPA 前端
- 用户自定义定时任务
- 安全防护系统
- 邮件通知系统
- 公告/反馈系统
- 截图引擎升级等
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-08 00:58:16 +08:00 |
|
 19174616018andClaude Opus 4.5
|
a3060e4cd9
|
feat: Vue SPA 添加 KDocs 在线状态显示 + 清理废弃模板
功能更新:
- AccountsPage.vue: 工具栏显示 KDocs 在线状态(就绪/离线)
- settings.js: 添加 fetchKdocsStatus API 函数
- 每60秒自动刷新状态
代码清理:
- 删除废弃的 legacy 模板文件(约170KB)
- templates/index.html
- templates/login.html
- templates/register.html
- templates/reset_password.html
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-08 00:31:42 +08:00 |
|
 19174616018andClaude Opus 4.5
|
be9ec5e9a2
|
feat: 用户端显示金山文档在线状态
- 新增 /api/kdocs/status 接口(用户端简化版)
- 工具栏显示"表格上传: ✅ 就绪"或"⚠️ 离线"
- 页面加载时获取状态,每60秒自动刷新
- 系统未启用时不显示
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-07 23:56:16 +08:00 |
|
 19174616018andClaude Opus 4.5
|
b0fe325154
|
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>
|
2026-01-07 23:40:46 +08:00 |
|
19174616018
|
13544867aa
|
Fix clipboard permissions for KDocs
|
2026-01-07 17:46:28 +08:00 |
|
19174616018
|
5fd13fa152
|
Read KDocs cells via clipboard
|
2026-01-07 17:40:29 +08:00 |
|
19174616018
|
a36fa3370b
|
Show KDocs upload status
|
2026-01-07 17:31:50 +08:00 |
|
19174616018
|
2ec0c7cb58
|
Speed up KDocs QR retrieval
|
2026-01-07 17:15:46 +08:00 |
|
19174616018
|
3841358bc2
|
Add KDocs action feedback
|
2026-01-07 17:03:03 +08:00 |
|
19174616018
|
6bd00021b8
|
Fix KDocs login detection
|
2026-01-07 16:53:44 +08:00 |
|
19174616018
|
f2652af8fb
|
Fix kdocs upload status restore
|
2026-01-07 15:16:04 +08:00 |
|
19174616018
|
950af0efda
|
Improve KDocs search matching
|
2026-01-07 15:03:51 +08:00 |
|
19174616018
|
45cbdc51b4
|
Show upload status and log KDocs skips
|
2026-01-07 14:28:58 +08:00 |
|
19174616018
|
703a62b6ad
|
Increase KDocs QR timeout
|
2026-01-07 14:17:01 +08:00 |
|
19174616018
|
ad847888f8
|
Avoid live KDocs status on page load
|
2026-01-07 14:12:54 +08:00 |
|
19174616018
|
8c150dcb7c
|
Auto poll KDocs login status
|
2026-01-07 14:04:09 +08:00 |
|
19174616018
|
ec90404194
|
Validate and log QR capture
|
2026-01-07 13:56:16 +08:00 |
|
19174616018
|
6af8f46129
|
Log and save KDocs QR screenshot
|
2026-01-07 13:49:37 +08:00 |
|
19174616018
|
19f083df7b
|
Auto click KDocs login and confirm
|
2026-01-07 13:44:15 +08:00 |
|
19174616018
|
a04cbfa55f
|
Broaden KDocs login click and modal capture
|
2026-01-07 13:33:26 +08:00 |
|
19174616018
|
b78bc7935f
|
Trigger KDocs WeChat login flow
|
2026-01-07 13:26:31 +08:00 |
|
19174616018
|
d8897f893a
|
Expand KDocs QR detection
|
2026-01-07 13:21:19 +08:00 |
|
19174616018
|
95d7cbc825
|
Improve KDocs QR capture
|
2026-01-07 13:14:02 +08:00 |
|
19174616018
|
6b416dc5f1
|
Force KDocs QR fetch and improve login detection
|
2026-01-07 13:07:57 +08:00 |
|
19174616018
|
28e86b1147
|
Fix kdocs login status detection
|
2026-01-07 12:57:03 +08:00 |
|
19174616018
|
1e216ea356
|
Fix kdocs runtime logger call
|
2026-01-07 12:49:54 +08:00 |
|
19174616018
|
3bae759afc
|
Integrate KDocs auto-upload
|
2026-01-07 12:32:41 +08:00 |
|
19174616018
|
5137addacc
|
Optimize scheduler status lookups
|
2026-01-06 15:58:23 +08:00 |
|
19174616018
|
4c492122dd
|
feat: support announcement image upload
# Conflicts:
# database.py
# db/migrations.py
# routes/admin_api/core.py
# static/admin/.vite/manifest.json
# static/admin/assets/AnnouncementsPage-Btl9JP7M.js
# static/admin/assets/EmailPage-CwqlBGU2.js
# static/admin/assets/FeedbacksPage-B_qDNL3q.js
# static/admin/assets/LogsPage-DzdymdrQ.js
# static/admin/assets/ReportPage-Bp26gOA-.js
# static/admin/assets/SettingsPage-__r25pN8.js
# static/admin/assets/SystemPage-C1OfxrU-.js
# static/admin/assets/UsersPage-DhnABKcY.js
# static/admin/assets/email-By53DCWv.js
# static/admin/assets/email-ByiJ74rd.js
# static/admin/assets/email-DkWacopQ.js
# static/admin/assets/index-D5wU2pVd.js
# static/admin/assets/tasks-1acmkoIX.js
# static/admin/assets/update-DdQLVpC3.js
# static/admin/assets/users-B1w166uc.js
# static/admin/assets/users-CPJP5r-B.js
# static/admin/assets/users-CnIyvFWm.js
# static/admin/index.html
# static/app/.vite/manifest.json
# static/app/assets/AccountsPage-C48gJL8c.js
# static/app/assets/AccountsPage-D387XNsv.js
# static/app/assets/AccountsPage-DBJCAsJz.js
# static/app/assets/LoginPage-BgK_Vl6X.js
# static/app/assets/RegisterPage-CwADxWfe.js
# static/app/assets/ResetPasswordPage-CVfZX_5z.js
# static/app/assets/SchedulesPage-CWuZpJ5h.js
# static/app/assets/SchedulesPage-Dw-mXbG5.js
# static/app/assets/SchedulesPage-DwzGOBuc.js
# static/app/assets/ScreenshotsPage-C6vX2U3V.js
# static/app/assets/ScreenshotsPage-CreOSjVc.js
# static/app/assets/ScreenshotsPage-DuTeRzLR.js
# static/app/assets/VerifyResultPage-BzGlCgtE.js
# static/app/assets/VerifyResultPage-CN_nr4V6.js
# static/app/assets/VerifyResultPage-CNbQc83z.js
# static/app/assets/accounts-BFaVMUve.js
# static/app/assets/accounts-BYq3lLev.js
# static/app/assets/accounts-Bc9j2moH.js
# static/app/assets/auth-Dk_ApO4B.js
# static/app/assets/index-BIng7uZJ.css
# static/app/assets/index-CDxVo_1Z.js
# static/app/index.html
|
2026-01-06 12:15:16 +08:00 |
|
19174616018
|
82acc3470f
|
Ensure menu expanded in screenshots
|
2025-12-31 21:28:28 +08:00 |
|
19174616018
|
2e44afde30
|
Capture full-page wkhtmltoimage shots
|
2025-12-31 20:50:02 +08:00 |
|
19174616018
|
28f4e807a9
|
Fix wkhtmltoimage viewport crop
|
2025-12-31 20:23:31 +08:00 |
|
19174616018
|
3b04f04a31
|
feat: 全屏截图改用管理后台框架
|
2025-12-31 20:12:39 +08:00 |
|
19174616018
|
ea1c7e8a00
|
feat: wkhtmltoimage支持自定义高度
|
2025-12-31 20:05:39 +08:00 |
|
19174616018
|
d269a99d3c
|
fix: wkhtmltoimage使用安全cookie
|
2025-12-31 19:41:34 +08:00 |
|
19174616018
|
7c3d0a0947
|
fix: wkhtmltoimage兼容UA参数
|
2025-12-31 19:13:20 +08:00 |
|
19174616018
|
7cf39f80bc
|
fix: 兼容旧浏览器后台与截图开关
|
2025-12-31 19:04:42 +08:00 |
|
19174616018
|
d108f3b51d
|
bust spa asset cache by build id
|
2025-12-31 18:22:03 +08:00 |
|
19174616018
|
41ead4bead
|
replace screenshot pipeline and update admin
|
2025-12-31 16:50:35 +08:00 |
|
 19174616018andClaude Opus 4.5
|
2d98ab66a3
|
fix: 修复公告关闭功能 - 当次关闭与永久关闭区分
问题:不管选择"当次关闭"还是"永久关闭",都会永久关闭公告
修复:
- 当次关闭:使用 sessionStorage + pageToken
- pageToken 基于 performance.timeOrigin 生成
- 刷新页面后 token 变化,公告重新显示
- 永久关闭:使用 localStorage
- 持久化存储,刷新/重开后不再显示
修改文件:
- app-frontend/src/layouts/AppLayout.vue
- templates/index.html
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-27 21:51:28 +08:00 |
|
 19174616018andClaude Opus 4.5
|
70e09c83a8
|
fix: 修复浏览器池任务丢失和统计错误 bug
问题:
1. 当浏览器创建失败时,failed_tasks 增加但 total_tasks 不增加
导致统计显示 "0/5" 这种不合理数据
2. 浏览器创建失败时任务直接丢失,没有重新分配给其他 Worker
修复:
- 添加本地浏览器创建重试(最多2次)
- 失败任务根据 retry_count 决定是否重新入队
- retry_count < 1 时重新入队让其他 Worker 处理
- retry_count >= 1 时才真正失败并计入统计
- 任务字典新增 retry_count 字段初始化为 0
- 添加回归测试用例
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-27 21:26:56 +08:00 |
|
 19174616018andClaude Opus 4.5
|
01ffaf96a3
|
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>
|
2025-12-27 20:15:48 +08:00 |
|
 19174616018andClaude Opus 4.5
|
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 |
|
 19174616018andClaude Opus 4.5
|
3d9dba272e
|
refactor: 删除版本更新功能 + 报表页自动刷新
删除版本与更新功能:
- routes/admin_api/update.py: 删除整个文件
- routes/admin_api/__init__.py: 移除 update 模块注册
- admin-frontend/src/pages/SystemPage.vue: 移除版本更新UI区块
- admin-frontend/src/api/update.js: 删除整个文件
- 删除 static/admin/assets/update-*.js
报表页自动刷新:
- admin-frontend/src/pages/ReportPage.vue: 添加 setInterval 每1秒刷新
- 在 onMounted 启动定时器,onUnmounted 清除
- 覆盖统计数据、运行中任务、系统信息等所有动态数据
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-27 12:41:26 +08:00 |
|
 19174616018andClaude Opus 4.5
|
89f3fd9759
|
feat: 安全增强 + 删除密码重置申请功能 + 登录提醒开关
安全增强:
- 新增 SSRF、XXE、模板注入、敏感路径探测检测规则
- security/constants.py: 添加新的威胁类型和检测模式
- security/threat_detector.py: 实现新检测逻辑
删除密码重置申请功能:
- 移除 /api/password_resets 相关API
- 删除 password_reset_requests 数据库表
- 前端移除密码重置申请页面和菜单
- 用户只能通过邮��找回密码,未绑定邮箱需联系管理员
登录提醒全局开关:
- email_service.py: 添加 login_alert_enabled 字段
- routes/api_auth.py: 检查开关状态再发送登录提醒
- EmailPage.vue: 添加新设备登录提醒开关
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-27 12:08:36 +08:00 |
|
 19174616018andClaude Opus 4.5
|
4ba933b001
|
feat: 添加安全仪表板前端页面
- 新增 SecurityPage.vue: 统计卡片、威胁事件表格、封禁管理、风险查询
- 新增 api/security.js: 安全相关API封装
- 路由添加 /security 页面
- 侧边栏添加"安全防护"菜单项
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-27 01:56:22 +08:00 |
|
 19174616018andClaude Opus 4.5
|
759d99e8af
|
fix: add security module to Dockerfile
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-27 01:31:51 +08:00 |
|
 19174616018andClaude Opus 4.5
|
46253337eb
|
feat: 实现完整安全防护系统
Phase 1 - 威胁检测引擎:
- security/threat_detector.py: JNDI/SQL/XSS/路径遍历/命令注入检测
- security/constants.py: 威胁检测规则和评分常量
- 数据库表: threat_events, ip_risk_scores, user_risk_scores, ip_blacklist
Phase 2 - 风险评分与黑名单:
- security/risk_scorer.py: IP/用户风险评分引擎,支持分数衰减
- security/blacklist.py: 黑名单管理,自动封禁规则
Phase 3 - 响应策略:
- security/honeypot.py: 蜜罐响应生成器
- security/response_handler.py: 渐进式响应策略
Phase 4 - 集成:
- security/middleware.py: Flask安全中间件
- routes/admin_api/security.py: 管理后台安全仪表板API
- 36个测试用例全部通过
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-27 01:28:38 +08:00 |
|
19174616018
|
e3b0c35da6
|
Harden auth risk controls and admin reauth
|
2025-12-26 21:07:47 +08:00 |
|
19174616018
|
f90b0a4f11
|
Harden auth, CSRF, and email log UX
|
2025-12-26 19:05:42 +08:00 |
|
 19174616018andClaude Opus 4.5
|
ec84903745
|
fix: 启动后60秒内所有请求使用15秒超时
问题:之前的 _first_request 只对第一个HTTP请求有效,但login()
需要两次请求(GET登录页+POST登录),导致实际的POST登录
请求仍然只有5秒超时,在冷启动时容易失败。
修复:改为基于模块启动时间的超时策略
- 启动后60秒内:所有请求使用15秒超时
- 60秒后:恢复正常的5秒超时
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-24 01:42:03 +08:00 |
|
 19174616018andClaude Opus 4.5
|
151fc3e09f
|
perf: 启动预热优化 - 解决容器重启后首批任务慢/失败
问题:容器重启后前两批任务明显变慢或失败
- 第一批:代理/目标服务器连接冷启动导致超时
- 第二批:浏览器池冷启动需要创建浏览器
解决方案:
- browser_pool_worker.py: 添加 pre_warm 参数,启动时预创建1个浏览器
- api_browser.py: 添加 warmup_api_connection() 预热 TCP/TLS 连接
- api_browser.py: 首次请求使用更长超时(10s),后续恢复正常
- app.py: 启动时后台调用 API 预热
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-24 01:18:18 +08:00 |
|
 19174616018andClaude Opus 4.5
|
1d44859857
|
perf: 优化任务执行速度 (40-70s → ~15s)
问题:容错机制引入了大量叠加的等待时间
优化内容:
- playwright_automation.py:
- 登录超时 30s → 10s
- 导航等待 2s → 0.5s
- navigate_only 等待 1s → 0.3s
- 首页轮询 8次×3s → networkidle + 2次×0.5s
- services/tasks.py:
- 删除截图前固定 sleep(2)
- services/screenshots.py:
- networkidle 超时 30s → 10s
- selector 超时 20s → 5s
预计性能提升:从 40-70 秒降至约 15 秒
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-24 00:19:46 +08:00 |
|
 19174616018andClaude Opus 4.5
|
79a571e58d
|
fix: 容器重启后第一批任务失败
问题:容器重启时账号对象的 is_running 状态未被重置,
导致新任务提交时被拒绝("任务已在运行中")
修复:在启动流程中添加遗留任务状态清理逻辑
- 重置所有账号的 is_running/should_stop/status
- 清理活跃任务句柄
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-23 23:32:20 +08:00 |
|
 19174616018andClaude Opus 4.5
|
5f4fb50001
|
refactor: 统一日志管理 + 数据库索引优化
- db/schema.py: 添加 4 个复合索引优化查询性能
- idx_user_schedules_user_enabled
- idx_schedule_execution_logs_schedule_id/user_id/status
- db/users.py: print → logger,密码升级日志改为记录 user_id
- crypto_utils.py: print → logger
- password_utils.py: print → logger
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2025-12-23 22:57:03 +08:00 |
|
19174616018
|
c5f019be5a
|
chore: restore API request timeout 5s
|
2025-12-18 09:46:01 +08:00 |
|
19174616018
|
433a3cb806
|
fix: avoid blocking browser init
|
2025-12-18 09:38:02 +08:00 |
|
19174616018
|
5851120f87
|
fix: admin auth UX, password policy, deps, db pool
|
2025-12-17 23:53:11 +08:00 |
|
19174616018
|
9028f7e272
|
ui: 移除定时任务停用标签
|
2025-12-17 22:12:06 +08:00 |
|
19174616018
|
2ef0a10d6f
|
fix(ui): 开关可见与布局对齐
|
2025-12-17 22:03:15 +08:00 |
|
19174616018
|
2f5940d339
|
fix(ui): 开关可见与卡片不拉伸
|
2025-12-17 21:14:54 +08:00 |
|
19174616018
|
db4201a269
|
fix(ui): 定时任务开关禁用态更清晰
|
2025-12-17 20:44:49 +08:00 |
|
19174616018
|
5393648d21
|
fix(api): 列表页失败不算完成
|
2025-12-17 19:24:08 +08:00 |
|
19174616018
|
3f667dd21b
|
fix(api): 超时按单条处理避免中途结束
|
2025-12-17 15:49:05 +08:00 |
|
19174616018
|
6827d11f40
|
chore(update): 忽略备份文件的脏工作区提示
|
2025-12-16 23:48:58 +08:00 |
|
19174616018
|
4c9bed0f0b
|
perf: 默认请求超时降为5s
|
2025-12-16 23:17:21 +08:00 |
|
19174616018
|
0e587ca497
|
ui: 运行中仅显示已浏览内容数
|
2025-12-16 21:23:03 +08:00 |
|
19174616018
|
1b707fdace
|
fix: 浏览内容进度实时显示
|
2025-12-16 21:19:48 +08:00 |
|
19174616018
|
2abb9ab494
|
fix: 账号截图开关持久化与状态推送优化
|
2025-12-16 18:27:45 +08:00 |
|
19174616018
|
e699f4fb94
|
更新管理后台布局
|
2025-12-15 22:18:44 +08:00 |
|
19174616018
|
d650c6f584
|
优化报表页面,移除统计页面
|
2025-12-15 22:12:15 +08:00 |
|
19174616018
|
9aa28f5b9e
|
添加报表页面,更新用户管理和注册功能
|
2025-12-15 21:39:32 +08:00 |
|
19174616018
|
738eaa5211
|
更新邮件服务和SMTP配置功能
|
2025-12-15 20:32:28 +08:00 |
|
19174616018
|
8846945208
|
更新邮件页面和管理API
|
2025-12-15 17:16:56 +08:00 |
|
19174616018
|
49897081b6
|
更新日志页面和统计页面
- 更新 LogsPage 和 StatsPage 组件
- 添加 taskSource 工具模块
- 更新 db/tasks.py
- 重新构建前端静态资源
|
2025-12-15 16:25:37 +08:00 |
|
19174616018
|
a8b9f225bd
|
更新系统页面和更新功能
- 更新 admin-frontend 系统页面和更新 API
- 更新 routes 和 services 中的更新逻辑
- 重新构建前端静态资源
|
2025-12-15 15:58:12 +08:00 |
|
19174616018
|
de6d269fb4
|
更新 update_agent.py
|
2025-12-15 15:09:34 +08:00 |
|
19174616018
|
0d1397debe
|
添加自动更新功能
|
2025-12-15 14:34:08 +08:00 |
|
19174616018
|
809c735498
|
添加一键部署脚本
|
2025-12-15 13:57:25 +08:00 |
|
19174616018
|
10d5363e29
|
更新 schedules.py
|
2025-12-15 13:30:40 +08:00 |
|
19174616018
|
a619e96e73
|
同步本地更改
|
2025-12-15 10:48:58 +08:00 |
|
19174616018
|
dab29347bd
|
更新定时任务页面和前端构建
|
2025-12-14 23:09:27 +08:00 |
|
19174616018
|
1ec0d80f6c
|
清理冗余文件,更新 Dockerfile 和配置
|
2025-12-14 22:49:00 +08:00 |
|
19174616018
|
dac06d187e
|
更新 playwright_automation 和 screenshots 服务
|
2025-12-14 22:04:05 +08:00 |
|
19174616018
|
a346509a5f
|
同步更新:重构路由、服务模块,更新前端构建
|
2025-12-14 21:47:46 +08:00 |
|