Skip to content

Repository files navigation

docback

Оркестратор 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
  1. Запустить PostgreSQL, создать базу docdb
  2. Применить миграции из migrations/ в числовом порядке
  3. Запустить Ollama: ollama pull qwen2.5:7b
  4. Запустить Python-сервисы (см. README каждого)

API

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.

GET /health

{ "status": "ok" }

About

Go backend service for Software Documentation Review

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages