GH GambleHub

Ієрархія помилок і підсвічування пріоритетів

1) Навіщо потрібна ієрархія помилок

Помилка - не просто «червоний текст». Це керований сигнал, який повинен:
  • пояснити, що пішло не так,
  • показати, чому це важливо,
  • підказати, що робити далі,
  • розставити пріоритети, якщо помилок декілька.
  • Ієрархія помилок знижує когнітивне навантаження, прискорює виправлення і підвищує конверсію кроків (реєстрація, платежі, KYC).

2) Модель рівнів критичності (Severity)

Рекомендуємо 5 градацій - від інформування до блокуючих проблем:

1. Info (інформування) - «Профіль неповний, можна заповнити пізніше». Не блокує.

2. Notice (увага) - «Ліміт майже вичерпаний». Рекомендуємо діяти.

3. Warning (попередження) - «Розбіжність формату, дані збережені частково». Може заважати.

4. Error (помилка) - «Невірний формат/обов'язкове поле порожнє». Блокує конкретну дію.

5. Critical (критична) - «Платіж відхилений/ризик безпеки». Блокує сценарій, вимагає негайного кроку.

Правила:
  • Один екран - один головний статус.
  • При множинних помилках: показуємо критичну зверху і стабільно прокручуємо до першої помилки.

3) Принципи підсвічування пріоритетів

1. Візуальна ієрархія: колір/іконка/товщина/контраст зростають з критичністю.
2. Просторова близькість: помилка поруч з полем/зоною, до якої відноситься.
3. Фокус і прокрутка: авто-скролл до першої помилки + фокус в проблемне поле.
4. Один головний callout: загальний банер/алерт про критичну проблему + локальні підказки.
5. Послідовність токенів: кольори/іконки/шрифти для Info/Warning/Error незмінні у всьому продукті.
6. Час життя: локальні помилки - поки не виправлені; банери - до закриття/виправлення.
7. Не плутаємо стану: «порожньо» ≠ «помилка», «в очікуванні» ≠ «помилка».

4) Візуальна мова (UI-токени)

Кольори:
  • Info - нейтральний синій/сірий,
  • Notice - бурштиновий/жовтий,
  • Warning - помаранчевий,
  • Error - червоний,
  • Critical - насичений червоний + контрастний фон.
  • Іконки: info ⓘ, notice, error/, success.
Контейнери:
  • Inline-повідомлення під полем (мінімальна рамка).
  • Row-callout на рядок/картку.
  • Page-alert (банер) - для загальних/критичних.
  • Мікроанімації: м'яка поява, без «смикання» макета.

5) Тексти помилок: Формула та приклади

Формула: Що не так + Як виправити + (Чому/обмеження).

"Неправильний формат дати. Введіть у форматі ДД. ММ. ГГГГ"

"Файл занадто великий (макс. 10 МБ). Завантажте файл меншого розміру"

"Недостатній рівень верифікації. Пройдіть KYC - це займе ~ 2 хвилини"

"Платіж відхилено банком. Спробуйте інший метод або зв'яжіться з банком"

Анти-патерни: «Помилка 400», «Щось пішло не так», гумор у стресових кроках.

6) Ієрархія в складних формах (реєстрація/КУС/платежі)

1. Inline-валідація на blur: ловимо локальні помилки відразу.
2. Глобальна перевірка на submit: показуємо банер «Виправте зазначені поля» і список/якоря.
3. Помилкова навігація: клавіатурою/табацією, «Перейти до помилки # 1/ #N».
4. Порядок виправлення: спочатку блокуючі (Error/Critical), потім Warning/Notice.
5. Збереження контексту: введені дані не втрачаються при помилці.

7) Специфіка сценаріїв

7. 1 Платежі/висновки

Critical: відхилення провайдером/банком, підозріла активність.
Error: поле карти/IBAN, ліміти за сумою/частотою.
Warning: повільна мережа/перевищення часу очікування.

Текст: "Платіж відхилено банком. Спробуйте інший метод або зв'яжіться з банком. Комісія не списана"

7. 2 КУС/безпека

Critical: документ підроблений/заблокована країна/мульти-аккаунт.
Error: нечитабельний документ/розбіжність дати.

Текст: "Фото документа розмито. Завантажте більш чітке зображення при хорошому освітленні"

7. 3 Пошук/фільтри

Це не помилка, а нульовий результат.

Текст: "Немає результатів по "{query}". Приберіть фільтр "Провайдер: X" або спробуйте "{alt}". [Скинути фільтри]"

8) Доступність (A11y) і технічні вимоги

Помилки оголошуються скрінрідеру: aria-live = «assertive» для критичних, «polite» для інших.
Помилкові поля: aria-invalid =» true», aria-describedby на повідомлення.
Фокус переноситься до першої помилки; порядок табуляції зберігає логіку.
Контраст по WCAG AA; іконка не замінює текст.
Текст повинен читатися вголос без втрати сенсу.

