7.6 KiB
7.6 KiB
UX Specification: Baton PWA
Версия: 1.0 Дата: 2026-03-20 Статус: Ready for Frontend
Обзор
Baton — PWA экстренного сигнала. Два ключевых экрана:
- Registration — одноразовый экран при первом запуске: пользователь вводит имя для идентификации в Telegram-уведомлениях.
- Main — постоянный рабочий экран: одна большая кнопка вызова.
Интерфейс должен быть интуитивно понятен без знания языка — см. раздел «Методология usability-тестирования».
Wire-frames
Экран: Registration
+--------------------------------------------------+
| [U] [WiFi] |
| |
| |
| |
| +---------------------------+ |
| | Введите ваше имя | |
| +---------------------------+ |
| |
| +---------------------------+ |
| | Подтвердить | |
| +---------------------------+ |
| |
| |
+--------------------------------------------------+
Элементы:
[U] — иконка пользователя, верхний левый угол
[WiFi] — иконка wi-fi соединения, верхний правый угол
[ Введите ваше имя ] — однострочное поле ввода, центр экрана
[ Подтвердить ] — кнопка подтверждения, под полем ввода
Экран: Main
+--------------------------------------------------+
| [U] [WiFi] |
| |
| |
| +----------------------------------------+ |
| | | |
| | | |
| | | |
| | ВЫЗОВ | |
| | | |
| | ( >= 60vmin ) | |
| | | |
| | | |
| +----------------------------------------+ |
| |
+--------------------------------------------------+
Элементы:
[U] — иконка пользователя, верхний левый угол
[WiFi] — иконка wi-fi соединения, верхний правый угол
( ВЫЗОВ ) — кнопка вызова, центр экрана,
минимальный размер: 60vmin × 60vmin
(занимает большую часть рабочей области)
Поведение элементов
Иконка [U] (пользователь)
- Отображает инициалы или иконку профиля текущего пользователя
- Tap → открыть информацию о текущем пользователе (v2)
- В v1: не интерактивна, только индикатор
Иконка [WiFi]
- Показывает статус сети: полный сигнал / нет соединения
- Обновляется по
navigator.onLineсобытия - Цвет: зелёный (online) / серый (offline)
Поле ввода имени (Registration)
- Placeholder: «Введите ваше имя»
- Максимум 100 символов
- Обязательное поле: кнопка «Подтвердить» неактивна при пустом поле
- После подтверждения: имя сохраняется через
POST /api/register
Кнопка «Подтвердить» (Registration)
- Неактивна (disabled) при пустом поле ввода
- Активна при наличии хотя бы одного символа
- Tap →
POST /api/register→ переход на экран Main
Кнопка «ВЫЗОВ» (Main)
- Размер: минимум 60vmin × 60vmin
- Форма: круг или скруглённый прямоугольник
- Tap →
POST /api/signalс геолокацией (если разрешена) - Состояния:
- Default: красный / яркий
- Pressed: тёмнее, scale(0.96)
- Sending: spinner или пульсация
- Success: краткая зелёная анимация (≤1 сек)
- Error: встроенное сообщение «Нет подключения» (при offline)
Методология usability-тестирования
Обязательный критерий QA-фазы (decision #1035).
Параметры теста
| Параметр | Значение |
|---|---|
| Тестировщики | 3 человека |
| Знание языка интерфейса | Отсутствует (не знают язык UI) |
| Попыток | 1 (первая и единственная) |
| Подсказки | Запрещены |
Ключевой сценарий
- Открыть приложение (экран Registration)
- Ввести своё имя в форму
- Нажать кнопку подтверждения
- На экране Main — нажать кнопку вызова
- Дождаться подтверждения отправки
Критерий прохождения
Все 3 тестировщика завершают сценарий с первой попытки без подсказок.
Критерий провала (блокирующий дефект)
Хотя бы один тестировщик из трёх:
- Не нашёл поле ввода имени
- Не понял, как подтвердить ввод
- Не нашёл кнопку вызова на главном экране
- Не понял, что сигнал отправлен (нет обратной связи)
При провале: UI-дизайн возвращается на доработку. Выпуск Frontend не разрешён.
Проведение теста
- Тестировщики тестируют независимо, не наблюдая за другими
- Засекается время прохождения каждого шага
- Фиксируются: колебания, ошибочные нажатия, паузы > 3 сек
Константы дизайна
| Параметр | Значение |
|---|---|
| Кнопка вызова min-size | 60vmin × 60vmin |
| Цвет кнопки вызова | #FF0000 (или близкий красный) |
| Фон приложения | #000000 |
| Тема | theme_color: #ff0000 (из manifest.json) |
Связанные документы
docs/tech_report.md— технический отчёт, PWA-ограничения, authdocs/backend_spec.md— API контракты/api/register,/api/signaldocs/adr/ADR-003-auth-pattern.md— UUID stateless auth