Files
smart-search-back/README.md
vallyenfail d959dcca96 add service
2026-01-17 17:39:33 +03:00

5.2 KiB
Raw Blame History

Smart Search Backend Service

Backend микросервис для системы поиска поставщиков с AI интеграцией.

Технологии

  • Go 1.21+ - основной язык
  • rk-boot - фреймворк для микросервисов (автоматическая настройка gRPC, логирование, метрики)
  • PostgreSQL 15 - база данных
  • pgx/v5 - нативный драйвер PostgreSQL (высокая производительность)
  • gRPC - межсервисное взаимодействие
  • Squirrel - SQL query builder
  • Goose - миграции БД
  • JWT (HS256) - аутентификация
  • AES-256-GCM - шифрование PII данных
  • OpenAI API - генерация ТЗ (gpt-4o-mini)
  • Perplexity API - поиск поставщиков

rk-boot + pgx

Сервис использует комбинацию rk-boot и pgx:

rk-boot обеспечивает:

  • Автоматическое управление gRPC сервером
  • Структурированное логирование (zap)
  • Prometheus метрики
  • Distributed tracing
  • Health checks
  • Graceful shutdown

pgx/v5 обеспечивает:

  • Нативный драйвер PostgreSQL (в 2-3 раза быстрее database/sql)
  • Connection pooling из коробки
  • Batch operations
  • Prepared statements
  • Context support

gRPC Services

5 gRPC сервисов с 16 методами:

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

Подробнее: GRPC_SERVICES.md

Структура проекта

smart-search-back/
├── cmd/server/          # Точка входа
├── internal/            # Внутренняя логика
│   ├── grpc/           # gRPC server
│   ├── service/        # Бизнес-логика
│   ├── repository/     # Слой данных
│   ├── model/          # Domain модели
│   ├── worker/         # Background workers
│   └── ai/             # AI интеграция
├── api/proto/          # Proto файлы (только .proto)
├── migrations/         # SQL миграции
├── pkg/                # Общие утилиты
│   ├── pb/             # Сгенерированные proto файлы
│   ├── crypto/         # Шифрование
│   ├── jwt/            # JWT токены
│   └── errors/         # Обработка ошибок
└── config/             # Конфигурация

## Установка

```bash
# Установить зависимости
go mod download

# Применить миграции
make migrate-up

# Запустить сервис
make run

🧪 Mock-режим

Для тестирования без реальных API ключей сервис поддерживает mock-режим:

  • Если OPENAI_API_KEY не указан → возвращается тестовое ТЗ
  • Если PERPLEXITY_API_KEY не указан → возвращается 15 mock поставщиков

Просто запустите без экспорта API ключей:

make run  # Mock-режим активируется автоматически

Миграции

# Применить миграции
make migrate-up

# Откатить миграции
make migrate-down

Разработка

# Запустить линтер
make lint

# Сгенерировать proto файлы
make proto

# Собрать проект
make build

# Запустить тесты
go test ./...

# С покрытием
go test ./... -cover

Тестирование

Проект полностью подготовлен для тестирования:

  • Интерфейсы для всех репозиториев и сервисов
  • Context создается один раз в main.go и прокидывается через все слои
  • Приватные структуры возвращают публичные интерфейсы
  • Примеры тестов с моками в internal/service/tests/
  • Graceful shutdown через context cancellation

Подробнее см. TESTING.md

Docker

# Запустить все сервисы
docker-compose up -d

API

gRPC сервер запускается на порту 9091.

Доступные сервисы:

  • AuthService - аутентификация
  • UserService - управление пользователями
  • InviteService - инвайт-коды
  • RequestService - запросы на поставщиков
  • SupplierService - экспорт поставщиков