# Спецификация экранов и навигации прибора

Документ описывает экраны, состояния и навигацию симуляции портативного ADS-B/FLARM-прибора. Его задача - быть проверяемой спецификацией для следующего этапа: по этому файлу можно сравнивать реализованную симуляцию с ожидаемым поведением.

Базовые требования к визуальному интерфейсу и сценарию симуляции зафиксированы в `docs/display-interface-requirements.md`, расчетная логика - в `docs/algorithm.md`, графические прототипы зон и выравнивания - в `docs/screen-wireframes.html`. Если документы расходятся, этот файл уточняет именно экранную структуру и навигацию, но не заменяет математическое ТЗ.

## 1. Цель интерфейса

Интерфейс должен помочь пилоту быстро понять:

- есть ли опасная цель;
- где цель находится относительно текущего курса;
- куда идет расчетная траектория цели;
- сколько времени осталось до CPA;
- каким будет горизонтальное, вертикальное и 3D-расхождение в одной и той же точке CPA;
- подтвердил ли пилот текущую тревогу;
- в каком масштабе сейчас отображается схема.

Главный сценарий: пилот около 10 секунд крутит термик, получает тревогу по цели `T1`, плавно прекращает спираль, уходит по прямой от точки сближения с увеличением скорости и снижением. Интерфейс должен показывать, что параметры CPA меняются физически согласованно.

## 2. Физический экран и симулятор

Активный экран прибора один:

- тип: `Transflective TFT 3.5"`;
- ориентация: альбомная;
- разрешение: `800 x 480`;
- физический размер: `76.2 x 45.7 мм`;
- изображение прибора монохромное;
- по умолчанию внешний масштаб просмотра в браузере: `200% · 2:1 · масштаб просмотра`.

Симулятор на компьютере должен отличать две группы управления:

- кнопки прибора: `+`, `SET`, `-`;
- кнопки просмотра симуляции: уменьшить просмотр, `1:1`, увеличить просмотр.

Кнопки просмотра симуляции не меняют внутренний масштаб карты прибора и не подтверждают тревогу.

## 3. Карта экранов

У прибора есть три экранных состояния:

| Состояние | Назначение | Как открыть |
| --- | --- | --- |
| `ALERT` | Основной экран полета и тревоги: схема слева, числовая панель справа | Стартовый экран; также двойное нажатие `SET` из `TFC` |
| `TFC` | Экран списка/обзора воздушных целей | Двойное нажатие `SET` из `ALERT` |
| `MENU` | Оверлей меню поверх текущего экрана | Долгое нажатие `SET` |

`MENU` не является отдельным полноэкранным режимом. Это временный оверлей поверх `ALERT` или `TFC`.

Минимальный автомат состояний:

```text
ALERT -- SET x2 --> TFC
TFC   -- SET x2 --> ALERT
ALERT -- SET hold --> ALERT + MENU
TFC   -- SET hold --> TFC + MENU
MENU  -- + / - / SET short / SET x2 --> закрыть MENU и выполнить действие кнопки
```

## 4. Общие элементы всех экранов

На всех рабочих экранах, где видна графическая схема, должны сохраняться:

- собственная точка в центре схемы;
- ориентация схемы по текущему курсу пилота;
- маленький компас-ромб в левом верхнем углу графической зоны;
- закрашенная часть компаса показывает север;
- буква `N` рядом с компасом не показывается;
- окружности дистанции тонким пунктиром;
- подписи окружностей только числами, без `км`;
- подпись масштаба в левом нижнем углу в формате `D 10 км`, `D 40 км`, `D 100 км` и т.п.;
- опасная цель как крупная заполненная стрелка;
- контур опасной цели всегда видим;
- при мигании опасной цели мигает только заливка;
- неопасные цели как меньшие незаполненные стрелки;
- прошлый трек цели тонкой сплошной линией;
- прогноз цели тонкой пунктирной линией;
- прогноз начинается от текущего положения цели и идет по текущему вектору движения.

Карта/рельеф на приборе в активной версии выключены. Старые наработки можно хранить, но они не должны появляться в основном интерфейсе без отдельного решения.

## 5. Экран ALERT

`ALERT` - стартовый и главный экран.

### 5.1 Компоновка

Экран делится на две зоны:

- слева большая графическая схема;
- справа узкая числовая панель.

Правая панель должна занимать минимально возможную ширину при сохранении читаемости. Лишняя рамка вокруг графической зоны не нужна: рабочее поле слева должно использоваться максимально.

### 5.2 Верх правой панели

Верхняя часть панели показывает активную цель. Слово `ALARM` не используется.

Обязательные элементы:

