# Фаза 55. Состояние экрана ## Зависимости Нет. Оболочка, люди, управление и соискатели уже на экране. ## Зачем F5 и выход в меню не должны выкидывать игрока на карту с пустыми фильтрами. Школа, вкладки и уже существующие поиски/фильтры восстанавливаются; сервер по-прежнему единственный источник игровых данных. ## Задачи - [x] Query URL: `school`, `mode`, `tab`, `node`, `person`, `inspect`. F5 с `school=` снова открывает эту школу (`OpenSchool` как с карточки меню). Нет школы / не в списках — меню, URL чистится. Гость с `mode=manage` остаётся в обзоре - [x] `sessionStorage` ключ `h-school.view.{id}`: фильтры и пейджер людей, поиск/фильтры соискателей, вкладка и поиски карточки, вкладка управления и выбранный класс сетки, последний `mode`/`tab`/выбор — чтобы повторный вход с меню поднял то же место - [x] `history.pushState` только вход и выход; смена вкладки и фильтров — `replaceState`. «Назад» из школы — меню. Протокол, HTTP и сейв не трогать; роутер не добавлять - [x] Подписи через `t(...)` не нужны: новых строк нет. `docs/design/off-queue/view-state.md` и эта фаза — в том же коммите, что и код ## Тесты, без которых фаза не закрыта - [x] Разбор и сборка query: валидные поля, мусорный `mode`/`school` → обзор / меню - [x] Chrome в `sessionStorage` пишется и читается по школе; битый JSON → значения по умолчанию - [x] Школа из списка: своя, чужая (`mine: false`), нет id → `null` - [x] Панель людей: `show` поднимает сохранённые фильтры в запрос; смена фильтра пишет storage - [x] Экран школы: URL `tab=people` открывает людей; гость игнорирует `mode=manage` - [x] Управление: новая панель на той же школе открывает сохранённую вкладку «Правила» ## Критерий готовности - Открыть школу, вкладка «Люди», фильтр «ученики / 5», карточка. F5 — снова эта школа, те же фильтры и человек. Назад — меню. Снова открыть ту же школу с меню — те же вкладка и фильтры - Гость не попадает в «Управление» по URL - `npm --prefix src/HSchool.Client test` проходит на затронутых тестах ## Стоп Не класть состояние на сервер. Не бампить протокол. Не добавлять поиск по имени в списки, где его нет. Не держать открытым диалог соискателей и мастер создания. Не трогать скорость часов и паузу — они уже на сервере.