Обзор архитектуры
Система 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
Основные слои
- Парсинг данных: Сбор информации о товарах с сайтов-доноров.
- Обработка и обогащение: Использование LLM для оценки "подарочности" товара и автоматической привязки к категориям.
- Векторизация и Рекомендации: Превращение описаний в векторы и подбор на основе анкеты.
- Интерфейсы:
- Web App: Фронтенд для подбора подарков.
- Telegram Admin Bot: Управление и мониторинг.
Аналитика и Мониторинг 📊
В системе внедрена сквозная аналитика для бизнес-метрик и технического мониторинга:
- PostHog: Продуктовая аналитика (события, воронки, когорты).
- Prometheus & Grafana: Техническое состояние серверов, время ответа API, RAM/CPU.
- Loki: Централизованный сбор логов со всех микросервисов.
Инфраструктура и CI/CD
Проект развернут на базе Docker Compose и использует современные практики автоматизации:
- GitHub Actions: Полный цикл CI (Continuous Integration) при каждом пуше. Сначала прогоняются тесты, затем происходит деплой.
- Blue-Green Deployment: Стратегия развертывания без прерывания обслуживания. Система переключается между двумя контейнерами на разных портах только после успешного прохождения проверки здоровья (Health Check).
- Nginx Proxy: Внешний прокси на хосте, который обеспечивает SSL и бесшовное переключение версий через обновление порта в upstream.