将 app.py 中的历史记录相关代码拆分到独立的模块中,提高代码的可维护性和可读性。
创建了专门处理历史记录相关路由的模块,包含以下功能:
- 用户UID获取:
get_user_uid()- 从请求头中获取用户唯一标识 - 路由注册函数:
register_history_routes(app)- 注册所有历史记录相关的路由
-
GET /api/history- 获取生成历史记录- 支持用户筛选、日期筛选、评分筛选
- 支持查询可用日期列表
- 支持查看所有用户或当前用户的历史
-
DELETE /api/history- 清空当前用户的历史记录 -
POST /api/rating- 为图片评分- 支持评分值: -1(bad), 0(清除), 1-5(星级)
-
DELETE /api/history/bad- 删除所有标记为Bad的图片- 同时删除数据库记录和物理文件
- 支持按用户筛选
-
移除的代码:
- 删除了所有历史记录相关的路由函数
- 删除了
get_user_uid()函数(已移至history_routes.py)
-
新增的导入:
from history_routes import register_history_routes
-
新增的路由注册:
# 注册历史记录相关路由 register_history_routes(app)
-
简化的数据库导入: 只保留必要的数据库函数导入:
from database import ( add_history_record, migrate_from_json, get_history_count )
- 历史记录相关功能集中管理
app.py专注于核心图片生成功能- 各模块职责分明
- 修改历史记录功能只需关注
history_routes.py - 减少单个文件的代码量(
app.py从 757 行减少到约 500 行) - 更容易定位和修复问题
- 可以轻松添加新的历史记录相关功能
- 模块化设计便于单元测试
- 未来可以进一步拆分其他功能模块
register_history_routes()函数可以在多个应用中复用- 路由处理逻辑独立,便于移植
创建了 test_refactored_routes.py 测试脚本,验证了以下功能:
- ✅ 添加历史记录
- ✅ 获取历史记录
- ✅ 评分功能
- ✅ 日期查询
所有测试均通过,证明重构后的代码功能正常。
- 向后兼容: 所有API端点保持不变,前端无需修改
- 功能完整: 所有原有功能都已迁移,没有功能丢失
- 性能影响: 无性能影响,只是代码组织结构变化
- 依赖关系:
history_routes.py依赖于database.py提供的数据访问函数
drawThingsWebUI/
├── app.py # 主应用文件(已简化)
├── history_routes.py # 历史记录路由模块(新增)
├── database.py # 数据库操作模块(不变)
├── test_refactored_routes.py # 重构测试脚本(新增)
└── ...
-
可以考虑将其他功能也进行类似拆分,如:
- 配置管理路由 (
config_routes.py) - 图片生成路由 (
generation_routes.py) - 状态查询路由 (
status_routes.py)
- 配置管理路由 (
-
可以为每个模块编写更完善的单元测试
-
考虑添加路由文档自动生成