Огляд архітектури
Технічна архітектура платформи 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
| Component | Technology |
|---|---|
| Framework | FastAPI (Python 3.13) |
| Server | Uvicorn (ASGI) |
| Database | PostgreSQL 17 (Cloud SQL) |
| ORM | SQLAlchemy 2.0 |
| Migrations | Alembic |
| AI | Vertex AI (Gemini 2.5 Flash) |
| Analytics | Google BigQuery (Ethereum dataset) |
Frontend
| Component | Technology |
|---|---|
| Framework | React 19 |
| Build Tool | Vite |
| Styling | Tailwind CSS |
| State | TanStack Query |
| Charts | Nivo + Recharts |
| Animations | Framer Motion |
Infrastructure
| Component | Technology |
|---|---|
| Hosting | Google Cloud Run |
| Database | Cloud SQL PostgreSQL |
| Cache | Memorystore for Redis |
| AI Services | Vertex AI (Gemini 2.5) |
| Analytics | Google BigQuery (Ethereum) |
| Secrets | Secret Manager |
| Monitoring | Cloud Logging |
| CI/CD | Cloud 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
📊 Продуктивність
| Metric | Target | Actual |
|---|---|---|
| API Response (cached) | under 100ms | ~50ms |
| API Response (DB) | under 500ms | ~200ms |
| Chat Response | under 3s | ~1.5s |
| Page Load | under 2s | ~1.2s |