from fastapi import APIRouter, HTTPException, status
from pydantic import ValidationError
import server.deepsearch.core.manager.report as mgr
from server.deepsearch.common.exception.exceptions import ReportConvertBasicException
from server.routers.common import validate_request
from server.schemas.report import ReportConvertRes, ReportConvertReq
reports_router = APIRouter()
@reports_router.post("/convert", response_model=ReportConvertRes)
async def report_convert(
request: dict
):
"""
转换生成的markdown报告的格式
Args:
request (dict): 包含用户报告转换需求的请求体数据,需符合ReportConvert模型定义
current_user (dict): 执行此操作的用户上下文信息
Returns:
ReportConvertRes: 标准化响应对象,其中封装了转换成功后的格式报告内容的base64编码二进制
如果转换失败,则包含相应的提示信息
"""
try:
req = validate_request(request, ReportConvertReq)
except ValidationError as e:
raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=str(e)) from e
try:
return mgr.report_convert(req)
except ReportConvertBasicException as e:
raise HTTPException(
status_code=getattr(e, "STATUS_CODE", status.HTTP_400_BAD_REQUEST),
detail=str(e),
) from e