- предупреждающий треугольник с восклицательным знаком;
- идентификатор цели, например `T1`;
- скорость цели с единицей `км/ч`;
- высота цели с единицей `м`;
- вертикальная скорость цели с единицей `м/с`.

Единицы измерения параметров цели стоят справа от цифр. Значения должны быть крупными и выровненными внутри строк так, чтобы число и единица читались как одна ячейка.

### 5.3 Нижние строки CPA

Нижняя часть панели показывает четыре значения:

| Строка | Значение | Единица/указатель |
| --- | --- | --- |
| `TCPA` | время до CPA | формат `MM:SS` |
| `3D CPA` | 3D-дистанция в CPA | `м` справа от числа |
| `V CPA` | вертикальное расхождение в CPA | жирный треугольник вверх/вниз, без `м` |
| `H CPA` | горизонтальное расхождение в CPA | стрелка направления на горизонтальную точку CPA, без `м`, если единица ломает сетку |

Все числовые значения CPA должны относиться к одной и той же точке CPA. Нельзя показывать `TCPA` от одного расчета, а `H CPA` или `V CPA` от другого.

Визуальная сетка строк CPA:

- широкая левая зона: число, выровненное вправо;
- средняя зона: единицы измерения, если они показаны;
- узкая правая зона: направление или вертикальный знак.

Цифры расхождений должны иметь общий правый край.

### 5.4 Поведение тревоги

Тревога активна, если опасная цель:

- пересекает сферу `1 км` менее чем через `5 мин`;
- или входит в сферу `3 км` менее чем через `10 мин`.

При активной неподтвержденной тревоге:

- правая числовая панель мигает инверсией;
- опасная цель мигает только заливкой;
- контур цели остается видимым;
- данные продолжают обновляться 4 раза в секунду.

После одиночного `SET`:

- текущая тревога считается подтвержденной;
- правая панель прекращает мигать;
- данные, цель, треки и CPA продолжают обновляться;
- если опасная ситуация ушла и позже возникла новая, подтверждение сбрасывается.

## 6. Экран TFC

`TFC` - дополнительный экран обзора целей. Он нужен для просмотра нескольких воздушных целей, но не должен заменять главный тревожный экран.

Минимальное содержание:

- графическая схема слева остается видимой;
- справа вместо тревожных CPA-цифр показывается список живых целей;
- цели сортируются по приоритету риска;
- опасные цели выше неопасных;
- для каждой цели показываются идентификатор, время/риск сближения и ключевая дистанция CPA;
- неопасная цель `T2` должна отображаться без CPA-точки на схеме.

Если места мало, `TFC` может показывать меньше деталей, чем `ALERT`, но не должен скрывать активную опасную цель.

## 7. Оверлей MENU

`MENU` открывается долгим нажатием `SET` и рисуется поверх текущего экрана.

Минимальные пункты меню:

- текущий масштаб: `SCALE AUTO` или `SCALE MAN`;
- текущий диаметр отображения, например `D 40`;
- текущий экран: `SCREEN ALERT` или `SCREEN TFC`;
- подсказка `+/- SCALE`;
- подсказка `SET RESET  2x SCREEN`.

Меню должно закрываться при следующем явном действии кнопкой, если это действие меняет масштаб, экран или сбрасывает масштаб.

## 8. Навигация кнопками прибора

### 8.1 Кнопка `+`

Назначение: увеличить масштаб прибора, то есть выбрать более крупное приближение.

Поведение:

- переводит масштаб из `AUTO` в `MAN`;
- выбирает следующий более крупный масштаб, если он есть;
- закрывает `MENU`, если он открыт;
- не меняет внешний масштаб просмотра симуляции.

### 8.2 Кнопка `-`

Назначение: уменьшить масштаб прибора, то есть выбрать более дальний обзор.

Поведение:

- переводит масштаб из `AUTO` в `MAN`;
- выбирает следующий более дальний масштаб, если он есть;
- закрывает `MENU`, если он открыт;
- не меняет внешний масштаб просмотра симуляции.

### 8.3 Кнопка `SET`, одиночное нажатие

Назначение:

- сбросить масштаб прибора в `AUTO`;
- подтвердить текущую тревогу, если она активна.

Ожидаемое поведение:

- если тревога активна, мигание панели прекращается;
- внутренний масштаб возвращается в автоматический режим;
- текущий экран не переключается;
- `MENU` закрывается.

### 8.4 Кнопка `SET`, двойное нажатие

Назначение: переключить экран.

Переходы:

- `ALERT` -> `TFC`;
- `TFC` -> `ALERT`.

Двойное нажатие не должно менять внешний масштаб просмотра симуляции.

