add service
This commit is contained in:
152
README.md
152
README.md
@@ -1,2 +1,152 @@
|
||||
# smart-search-back
|
||||
# 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](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 ключей:
|
||||
```bash
|
||||
make run # Mock-режим активируется автоматически
|
||||
```
|
||||
|
||||
## Миграции
|
||||
|
||||
```bash
|
||||
# Применить миграции
|
||||
make migrate-up
|
||||
|
||||
# Откатить миграции
|
||||
make migrate-down
|
||||
```
|
||||
|
||||
## Разработка
|
||||
|
||||
```bash
|
||||
# Запустить линтер
|
||||
make lint
|
||||
|
||||
# Сгенерировать proto файлы
|
||||
make proto
|
||||
|
||||
# Собрать проект
|
||||
make build
|
||||
|
||||
# Запустить тесты
|
||||
go test ./...
|
||||
|
||||
# С покрытием
|
||||
go test ./... -cover
|
||||
```
|
||||
|
||||
### Тестирование
|
||||
|
||||
Проект полностью подготовлен для тестирования:
|
||||
|
||||
- ✅ **Интерфейсы** для всех репозиториев и сервисов
|
||||
- ✅ **Context** создается один раз в `main.go` и прокидывается через все слои
|
||||
- ✅ **Приватные структуры** возвращают публичные интерфейсы
|
||||
- ✅ **Примеры тестов** с моками в `internal/service/tests/`
|
||||
- ✅ **Graceful shutdown** через context cancellation
|
||||
|
||||
Подробнее см. [TESTING.md](TESTING.md)
|
||||
|
||||
## Docker
|
||||
|
||||
```bash
|
||||
# Запустить все сервисы
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
## API
|
||||
|
||||
gRPC сервер запускается на порту 9091.
|
||||
|
||||
Доступные сервисы:
|
||||
- AuthService - аутентификация
|
||||
- UserService - управление пользователями
|
||||
- InviteService - инвайт-коды
|
||||
- RequestService - запросы на поставщиков
|
||||
- SupplierService - экспорт поставщиков
|
||||
|
||||
Reference in New Issue
Block a user