""" 审查结果获取接口Mock实现 模拟风险统计、总结报告和问题条文返回 """ import random import os import json from datetime import datetime from fastapi import APIRouter, HTTPException, Query from pydantic import BaseModel from typing import Optional, Dict, Any from .schemas.error_schemas import ReviewResultsErrors # 导入文件上传模块的存储 try: from .file_upload import uploaded_files except ImportError: from views.construction_review.file_upload import uploaded_files class ReviewResultsRequest(BaseModel): id: str = None user: str = None type: str = None # "summary" 或 "issues" class ReviewResultsResponse(BaseModel): code: int data: Dict[str, Any] review_results_router = APIRouter(prefix="/sgsc", tags=["前端接口"]) @review_results_router.get("/review_results", response_model=ReviewResultsResponse) async def review_results( callback_task_id: str = Query(..., description="回调任务ID"), user: str = Query(..., description="用户ID") ): """ 获取审查结果接口 - 从temp目录读取保存的结果文件 """ try: # 验证参数 if not callback_task_id: raise HTTPException(status_code=400, detail="缺少callback_task_id参数") if not user: raise HTTPException(status_code=400, detail="缺少user参数") # 验证用户标识(应该是指定用户如user-001) valid_users = {"user-001", "user-002", "user-003"} # 可以配置化 if user not in valid_users: raise HTTPException(status_code=403, detail="无效的用户ID") # 构建文件路径 temp_dir = "temp" file_path = os.path.join(temp_dir, f"{callback_task_id}.json") # 检查文件是否存在 if not os.path.exists(file_path): raise HTTPException(status_code=404, detail="审查结果文件不存在") # 读取文件内容 try: with open(file_path, 'r', encoding='utf-8') as f: review_results = json.load(f) except json.JSONDecodeError: raise HTTPException(status_code=500, detail="审查结果文件格式错误") except Exception as e: raise HTTPException(status_code=500, detail=f"读取文件失败: {str(e)}") # 验证文件中的用户信息是否匹配 if review_results.get("user_id") != user: raise HTTPException(status_code=403, detail="用户权限验证失败") return ReviewResultsResponse( code=200, data=review_results ) except HTTPException: raise except Exception as e: raise HTTPException(status_code=500, detail=f"服务器内部错误: {str(e)}")