Перейти к содержанию

План миграции API на Rust (App Service)

Обзор

Этот документ описывает стратегию и этапы миграции функциональности backend-сервисов на высокопроизводительный Rust-сервис.

Цель: Обеспечить максимальную производительность для мобильных приложений и критически важных узлов системы.

Приоритеты миграции

  1. Critical Path: Авторизация, Профили, Отели, Бронирование.
  2. High Load: Realtime, Чаты, Уведомления.
  3. Content: Туры, Рестораны, События.
  4. Utility: Справочники, Настройки, Файлы.

Этап 1: Core (MVP) - Завершено

  • [x] Инициализация проекта
  • [x] Настройка Actix-web
  • [x] Настройка SQLx (Postgres)
  • [x] Базовая структура (Models, Handlers)
  • [x] OpenAPI спецификация

  • [x] Auth & Users

  • [x] Middleware для проверки JWT (Supabase)
  • [x] GET /users/me (Профиль)
  • [ ] GET /users/{id}/roles (Роли - in profile)

  • [x] Hotels (Read-only)

  • [x] GET /hotels (Список с фильтрами)
  • [x] GET /hotels/{id} (Детали)
  • [x] GET /room-types (Included in Hotel Details)

  • [x] Bookings (Core)

  • [x] POST /bookings (Создание)
  • [x] GET /bookings (Список пользователя)
  • [x] Калькуляция цен (SQL функции)
  • [x] Проверка доступности (SQL функции)

Этап 2: High Load & Realtime - В работе

  • [ ] WebSockets Gateway
  • [x] Настройка Actix-ws
  • [x] Эхо-хендлер ws_handler
  • [ ] Миграция логики ws_gateway.py (Rooms, Presence)
  • [ ] Интеграция с Redis Pub/Sub

  • [ ] Chat System

  • [ ] GET /chat/history
  • [ ] POST /chat/message
  • [ ] P2P Chat оптимизация

  • [ ] Notifications

  • [ ] Push-уведомления (FCM/APNS через Rust)

Этап 3: Content Modules

  • [ ] Tours
  • [x] GET /tours
  • [x] GET /tours/{id}
  • [ ] POST /tour-bookings

  • [ ] Restaurants

  • [ ] GET /restaurants
  • [ ] GET /menu-items

  • [ ] Ski Passes

  • [ ] GET /ski-passes
  • [ ] POST /ski-passes/buy

Этап 4: Advanced Features

  • [ ] Geo & Map
  • [ ] Гео-поиск и кластеризация на Rust
  • [ ] Оптимизация GET /map/points

  • [ ] Analytics

  • [ ] Сбор событий (ClickHouse ingestor на Rust)

Технические требования

  • Framework: Actix-web 4.x
  • Database: SQLx (Postgres)
  • Async: Tokio
  • Serialization: Serde
  • Logging: Env_logger / Tracing
  • Error Handling: Custom AppError enum mapping to HTTP codes

Структура модулей (src/)

src/
  ├── main.rs
  ├── db.rs
  ├── middleware/
     └── auth.rs
  ├── models/
     ├── mod.rs
     ├── auth.rs
     ├── hotel.rs
     ├── booking.rs
     ├── chat.rs
     └── ...
  ├── handlers/
     ├── mod.rs
     ├── auth.rs
     ├── hotel.rs
     ├── booking.rs
     └── ...
  └── utils/
      ├── mod.rs
      └── jwt.rs

План действий

  1. Завершить реализацию Auth Middleware.
  2. Реализовать полный цикл бронирования (с валидацией в БД).
  3. Начать миграцию Chat/WebSocket (самое узкое место Python).