Skip to content

Dcross6889/project-comparison-backend

Repository files navigation

项目比较工具 - 后端

项目概述

这是一个用于比较两个项目版本之间差异的后端服务,能够分析文件结构、识别内容变化,并提供详细的差异报告。特别针对.key文件格式进行了优化,可以识别关键词块级别的差异。

功能特点

  • 目录结构比较:检测新增、删除和修改的文件与目录
  • 文件内容比较:生成行级和关键词块级别的差异
  • 支持特殊.key文件格式解析
  • 并发处理:使用线程池提高大项目的比较性能
  • 多种差异输出格式:HTML可视化和JSON结构化数据
  • 跨域支持:可与前端应用无缝集成

技术栈

  • Python 3.9+
  • FastAPI:轻量级高性能Web框架
  • difflib:Python标准库,用于文本差异比较
  • chardet:字符编码检测
  • pyyaml:YAML文件处理
  • uvicorn:ASGI服务器

安装说明

前提条件

  • 安装Python 3.9或更高版本
  • 推荐使用虚拟环境

步骤

  1. 克隆项目代码到本地
git clone <repository-url>
cd project-comparison-backend
  1. 创建并激活虚拟环境
# Windows
python -m venv venv
venv\Scripts\activate

# macOS/Linux
python3 -m venv venv
source venv/bin/activate
  1. 安装依赖
pip install -r requirements.txt

使用方法

启动服务

uvicorn app:app --reload

服务将运行在 http://localhost:8000

API接口

1. 上传项目文件

POST /upload_project
  • 参数:
    • project_id: 项目标识 ('A' 或 'B')
    • file: ZIP格式的项目文件

2. 设置本地项目路径

POST /set_local_project
  • 参数:
    • project_id: 项目标识 ('A' 或 'B')
    • path: 本地项目路径

3. 比较两个项目

GET /compare_projects
  • 返回:包含项目差异的JSON数据

4. 比较单个文件

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。

许可证

MIT License

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages