# Пользовательские флоу

Два главных пути: ведущий (desktop-консоль) и команда (mobile-web).
Экран зала — пассивный, управляется состоянием игры из консоли.
Единый источник правды — «состояние игры» на сервере: консоль его меняет,
команды и экран зала на него подписаны.

## Машина состояний игры

```
DRAFT → LOBBY → STAGE_1(brief → play → locked → scored)
             → BETWEEN_1 (доска/счёт на экране зала)
             → STAGE_2(...) → BETWEEN_2
             → STAGE_3(...) → BETWEEN_3
             → STAGE_4(...) → GRADING_4
             → REVEAL (пошаговое раскрытие)
             → FINAL (итоговая таблица)  → ARCHIVED
```

Каждый STAGE у команды: `материалы доступны → бланк открыт → отправлено
(финально) → заблокировано по таймеру/сдаче → результат этапа`.
Ответ этапа финален: после «Сдать» и после нуля таймера бланк read-only.

---

## Флоу ведущего

### A. Подготовка (за 1–7 дней до игры)

```
[Вход в консоль]
   → [Мои игры] → «Новая игра»
   → Шаг 1. Выбор дела из библиотеки (или предзаказ дела под тему,
        готовится заранее):
        ├─ «Из библиотеки» (готовые дела с бейджами плейтестов, метки
        │   «уже игралось»)
        └─ «Заказать дело под тему» (тема/сеттинг/сложность → команда
            продукта готовит дело заранее, за 3–5 дней → в библиотеку)
   → Шаг 2. Предпросмотр дела: правда (канон), цепочка дедукции, все
        документы по этапам, отчёт солвера и читер-теста
   → Шаг 3. Настройки вечера: дата/площадка, число команд, таймеры этапов
        (дефолты из дела), цена подсказки, вкл/выкл «уверен/не уверен»
   → Шаг 4. Комплект: скрипт ведущего (экран live-пульта), цифровые
        документы дела (уходят командам по этапам), аудиофайлы, QR-афиша
   → [Игра создана: статус DRAFT, код игры + QR]
```

Краевые случаи:
- Заказанное под тему дело ещё готовится → в библиотеке доступны готовые
  дела; всегда есть fallback: взять любое дело из библиотеки.
- Ведущий хочет заменить дело за час до игры → можно до перехода в LOBBY.

### B. Вечер игры

```
[Открыть игру] → «Открыть лобби» (LOBBY)
   → на экране зала: QR + список подключившихся команд
   → команды регистрируются сами; ведущий может: переименовать,
     объединить дубли, удалить тестовую команду
   → чек-лист старта: звук проверен ▢, экран зала подключён ▢,
     N команд ≥ 2 ▢
   → «Начать игру»
```

По каждому этапу — одинаковый цикл пульта:

```
[Брифинг этапа]  скрипт-карточка ведущего + кнопка «Запустить аудио»
   → «Открыть этап» (командам открываются материалы и бланк, таймер пошёл)
   → LIVE-мониторинг: сколько команд сдало, прогресс по бланкам,
     запросы подсказок, тревоги («команда 7 неактивна 8 минут»)
   → таймер 0:00 или все сдали → этап закрыт (LOCKED)
   → ИИ-проверка идёт по мере сдачи (этапы 2 и 4) → очередь спорных
   → «Показать доску» → экран зала: ставки/счёт, скрипт-комментарий
   → «Дальше» → следующий этап
```

### C. Проверка (ИИ-судья + очередь спорных)

Общий цикл: сдача бланков → ИИ-судья сверяет каждый бланк с каноном дела
по мере поступления (семантически, не по ключевым словам) → выставляет
вердикт с уверенностью и обоснованием → при уверенности ≥90% (порог из
настройки вечера) балл начисляется автоматически, ниже порога поле уходит
в очередь ведущего → ведущий разбирает очередь спорных (обычно 5–10 полей)
→ публикация счёта, когда очередь пуста.

- Этап 1: авто (варианты). Этап 3: авто (ставка + модификатор ×2/штраф).
- Этап 2: ИИ-судья сверяет поля бланка с каноном; поля ниже порога падают
  в очередь «Спорные» — ведущий видит ответ команды, эталон, вердикт ИИ и
  жмёт ✓/✗ (правило: сомнение в пользу команды).
- Этап 4: рубрики (кто/чем/где/когда/мотив/как) — ИИ оценивает все рубрики;
  «мотив/как» чаще уходят в очередь как неоднозначные. SLA: разбор очереди
  идёт, пока зал смотрит атмосферную заставку/разогрев (~7–10 мин на 40
  команд), но ИИ закрывает большинство полей ещё во время этапа.

Краевой случай — команда оспаривает вердикт ИИ: оспаривание уходит в ту же
очередь ведущего (с ответом команды и вердиктом ИИ рядом); решение ведущего
финально.

Краевой случай — спорный ответ после оглашения: ведущий может вручную
скорректировать баллы с комментарием до статуса FINAL; после FINAL —
только «пометка об ошибке» в протокол игры (счёт не трогаем — публично
объявлен).

