Files
algorithm/backend/app/routes/comparison.py

65 lines
1.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from fastapi import APIRouter, Depends, HTTPException
from typing import Dict, Any, List
from app.services.comparison_service import ComparisonService
from app.routes.user import get_current_active_user
# 创建路由器
router = APIRouter(prefix="/comparison", tags=["comparison"])
# 创建对比服务实例
comparison_service = ComparisonService()
@router.post("/compare-algorithms", response_model=dict)
async def compare_algorithms(
request_data: Dict[str, Any],
current_user: dict = Depends(get_current_active_user)
):
"""比较多个算法的效果
Args:
request_data: 请求数据包含input_data和algorithm_configs
current_user: 当前活跃用户
Returns:
对比结果
"""
input_data = request_data.get("input_data")
algorithm_configs = request_data.get("algorithm_configs")
if not input_data:
raise HTTPException(status_code=400, detail="缺少 input_data 参数")
if not algorithm_configs or not isinstance(algorithm_configs, list):
raise HTTPException(status_code=400, detail="缺少 algorithm_configs 参数或格式错误")
result = await comparison_service.compare_algorithms(input_data, algorithm_configs)
if not result["success"]:
raise HTTPException(status_code=500, detail=result.get("error", "对比失败"))
return result
@router.post("/generate-report", response_model=dict)
async def generate_comparison_report(
comparison_results: Dict[str, Any],
current_user: dict = Depends(get_current_active_user)
):
"""生成对比报告
Args:
comparison_results: 对比结果
current_user: 当前活跃用户
Returns:
对比报告
"""
report = comparison_service.generate_comparison_report(comparison_results)
if not report["success"]:
raise HTTPException(status_code=500, detail=report.get("error", "生成报告失败"))
return report