Init: generated with claude-sonnet-4
This commit is contained in:
146
README.md
Normal file
146
README.md
Normal 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
|
Reference in New Issue
Block a user