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 | одностраничное приложение (фронтенд) |