Commit Graph
13 Commits
Author SHA1 Message Date
胡绍康andClaude Opus 4.6 6110badd7a feat: 迁移 oauth 模块到 controllers 层
- 迁移 2 个 oauth 相关 API 到 controllers/oauth.py:
  - api_get_oauth_auth_url
  - api_exchange_oauth_token
- 更新 routes/oauth.py 移除 impl 参数
- OAuth 配置常量从 config 模块读取

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 08:29:20 +08:00
胡绍康andClaude Opus 4.6 2ab1721946 feat: 迁移 scheduler 模块到 controllers 层
- 迁移 api_get_scheduler_status 到 controllers/scheduler.py
- 更新 routes/scheduler.py 移除 impl 参数

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 08:19:27 +08:00
胡绍康andClaude Opus 4.6 fa99c48ef6 feat: 迁移 pages 模块到 controllers 层
- 迁移 4 个 pages 相关路由到 controllers/pages.py:
  - login (GET/POST)
  - logout
  - index
  - get_csrf_token
- 更新 routes/pages.py 移除 impl 参数
- 保留 csrf_exempt 装饰器支持

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 00:49:47 +08:00
胡绍康andClaude Opus 4.6 3bab297aac feat: 迁移 audit 模块到 controllers 层
- 迁移 api_get_audit_logs 到 controllers/audit.py
- 更新 routes/audit.py 移除 impl 参数

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 00:40:14 +08:00
胡绍康andClaude Opus 4.6 3228661a93 feat: 迁移 system 模块到 controllers 层
- 迁移 4 个 system 相关 API 到 controllers/system.py:
  - healthz (无需登录)
  - api_system_health
  - api_system_diagnostics
  - api_system_upgrade_status
- 更新 routes/system.py 移除 impl 参数
- 添加 utcnow 辅助函数和 REFRESH_LOCK_NAME 常量

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 00:33:46 +08:00
胡绍康andClaude Opus 4.6 97ceaac64e feat: 迁移 settings 模块到 controllers 层
- 迁移 3 个 settings 相关 API 到 controllers/settings.py:
  - api_get_settings
  - api_update_settings
  - api_validate_cron
- 更新 routes/settings.py 移除 impl 参数
- 暂时通过延迟导入 legacy 模块的 init_scheduler 和 configure_scheduler_jobs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 00:24:28 +08:00
胡绍康andClaude Opus 4.6 4d28546de7 feat: 迁移 tags 模块到 controllers 层
- 迁移 3 个 tags 相关 API 到 controllers/tags.py:
  - api_get_tags
  - api_add_tag
  - api_delete_tag
- 更新 routes/tags.py 移除 impl 参数
- api_batch_manage_tags 暂保留在 legacy,将在 accounts 模块迁移时处理

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 00:12:30 +08:00
胡绍康andClaude Opus 4.6 163c262945 feat: 迁移 groups 模块到 controllers 层
- 创建 outlook_web/controllers/ 目录
- 迁移 6 个 groups 相关 API 到 controllers/groups.py:
  - api_get_groups
  - api_get_group
  - api_add_group
  - api_update_group
  - api_delete_group
  - api_export_group
- 更新 routes/groups.py 移除 impl 参数
- 更新 app.py 使用新的 Blueprint 注册方式

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 00:01:40 +08:00
胡绍康andClaude Opus 4.6 5e7651ba7f docs: 更新项目文档 - 批量操作与自动化增强功能
更新内容:
- project-overview.md: 添加批量操作、验证码提取、自动轮询功能说明
- architecture.md: 添加 verification_extractor.py 服务层说明
- 同步更新已完成功能列表

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 21:45:20 +08:00
胡绍康andClaude Opus 4.6 66d9b9749b feat: 批量操作与自动化增强 - 全选/复制验证码/自动轮询
功能实现:
- 全选功能:跨分组保持选中状态,使用全局 Set 存储
- 验证码提取:支持 Graph API → IMAP 回退策略
- 自动轮询:新邮件通知、红点提示、连续错误自动停止

BUG 修复 (BUG-001 ~ BUG-008):
- Toast 通知位置移至右下角
- 切换分组时保持全选状态
- 添加批量删除邮箱功能
- 验证码提取支持 IMAP 回退
- 修复轮询开关类型不一致 (boolean vs string)
- 完善轮询通知内容与红点位置
- 轮询次数校验改为 0-100 (0 表示持续)
- 复制按钮添加加载状态与反馈

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 21:03:53 +08:00
胡绍康andClaude Opus 4.6 a9b3e4254f fix: 修复临时邮箱生成失败的BUG (BUG-00001)
【问题描述】
- 用户生成临时邮箱时返回笼统错误:生成临时邮箱失败,请稍后重试
- 错误码:LEGACY_ERROR,无法定位具体失败原因
- 可能原因:API Key未配置、网络问题、API服务不可用等

【修复内容】
1. 改进 gptmail_request 函数
   - 添加 API Key 配置检查
   - 区分 10+ 种错误类型(CONFIG_ERROR, AUTH_ERROR, TIMEOUT_ERROR等)
   - 返回结构化错误信息

2. 改进 generate_temp_email 函数
   - 返回值改为 (email_addr, error_msg) 元组
   - 保留详细错误信息

3. 改进 api_generate_temp_email 函数
   - 使用详细错误信息返回给前端
   - 添加日志记录

4. 更新前端错误提示
   - 显示详细的错误信息

5. 编写单元测试
   - 新增 11 个单元测试
   - 更新 2 个现有测试的 mock

【测试结果】
- 所有测试通过:51/51 ✅

【相关文档】
- BUG文档:docs/BUGS/BUG-00001-临时邮箱生成失败.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 20:52:27 +08:00
胡绍康andClaude Opus 4.6 14b1a7fa09 refactor: P1阶段优化 - 收敛全局变量与清理legacy代码
- 收敛前端全局变量:将 window.lastRefreshTime 和 window._lastFetchErrorDetails 改为模块变量
- 将内联 onclick 事件改为事件监听器,消除对全局变量的依赖
- 删除 legacy.py 中已被 re-export 覆盖的旧函数实现(settings 和 groups 相关,约140行)
- 所有测试通过(40/40)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 19:30:02 +08:00
胡绍康andClaude Opus 4.6 192240436d refactor: 模块化架构重构 & 完善测试与文档体系
- 架构重构:拆分为 routes/services/repositories/security 分层结构
- 新增测试:添加完整的单元测试套件(烟雾测试/核心功能/错误处理等)
- 完善文档:添加开发者指南、运行验证、回归清单、性能基线等文档
- 前后端分离:静态资源独立,模板组件化
- CI/CD:添加 GitHub Actions 自动化测试
- Docker 优化:添加健康检查,修复调度器启动问题
- 配置增强:支持 SCHEDULER_AUTOSTART 环境变量

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 18:54:16 +08:00