| Сессия (Session) |
Долгоживущая «комната» с уникальным кодом приглашения, списком участников и историей игр. Не уничтожается при смене игры. |
| Комната |
Синоним сессии в пользовательском UI. |
| GameInstance |
Один запуск конкретной игры (плагина) внутри сессии. Может быть активным или завершённым. |
| Плагин игры (Game Plugin) |
Модуль с правилами одной игры: plugin_id, FSM, валидация ходов, рендер для веб/TG. |
| Участник (Participant) |
Игрок или наблюдатель в сессии. Один человек = один Participant, даже при двух клиентах. |
| Presence |
Статус подключения канала (web / telegram) участника. |
| Host |
Создатель сессии; права: старт/смена игры, кик, закрытие. |
| Guest |
Участник без регистрации; идентифицируется guest_token. |
| Код приглашения |
6–8 символов (A-Z, 2-9 без O/0/I/1) для входа в сессию. |
| Ход (Action) |
Атомарное действие игрока: roll_dice, choose_cell и т.д. С action_id для идемпотентности. |
| GameState |
Сериализуемое состояние активной GameInstance (поле, кубики, очередь хода). |
| ViewModel |
Представление состояния для клиента: веб (интерактив) или TG (картинка + кнопки). |
| Realtime event |
Событие GameStateChanged, ParticipantJoined и др. через Redis Pub/Sub → WS / bot. |
| Центральная клетка |
В dice_board: ячейки (3,3), (3,4), (4,3), (4,4) на поле 6×6. |
| Клетка-кандидат |
После броска (d1,d2): (d1,d2) или (d2,d1). |
| C4 |
Модель архитектуры: Context → Container → Component → Code. |
| Modular monolith |
Один деплой с логически разделёнными модулями вместо отдельных микросервисов. |