Перейти к содержанию

Обзор архитектуры

Система Gifty состоит из нескольких ключевых компонентов, взаимодействующих друг с другом:

graph TD subgraph "Client Layer" User[User Web App] Admin[Telegram Admin Bot] MiniApp[Parsing Dashboard] end subgraph "Core API Layer" API[Core API / FastAPI] Auth[OAuth & Sessions] Analytics[Internal Analytics] end subgraph "Processing Layer" Scheduler[Cron Scheduler] RabbitMQ[RabbitMQ Queue] Workers[Scrapy Workers] Intelligence[Intelligence API / LLM] end subgraph "Data Layer" DB[(PostgreSQL + pgvector)] Redis[Redis Cache] end %% User Flow User -->|1. Submit Quiz| API API -->|2. Vector Search| DB API -->|3. Filter by 10D Matrix| DB API -->|4. Return Recommendations| User %% Admin Flow Admin -->|Manage Spiders| API Admin -->|View Health/Stats| API MiniApp -->|Edit Config| API %% Parsing Flow Scheduler -->|Schedule Sync| RabbitMQ RabbitMQ -->|Task| Workers Workers -->|Extract Data| API API -->|Validation & Normalization| API API -->|Request Scoring| Intelligence Intelligence -->|Score & Tags| API API -->|Save Product| DB %% Service Interaction API <-->|Sessions / Cache| Redis

Основные слои

  1. Парсинг данных: Сбор информации о товарах с сайтов-доноров.
  2. Обработка и обогащение: Использование LLM для оценки "подарочности" товара и автоматической привязки к категориям.
  3. Векторизация и Рекомендации: Превращение описаний в векторы и подбор на основе анкеты.
  4. Интерфейсы:

Аналитика и Мониторинг 📊

В системе внедрена сквозная аналитика для бизнес-метрик и технического мониторинга:

  • PostHog: Продуктовая аналитика (события, воронки, когорты).
  • Prometheus & Grafana: Техническое состояние серверов, время ответа API, RAM/CPU.
  • Loki: Централизованный сбор логов со всех микросервисов.

👉 Гайд по Analytics API

Инфраструктура и CI/CD

Проект развернут на базе Docker Compose и использует современные практики автоматизации:

  • GitHub Actions: Полный цикл CI (Continuous Integration) при каждом пуше. Сначала прогоняются тесты, затем происходит деплой.
  • Blue-Green Deployment: Стратегия развертывания без прерывания обслуживания. Система переключается между двумя контейнерами на разных портах только после успешного прохождения проверки здоровья (Health Check).
  • Nginx Proxy: Внешний прокси на хосте, который обеспечивает SSL и бесшовное переключение версий через обновление порта в upstream.