- 新增布局管理器支持拖拽调整面板宽度 - 新增状态管理器实现布局持久化 - 重构前端页面结构优化四栏式布局 - 新增 Jest 测试框架和完整测试用例 - 完善项目文档(PRD/FD/TDD/TODO/LOG) - 清理 Python 缓存文件并更新 .gitignore Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
5.9 KiB
5.9 KiB
项目概览
项目名称
Outlook 邮件管理工具 (Outlook Email Management Tool)
项目类型
Web 应用 - Flask 后端 + 传统前端
技术栈
后端框架
- Flask 3.0+ - Web 框架
- Flask-WTF 1.2+ - CSRF 保护
- Werkzeug 3.0+ - WSGI 工具库
数据存储
- SQLite - 轻量级关系数据库
- 数据库路径:
data/outlook_accounts.db - Schema 版本: v2
核心依赖
- requests[socks] 2.25+ - HTTP 客户端,支持 SOCKS 代理
- APScheduler 3.10+ - 定时任务调度
- croniter 1.3+ - Cron 表达式解析
- bcrypt 4.0+ - 密码哈希
- cryptography 41.0+ - 数据加密 (Fernet 对称加密)
外部 API
- Microsoft Graph API - 主要邮件访问方式
- IMAP 协议 - 备用邮件访问方式 (新版/旧版服务器)
- GPTMail API - 临时邮箱服务
项目结构
outlookEmail/
├── web_outlook_app.py # 应用入口
├── outlook_mail_reader.py # 命令行邮件读取工具
├── outlook_web/ # 主应用模块
│ ├── app.py # Flask 应用工厂
│ ├── config.py # 配置管理
│ ├── db.py # 数据库操作
│ ├── audit.py # 审计日志
│ ├── errors.py # 错误处理
│ ├── routes/ # 路由层 (Blueprint)
│ ├── controllers/ # 控制器层
│ ├── services/ # 服务层
│ ├── repositories/ # 数据访问层
│ ├── security/ # 安全模块
│ └── middleware/ # 中间件
├── templates/ # HTML 模板
│ ├── index.html # 主页面
│ ├── login.html # 登录页
│ └── partials/ # 页面片段
├── static/ # 静态资源
│ ├── css/ # 样式文件
│ └── js/ # JavaScript 文件
│ ├── features/ # 功能模块
│ └── layout-*.js # 布局系统
├── tests/ # 测试
├── docs/ # 文档
└── data/ # 数据目录
核心功能模块
1. 邮箱账号管理
- 多邮箱账号管理
- 分组管理 (支持自定义颜色)
- 标签管理 (批量打标签/筛选)
- 批量导入/导出
- 分组级别代理配置
2. 邮件操作
- 查看邮件 (收件箱/垃圾邮件/已删除)
- 删除邮件 (单封/批量)
- 全屏查看模式
- 分页加载 (每页 20 封)
- 邮件缓存机制
3. Token 管理
- OAuth2 授权流程
- 自动刷新 Token
- 定时刷新 (按天数/Cron 表达式)
- 刷新历史记录
- 失败状态标识
4. 临时邮箱
- 集成 GPTMail API
- 一键生成临时邮箱
5. 批量操作增强
- 全选功能 (跨分组保持选中状态)
- 批量删除邮箱
- 批量移动分组
- 批量打标签
6. 验证码提取
- 自动提取验证码/链接
- Graph API → IMAP 回退策略
- 一键复制到剪贴板
- 加载状态与成功/失败反馈
7. 自动轮询
- 新邮件自动检测
- 桌面通知 (邮箱地址 + 邮件主题)
- 账号列表红点提��
- 连续错误自动停止
- 可配置轮询间隔/次数
8. 可调整布局系统
- 四栏式响应式布局
- 拖拽调整栏宽
- 布局状态持久化
- 支持折叠/展开
- 自适应窗口大小
9. 安全特性
- XSS 防护 (DOMPurify + iframe 沙箱)
- CSRF 防护 (Flask-WTF)
- 数据加密 (Fernet 对称加密)
- 登录限流 (5 次失败锁定 15 分钟)
- 审计日志
- 二次验证 (导出功能)
架构特点
分层架构
Routes (路由层)
↓
Services (服务层)
↓
Repositories (数据访问层)
↓
Database (SQLite)
Blueprint 模块化
pages- 页面路由accounts- 邮箱账号管理groups- 分组管理tags- 标签管理emails- 邮件操作temp_emails- 临时邮箱oauth- OAuth2 授权settings- 系统设置scheduler- 定时任务system- 系统操作audit- 审计日志
应用工厂模式
使用 create_app() 工厂函数创建 Flask 应用实例,便于测试和配置管理。
完整分层架构
- 已完成从单体架构到分层架构的迁移
- Routes → Controllers → Services → Repositories 清晰分层
- 中间件统一处理横切关注点
数据模型
核心表
accounts- 邮箱账号groups- 分组tags- 标签account_tags- 账号标签关联settings- 系统设置temp_emails- 临时邮箱refresh_logs- Token 刷新日志refresh_runs- 刷新运行记录distributed_locks- 分布式锁
部署方式
开发环境
python web_outlook_app.py
生产环境
- Docker 部署 (提供 Dockerfile)
- WSGI 服务器 (Gunicorn/uWSGI)
- 环境变量配置
环境变量
PORT- 端口号 (默认 5000)HOST- 监听地址 (默认 0.0.0.0)FLASK_ENV- 运行模式 (production/development)SECRET_KEY- Flask 密钥DATABASE_PATH- 数据库路径
API 优先级策略
邮件操作采用三级回退机制:
- Graph API (主要方式)
- IMAP 新版 (outlook.live.com)
- IMAP 旧版 (outlook.office365.com)
失败时自动回退到下一级,并提供详细错误信息。
当前状态
已完成
- ✅ 核心功能实现
- ✅ 安全特性完善
- ✅ 分组代理支持
- ✅ API 优先级回退
- ✅ 详细错误提示
- ✅ 全选功能 (跨分组状态保持)
- ✅ 验证码提取 (Graph → IMAP 回退)
- ✅ 自动轮询与通知
- ✅ 批量删除邮箱
- ✅ 架构迁移完成 (legacy.py 已移除)
- ✅ 可调整布局系统
进行中
- 🔄 前后端分离准备
- 🔄 单元测试覆盖率提升
待优化
- ⏳ 前后端完全分离
- ⏳ API 文档完善
- ⏳ 性能优化与监控