Оркестратор DocAI — REST API, авторизация, хранение файлов, управление пакетами и запуск pipeline проверки программной документации.
Пользователь
│ DOCX / PDF
▼
┌──────────────┐
│ docback │ :8080 (единственная публичная точка входа)
└──────┬───────┘
│ pipeline
┌────┼────────────┐
▼ ▼ ▼ ▼
Prepare A-quality B-quality C-quality
:8001 :8002 :8003 :8004
docback — единственный публичный сервис. Четыре качественных сервиса — stateless HTTP-бекенды, принимают JSON, возвращают JSON.
- Go 1.23
- PostgreSQL 16, pgx/v5
- JWT (access + refresh токены)
- Docker Compose (demo-стек)
make demo # сборка + запуск полного стека
make demo-pull-models # загрузка qwen2.5:7b в Ollama-volume
curl localhost:8080/healthПосле загрузки модели (~4 ГБ) оркестратор готов. Swagger UI: /swagger/index.html.
make demo-down останавливает стек и удаляет volumes.
| Путь | Назначение |
|---|---|
cmd/api |
Точка входа сервиса |
internal/auth |
JWT, bearer-парсинг, refresh-токены |
internal/http |
Хэндлеры, middleware, роутер |
internal/extract |
Утилиты извлечения текста из PDF/DOCX |
internal/pipeline |
State machine: PREPARE → A → B → C |
internal/repo |
PostgreSQL-репозитории |
internal/report |
DTO + маперы (mapper_a.go / mapper_b.go / mapper_c.go) |
internal/storage |
Файловое хранилище документов |
migrations |
Нумерованные SQL-миграции (идемпотентные) |
docker-compose.full.yml |
Полный demo-стек |
Makefile |
make demo, make test, make vet, make lint |
Обязательные:
| Переменная | Описание |
|---|---|
DATABASE_URL |
PostgreSQL DSN |
JWT_SECRET |
HMAC-секрет для access/refresh токенов |
Основные:
| Переменная | По умолчанию | Описание |
|---|---|---|
ADDR |
:8080 |
Адрес HTTP-сервера |
STORAGE_DIR |
./data |
Корневая директория загрузок |
MAX_UPLOAD_MB |
25 |
Лимит размера файла |
PREPARE_BASE_URL |
— | URL Prepare-service |
CHECK_A_BASE_URL |
— | URL A-quality-service |
CHECK_B_BASE_URL |
— | URL B-quality-service |
CHECK_C_BASE_URL |
— | URL C-quality-service |
ENABLE_QUALITY_B |
1 |
Включить шаг B |
ENABLE_QUALITY_C |
1 |
Включить шаг C |
$env:DATABASE_URL = "postgres://postgres:postgres@localhost:5433/docdb?sslmode=disable"
$env:JWT_SECRET = "change-me"
$env:PREPARE_BASE_URL = "http://localhost:8001"
$env:CHECK_A_BASE_URL = "http://localhost:8002"
$env:CHECK_B_BASE_URL = "http://localhost:8003"
$env:CHECK_C_BASE_URL = "http://localhost:8004"
go run ./cmd/api- Запустить PostgreSQL, создать базу
docdb - Применить миграции из
migrations/в числовом порядке - Запустить Ollama:
ollama pull qwen2.5:7b - Запустить Python-сервисы (см. README каждого)
POST /auth/register
POST /auth/login
POST /auth/refresh
POST /auth/logout
POST /documents
GET /documents
GET /documents/{id}
GET /documents/{id}/download
DELETE /documents/{id}
POST /documents/{id}/extract
POST /documents/{id}/check-structure?profileId=...
GET /profiles
POST /profiles
GET /profiles/{id}
PUT /profiles/{id}
DELETE /profiles/{id}
POST /packages
GET /packages
GET /packages/{id}
POST /packages/{id}/run
GET /checks/{id}
Полная схема — Swagger UI: GET /swagger/index.html.
{ "status": "ok" }