Обзор архитектуры
Система Gifty состоит из нескольких ключевых компонентов, взаимодействующих друг с другом:
graph TD
Parser[Scrapers / Scrapy] -->|JSON Data| RabbitMQ[RabbitMQ]
RabbitMQ -->|Task| Worker[Scrapy Worker]
Worker -->|Batch| API[Core API / FastAPI]
API -->|Prompt| LLM[Gifty Intelligence / External API]
LLM -->|Score / Class| API
API -->|Save| DB[(PostgreSQL + pgvector)]
Frontend[Web App / Next.js] -->|Quiz| API
API -->|Search| DB
Основные слои
- Парсинг данных: Сбор информации о товарах с сайтов-доноров.
- Обработка и обогащение: Использование LLM для оценки "подарочности" товара и автоматической привязки к категориям.
- Векторизация: Превращение описаний товаров в векторы для семантического поиска.
- Рекомендательный движок: Подбор наиболее подходящих векторов на основе анкеты пользователя.
- Интерфейс: Веб-приложение для взаимодействия с пользователем.
Инфраструктура и CI/CD
Проект развернут на базе Docker Compose и использует современные практики автоматизации:
- GitHub Actions: Полный цикл CI (Continuous Integration) при каждом пуше. Сначала прогоняются тесты, затем происходит деплой.
- Blue-Green Deployment: Стратегия развертывания без прерывания обслуживания. Система переключается между двумя контейнерами на разных портах только после успешного прохождения проверки здоровья (Health Check).
- Nginx Proxy: Внешний прокси на хосте, который обеспечивает SSL и бесшовное переключение версий через обновление порта в upstream.