report.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. from database import MySqlDao
  2. from fastapi import APIRouter, status, HTTPException
  3. from .request_body import ReportRequest
  4. from core import get_logger
  5. logger = get_logger("api.report")
  6. dao = MySqlDao()
  7. router = APIRouter()
  8. @router.post("/report")
  9. async def report(request: ReportRequest):
  10. """获取推荐相关报告接口"""
  11. logger.info(f"Report request: cultivacation_id={request.cultivacation_id}")
  12. file_id_record = dao.get_report_file_id(request.cultivacation_id)
  13. if file_id_record.empty:
  14. raise HTTPException(
  15. status_code=status.HTTP_404_NOT_FOUND,
  16. detail="Reports not found"
  17. )
  18. file_id_map = {
  19. '卷烟信息表': file_id_record['product_info_table'].item(),
  20. '品规商户特征关系表': file_id_record['relation_table'].item(),
  21. '相似卷烟表': file_id_record['similarity_product_table'].item()
  22. }
  23. request_data = []
  24. for index, filename in enumerate(file_id_map):
  25. request_data.append(
  26. {
  27. "id": index + 1,
  28. "filename": filename,
  29. "file_id": file_id_map.get(filename)
  30. }
  31. )
  32. return {"code": 200, "msg": "success", "data": {"reportInfo": request_data}}