| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- from config import load_service_config
- from database import MySqlDao
- from fastapi import APIRouter, status, HTTPException
- import os
- from .request_body import EvalReportRequest
- import requests
- from utils import ReportUtils, FileStreamUtils
- cfgs = load_service_config()
- dao = MySqlDao()
- router = APIRouter()
- @router.post('/eval_report')
- async def eval_report(request: EvalReportRequest):
- """生成并上传验证报告到阿里云文件数据库"""
- reports_dir = os.path.join('./data/reports', request.city_uuid, request.product_code)
- report_util = ReportUtils(request.city_uuid, request.product_code)
-
- # 获取report数据表中eval_table的file_id,如果不为空,直接返回结果,如果为空则先创建验证数据
- eval_file_id = dao.get_report_file_id(request.cultivacation_id)['val_table'].item()
- if eval_file_id:
- content = [
- {
- "id": 1,
- "filename": "投放验证报告",
- "file_id": eval_file_id
- }
- ]
- return {"code": 200, "msg": "success", "data": {"evalReportInfo": content}}
-
- # 获取推荐列表
- file_id = dao.get_report_file_id(request.cultivacation_id)['recommend_table'].item()
- if file_id is None:
- return {"code": 405, "msg": "推荐表丢失,生成验证报告失败!", "data": {"reportInfo": "推荐表丢失,生成验证报告失败!"}}
-
- recommend_data = FileStreamUtils.download_file(file_id)
- if recommend_data is None:
- return {"code": 405, "msg": "下载推荐数据出错,生成验证报告失败!", "data": {"reportInfo": "下载推荐数据出错,生成验证报告失败!"}}
-
- # 生成验证报告
- report_util.generate_eval_data(request.start_time, request.end_time, recommend_data)
-
- # 上传报告
- eval_report = ['投放验证报告']
- file_id_map = FileStreamUtils.upload_files(reports_dir, eval_report)
-
- dao.update_eval_report_data(request.cultivacation_id, file_id_map.get('投放验证报告'))
-
- content = [
- {
- "id": 1,
- "filename": "投放验证报告",
- "file_id": file_id_map.get('投放验证报告')
- }
- ]
- return {"code": 200, "msg": "success", "data": {"evalReportInfo": content}}
|