загрузка и распознвание внешний файлов
This commit is contained in:
@@ -16,6 +16,31 @@ from apiApp.config import WEBHOOK_ENDPOINT, WEBHOOK_API_KEY
|
||||
logger = logging.getLogger(__name__)
|
||||
ai_conclusion_router = APIRouter()
|
||||
|
||||
def _send_callback(callback_url: str, audio: Audio, conclusion_data: Dict[str, Any]) -> None:
|
||||
"""Отправляем результат клиенту по callback_url (не храним в БД)."""
|
||||
try:
|
||||
callback_url = (callback_url or "").strip()
|
||||
if not callback_url:
|
||||
return
|
||||
if not callback_url.startswith(("http://", "https://")):
|
||||
logger.warning(f"⚠️ Некорректный callback_url для {audio.filename}: {callback_url}")
|
||||
return
|
||||
|
||||
payload = {
|
||||
"audio_id": str(audio.id),
|
||||
"filename": audio.filename,
|
||||
"result": conclusion_data
|
||||
}
|
||||
|
||||
resp = requests.post(callback_url, json=payload, timeout=30)
|
||||
if 200 <= resp.status_code < 300:
|
||||
logger.info(f"✅ Callback успешно отправлен для {audio.filename}")
|
||||
else:
|
||||
logger.warning(f"⚠️ Callback вернул статус {resp.status_code} для {audio.filename}")
|
||||
logger.warning(f"Response: {resp.text}")
|
||||
except Exception as e:
|
||||
logger.error(f"❌ Ошибка при отправке callback для {audio.filename}: {e}")
|
||||
|
||||
|
||||
class AiConclusionRequest(BaseModel):
|
||||
"""Модель запроса для сохранения AI заключения"""
|
||||
@@ -25,6 +50,7 @@ class AiConclusionRequest(BaseModel):
|
||||
analysis: Dict[str, Any]
|
||||
segments: Optional[List[Dict[str, Any]]] = []
|
||||
processing_time_seconds: Optional[float] = 0
|
||||
callback_url: Optional[str] = None
|
||||
|
||||
|
||||
class AiConclusionResponse(BaseModel):
|
||||
@@ -93,6 +119,10 @@ async def save_ai_conclusion(request: AiConclusionRequest, db: Session = Depends
|
||||
db.commit()
|
||||
logger.info(f"✅ Заключение сохранено для {request.filename}")
|
||||
|
||||
# Для внешних файлов — отправляем результат клиенту из FileAudioAPI
|
||||
if (audio.sourse or "").lower() == "external" and request.callback_url:
|
||||
_send_callback(request.callback_url, audio, conclusion_data)
|
||||
|
||||
# Отправляем webhook в Calls_WEB_Client_main для анализа
|
||||
try:
|
||||
logger.info(f"📤 Отправка webhook в Calls_WEB_Client_main для {request.filename}")
|
||||
|
||||
Reference in New Issue
Block a user