Files
smart-search-back/DEPLOYMENT.md
vallyenfail 80e5f318a9
All checks were successful
Deploy Smart Search Backend Test / deploy (push) Successful in 1m24s
add service
2026-01-18 01:48:46 +03:00

5.2 KiB
Raw Blame History

Инструкция по развертыванию

Архитектура

Сервис построен на:

  • rk-boot - фреймворк для микросервисов с автоматической конфигурацией gRPC, логированием, метриками и трейсингом
  • pgx/v5 - нативный высокопроизводительный драйвер PostgreSQL с connection pooling

Быстрый старт

1. Установка goose для миграций

go install github.com/pressly/goose/v3/cmd/goose@latest

2. Применение миграций

# Экспортируйте DATABASE_URL или используйте напрямую
export DB_URL="postgres://postgres:password@localhost:5432/b2b_search?sslmode=disable"
make migrate-up

3. Настройка переменных окружения

Создайте .env файл или экспортируйте переменные:

export DB_HOST=localhost
export DB_PORT=5432
export DB_NAME=b2b_search
export DB_USER=postgres
export DB_PASSWORD=password
export OPENAI_API_KEY=your-openai-key
export PERPLEXITY_API_KEY=your-perplexity-key
export GRPC_PORT=9091

🧪 Mock-режим для тестирования:

Если API ключи не указаны, сервис автоматически переключится в mock-режим:

  • OpenAI: вернет структурированное mock ТЗ
  • Perplexity: вернет 15 тестовых поставщиков

Это позволяет тестировать сервис без реальных API ключей!

# Запуск в mock-режиме (без API ключей)
make run

4. Запуск сервиса

# Локальный запуск
make run

# Или сборка и запуск
make build
./bin/server

Docker Compose

# Запуск всех сервисов
docker-compose up -d

# Просмотр логов
docker-compose logs -f smart-search-service

# Остановка
docker-compose down

Миграции

Применить все миграции

make migrate-up DB_URL="postgres://user:pass@host:5432/dbname?sslmode=disable"

Откатить последнюю миграцию

make migrate-down DB_URL="postgres://user:pass@host:5432/dbname?sslmode=disable"

Создать новую миграцию

make migrate-create name=add_new_field

Структура БД

После применения миграций будут созданы следующие таблицы:

  1. users - пользователи с зашифрованными PII полями
  2. sessions - сессии с JWT токенами
  3. invite_codes - инвайт-коды
  4. mailing_status - статусы рассылки (pending, in_progress, completed, failed)
  5. requests_for_suppliers - запросы на поставщиков
  6. suppliers - найденные поставщики
  7. request_token_usage - учет использования AI токенов

Background Workers

Сервис автоматически запускает два фоновых процесса:

  • Session Cleaner - удаление истекших сессий (каждый час)
  • Invite Cleaner - деактивация истекших инвайт-кодов (каждые 6 часов)

rk-boot Возможности

Благодаря rk-boot сервис автоматически поддерживает:

  • gRPC Server - на порту 9091
  • Логирование - структурированные логи через zap
  • Метрики - Prometheus метрики из коробки
  • Трейсинг - распределенная трассировка запросов
  • Health Checks - встроенные health endpoints
  • Graceful Shutdown - корректное завершение работы

gRPC Сервисы

Сервер запускается на порту 9091 и предоставляет следующие сервисы:

  • AuthService - аутентификация и регистрация (Register, Login, Refresh, Validate, Logout)
  • UserService - управление пользователями
  • InviteService - управление инвайт-кодами
  • RequestService - управление запросами
  • SupplierService - экспорт поставщиков

Проверка работоспособности

# Проверка соединения с БД
psql -h localhost -U postgres -d b2b_search -c "SELECT 1"

# Проверка gRPC сервера (требует grpcurl)
grpcurl -plaintext localhost:9091 list

Безопасность

ВАЖНО: Секретные ключи для совместимости с существующим workflow:

  • JWT Secret: xM8KhJVkk28cIJeBo0306O2e6Ifni6tNVlcCMxDFAEc=
  • Crypto Secret: xM8KhJVkk28cIJeBo0306O2e6Ifni6tNVlcCMxDFAEc=

В production окружении обязательно смените эти ключи!