Перейти до основного вмісту

Огляд архітектури

Технічна архітектура платформи Vartovii.

🏗️ Архітектура системи

┌─────────────────────────────────────────────────────────────┐
│ FRONTEND │
│ React 19 + Vite + Tailwind + Framer Motion │
│ ├── Dashboard (аналіз компаній) │
│ ├── Chat Widget (AI Агент) │
│ └── Knowledge Base (Docusaurus) │
└───────────────────────────┬─────────────────────────────────┘
│ HTTPS
┌───────────────────────────▼─────────────────────────────────┐
│ BACKEND API │
│ FastAPI + Python 3.13 + Uvicorn │
│ ├── /api/company/* (корпоративні ендпоїнти) │
│ ├── /api/ai/* (ендпоїнти AI чату) │
│ ├── /api/agent/* (ендпоїнти інструментів агента) │
│ ├── /api/scraping/* (управління скрейпінгом) │
│ ├── /api/v2/crypto/* (крипто модуль) │
│ └── /api/forensic/* (Forensic Agent - on-chain) │
└───────┬──────────────────┬──────────┬───────────────────────┘
│ │ │
┌───────▼───────┐ ┌───────▼───────┐ ┌───────▼───────┐
│ PostgreSQL │ │ Vertex AI │ │ External │
│ Cloud SQL │ │ Gemini 2.5 │ │ APIs │
│ ├── reviews │ │ ├── Chat │ │ ├── Kununu │
│ ├── companies│ │ ├── RAG │ │ ├── Google │
│ └── jobs │ │ └── Function │ │ ├── Reddit │
│ │ │ Calling │ │ ├── CoinGecko│
│ │ │ │ │ └── DefiLlama│
└───────────────┘ └───────────────┘ └───────┬───────┘

┌─────────▼─────────┐
│ Google BigQuery │
│ Ethereum Dataset │
│ (Forensic Agent) │
└───────────────────┘

🛠️ Стек технологій

Backend

ComponentTechnology
FrameworkFastAPI (Python 3.13)
ServerUvicorn (ASGI)
DatabasePostgreSQL 17 (Cloud SQL)
ORMSQLAlchemy 2.0
MigrationsAlembic
AIVertex AI (Gemini 2.5 Flash)
AnalyticsGoogle BigQuery (Ethereum dataset)

Frontend

ComponentTechnology
FrameworkReact 19
Build ToolVite
StylingTailwind CSS
StateTanStack Query
ChartsNivo + Recharts
AnimationsFramer Motion

Infrastructure

ComponentTechnology
HostingGoogle Cloud Run
DatabaseCloud SQL PostgreSQL
CacheMemorystore for Redis
AI ServicesVertex AI (Gemini 2.5)
AnalyticsGoogle BigQuery (Ethereum)
SecretsSecret Manager
MonitoringCloud Logging
CI/CDCloud Build + GitHub Actions

📁 Структура проєкту

Vartovii/
├── backend/
│ ├── main.py # Точка входу FastAPI застосунку
│ ├── ai/ # AI сервіси
│ │ ├── config.py # Конфігурація моделі
│ │ ├── client.py # Gemini клієнт
│ │ ├── prompts/ # Системні промпти
│ │ ├── services/ # Чат, сентимент, звіт
│ │ └── rag/ # Управління RAG корпусом
│ ├── api/ # API роутери
│ ├── models/ # SQLAlchemy моделі
│ ├── services/ # Бізнес-логіка
│ └── scrapers/ # Збір даних

├── dashboard_app/
│ ├── src/
│ │ ├── components/ # React компоненти
│ │ ├── pages/ # Сторінки маршрутів
│ │ ├── hooks/ # Користувацькі хуки
│ │ └── api/ # API клієнт
│ └── public/ # Статичні ресурси

├── knowledge-base/ # Документація Docusaurus
│ ├── docs/ # Файли документації
│ └── docusaurus.config.js # Конфігурація

├── docs_site/ # Цілюва сторінка
└── docs/ # Внутрішня документація (RAG індексована)

🔄 Потік даних

Аналіз компанії

1. Користувач шукає "BMW"
└── Frontend → GET /api/search/smart?q=BMW

2. Smart Search перевіряє актуальність
└── Backend → Запит до бази даних
└── Якщо застаріло → Запускає завдання скрейпінгу

3. Повертає дані компанії
└── Backend → Frontend
└── Відображає дашборд з Trust Score

AI Чат

1. Користувач надсилає повідомлення
└── Frontend → POST /api/ai/chat

2. Gemini аналізує намір
└── Ключові слова виявлено? → Function Calling
└── Ключові слова відсутні → Пряма відповідь

3. Виконання інструменту (за потреби)
└── search_company, get_trust_score тощо.
└── Виклики API до бази даних

4. Відповідь відформатована
└── Backend → Frontend
└── Відображається у віджеті чату

Forensic Agent (On-Chain Аналітика)

1. Користувач запитує "Перевірити баланс 0xd8dA..."
└── Frontend → POST /api/ai/chat
└── AI виявляє ключове слово адреси гаманця

2. Виконання інструменту
└── викликається функція check_wallet
└── Запит BigQuery до набору даних crypto_ethereum
└── CoinGecko API для ціни в USD

3. Відповідь з контекстом
└── Баланс ETH + вартість USD + посилання Etherscan
└── Backend → Frontend → Відображається в чаті

🔐 Безпека

  • Аутентифікація: API key для ендпоїнтів агента
  • Авторизація: Контроль доступу на основі IAM
  • Шифрування: HTTPS скрізь, шифрування даних у спокої
  • Секрети: Google Secret Manager

📊 Продуктивність

MetricTargetActual
API Response (cached)under 100ms~50ms
API Response (DB)under 500ms~200ms
Chat Responseunder 3s~1.5s
Page Loadunder 2s~1.2s