import logging from fastapi import APIRouter, BackgroundTasks, Depends from pydantic import BaseModel from services.report import ( ask_ollama_qwen, dialog_ask_gemini, run_all_models, tasks_store, total_summation, ) from utils.checking_keys import create_key from utils.logging_utils import EndpointLogger # ------------------------------------------ # 로깅 설정 logger = logging.getLogger(__name__) router = APIRouter(tags=["summary"]) class SummaryRequest(BaseModel): text: str @router.post("/summary") # STT 요약 모델 async def summarize( request: SummaryRequest, endpoint_logger: EndpointLogger = Depends(EndpointLogger) ): endpoint_logger.log( model="gpt-4.1-mini, qwen3:custom, gemini-2.5-flash, claude-3-7-sonnet-latest", input_filename="None", prompt_filename="None", context_length=len(request.text), ) results = await total_summation(request.text) return {"summary_results": results} @router.post("/ollama_summary") # ollama 모델 전용 async def ollama_summary( request: SummaryRequest, endpoint_logger: EndpointLogger = Depends(EndpointLogger) ): endpoint_logger.log( model="qwen3:custom", input_filename="None", prompt_filename="None", context_length=len(request.text), ) results = await ask_ollama_qwen(request.text) return {"summary_results": results} @router.post("/gemini_summary") async def gemini_summary(request: SummaryRequest): results = await dialog_ask_gemini(request.text) return {"summary_results": results} @router.post("/task_summary") # 모델 별 전체 요약 async def task_summary( request: SummaryRequest, background_tasks: BackgroundTasks, endpoint_logger: EndpointLogger = Depends(EndpointLogger), ): endpoint_logger.log( model="gpt-4.1-mini, qwen3:custom, gemini-2.5-flash, claude-3-7-sonnet-latest", input_filename="None", prompt_filename="None", context_length=len(request.text), ) task_id = create_key() background_tasks.add_task(run_all_models, request.text, task_id) return {"task_id": task_id} @router.get("/task_summary/{task_id}") # 모델 별 요약 조회 async def get_status(task_id: str): task = tasks_store.get(task_id) if not task: return {"error": "Invalid task_id"} return task