Commit Graph

41 Commits

Author SHA1 Message Date
324e0d614a feat(app): migrate auth pages to Vue SPA (stage 2) 2025-12-13 23:30:51 +08:00
34f44eed3e feat(app): scaffold Vue3 frontend (stage 1) 2025-12-13 22:42:31 +08:00
235ba28cc8 feat(admin): migrate admin UI to Vue3 2025-12-13 20:51:44 +08:00
7015de0055 feat: 添加公告功能 2025-12-13 18:40:42 +08:00
Yu Yon
352c61fbd4 修复添加账号后前端不实时显示的问题
account_update事件处理时判断是否为新账号,新账号则重新渲染整个列表

🤖 Generated with Claude Code
2025-12-12 15:54:14 +08:00
Yu Yon
affbf80543 更新VIP权限对比表,新增随机时间执行、邮件通知、自动备注姓名等功能说明
- 更新VIP会员权限对比表
- 新增基础浏览任务、随机时间执行、邮件通知、自动备注姓名功能对比
- 修正账号管理数量为最多3个

🤖 Generated with Claude Code
2025-12-12 11:55:31 +08:00
Yu Yon
1072e90070 添加定时任务随机时间执行功能;修复手动执行任务不发送邮件通知 2025-12-12 10:12:27 +08:00
8ddf47c2aa fix: 增大验证码显示尺寸
前端验证码图片高度从36/40px增大到50px,配合后端生成的160x60图片

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 22:49:35 +08:00
ad3062bd28 fix: 修复邮件设置checkbox点击范围过大问题
将label改为div+span结构,使只有checkbox本身可点击

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 22:48:06 +08:00
79cf3c2f30 fix: 修复邮箱绑定验证错误及多项改进
1. 修复email_verified字段缺失导致的500错误
2. 将邮件主题从"知识管理平台"改为"自动化学习"
3. 增大验证码字体(28->42)和图片尺寸(120x40->160x60)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 22:45:44 +08:00
29d4bdfbcb feat: 添加邮件功能第五阶段 - 用户邮箱绑定
1. 添加邮箱绑定验证邮件模板 (templates/email/bind_email.html)
2. 在email_service.py中添加:
   - send_bind_email_verification() 发送绑定验证邮件
   - verify_bind_email_token() 验证绑定Token
3. 在database.py中添加:
   - update_user_email() 更新用户邮箱
4. 在app.py中添加API:
   - GET /api/user/email - 获取用户邮箱信息
   - POST /api/user/bind-email - 发送绑定验证邮件
   - GET /api/verify-bind-email/<token> - 验证绑定Token
   - POST /api/user/unbind-email - 解绑邮箱
5. 更新templates/index.html:
   - 将"修改密码"弹窗改为"个人设置"
   - 添加邮箱绑定/解绑功能UI
   - 显示邮箱状态(未绑定/待验证/已验证)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 22:20:29 +08:00
0ccddd8c63 feat: 添加邮件功能第四阶段 - 任务完成通知
1. 添加任务完成邮件模板 (templates/email/task_complete.html)
2. 在email_service.py中添加:
   - task_notify_enabled 字段支持
   - send_task_complete_email() 函数,支持附件大小限制和分批发送
   - send_task_complete_email_async() 异步发送函数
   - MAX_ATTACHMENT_SIZE 常量 (10MB)
3. 更新app.py:
   - 邮件设置API支持task_notify_enabled字段
   - 截图回调中集成任务完成邮件发送
4. 更新admin.html:
   - 添加"启用任务完成通知"开关
   - 更新loadEmailSettings/updateEmailSettings函数

附件超过10MB时会自动分两封邮件发送(通知+截图),作为容错机制

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 22:09:59 +08:00
93375b612f feat: 添加邮件功能第三阶段 - 密码重置
实现通过邮件自助重置密码功能:
- 新增发送密码重置邮件API (/api/forgot-password)
- 新增密码重置页面路由 (/reset-password/<token>)
- 新增确认密码重置API (/api/reset-password-confirm)

新增文件:
- templates/email/reset_password.html - 密码重置邮件模板
- templates/reset_password.html - 密码重置页面

修改文件:
- email_service.py - 添加密码重置相关函数
  - send_password_reset_email()
  - verify_password_reset_token()
  - confirm_password_reset()
