Files
FileAudioAPI/README.md
T

213 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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)