Init: generated with claude-sonnet-4

This commit is contained in:
2025-08-08 11:13:35 +03:00
commit 40e207bdb2
10 changed files with 723 additions and 0 deletions

146
README.md Normal file
View File

@@ -0,0 +1,146 @@
# 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