From c4dec7644d29baf76e20ad2aeb28ad792c03ac11 Mon Sep 17 00:00:00 2001 From: poturaevpetr Date: Tue, 30 Dec 2025 02:00:38 +0500 Subject: [PATCH] fix --- apiApp/routers/audio_management_router.py | 36 ++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/apiApp/routers/audio_management_router.py b/apiApp/routers/audio_management_router.py index 67096c7..9d0997d 100644 --- a/apiApp/routers/audio_management_router.py +++ b/apiApp/routers/audio_management_router.py @@ -149,6 +149,19 @@ def process_audio_file(audio_id: str, db: Session): logger.info(f"🎵 Запуск распознавания для {audio.filename}") + # Проверяем что файл существует на диске + from apiApp.config import AUDIOFILES_PATH + import os + file_path = os.path.join(AUDIOFILES_PATH, audio.filename) + + if not os.path.exists(file_path): + logger.error(f"❌ Файл не найден на диске в FileAudioAPI: {file_path}") + # Помечаем audio как проблемный + return + + file_size = os.path.getsize(file_path) + logger.info(f"📁 Файл найден: {file_path} (размер: {file_size} bytes)") + # Формируем запрос в GigaAM API - ИСПОЛЬЗУЕМ АСИНХРОННЫЙ ENDPOINT from apiApp.config import GIGAAM_API_URL api_url = f"{GIGAAM_API_URL}/api/call/process/async" @@ -169,6 +182,13 @@ def process_audio_file(audio_id: str, db: Session): else: logger.error(f"❌ Ошибка запуска распознавания для {audio.filename}: {response.status_code} - {response.text}") + # Дополнительная диагностика для 404 + if response.status_code == 404: + logger.error(f"🔍 Диагностика 404:") + logger.error(f" - FileAudioAPI путь: {file_path}") + logger.error(f" - Файл существует: {os.path.exists(file_path)}") + logger.error(f" - GigaAM API URL: {api_url}") + except requests.exceptions.Timeout: # Для асинхронного endpoint таймаут маловероятен, но обрабатываем logger.warning(f"⏱️ Таймаут при отправке задачи для {audio.filename}") @@ -338,12 +358,19 @@ async def get_audio_stats(db: Session = Depends(get_db)): # Проверяем существование файлов на диске all_audio = db.query(Audio).all() existing_count = 0 + missing_files = [] for audio in all_audio: file_path = os.path.join(AUDIOFILES_PATH, audio.filename) if os.path.exists(file_path): existing_count += 1 + else: + missing_files.append({ + "audio_id": str(audio.id), + "filename": audio.filename, + "index_date": audio.index_date.isoformat() if audio.index_date else None + }) - return { + stats = { "total_audio": total_audio, "with_conclusion": with_conclusion, "without_conclusion": without_conclusion, @@ -351,6 +378,13 @@ async def get_audio_stats(db: Session = Depends(get_db)): "missing_on_disk": total_audio - existing_count } + # Добавляем список отсутствующих файлов (первые 50) + if missing_files: + stats["missing_files_sample"] = missing_files[:50] + logger.warning(f"⚠️ Найдено {len(missing_files)} отсутствующих файлов") + + return stats + except Exception as e: logger.error(f"❌ Ошибка при получении статистики: {e}") raise HTTPException(