| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- """
- 审查结果获取接口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)}")
|