удаление кэша сегментов аудио после обработки, добавлена инструкция для очистки контейнеров и образов
This commit is contained in:
@@ -1,3 +1,212 @@
|
|||||||
# FileAudioAPI
|
# FileAudioAPI
|
||||||
|
|
||||||
Сервис для хранения файлов аудио, индексации файлов, записи и выдачи результатов распознавания
|
Сервис для хранения аудиофайлов, индексации файлов, записи и выдачи результатов распознавания, реализованный на **FastAPI**.
|
||||||
|
|
||||||
|
## 🚀 Быстрый старт
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Клонировать и перейти в директорию
|
||||||
|
cd /Users/petr/SpeechAnalytics/FileAudioAPI
|
||||||
|
|
||||||
|
# Запуск с Docker (рекомендуется)
|
||||||
|
docker-compose up -d
|
||||||
|
|
||||||
|
# Или использовать Makefile
|
||||||
|
make up
|
||||||
|
```
|
||||||
|
|
||||||
|
Приложение будет доступно по адресу: **http://localhost:8000**
|
||||||
|
|
||||||
|
API документация:
|
||||||
|
- 📚 **Swagger UI**: http://localhost:8000/api/v1/docs
|
||||||
|
- 📖 **ReDoc**: http://localhost:8000/api/v1/redoc
|
||||||
|
|
||||||
|
## 📚 Документация
|
||||||
|
|
||||||
|
- 📘 [Quick Start Guide](START.md) - Быстрый старт
|
||||||
|
- 📗 [API Documentation](README_FASTAPI.md) - Полная документация API
|
||||||
|
- 📕 [Docker Deployment](README_DOCKER.md) - Развертывание в Docker
|
||||||
|
|
||||||
|
## 🎯 Возможности
|
||||||
|
|
||||||
|
- ✅ Загрузка аудиофайлов (MP3, WAV, OGG, FLAC, M4A, AAC)
|
||||||
|
- ✅ Хранение файлов с автоматической индексацией
|
||||||
|
- ✅ Асинхронное распознавание аудио в фоне
|
||||||
|
- ✅ Отслеживание статуса распознавания
|
||||||
|
- ✅ Получение результатов распознавания
|
||||||
|
- ✅ RESTful API с автоматической документацией
|
||||||
|
- ✅ Валидация данных с Pydantic
|
||||||
|
- ✅ Docker поддержка
|
||||||
|
|
||||||
|
## 🏗️ Архитектура
|
||||||
|
|
||||||
|
```
|
||||||
|
apiApp/
|
||||||
|
├── schemas/ # Pydantic модели (валидация)
|
||||||
|
├── services/ # Business logic (CRUD операции)
|
||||||
|
├── routers/ # API endpoints (контроллеры)
|
||||||
|
├── database/ # SQLAlchemy модели
|
||||||
|
├── dbApi/ # Legacy compatibility layer
|
||||||
|
├── config.py # Конфигурация
|
||||||
|
└── database.py # SQLAlchemy настройка
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔧 Технологии
|
||||||
|
|
||||||
|
- **FastAPI** - Современный веб-фреймворк
|
||||||
|
- **SQLAlchemy 2.0** - ORM для работы с БД
|
||||||
|
- **Pydantic** - Валидация данных
|
||||||
|
- **Uvicorn** - ASGI сервер
|
||||||
|
- **Docker** - Контейнеризация
|
||||||
|
|
||||||
|
## 📋 Основные endpoints
|
||||||
|
|
||||||
|
| Метод | Endpoint | Описание |
|
||||||
|
|-------|----------|----------|
|
||||||
|
| POST | `/api/v1/upload` | Загрузка аудиофайла |
|
||||||
|
| GET | `/api/v1/audio/list` | Список всех файлов |
|
||||||
|
| GET | `/api/v1/audio/{id}` | Информация о файле |
|
||||||
|
| GET | `/api/v1/audio/file/{id}` | Скачать файл |
|
||||||
|
| DELETE | `/api/v1/audio/delete/{id}` | Удалить файл |
|
||||||
|
| POST | `/api/v1/recognize/{id}` | Запустить распознавание |
|
||||||
|
| GET | `/api/v1/recognize/{id}` | Статус распознавания |
|
||||||
|
| GET | `/api/v1/recognize/task/{task_id}` | Статус по task_id |
|
||||||
|
| GET | `/api/v1/recognize/{id}/result` | Результат распознавания |
|
||||||
|
|
||||||
|
## 🛠️ Установка и запуск
|
||||||
|
|
||||||
|
### С Docker (рекомендуется)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Использование Makefile
|
||||||
|
make up
|
||||||
|
|
||||||
|
# Или напрямую с Docker Compose
|
||||||
|
docker-compose up -d
|
||||||
|
|
||||||
|
# Просмотр логов
|
||||||
|
make logs
|
||||||
|
# или
|
||||||
|
docker-compose logs -f
|
||||||
|
```
|
||||||
|
|
||||||
|
### Локально
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Установка зависимостей
|
||||||
|
make install
|
||||||
|
# или
|
||||||
|
pip3 install -r requirements.txt
|
||||||
|
|
||||||
|
# Создание базы данных
|
||||||
|
make db-migrate
|
||||||
|
|
||||||
|
# Запуск
|
||||||
|
make dev
|
||||||
|
# или
|
||||||
|
python3 run.py
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔧 Makefile команды
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make help # Показать все команды
|
||||||
|
make build # Собрать Docker образ
|
||||||
|
make up # Запустить контейнеры
|
||||||
|
make down # Остановить контейнеры
|
||||||
|
make restart # Перезапустить
|
||||||
|
make logs # Логи
|
||||||
|
make shell # Shell в контейнере
|
||||||
|
make test # Запуск тестов
|
||||||
|
make clean # Очистка
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📝 Примеры использования
|
||||||
|
|
||||||
|
### Загрузка файла
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -X POST http://localhost:8000/api/v1/upload \
|
||||||
|
-F "file=@audio.mp3"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Запуск распознавания
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -X POST http://localhost:8000/api/v1/recognize/{audio_id}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Получение статуса
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl http://localhost:8000/api/v1/recognize/{audio_id}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Получение результата
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl http://localhost:8000/api/v1/recognize/{audio_id}/result
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔒 Production
|
||||||
|
|
||||||
|
Для production развертывания:
|
||||||
|
|
||||||
|
1. Используйте PostgreSQL вместо SQLite
|
||||||
|
2. Настройте Redis для хранения статусов задач
|
||||||
|
3. Ограничьте CORS origins
|
||||||
|
4. Добавьте аутентификацию
|
||||||
|
5. Настройте SSL/HTTPS
|
||||||
|
6. Используйте несколько workers
|
||||||
|
|
||||||
|
Подробнее в [Docker Deployment Guide](README_DOCKER.md)
|
||||||
|
|
||||||
|
## 🧪 Тестирование
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Запуск тестов
|
||||||
|
make test
|
||||||
|
|
||||||
|
# Или напрямую
|
||||||
|
pytest tests/ -v
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📊 Мониторинг
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Health check
|
||||||
|
curl http://localhost:8000/health
|
||||||
|
|
||||||
|
# Docker stats
|
||||||
|
docker stats file-audio-api
|
||||||
|
|
||||||
|
# Логи
|
||||||
|
docker-compose logs -f app
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🤝 Рефакторинг
|
||||||
|
|
||||||
|
Проект был успешно рефакторин из Flask в FastAPI с улучшением архитектуры:
|
||||||
|
|
||||||
|
**Основные изменения:**
|
||||||
|
- ✅ Многослойная архитектура (schemas → services → routers)
|
||||||
|
- ✅ Разделение по доменам
|
||||||
|
- ✅ Асинхронная обработка задач
|
||||||
|
- ✅ Автодокументация API
|
||||||
|
- ✅ Type hints и валидация
|
||||||
|
- ✅ Docker поддержка
|
||||||
|
|
||||||
|
## 📄 Лицензия
|
||||||
|
|
||||||
|
[MIT License](LICENSE)
|
||||||
|
|
||||||
|
## 👨💻 Автор
|
||||||
|
|
||||||
|
Speech Analytics Team
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
📖 Более подробная информация в документации:
|
||||||
|
- [Quick Start](START.md)
|
||||||
|
- [API Docs](README_FASTAPI.md)
|
||||||
|
- [Docker Guide](README_DOCKER.md)
|
||||||
|
|||||||
Reference in New Issue
Block a user