- app.py - 添加密码重置相关API
- templates/login.html - 忘记密码支持两种方式:
  - 启用邮件功能:通过邮件自助重置
  - 未启用邮件:提交申请等待管理员审核

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 21:58:49 +08:00
de8edcb3a6 feat: 添加邮件功能第二阶段 - 注册邮箱验证
实现注册时的邮箱验证功能:
- 修改注册API支持邮箱验证流程
- 新增邮箱验证API (/api/verify-email/<token>)
- 新增重发验证邮件API (/api/resend-verify-email)
- 新增邮箱验证状态查询API (/api/email/verify-status)

新增文件:
- templates/email/register.html - 注册验证邮件模板
- templates/verify_success.html - 验证成功页面
- templates/verify_failed.html - 验证失败页面

修改文件:
- email_service.py - 添加发送注册验证邮件函数
- app.py - 添加邮箱验证相关API
- database.py - 添加get_user_by_email函数
- app_config.py - 添加BASE_URL配置
- templates/register.html - 支持邮箱必填切换
- templates/login.html - 添加重发验证邮件功能
- templates/admin.html - 添加注册验证开关和BASE_URL设置

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 21:51:07 +08:00
966572cc94 feat: 添加邮件功能第一阶段 - 邮件基础设施
新增功能:
- 创建 email_service.py 邮件服务模块
  - 支持多SMTP配置(主备切换、故障转移)
  - 发送纯文本/HTML邮件
  - 发送带附件邮件(支持ZIP压缩)
  - 异步发送队列(多线程工作池)
  - 每日发送限额控制
  - 发送日志记录和统计

- 数据库表结构
  - smtp_configs: 多SMTP配置表
  - email_settings: 全局邮件设置
  - email_tokens: 邮件验证Token
  - email_logs: 邮件发送日志
  - email_stats: 邮件发送统计

- API接口
  - GET/POST /yuyx/api/email/settings: 全局邮件设置
  - CRUD /yuyx/api/smtp/configs: SMTP配置管理
  - POST /yuyx/api/smtp/configs/<id>/test: 测试SMTP连接
  - POST /yuyx/api/smtp/configs/<id>/primary: 设为主配置
  - GET /yuyx/api/email/stats: 邮件统计
  - GET /yuyx/api/email/logs: 邮件日志
  - POST /yuyx/api/email/logs/cleanup: 清理日志

- 后台管理页面
  - 新增"邮件配置"Tab
  - 全局邮件开关、故障转移开关
  - SMTP配置列表管理
  - 添加/编辑SMTP配置弹窗
  - 邮件发送统计展示
  - 邮件日志查询和清理

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 21:38:28 +08:00
de51e1b7c7 修复多项安全漏洞和Bug
1. 安全修复:
   - 修复密码重置接口用户枚举漏洞,统一返回消息防止信息泄露
   - 统一密码强度验证为8位以上且包含字母和数字
   - 添加第三方账号密码加密存储(Fernet对称加密)
   - 修复默认管理员弱密码问题,改用随机生成强密码
   - 修复管理员回复XSS漏洞,添加HTML转义
   - 将MD5哈希替换为SHA256

2. 并发Bug修复:
   - 修复日志缓存竞态条件,添加锁保护
   - 修复截图信号量配置变更后不生效问题

3. 其他改进:
   - 添加API参数类型验证和边界检查
   - 新增crypto_utils.py加密工具模块

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 19:14:14 +08:00
b9edc4aaa2 修复多项安全漏洞
安全修复清单:
1. 验证码改为图片方式返回,防止明文泄露
2. CORS配置从环境变量读取,不再使用通配符"*"
3. VIP API添加@admin_required装饰器,统一认证
4. 用户登录统一错误消息,防止用户枚举
5. IP限流不再信任X-Forwarded-For头,防止伪造绕过
6. 密码强度要求提升(8位+字母+数字)
7. 日志不���记录完整session/cookie内容,防止敏感信息泄露
8. XSS防护:日志输出和Bug反馈内容转义HTML
9. SQL注入防护:LIKE查询参数转义
10. 路径遍历防护:截图目录白名单验证
11. 验证码重放防护:验证前删除验证码
12. 数据库连接池健康检查
13. 正则DoS防护:限制数字匹配长度
14. Account类密码私有化,__repr__不暴露密码

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 17:53:48 +08:00
795ff7f1a7 彻底修复移动端按钮溢出和布局问题
主要改进:
- 添加overflow-x: hidden防止水平滚动
- Header按钮缩小字体和padding,确保不溢出
- 工具栏改为垂直布局,按钮支持flex换行
- 所有按钮添加white-space: nowrap防止内部换行
- 账号卡片操作区域改为垂直布局
- 模态窗口按钮改为100%宽度垂直堆叠
- 表格容器添加横向滚动支持
- 优化所有flex容器的flex-wrap属性
- 减小移动端所有元素的padding和font-size
- 确保所有输入框和选择框width: 100%