### D. Раскрытие

```
GRADING_4 завершён → «Начать раскрытие»
   → пошаговые слайды на экран зала, у ведущего — телесуфлёр:
     история правды → разбор улик → разбор приманки («кто поставил на
     жену — вот где вы свернули») → гугл-хук («что нужно было проверить»)
   → счёт от последнего места к первому, пауза-интрига перед топ-3
   → у каждой команды на её телефоне: личный разбор + «мы были близко»
   → FINAL: итоговая таблица, фото-слайд, анонс следующей игры
```

---

## Флоу команды

```
[QR на столе] → mobile-web, без установки и аккаунта
   → «Название команды» + число игроков (+ смайл-аватар);
     создатель команды становится капитаном (бланки заполняет и сдаёт он)
   → ЛОББИ: правила в 5 карточках («интернет и нейронки разрешены»,
     «ответ этапа финален», «уверен = ×2 или штраф», «бланк сдаёт капитан»),
     список команд с бейджем капитана, счёт-схема
   → ЭТАП 1 (квиз): аудио звучит на зал; на телефоне вопросы с вариантами,
     таймер; капитан отмечает ответы, игроки видят зеркало; «Сдать» — с
     подтверждением «Ответы изменить нельзя»
   → МЕЖЭТАП: свой результат этапа (по полям — пометки «зачёл ИИ /
     подтвердил ведущий») + экран зала с доской
   → ЭТАП 2 (карта следствия): вкладки «Материалы | Бланк»;
     материалы — карточки документов (полстраницы, можно раздать чтение
     по людям); бланк — по каждому из 5 подозреваемых: мотив (выбор),
     алиби (подтверждено/сломано/нет), где был в окно смерти (выбор+время);
     капитан заполняет, игроки видят зеркало бланка
   → ЭТАП 3: второй пакет улик; ставка на одного подозреваемого;
     тумблер «УВЕРЕН (×2 / −штраф)»; кнопка «Купить подсказку −50»
     (капитан заполняет и подтверждает двойным тапом, игроки видят зеркало)
   → ЭТАП 4: твист-улика; бланк реконструкции: кто (выбор), чем, где,
     когда (выбор/время), мотив и как (короткий свободный текст,
     лимит ~300 знаков — «полстраницы» дисциплина и для игроков);
     капитан заполняет, игроки видят зеркало
   → РАСКРЫТИЕ: телефон = второй экран («смотрите на сцену»), затем
     личный разбор: ваши ответы vs правда, «мы были близко», место, счёт
   → ФИНАЛ: поделиться результатом, оценить игру, анонс следующей
```

### Краевые случаи команды

| Случай | Поведение |
|--------|-----------|
| Опоздавшая команда | Вход возможен до конца этапа 1; этап 1 засчитывается по факту оставшегося времени (без продления). После начала этапа 2 — вход только через ведущего («присоединить с 0 баллов за этап 1»). |
| Игрок отвалился (сеть/батарея) | Сессия командная, а не личная: любой игрок команды по QR+код команды видит то же состояние. Черновик капитана автосохраняется каждые 2 сек; игроки видят его зеркало. |
| Два игрока правят одно поле | Устранён капитанской моделью: бланк заполняет только капитан, остальные видят read-only зеркало. Одновременного редактирования одного поля больше нет. |
| Капитан неактивен (разрядился, ушёл) | Через 60 сек без активности капитана любой игрок может перехватить капитанство (кнопка «Стать капитаном»); событие уходит в ленту ведущего. Черновик и зеркало сохраняются — новый капитан продолжает с того же места. |
| Передача капитанства | Капитан может передать роль вручную в лобби/меню (выбор игрока); бейдж капитана переезжает, право заполнять и сдавать бланк — тоже. |
| Сдали случайно | Окно подтверждения обязательно; после подтверждения — отмены нет (правило игры). Ведущий технически может разблокировать бланк в исключительном случае (лог действия). |
| Спорный ответ / оспаривание вердикта ИИ («мы имели в виду то же самое») | Кнопка «Оспорить» на экране результата этапа → уходит в очередь ведущего с текстом команды и вердиктом ИИ; решение ведущего финально, показывается с комментарием. |
| Таймер истёк на середине бланка | Автосдача текущего черновика (заполненное засчитывается) — мотивация заполнять по ходу, а не в конце. |
| Нет интернета в баре у команды | Материалы этапа префетчатся при открытии этапа; бланк держит очередь на отправку и ретраит. Индикатор соединения в шапке. |

### Краевые случаи ведущего

- Пропал экран зала → консоль дублирует таймер и доску, режим «продолжаем
  без экрана» (голосом), ничего не блокируется.
- Упал интернет у ведущего → таймер этапа считается на сервере, команды
  продолжают; консоль переподключается к текущему состоянию.
- Нужно продлить этап («зал не успевает») → «+2 мин» на пульте, командам
  тост и обновлённый таймер; действие пишется в протокол.
- Скандал/тай-брейк при равенстве баллов → правило в настройках: раньше
  сдан этап 4 → выше место (показывается в таблице как tie-break).
```
