Files
transcriber/README.md

147 lines
4.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.

# 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