Техническая архитектура¶
Стек технологий¶
| Компонент | Технология | Описание |
|---|---|---|
| Frontend | PWA (React/Next.js) | PWA, офлайн, Home Screen |
| Backend | FastAPI + Python | REST API, async, OpenAPI |
| Database | PostgreSQL | Полнотекстовый поиск, GIS |
| Cache | Redis | Сессии, rate limiting |
| Payments | Custom + банковское API | Эскроу, split payments |
| Hosting | VPS + CDN | Docker, автобэкапы |
| CDN | Cloudflare | DDoS, SSL |
| AI/ML | Python + OpenAI | Парсинг, рекомендации |
| Support | OpenClaw AI | Встроенный чат 24/7 |
Системная архитектура¶
flowchart TB
subgraph Client["🖥️ Клиент"]
PWA[PWA React/Next.js]
SW[Service Worker]
end
subgraph API["⚡ Backend"]
FastAPI[FastAPI]
Auth[Auth Service]
Search[Search Engine]
Escrow[Escrow Service]
end
subgraph Data["💾 Данные"]
PG[(PostgreSQL)]
Redis[(Redis)]
S3[Object Storage]
end
subgraph AI["🤖 AI/ML"]
Parser[AI Parser]
Rec[Recommender]
NLP[NLP Reviews]
end
subgraph External["🌐 Внешние"]
Payment[Банк API]
SMS[SMS Gateway]
CDN[Cloudflare CDN]
end
PWA --> FastAPI
SW --> FastAPI
FastAPI --> Auth
FastAPI --> Search
FastAPI --> Escrow
FastAPI --> PG
FastAPI --> Redis
FastAPI --> S3
FastAPI --> Parser
FastAPI --> Rec
Escrow --> Payment
FastAPI --> SMS
PWA --> CDN
style Client fill:#EBF0FF,stroke:#063CC1
style API fill:#f0f4ff,stroke:#063CC1
style Data fill:#f5f7fa,stroke:#666
style AI fill:#fff3e0,stroke:#e65100
Встроенный чат и OpenClaw AI¶
flowchart TB
subgraph Users["👥 Пользователи"]
Client[Клиент]
Host[Арендодатель]
end
subgraph Chat["💬 Чат-система"]
WebChat[Web Chat UI]
UniqueLink[Уникальные ссылки]
Session[Сессии across pages]
end
subgraph AI["🤖 OpenClaw AI"]
Manager[AI-менеджер проекта]
Support[Поддержка 24/7]
Context[Контекст сессии]
end
subgraph Backend["⚡ Backend"]
ChatAPI[Chat API]
SessionStore[Session Storage]
Analytics[Chat Analytics]
end
Client --> WebChat
Host --> WebChat
WebChat --> UniqueLink
UniqueLink --> Session
WebChat --> ChatAPI
ChatAPI --> Manager
Manager --> Support
Session --> Context
ChatAPI --> SessionStore
ChatAPI --> Analytics
style Users fill:#EBF0FF,stroke:#063CC1
style Chat fill:#f0f9ff,stroke:#0369a1
style AI fill:#f0fdf4,stroke:#16a34a
style Backend fill:#f5f7fa,stroke:#666
Встроенный чат с уникальными ссылками¶
Каждый клиент и арендодатель получает уникальную ссылку для персонализированной поддержки:
- Уникальные ссылки:
konok.kg/chat/{user_id}— персональные сессии чата - Сессии сохраняются — контекст доступен на всех страницах сайта
- Проактивная поддержка — AI отвечает на вопросы о бронировании, ценах, условиях
- Эскалация — сложные вопросы передаются человеку
OpenClaw AI как менеджер проекта¶
OpenClaw AI встроен в чат как виртуальный менеджер проекта:
| Функция | Описание |
|---|---|
| Информационная поддержка | Ответы на FAQ, правила бронирования, комиссии |
| Техническая помощь | Помощь с оплатой, загрузкой фото, заполнением профиля |
| Проактивные уведомления | Напоминания о check-in/out, просьбы об отзывах |
| Аналитика | Анализ часто задаваемых вопросов для улучшения UX |
| Многоязычность | Поддержка кыргызского, русского, английского |
Архитектура интеграции:
# Пример API интеграции с OpenClaw AI
@app.post("/api/chat/message")
async def chat_message(message: str, session_id: str):
# Сохранение контекста пользователя
context = await get_user_context(session_id)
# Запрос к OpenClaw AI
ai_response = await openclaw_client.chat(
message=message,
context=context,
system_prompt="Ты — AI-менеджер платформы KONOK.KG..."
)
# Логирование и аналитика
await log_chat_interaction(session_id, message, ai_response)
return {"response": ai_response, "timestamp": datetime.now()}
Уникальные возможности OpenClaw AI:
- Контекст проекта: AI знает всю документацию KONOK.KG
- Персонализация: Адаптируется под роль пользователя (турист vs хозяин)
- Эскалация: Автоматическое определение, когда нужна помощь человека
- Continuous learning: Обучение на реальных диалогах пользователей
Эскроу-система¶
sequenceDiagram
participant T as 🧑 Турист
participant K as 🏠 KONOK.KG
participant E as 🔒 Эскроу
participant H as 🏡 Хозяин
participant B as 🏦 Банк
T->>K: Бронирование
K->>B: Списание с карты
B->>E: Средства на эскроу
K->>H: Уведомление о бронировании
H->>K: Подтверждение заезда
T->>K: Check-in ✅
Note over E: 24ч ожидание
E->>H: Перевод (минус 10%)
E->>K: Комиссия 10%
alt Спор
T->>K: Жалоба
K->>K: Арбитраж
K->>E: Решение о возврате
end
AI-парсинг: 1,695 объектов из 4 источников (Lalafo, Booking, Airbnb, Instagram). Точность геолокации: 94%.
- Турист оплачивает через банковское API → средства на эскроу
- Хозяин подтверждает заезд гостя
- Через 24ч средства переводятся хозяину (минус 10%)
- При споре — автоматический или ручной арбитраж
API Endpoints¶
| Метод | Endpoint | Описание | Аутентификация |
|---|---|---|---|
| GET | /api/search | Поиск объектов (фильтры, гео, даты) | Нет |
| GET | /api/listings/:id | Детали объекта | Нет |
| POST | /api/book | Создание бронирования | JWT |
| POST | /api/payment | Инициация эскроу-платежа | JWT |
| GET | /api/reviews | Отзывы по объекту | Нет |
| POST | /api/auth/register | Регистрация (телефон + SMS) | Нет |
| POST | /api/auth/login | Авторизация (JWT) | Нет |
| GET | /api/host/dashboard | Панель хозяина | JWT (host) |
| POST | /api/chat/message | Отправка сообщения в чат | JWT |
| GET | /api/chat/history | История чата пользователя | JWT |
| GET | /api/chat/{user_id} | Уникальная ссылка чата | Нет |
Безопасность¶
| Мера | Реализация |
|---|---|
| Шифрование | HTTPS (TLS 1.3) через Cloudflare |
| Аутентификация | JWT токены (access 15 мин + refresh 30 дней) |
| Rate limiting | Redis-based: 100 req/мин (API), 10 req/мин (auth) |
| Input validation | Pydantic schemas, SQL injection protection (ORM) |
| OWASP Top 10 | XSS (CSP headers), CSRF (SameSite cookies), injection (parameterized queries) |
| Данные платежей | PCI DSS — карточные данные не хранятся, токенизация через банк |
Инфраструктура¶
| Компонент | Спецификация | Стоимость/мес |
|---|---|---|
| VPS (старт) | 2 vCPU, 4GB RAM, 80GB SSD | $20 |
| VPS (масштаб) | 4 vCPU, 8GB RAM, 160GB SSD | $40 |
| PostgreSQL | Встроенный на VPS, позже managed DB | $0 → $30 |
| Redis | Встроенный, кеш + сессии + rate limit | $0 |
| S3-хранилище | Совместимое (MinIO / Cloudflare R2) — фото объектов | $5 |
| Cloudflare CDN | Free plan + SSL + DDoS protection | $0 |
| Итого (старт) | $25/мес |
Мониторинг¶
- Uptime: цель >99.5%, мониторинг через UptimeRobot (бесплатно)
- Error tracking: Sentry (бесплатный план — 5K events/мес)
- Метрики: Prometheus + Grafana (self-hosted) — CPU, RAM, response time, DB connections
- Логирование: структурированные JSON-логи → Loki или файлы с ротацией
- Алерты: Telegram-бот для критических ошибок (5xx, downtime, payment failures)
CI/CD¶
flowchart LR
A[Git Push] --> B[GitHub Actions]
B --> C[Tests + Lint]
C --> D[Docker Build]
D --> E[Push to Registry]
E --> F[Deploy to VPS]
F --> G[Health Check]
style B fill:#EBF0FF,stroke:#063CC1
style F fill:#e8f5e9,stroke:#2e7d32
- Pipeline: GitHub Actions → Docker build → SSH deploy → health check
- Среды: staging (автодеплой из
develop) → production (ручной изmain) - Тесты: pytest (backend), Playwright (E2E), coverage >70%
- Время деплоя: ~3 минуты от push до production
Бэкапы¶
| Тип | Частота | Хранение | Восстановление |
|---|---|---|---|
| PostgreSQL dump | Ежедневно (03:00 UTC) | S3, 30 дней | < 15 мин |
| Медиа-файлы | S3 snapshots, еженедельно | Отдельный бакет | < 30 мин |
| Конфигурация | Git (Infrastructure as Code) | GitHub | < 5 мин |
| Full VPS snapshot | Еженедельно | Хостинг-провайдер | < 1 час |
Навигация: ← Финансовая модель | Маркетинг →