9) Локалізація та юридична точність

Уникати жаргону і культурних метафор.
Узгодити терміни (глосарій): «платіж відхилено», «ліміт перевищено», «верифікація».
Вказувати терміни та обмеження в локальному форматі: «до 15 хвилин», валюти/дати.

10) Метрики якості

Error rate по полю/кроку (частка користувачів, що зіткнулися з помилкою).
Time-to-Fix (середній час до виправлення першої помилки).
Drop-off після помилки (скільки йдуть, не виправивши).
Повторюваність помилок (recurrence) за користувачами/сесіями.
Звернення на підтримку за типом помилки.
Конверсія кроку до/після змін в ієрархії.

A/B-ідеї:
  • Авто-скролл і фокус vs тільки колір/текст.
  • Точне формулювання причини vs загальна.
  • Порядок підсвічування (спочатку банер → inline) vs (тільки inline).
  • Додавання посилання «Показати вимоги» поряд з помилкою.

11) Чек-лист перед релізом

  • Кожна помилка має рівень (Info/Notice/Warning/Error/Critical).
  • Колір/іконка/контейнер відповідають рівню.
  • Є прокрутка до першої помилки і перенесення фокусу.
  • Повідомлення пояснює що/як/чому.
  • Терміни збігаються з глосарієм; локалізація перевірена.
  • Доступність: aria-атрибути, контраст, читаність вголос.
  • Дані не втрачаються при помилці.
  • Статуси «нульовий результат» і «очікування» не оформлені як помилки.

12) Приклади «до/після»

Форма дати

До: «Помилка 400»

Після: "Неправильний формат дати. Використовуйте ДД. ММ. ГГГГ"

Платіж

До: «Оплата не пройшла»

Після: "Платіж відхилено банком. Спробуйте інший метод або зв'яжіться з банком. Комісія не списана"

KYC

До: «Документ не прийнятий»

Після: "Не вдалося розпізнати документ. Завантажте фото без відблисків, видно кути і текст"

Нульовий пошук (не помилка!)

До: "Помилка: нічого не знайдено"

Після: "Результатів по "live roulette" немає. Приберіть фільтр «High-limit» або спробуйте «roulette». [Скинути фільтри]"

13) Компоненти дизайн-системи

``

Пропси: `message`, `severity`, `ariaDescribedBy`, `compact`.
Рендер: текст + іконка, колір по'severity'.

``

Пропси: `title`, `description`, `severity`, `actions[]`.
Варіанти: `info | notice | warning | error | critical`.

``

Список помилок з якорями до полів, клавіатурна навігація, «Перейти до # 1».

'< Validator/>'( логіка)

Правила на полі/форму/крок, пріоритети, схеми (наприклад, JSON-Schema), локалізація повідомлень.

14) Швидкі шаблони фраз

СитуаціяПовідомлення
Обов'язкове поле«Заповніть це поле».
Формат телефону«Введіть номер у форматі + 380...»
Пароль«Мінімум 8 символів, одна цифра і буква».
Ліміт операції"Перевищено ліміт для цієї суми. Виберіть меншу суму або пройдіть розширену верифікацію"
Недоступний метод«Метод недоступний у вашому регіоні через правила провайдера».
Мережа/таймаут"Не вдалося підключитися до сервера. Перевірте мережу або повторіть спробу"

15) Вбудовування в процес

Проектуйте тексти одночасно з логікою валідації.
Зберігайте рядки в i18n поруч з компонентами, версіонуйте.
У чек-листі PR: відповідність рівню, наявність aria-атрибутів, коректна локалізація.
Регулярно рев'ю помилок по метриках і зворотного зв'язку підтримки.

Підсумкова шпаргалка

Оцифруйте рівні: Info → Critical.
Покажіть пріоритет візуально і в фокусі.
Поясніть виправлення коротко і конкретно.
Не називайте порожнечу помилкою.
Міряйте і покращуйте: error rate, Time-to-Fix, drop-off.

Contact

Зв’яжіться з нами

Звертайтеся з будь-яких питань або за підтримкою.Ми завжди готові допомогти!

Telegram
@Gamble_GC
Розпочати інтеграцію

Email — обов’язковий. Telegram або WhatsApp — за бажанням.

Ваше ім’я необов’язково
Email необов’язково
Тема необов’язково
Повідомлення необов’язково
Telegram необов’язково
@
Якщо ви вкажете Telegram — ми відповімо й там, додатково до Email.
WhatsApp необов’язково
Формат: +код країни та номер (наприклад, +380XXXXXXXXX).

Натискаючи кнопку, ви погоджуєтесь на обробку даних.