受影响文件:
- templates/index.html - 全面优化移动端布局
- templates/admin.html - 全面优化管理后台移动端布局

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 13:21:17 +08:00
94e716b6b1 优化移动端UI布局,修复按钮和内容超出屏幕问题
主要改进:
- 优化header布局,支持flex-wrap防止内容溢出
- 改进工具栏和按钮组的响应式布局
- 优化表格在移动端的显示(添加横向滚动)
- 调整模态窗口在小屏幕上的尺寸和间距
- 优化表单输入框字体大小(防止iOS自动缩放)
- 改进统计卡片、导航栏等组件的移动端适配
- 为登录/注册页面添加移动端优化样式

受影响文件:
- templates/index.html - 用户主界面移动端优化
- templates/admin.html - 管理员界面移动端优化
- templates/login.html - 登录页面移动端优化
- templates/register.html - 注册页面移动端优化
- templates/admin_login.html - 管理员登录页面移动端优化

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 12:38:18 +08:00
d811fc7c56 添加注册自动审核功能
- 系统配置新增:自动审核开关、每小时注册限制、赠送VIP天数
- 数据库:添加 auto_approve_enabled, auto_approve_hourly_limit, auto_approve_vip_days 字段
- 后端API:支持保存和读取自动审核配置
- 管理后台:新增注册自动审核配置区域(绿色背景)
- 注册逻辑:支持自动审核通过并赠送VIP

功能说明:
1. 启用自动审核后,新用户注册自动通过,无需管理员审批
2. 每小时注册限制防止恶意注册
3. 可配置注册赠送VIP天数(设为0则不赠送)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 21:42:28 +08:00
9f32d73f6c 🎨 减小右上角元素间距为8px
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 20:52:38 +08:00
c4fe9f9f72 🎨 统一右上角所有元素间距
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 20:48:28 +08:00
5cf5484942 🎨 统一右上角按钮间距
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 20:42:23 +08:00
c71ea2f2cf 🔧 修改密码按钮移至右上角
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 20:40:01 +08:00
3e8988896a 添加用户修改密码功能
- 左边栏添加修改密码按钮
- 添加修改密码弹窗
- 添加 /api/user/password API

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 20:37:27 +08:00
32a29e61e9 优化浏览器池和并发配置
1. 浏览器池改为按需启动模式
   - 启动时不创建浏览器,有截图任务时才启动
   - 空闲5分钟后自动关闭浏览器释放资源

2. 修复截图并发数保存问题
   - 修复database.py中缺少保存max_screenshot_concurrent的代码

3. 去掉并发数上限限制
   - 管理员可自由设置并发数,不再限制1-20/1-5

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 20:31:49 +08:00
7954aeaf59 添加定时任务日志管理功能
- 添加用户清空日志按钮
- 添加30天自动清理定时任务执行日志
- 简化日志API代码,移除调试日志

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 20:20:44 +08:00
9df2122fb5 🐛 修复定时任务日志状态显示
- 状态检查同时支持success和completed

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 20:15:05 +08:00
cd118f28db 🧹 清理更多调试日志
- 移除Socket连接/断开/错误日志
- 移除账号加载日志
- 移除定时任务时间标准化日志

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 20:13:31 +08:00
f3c6a4d704 🧹 清理调试日志
- 移除日志弹窗调试日志
- 移除openModal调试日志
- 移除账号API调试日志
- 移除账号加载调试日志

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 20:11:18 +08:00
c021f32146 🐛 修复日志弹窗无法显示问题
- 修复scheduleModal缺少关闭标签导致scheduleLogsModal被嵌套
- 移除多余的</div>标签

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 20:08:04 +08:00
df8d0d7c25 🐛 修复周日期选择器无法点击问题
- 移除CSS :has()选择器(兼容性问题)
- 改用JavaScript控制.selected类
- 添加点击事件处理器

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 20:04:59 +08:00
657634f028 🐛 修复定时任务日志和执行问题
- 修复日志按钮点击无反应(类型匹配和错误处理)
- 修复定时任务到时间不执行(时间格式标准化)
- 增强所有检查点的调试日志输出
- 改进今日执行检查逻辑(支持同一天不同时间执行)

