HotelTask - Архитектура системы
Обзор системы
Описание сервисов
| Сервис |
Назначение |
Ключевые функции |
| tasks-service |
Ядро системы |
CRUD задач, статусы, назначение исполнителей, история изменений |
| users-service |
Управление пользователями |
Регистрация, авторизация, профили, привязка к отелям |
| connections-service |
Маршрутизация событий |
Настройка связей "событие A → система B", реестр адаптеров |
| permissions-service |
Права доступа |
RBAC, роли, проверка разрешений |
| notification-service |
Уведомления |
Push, email, SMS, Telegram, in-app |
| file-storage-service |
Файлы |
Загрузка/скачивание фото и документов в S3 |
| audit-service |
Аудит |
Логирование всех действий в системе |
| scheduler-service |
Планировщик |
Создание задач по расписанию (cron) |
| events-service |
Мероприятия |
Декомпозиция мероприятий на задачи, генерация "функшн" |
Слои системы
Client Layer
Клиентские приложения для взаимодействия с системой:
- Web Admin (React, TypeScript) — админка для управления системой
- Mobile Apps — мобильные приложения для сотрудников
- Telegram Bot — бот для управления задачами
API Gateway Layer
Точки входа для клиентов:
- REST API — основной API для веб и мобильных клиентов
- gRPC — высокопроизводительное межсервисное взаимодействие
- WebSocket — real-time уведомления
Service Layer
Микросервисы на Python (FastAPI), каждый отвечает за свою domain-область.
Data Layer
- PostgreSQL — основное хранилище данных
- Redis — кэширование, сессии
- S3 — файловое хранилище (фото, документы)
Message Broker
Apache Kafka — асинхронный обмен сообщениями между сервисами и адаптерами.
Adapter Layer
Адаптеры для интеграции с внешними системами. Каждый адаптер:
- Преобразует данные внешней системы в стандартный формат
- Работает как по push, так и по pull модели
- Изолирует логику интеграции от бизнес-логики
External Systems
Внешние системы отеля: PMS, ERP, системы управления уборкой и другие.
Потоки данных
Клиенты → API Gateway
| Источник |
Назначение |
Данные |
| Web Admin |
REST API |
Запросы на управление задачами, пользователями, настройками |
| Mobile Apps |
REST API |
Запросы на работу с задачами, профилем |
| Mobile Apps |
WebSocket |
Подписка на real-time уведомления |
| Telegram Bot |
REST API |
Команды от пользователей бота |
API Gateway → Сервисы
| Источник |
Назначение |
Данные |
| REST API |
tasks-service |
CRUD операции с задачами |
| REST API |
users-service |
Авторизация, управление профилями |
| REST API |
connections-service |
Настройка связей между адаптерами |
| gRPC |
tasks-service, users-service |
Межсервисные синхронные вызовы |
| WebSocket |
notification-service |
Подключения клиентов для push-уведомлений |
Сервисы → Хранилища данных
| Источник |
Назначение |
Данные |
| tasks-service |
PostgreSQL |
Задачи, статусы, история изменений |
| users-service |
PostgreSQL |
Пользователи, профили, привязки к отелям |
| connections-service |
PostgreSQL |
Правила маршрутизации, реестр адаптеров |
| permissions-service |
PostgreSQL |
Роли, права доступа |
| audit-service |
PostgreSQL |
Журнал действий |
| scheduler-service |
PostgreSQL |
Расписания, шаблоны задач |
| events-service |
PostgreSQL |
Мероприятия, шаблоны декомпозиции |
| notification-service |
Redis |
Очереди уведомлений, статусы доставки |
| tasks-service |
Redis |
Кэш часто запрашиваемых задач |
| file-storage-service |
S3 |
Фотографии, документы, вложения |
Сервисы ↔ Kafka
| Сервис |
Публикует |
Подписан на |
| tasks-service |
События задач (создание, изменение статуса) |
Команды на создание задач от адаптеров |
| notification-service |
— |
События задач для отправки уведомлений |
| connections-service |
Маршрутизированные события |
Входящие события от адаптеров |
Kafka ↔ Адаптеры
| Адаптер |
В Kafka |
Из Kafka |
| PMS Adapter |
Бронирования, статусы номеров, данные гостей |
Запросы на изменение статуса номера |
| ERP Adapter |
Данные о материалах, заявки |
Списания, обновления остатков |
| Housekeeping Adapter |
Статусы уборки |
Задачи на уборку |
| Telegram Bot Adapter |
Сообщения от гостей |
Уведомления для отправки |
Адаптеры → Внешние системы
| Адаптер |
Внешняя система |
Данные |
| PMS Adapter |
PMS |
Синхронизация бронирований и статусов номеров |
| ERP Adapter |
ERP |
Синхронизация складских данных |
| Housekeeping Adapter |
Housekeeper |
Синхронизация задач уборки |
Технологический стек
| Компонент |
Технология |
| Backend |
Python 3.11+ (FastAPI) |
| Frontend |
TypeScript, React |
| База данных |
PostgreSQL 15+ |
| Кэш |
Redis 7+ |
| Файловое хранилище |
S3-compatible (AWS S3 / MinIO) |
| Message Broker |
Apache Kafka |
| API |
REST, gRPC, WebSocket |
| Аутентификация |
JWT / OAuth2 |
| Контейнеризация |
Docker |
| Оркестрация |
Kubernetes |