API для работы с файлами, индексация файлов и результатов распощнавания

This commit is contained in:
poturaevpetr
2025-12-24 16:05:14 +05:00
parent 4f23dc8664
commit c39b348472
31 changed files with 1739 additions and 0 deletions
+138
View File
@@ -0,0 +1,138 @@
# Speech Analytics FastAPI
Сервис для хранения аудиофайлов, индексации файлов, записи и выдачи результатов распознавания, реализованный на FastAPI.
## Установка зависимостей
```bash
pip install -r requirements.txt
```
## Запуск приложения
### Разработка с автоперезагрузкой
```bash
python run.py
```
### Production режим
```bash
uvicorn main:app --host 0.0.0.0 --port 8000 --workers 4
```
## API Эндпоинты
Документация доступна по адресу:
- Swagger UI: http://localhost:8000/api/v1/docs
- ReDoc: http://localhost:8000/api/v1/redoc
### Аудио файлы
#### Загрузка аудиофайла
```http
POST /api/v1/upload
Content-Type: multipart/form-data
file: <audio_file>
```
#### Список всех аудиофайлов
```http
GET /api/v1/audio/list?skip=0&limit=100
```
#### Получить информацию об аудиофайле
```http
GET /api/v1/audio/{audio_id}
```
#### Скачать аудиофайл
```http
GET /api/v1/audio/file/{audio_id}
```
#### Удалить аудиофайл
```http
DELETE /api/v1/audio/delete/{audio_id}
```
### Распознавание
#### Запустить распознавание
```http
POST /api/v1/recognize/{audio_id}
```
Возвращает:
- 202 Accepted - распознавание запущено
- 200 OK - уже есть активная задача
- 404 Not Found - аудио не найдено
#### Получить статус распознавания
```http
GET /api/v1/recognize/{audio_id}
```
Статусы:
- `not_started` - распознавание не запускалось
- `processing` - в процессе
- `completed` - завершено
- `error` - ошибка
#### Получить статус по task_id
```http
GET /api/v1/recognize/task/{task_id}
```
#### Получить результат распознавания
```http
GET /api/v1/recognize/{audio_id}/result
```
## Структура проекта
```
FileAudioAPI/
├── main.py # Точка входа FastAPI приложения
├── run.py # Скрипт запуска
├── requirements.txt # Зависимости
├── apiApp/
│ ├── __init__.py
│ ├── config.py # Конфигурация
│ ├── database.py # SQLAlchemy настройка
│ ├── schemas.py # Pydantic модели
│ ├── crud.py # CRUD операции
│ ├── routers/ # API routers
│ │ ├── __init__.py
│ │ ├── audio.py # Эндпоинты для аудио
│ │ └── recognition.py # Эндпоинты для распознавания
│ ├── database/ # SQLAlchemy модели
│ │ ├── Audio.py
│ │ ├── AiConclusion.py
│ │ ├── Operator.py
│ │ └── ConclusionVersion.py
│ └── dbApi/ # Legacy совместимость
│ └── __init__.py
└── uploads/ # Загруженные файлы
```
## Конфигурация
Переменные окружения:
- `DATABASE_URL` - URL базы данных (по умолчанию: sqlite:///./speech_analytics.db)
## Основные изменения от Flask версии
1. **FastAPI вместо Flask**: Использование современного асинхронного фреймворка
2. **Pydantic схемы**: Валидация данных с помощью Pydantic
3. **Асинхронная обработка**: BackgroundTasks для фоновых задач
4. **Dependency Injection**: Внедрение зависимостей для сессий БД
5. **Автодокументация**: Автоматическая генерация Swagger/ReDoc
6. **Type hints**: Полная поддержка типизации
## Примечания
- Для production рекомендуется использовать PostgreSQL вместо SQLite
- Для хранения статусов задач в production рекомендуется использовать Redis
- Фоновые задачи обрабатываются асинхронно с помощью BackgroundTasks
- Поддерживается загрузка файлов до 100MB