### 8.5 Кнопка `SET`, долгое нажатие

Назначение: открыть `MENU`.

Порог долгого нажатия в симуляторе может быть около `650 мс`. После открытия меню одиночное действие `SET`, `+` или `-` должно закрыть меню и выполнить соответствующую команду.

## 9. Масштабы графической схемы

Фиксированная сетка масштабов:

| Имя | Радиус схемы | Окружности | Подпись диаметра |
| --- | ---: | --- | --- |
| `XL` | `5 км` | `2`, `3` | `D 10 км` |
| `L` | `10 км` | `5`, `10` | `D 20 км` |
| `M` | `20 км` | `10`, `20` | `D 40 км` |
| `S` | `50 км` | `25`, `50` | `D 100 км` |
| `XS` | `100 км` | `50`, `100` | `D 200 км` |

Автомасштаб должен выбирать максимально крупный масштаб, при котором помещаются:

- текущее положение активной опасной цели;
- точка CPA;
- расчетная траектория активной цели в окне прогноза.

Автомасштаб не должен перескакивать только из-за поворота экрана по курсу. Расчет подбора делается по радиальным расстояниям в модели, а не по экранным координатам после поворота.

## 10. Проверочный сценарий симуляции

Симуляция должна обновлять экран `4 раза в секунду`.

Пилот:

- первые `~10 с` крутит термик;
- скорость в термике около `30 км/ч`;
- радиус спирали около `40 м`;
- набор в термике около `+1.2 м/с`;
- оборот примерно за `7-10 с`;
- после тревоги плавно выходит из спирали;
- уходит по прямой от CPA;
- скорость ухода около `50 км/ч`;
- вертикальная скорость ухода около `-2.5 м/с`;
- переход без резких дерганий.

Опасная цель `T1`:

- скорость около `820 км/ч`;
- вертикальная скорость около `+6 м/с`;
- цель скоростная, типовая коммерческая/турбопроп/вертолетная;
- имеет длинную историю трека;
- может изменить курс и стать угрожающей;
- при тревоге отображается заполненной стрелкой.

Неопасная цель `T2`:

- присутствует на схеме;
- не создает опасного пересечения;
- отображается меньшей незаполненной стрелкой;
- не получает CPA-маркер на схеме.

## 11. Критерии приемки для другого чата

Проверка экрана:

- открыт один активный дисплей `Transflective TFT 3.5" · 800×480 · 76.2×45.7 мм`;
- ориентация альбомная;
- внешний просмотр по умолчанию `200% · 2:1 · масштаб просмотра`;
- интерфейс прибора монохромный;
- карта/рельеф на приборе выключены.

Проверка `ALERT`:

- слева большая графическая схема, справа узкая числовая панель;
- слово `ALARM` на панели не используется;
- есть предупреждающий треугольник, `T1`, скорость, высота и вертикальная скорость цели;
- единицы `км/ч`, `м`, `м/с` стоят справа от чисел;
- `TCPA`, `3D CPA`, `V CPA`, `H CPA` читаемы и выровнены;
- `V CPA` показывает направление треугольником вверх/вниз;
- `H CPA` показывает направление стрелкой справа от числа;
- правая панель мигает инверсией при неподтвержденной тревоге.

Проверка графики:

- пользователь - маленькая точка в центре;
- компас - ромб без буквы `N`, север задан заливкой;
- окружности тонкие, пунктирные, подписи без `км`;
- масштаб в левом нижнем углу в формате `D ... км`;
- опасная цель - заполненная стрелка, мигает только заливка;
- неопасная цель - меньшая незаполненная стрелка;
- прошлые треки сплошные;
- прогнозные треки пунктирные и начинаются от текущего положения цели.

Проверка навигации:

- `+` приближает внутренний масштаб прибора и переводит его в `MAN`;
- `-` отдаляет внутренний масштаб прибора и переводит его в `MAN`;
- одиночный `SET` сбрасывает масштаб в `AUTO` и подтверждает тревогу;
- после подтверждения текущей тревоги панель перестает мигать, но значения обновляются;
- двойной `SET` переключает `ALERT`/`TFC`;
- долгий `SET` открывает `MENU`;
- кнопки масштаба просмотра симуляции не влияют на внутренний масштаб прибора.

Проверка физики CPA:

- `TCPA`, `3D CPA`, `V CPA`, `H CPA` рассчитаны для одной точки CPA;
- при уходе от точки сближения `H CPA` увеличивается;
- при снижении пилота `V CPA` увеличивается, если цель проходит выше;
- автомасштаб учитывает цель, CPA и прогнозную траекторию;
- смена курса пилота не должна сама по себе вызывать хаотическое переключение масштаба.
