这是一个用于比较两个项目版本之间差异的后端服务,能够分析文件结构、识别内容变化,并提供详细的差异报告。特别针对.key文件格式进行了优化,可以识别关键词块级别的差异。
- 目录结构比较:检测新增、删除和修改的文件与目录
- 文件内容比较:生成行级和关键词块级别的差异
- 支持特殊.key文件格式解析
- 并发处理:使用线程池提高大项目的比较性能
- 多种差异输出格式:HTML可视化和JSON结构化数据
- 跨域支持:可与前端应用无缝集成
- Python 3.9+
- FastAPI:轻量级高性能Web框架
- difflib:Python标准库,用于文本差异比较
- chardet:字符编码检测
- pyyaml:YAML文件处理
- uvicorn:ASGI服务器
- 安装Python 3.9或更高版本
- 推荐使用虚拟环境
- 克隆项目代码到本地
git clone <repository-url>
cd project-comparison-backend
- 创建并激活虚拟环境
# Windows
python -m venv venv
venv\Scripts\activate
# macOS/Linux
python3 -m venv venv
source venv/bin/activate
- 安装依赖
pip install -r requirements.txt
uvicorn app:app --reload
服务将运行在 http://localhost:8000
POST /upload_project
- 参数:
project_id
: 项目标识 ('A' 或 'B')file
: ZIP格式的项目文件
POST /set_local_project
- 参数:
project_id
: 项目标识 ('A' 或 'B')path
: 本地项目路径
GET /compare_projects
- 返回:包含项目差异的JSON数据
POST /compare_files
- 参数:
file_a
: 第一个文件file_b
: 第二个文件
- 返回:包含文件差异的JSON数据
project-comparison-backend/
├── app.py # 应用入口,定义API路由
├── compare.py # 核心比较逻辑
├── scan.py # 项目扫描功能
├── requirements.txt # 依赖列表
├── test_json_diff.py # 测试脚本
└── venv/ # 虚拟环境目录
运行测试脚本比较Change_02和Change_03目录中的文件:
python test_json_diff.py
测试结果将保存到 ../data/all_files_diff.json
文件中
app.py
: 维护API路由和请求处理compare.py
: 维护文件和内容比较逻辑scan.py
: 维护项目扫描功能- 所有修改请确保通过现有测试
- 对于大型项目,可以调整
MAX_WORKERS
参数 (在compare.py中) 优化并发性能 - 对于特别大的文件,可以考虑添加文件大小限制
- 添加更多文件类型的特殊处理
- 实现差异结果的数据库存储
- 添加用户认证和授权
- 优化前端展示界面
欢迎提交问题和功能请求,或者直接提交Pull Request。