# 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)