fix get_db

This commit is contained in:
poturaevpetr
2025-12-26 03:39:47 +05:00
parent 094b17ee93
commit 168151fe7f
+50 -50
View File
@@ -1,15 +1,15 @@
"""
API endpoints для получения AI заключений от GigaAM API
"""
from fastapi import APIRouter, HTTPException
from fastapi import APIRouter, HTTPException, Depends
from pydantic import BaseModel
from typing import Optional, List, Dict, Any
from apiApp.database import get_db_session
from sqlalchemy.orm import Session
from apiApp.database import get_db
from apiApp.database.Audio import Audio
from apiApp.database.AiConclusion import AiConclusion
from datetime import datetime
import logging
import uuid
logger = logging.getLogger(__name__)
ai_conclusion_router = APIRouter()
@@ -35,7 +35,7 @@ class AiConclusionResponse(BaseModel):
@ai_conclusion_router.post("/conclusion/save", response_model=AiConclusionResponse)
async def save_ai_conclusion(request: AiConclusionRequest):
async def save_ai_conclusion(request: AiConclusionRequest, db: Session = Depends(get_db)):
"""
Сохраняет AI заключение от GigaAM API
@@ -50,59 +50,59 @@ async def save_ai_conclusion(request: AiConclusionRequest):
try:
logger.info(f"📥 Получено AI заключение для файла: {request.filename}")
with get_db_session() as db:
# Находим аудио файл по имени
audio = db.query(Audio).filter(Audio.filename == request.filename).first()
# Находим аудио файл по имени
audio = db.query(Audio).filter(Audio.filename == request.filename).first()
if not audio:
logger.warning(f"⚠️ Файл {request.filename} не найден в БД")
raise HTTPException(
status_code=404,
detail=f'Файл {request.filename} не найден'
)
# Проверяем, есть ли уже заключение
existing_conclusion = db.query(AiConclusion).filter(
AiConclusion.audio_id == audio.id
).first()
conclusion_data = {
"transcription": request.transcription,
"ai_transcription": request.corrected_transcription,
"conclusion": request.analysis,
"segments": request.segments,
"processing_time_seconds": request.processing_time_seconds
}
if existing_conclusion:
# Обновляем существующее заключение
logger.info(f"🔄 Обновление существующего заключения для {request.filename}")
existing_conclusion.conclusion = conclusion_data
existing_conclusion.end_date = datetime.utcnow()
else:
# Создаём новое заключение
logger.info(f"✅ Создание нового заключения для {request.filename}")
new_conclusion = AiConclusion(
audio_id=audio.id,
conclusion=conclusion_data,
index_date=datetime.utcnow()
)
db.add(new_conclusion)
db.commit()
logger.info(f"✅ Заключение сохранено для {request.filename}")
return AiConclusionResponse(
success=True,
message='Заключение сохранено',
audio_id=str(audio.id),
filename=request.filename
if not audio:
logger.warning(f"⚠️ Файл {request.filename} не найден в БД")
raise HTTPException(
status_code=404,
detail=f'Файл {request.filename} не найден'
)
# Проверяем, есть ли уже заключение
existing_conclusion = db.query(AiConclusion).filter(
AiConclusion.audio_id == audio.id
).first()
conclusion_data = {
"transcription": request.transcription,
"ai_transcription": request.corrected_transcription,
"conclusion": request.analysis,
"segments": request.segments,
"processing_time_seconds": request.processing_time_seconds
}
if existing_conclusion:
# Обновляем существующее заключение
logger.info(f"🔄 Обновление существующего заключения для {request.filename}")
existing_conclusion.conclusion = conclusion_data
existing_conclusion.end_date = datetime.utcnow()
else:
# Создаём новое заключение
logger.info(f"✅ Создание нового заключения для {request.filename}")
new_conclusion = AiConclusion(
audio_id=audio.id,
conclusion=conclusion_data,
index_date=datetime.utcnow()
)
db.add(new_conclusion)
db.commit()
logger.info(f"✅ Заключение сохранено для {request.filename}")
return AiConclusionResponse(
success=True,
message='Заключение сохранено',
audio_id=str(audio.id),
filename=request.filename
)
except HTTPException:
raise
except Exception as e:
logger.error(f"❌ Ошибка при сохранении заключения: {e}")
db.rollback()
raise HTTPException(
status_code=500,
detail=str(e)