Doc Glossary - PlutoGr/TravelAgency GitHub Wiki

Глоссарий

Термины проекта в том виде, в каком они есть в коде сейчас. Планируемые термины описаны на страницах этапов (Дорожная карта).

Простой пример

Менеджер собрал тур «Неделя в Стамбуле» с двумя предложениями тура (июль за 900 USD, август за 1000 USD) и опубликовал его. Пользователь оставил заявку. Менеджер отправил ему предложение со снимком тура по цене 900 USD. Пользователь подтвердил предложение, заявка перешла в Confirmed.

Доменные сущности

Термин В коде Что это
Тур Tour, Catalog поездка: тексты, программа по дням, включено и не включено, питание, проживание, фото, предложения. Статусы Draft, Published, Unpublished
Направление Direction, Catalog страна или регион для фильтра каталога
Предложение тура TourOffer, Catalog тур на конкретные даты: ValidFrom, ValidTo, цена за человека, валюта, места. Раньше называлось TourPrice
Обложка TourImage.IsCover главное фото тура, одно на тур, ширина от 1280 px
Проверка публикации TourPublishRequirementCodes список условий, без которых тур нельзя опубликовать; ответ 422 с кодами в missing
Заявка Booking, Booking запрос пользователя на тур. Статусы ниже
Предложение Proposal, Booking ответ менеджера по заявке со снимком тура. У заявки может быть несколько, подтверждается одно
Снимок тура TourSnapshot, Booking копия названия, описания, цены, валюты и длительности на момент предложения; не меняется, если тур в каталоге изменили
Избранное Favorite, Booking туры, сохранённые пользователем
Сообщение чата ChatMessage, Chat сообщение в переписке по заявке
Медиафайл MediaFile, Media загруженный файл с превью и флагом IsPublic

«Предложение» и «предложение тура» разные вещи: первое живёт в Booking и относится к заявке, второе в Catalog и относится к туру.

Статусы заявки

Статус Число Кто переводит
New 0 создаётся пользователем
InProgress 1 менеджер
ProposalSent 2 менеджер, если есть хотя бы одно предложение
Confirmed 3 пользователь через confirm (менеджер и админ тоже могут)
Closed 4 менеджер
Cancelled 5 пользователь (только свою заявку) или менеджер

Переходы: Booking.

Роли

Роль Кто Что может
Client пользователь сайта каталог, заявки, избранное, чат по своим заявкам, профиль
Manager менеджер все заявки, статусы, предложения, чат по любой заявке, свои туры в конструкторе
Admin администратор всё, что Manager, плюс любые туры и любые файлы. Отдельного управления пользователями пока нет

Роль хранится в Identity и передаётся в JWT. Доступ проверяется по ролям на Gateway и в сервисах.

Технические термины

Термин Что это
Gateway единая точка входа API: маршруты, проверка JWT и ролей, лимиты запросов. См. Gateway
Сессия пара cookie с access- и refresh-токеном, недоступная JavaScript. См. Вход и сессия
ETag, If-Match версия тура в ответе и проверка этой версии при записи; защищает от затирания чужих правок
gRPC внутренние вызовы между сервисами на порту 8081 с сервисным токеном. См. Межсервисные контракты
Outbox таблица событий, которые пишутся в одной транзакции с изменением. В Booking события пишутся, но пока не отправляются
ProblemDetails формат ошибок API (RFC 7807): type, title, status, detail и расширения
Сидер код, который заполняет базу демо-данными при старте в Development

Сокращения

Сокращение Расшифровка
API Application Programming Interface
RBAC Role-Based Access Control, доступ по ролям
JWT JSON Web Token
PII персональные данные; в логах Identity маскируются (PiiMaskingDestructuringPolicy)
SPA одностраничное приложение (фронтенд)