# Инструкция по развертыванию ## Архитектура Сервис построен на: - **rk-boot** - фреймворк для микросервисов с автоматической конфигурацией gRPC, логированием, метриками и трейсингом - **pgx/v5** - нативный высокопроизводительный драйвер PostgreSQL с connection pooling ## Быстрый старт ### 1. Установка goose для миграций ```bash go install github.com/pressly/goose/v3/cmd/goose@latest ``` ### 2. Применение миграций ```bash # Экспортируйте DATABASE_URL или используйте напрямую export DB_URL="postgres://postgres:password@localhost:5432/b2b_search?sslmode=disable" make migrate-up ``` ### 3. Настройка переменных окружения Создайте `.env` файл или экспортируйте переменные: ```bash 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 ключей! ```bash # Запуск в mock-режиме (без API ключей) make run ``` ### 4. Запуск сервиса ```bash # Локальный запуск make run # Или сборка и запуск make build ./bin/server ``` ## Docker Compose ```bash # Запуск всех сервисов docker-compose up -d # Просмотр логов docker-compose logs -f smart-search-service # Остановка docker-compose down ``` ## Миграции ### Применить все миграции ```bash make migrate-up DB_URL="postgres://user:pass@host:5432/dbname?sslmode=disable" ``` ### Откатить последнюю миграцию ```bash make migrate-down DB_URL="postgres://user:pass@host:5432/dbname?sslmode=disable" ``` ### Создать новую миграцию ```bash 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** - экспорт поставщиков ## Проверка работоспособности ```bash # Проверка соединения с БД 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 окружении **обязательно смените** эти ключи!