fix
This commit is contained in:
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user