4.1 KiB
4.1 KiB
Transcriber Service
Сервис для расшифровки аудиозаписей с REST API.
Возможности
- Загрузка аудиофайлов любого формата
- Автоматическая генерация UUID для файлов
- Сохранение файлов на диск
- Отслеживание статуса задач расшифровки
- SQLite база данных для хранения метаданных
Технологии
- Веб-фреймворк: gin-gonic/gin
- SQL Builder: doug-martin/goqu
- Миграции БД: pressly/goose
- База данных: SQLite
- UUID: google/uuid
Установка и запуск
- Клонируйте репозиторий
- Установите зависимости:
go mod tidy - Запустите приложение:
go run main.go
Сервер запустится на порту 8080.
API Endpoints
POST /api/transcribe
Загружает аудиофайл и создает задачу на расшифровку.
Параметры:
audio(form-data) - аудиофайл для расшифровки
Пример запроса:
curl -X POST \
http://localhost:8080/api/transcribe \
-F "audio=@/path/to/your/audio.mp3"
Ответ:
{
"job_id": "550e8400-e29b-41d4-a716-446655440000",
"file_id": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
"status": "pending"
}
GET /api/transcribe/:id
Получает статус задачи расшифровки по ID.
Пример запроса:
curl http://localhost:8080/api/transcribe/550e8400-e29b-41d4-a716-446655440000
Ответ:
{
"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
Проверка работоспособности сервиса.
Ответ:
{
"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:
# Создание новой миграции
goose -dir migrations create migration_name sql
# Применение миграций
goose -dir migrations sqlite3 data/transcriber.db up
# Откат миграций
goose -dir migrations sqlite3 data/transcriber.db down