# Transcriber Service Сервис для расшифровки аудиозаписей с REST API. ## Возможности - Загрузка аудиофайлов любого формата - Автоматическая генерация UUID для файлов - Сохранение файлов на диск - Отслеживание статуса задач расшифровки - SQLite база данных для хранения метаданных ## Технологии - **Веб-фреймворк**: gin-gonic/gin - **SQL Builder**: doug-martin/goqu - **Миграции БД**: pressly/goose - **База данных**: SQLite - **UUID**: google/uuid ## Установка и запуск 1. Клонируйте репозиторий 2. Установите зависимости: ```bash go mod tidy ``` 3. Запустите приложение: ```bash go run main.go ``` Сервер запустится на порту 8080. ## API Endpoints ### POST /api/transcribe Загружает аудиофайл и создает задачу на расшифровку. **Параметры:** - `audio` (form-data) - аудиофайл для расшифровки **Пример запроса:** ```bash curl -X POST \ http://localhost:8080/api/transcribe \ -F "audio=@/path/to/your/audio.mp3" ``` **Ответ:** ```json { "job_id": "550e8400-e29b-41d4-a716-446655440000", "file_id": "6ba7b810-9dad-11d1-80b4-00c04fd430c8", "status": "pending" } ``` ### GET /api/transcribe/:id Получает статус задачи расшифровки по ID. **Пример запроса:** ```bash curl http://localhost:8080/api/transcribe/550e8400-e29b-41d4-a716-446655440000 ``` **Ответ:** ```json { "id": "550e8400-e29b-41d4-a716-446655440000", "status": "pending", "file_id": "6ba7b810-9dad-11d1-80b4-00c04fd430c8", "created_at": "2024-01-01T12:00:00Z", "updated_at": "2024-01-01T12:00:00Z" } ``` ### GET /health Проверка работоспособности сервиса. **Ответ:** ```json { "status": "ok", "message": "Transcriber service is running" } ``` ## Статусы задач - `pending` - задача создана, ожидает обработки - `processing` - задача выполняется - `completed` - задача завершена успешно - `failed` - задача завершена с ошибкой ## Структура проекта ``` transcriber/ ├── main.go # Точка входа приложения ├── go.mod # Зависимости Go ├── models/ │ └── models.go # Модели данных ├── database/ │ └── database.go # Слой работы с БД ├── handlers/ │ └── transcribe.go # HTTP обработчики ├── migrations/ │ ├── 001_create_files_table.sql │ └── 002_create_transcribe_jobs_table.sql └── data/ ├── files/ # Директория для сохранения файлов └── transcriber.db # SQLite база данных (создается автоматически) ``` ## База данных ### Таблица `files` - `id` (TEXT) - UUID файла - `type` (TEXT) - MIME-тип файла - `size` (INTEGER) - размер файла в байтах - `created_at` (DATETIME) - время создания ### Таблица `transcribe_jobs` - `id` (TEXT) - UUID задачи - `status` (TEXT) - статус задачи - `file_id` (TEXT) - ссылка на файл - `created_at` (DATETIME) - время создания - `updated_at` (DATETIME) - время последнего обновления ## Разработка Для добавления новых миграций используйте goose: ```bash # Создание новой миграции goose -dir migrations create migration_name sql # Применение миграций goose -dir migrations sqlite3 data/transcriber.db up # Откат миграций goose -dir migrations sqlite3 data/transcriber.db down