| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- """
- 审查结果获取接口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
- from foundation.observability.cachefiles import cache, CacheBaseDir
- # 导入文件上传模块的存储
- 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")
- # 使用 cache_manager 读取结果文件
- review_results = cache.load(
- subdir="final_result",
- filename=f"{callback_task_id}.json",
- base_cache_dir=CacheBaseDir.CONSTRUCTION_REVIEW,
- default=None
- )
- if review_results is None:
- raise HTTPException(status_code=404, detail="审查结果文件不存在")
- # 验证文件中的用户信息是否匹配
- 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)}")
|