План миграции API на Rust (App Service)¶
Обзор¶
Этот документ описывает стратегию и этапы миграции функциональности backend-сервисов на высокопроизводительный Rust-сервис.
Цель: Обеспечить максимальную производительность для мобильных приложений и критически важных узлов системы.
Приоритеты миграции¶
- Critical Path: Авторизация, Профили, Отели, Бронирование.
- High Load: Realtime, Чаты, Уведомления.
- Content: Туры, Рестораны, События.
- 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
AppErrorenum 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
План действий¶
- Завершить реализацию Auth Middleware.
- Реализовать полный цикл бронирования (с валидацией в БД).
- Начать миграцию Chat/WebSocket (самое узкое место Python).