удаление кэша сегментов аудио после обработки, добавлена инструкция для очистки контейнеров и образов
This commit is contained in:
@@ -1,3 +1,212 @@
|
||||
# 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