Bug 1: 日志按钮完全没反应
- 将严格相等(===)改为宽松相等(==)避免类型不匹配
- 添加详细的错误日志和用户提示
- 添加容器元素存在性检查

Bug 2: 定时任务到时间不会被执行
- 标准化时间格式(8:00 -> 08:00)
- 增强所有检查点的日志输出(时间、星期、账号)
- 改进今日执行检查(同一天不同时间可再次执行)
- 前端添加时间格式验证和标准化

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-10 19:12:48 +08:00
root
28ea950bc9 添加openModal调试日志
为了诊断弹窗不显示的问题,在openModal函数中添加:
1. 检查元素是否存在
2. 打印元素信息
3. 打印classList

位置: templates/index.html 第1697-1712行

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-10 17:28:36 +08:00
root
af842c1d1c 🔥 紧急修复JavaScript语法错误
问题:第1340行有多余的引号导致语法错误
修复:删除多余的引号

position: templates/index.html:1340

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-10 17:20:37 +08:00
root
7fb38877bd 修复定时任务日志弹窗显示问题
问题:点击日志按钮无反应

修复:
1. 重新格式化viewScheduleLogs函数(原本全部压缩成一行)
2. 添加详细的console.log调试日志
3. 每个步骤都有日志输出,便于调试

调试日志包括:
- 开始查看日志
- 找到任务
- API响应状态
- 收到的数据
- 打开弹窗

现在可以通过浏览器控制台查看完整的执行流程。

位置: templates/index.html viewScheduleLogs函数

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-10 17:14:08 +08:00
root
726e0d01bf 修复定时任务日志和增强功能
1. 修复定时任务日志字段映射问题
   - 修正execute_time → created_at
   - 修正success_accounts → success_count
   - 修正failed_accounts → failed_count
   - 修正duration_seconds → duration
   - 位置: database.py 第1661-1686行

2. 添加定时任务调试日志
   - 显示当前检查时间和任务匹配情况
   - 帮助诊断定时任务不执行问题
   - 位置: app.py 第2869-2875行

3. 新增VIP权限对比表格
   - 在VIP信息弹窗中添加权限对比
   - 对比普通用户和VIP用户的6项权限
   - 位置: templates/index.html 第549-593行

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-10 16:16:45 +08:00
root
c6fce67320 清理项目多余文件
删除以下文件:
- 8个修复脚本(fix_*.py)
- 5个app.py备份文件
- 7个templates备份文件
- 1个重复的admin.html文件

共删除21个临时文件和备份文件,保持项目整洁。

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-10 15:57:39 +08:00
root
4e5aa70359 修复三个关键Bug
1. 修复定时任务设置时间不执行问题
   - 将定时任务检查频率从60秒提升到5秒
   - 确保定时任务在设定时间准时执行
   - 位置: app.py 第3010-3011行

2. 修复账号管理卡片设置按钮无法点击问题
   - 修正JavaScript引号转义错误
   - 位置: templates/index.html 第886行

3. 修复用户反馈和后台反馈进度不同步问题
   - 前端改为检查status字段而非reply字段
   - 新增closed状态支持
   - 正确显示待处理/已回复/已关闭三种状态
   - 位置: templates/index.html 第249-251行, 第1550-1567行

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-10 15:53:53 +08:00
Yu Yon
8fd6923453 修复所有bug并添加新功能
- 修复添加账号按钮无反应问题
- 添加账号备注字段(可选)
- 添加账号设置按钮(修改密码/备注)
- 修复用户反馈���能
- 添加定时任务执行日志
- 修复容器重启后账号加载问题
- 修复所有JavaScript语法错误
- 优化账号加载机制(4层保障)

🤖 Generated with Claude Code
2025-12-10 11:19:16 +08:00
Yu Yon
1723e35fbc Initial commit: 知识管理平台
主要功能:
- 多用户管理系统
- 浏览器自动化(Playwright)
- 任务编排和执行
- Docker容器化部署
- 数据持久化和日志管理

技术栈:
- Flask 3.0.0
- Playwright 1.40.0
- SQLite with connection pooling
- Docker + Docker Compose

部署说明详见README.md
2025-11-16 19:03:07 +08:00