3.6 KiB
3.6 KiB
文件重构总结
重构概述
已成功将 fastapi_app.py 文件(1092行)重构为多个功能模块,提高了代码的可维护性和可重用性。
新的文件结构
1. utils/ 目录
utils/file_utils.py
- 功能: 文件处理工具函数
- 主要函数:
download_file()- 异步文件下载get_file_hash()- 文件哈希计算remove_file_or_directory()- 文件/目录删除extract_zip_file()- ZIP文件解压get_document_preview()- 文档预览is_file_already_processed()- 检查文件是否已处理load_processed_files_log()/save_processed_files_log()- 处理日志管理
utils/dataset_manager.py
- 功能: 数据集管理
- 主要函数:
download_dataset_files()- 下载和组织数据集文件generate_dataset_structure()- 生成数据集结构remove_dataset_directory()- 删除数据集目录remove_dataset_directory_by_key()- 按key删除数据集
utils/project_manager.py
- 功能: 项目管理
- 主要函数:
get_content_from_messages()- 从消息中提取内容generate_project_readme()- 生成项目READMEsave_project_readme()- 保存项目READMEget_project_status()- 获取项目状态remove_project()- 删除项目list_projects()- 列出所有项目get_project_stats()- 获取项目统计信息
utils/api_models.py
- 功能: API数据模型和响应类
- 主要类:
Message,DatasetRequest,ChatRequest,FileProcessRequestDatasetResponse,ChatCompletionResponse,FileProcessResponseHealthCheckResponse,SystemStatusResponse,ProjectStatusResponseProjectListResponse,ProjectStatsResponse,ProjectActionResponse- 响应工具函数:
create_success_response(),create_error_response(),create_chat_response()
utils/__init__.py
- 功能: 模块导入导出
- 内容: 统一导出所有工具函数和类
重构效果
优点
- 代码分离: 按功能将代码分离到不同模块
- 可维护性: 每个模块职责单一,易于维护
- 可重用性: 工具函数可在其他项目中重用
- 可测试性: 每个模块可独立测试
- 可读性: 主文件更清晰,专注于API逻辑
文件大小对比
- 重构前:
fastapi_app.py(1092行) - 重构后:
fastapi_app.py(大幅减少,主要为API端点)utils/file_utils.py(120行)utils/dataset_manager.py(200行)utils/project_manager.py(180行)utils/api_models.py(250行)
功能验证
✅ 跳过逻辑修复: 文件处理跳过功能已修复,能正确识别已处理文件 ✅ 分块策略优化: 使用固定chunk大小,生成了2037个合理大小的chunks ✅ Pydantic验证器更新: 修复了V1风格验证器的弃用警告 ✅ 文件重复问题: 解决了API返回重复文件列表的问题 ✅ 模块导入: 所有utils模块可正常导入和使用
使用方式
# 导入工具函数
from utils import (
download_dataset_files,
get_project_status,
FileProcessRequest,
FileProcessResponse
)
# 使用示例
status = get_project_status('test')
files = await download_dataset_files('test', {'default': ['file.zip']})
建议
- 进一步优化: 可以继续将fastapi_app.py中的API端点按功能分组
- 配置管理: 可以添加配置管理模块
- 日志系统: 可以添加统一的日志管理
- 错误处理: 可以添加统一的错误处理机制
重构已完成,代码结构更清晰,功能模块化,便于后续维护和扩展。