3994e2301b0571ea48f1f8cbd7b32db3900363e9
Some checks failed
Deploy Smart Search Backend / deploy (push) Failing after 8s
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- создание и управление заявками с AISupplierService- экспорт данных поставщиков
Подробнее: 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 - экспорт поставщиков
Description
Languages
Go
97.8%
Makefile
1.9%
Dockerfile
0.3%