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

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

Технічна архітектура платформи 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 │
│ Neon │ │ Gemini │ │ 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 (Neon)
ORMSQLAlchemy 2.0
MigrationsAlembic
AIVertex AI (Gemini 3.x profile + Gemini 2.5 fallback)
AnalyticsGoogle BigQuery (Ethereum dataset)

Frontend

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

Infrastructure

ComponentTechnology
HostingGoogle Cloud Run
DatabaseNeon PostgreSQL
CacheMemorystore for Redis
AI ServicesVertex AI (Gemini 3.x profile + Gemini 2.5 fallback)
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