feat(room): очередь поднятых рук видна всем + отключаемый модуль
Раньше HandQueueMenu.tsx рендерился только организатору — теперь очередь видит любой участник, но опустить чужую руку по-прежнему может только организатор (сервер это уже проверял, менял только фронт). Кнопка «Опустить» показывается у записи, только если это своя рука или пользователь — организатор. Модуль «поднятие руки» (кнопка «Рука» + очередь целиком) — отключаемый в админке (instance_settings.hand_queue, дефолт enabled=true, как у chat_enabled). Настройка едет участнику в JoinOut ещё до входа в комнату; выключенный модуль гасит кнопки и на фронте, и на бэке — raise_hand/lower_hand отклоняются кодом hand_queue_disabled, если модуль выключен, даже если у клиента на руках старый JoinOut.
This commit is contained in:
@@ -65,6 +65,7 @@ _MANAGED_KEYS = (
|
||||
"transcriber",
|
||||
"summarizer",
|
||||
"chat",
|
||||
"hand_queue",
|
||||
"ai_level",
|
||||
"summary_recipients",
|
||||
"display_timezone",
|
||||
@@ -121,6 +122,7 @@ async def test_ensure_bootstrapped_imports_yaml_defaults(
|
||||
"transcriber",
|
||||
"summarizer",
|
||||
"chat",
|
||||
"hand_queue",
|
||||
"ai_level",
|
||||
"summary_recipients",
|
||||
"display_timezone",
|
||||
@@ -132,6 +134,9 @@ async def test_ensure_bootstrapped_imports_yaml_defaults(
|
||||
cfg = await service.get()
|
||||
assert cfg.transcriber.provider == "faster_whisper_cpu"
|
||||
assert cfg.ai_level == "min"
|
||||
# Дефолт обязан сохранять поведение существующих инсталляций — модуль
|
||||
# «поднятие руки» был доступен всегда, тоггл включён по умолчанию.
|
||||
assert cfg.hand_queue.enabled is True
|
||||
assert cfg.summary_recipients == "all"
|
||||
assert cfg.display_timezone == "Europe/Moscow"
|
||||
assert cfg.registration_team_choice is False
|
||||
@@ -162,6 +167,22 @@ async def test_ensure_bootstrapped_is_idempotent_and_keeps_admin_edits(
|
||||
assert cfg.display_timezone == "Asia/Yekaterinburg"
|
||||
|
||||
|
||||
async def test_update_hand_queue_enabled(
|
||||
db_session: AsyncSession, clean_instance_settings: None
|
||||
) -> None:
|
||||
service = InstanceSettingsService(db_session)
|
||||
await service.ensure_bootstrapped(PLUGINS_YAML)
|
||||
|
||||
cfg = await service.update(SettingsUpdateIn(hand_queue_enabled=False))
|
||||
assert cfg.hand_queue.enabled is False
|
||||
|
||||
cfg = await service.get()
|
||||
assert cfg.hand_queue.enabled is False
|
||||
|
||||
cfg = await service.update(SettingsUpdateIn(hand_queue_enabled=True))
|
||||
assert cfg.hand_queue.enabled is True
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("preset", "chat_enabled", "ai_enabled", "ai_level"),
|
||||
[
|
||||
|
||||
Reference in New Issue
Block a user