All checks were successful
Deploy Smart Search Backend Test / deploy (push) Successful in 1m24s
5.2 KiB
5.2 KiB
Инструкция по развертыванию
Архитектура
Сервис построен на:
- 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
Структура БД
После применения миграций будут созданы следующие таблицы:
- users - пользователи с зашифрованными PII полями
- sessions - сессии с JWT токенами
- invite_codes - инвайт-коды
- mailing_status - статусы рассылки (pending, in_progress, completed, failed)
- requests_for_suppliers - запросы на поставщиков
- suppliers - найденные поставщики
- 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 окружении обязательно смените эти ключи!