Когда сборка нашла отличия, кто-то должен решить, что с ними делать. Обходить их по одной странице сборки неудобно, поэтому все отличия, которые ждут решения человека, собраны в одном месте — на доске проверки. Это рабочее место рецензента: здесь видно, сколько ещё ждёт решения, кто уже что решил и что осталось на потом.
Карточки и отборы
Каждое отличие, которое ждёт решения, — это карточка. Карточек бывает много, поэтому доска умеет их отбирать:
- По состоянию — что ещё в очереди, что отложено, а что уже решено.
- По автору — «Мои» показывают только то, что назначено на вас.
- Ждут дизайнера — отличия общих частей интерфейса, где нужно решение дизайн-ревьюера.
- Просроченные — задачи, которые ждут больше недели.
Удачный набор отборов можно сохранить как представление — тогда к нему вернёшься одним нажатием. Сверху видно прогресс проверки: сколько решений принято из общего числа. Считаются только решения человека — подсказки ИИ в эту цифру не входят. Рядом — участники и последние решения: кто, когда и что решил.
Что может человек
На каждой карточке можно сделать одно из нескольких действий. Это те же вердикты, что и в просмотрщике отличий, только здесь они собраны в один поток:
- Одобрить — отличие признано нормальным. Снимок становится новым эталоном, и следующие сборки сравниваются уже с ним.
- Запросить правки — отличие выглядит неверным, но окончательное слово за тем, кто правит интерфейс.
- Отклонить — отличие признано ошибкой. Сразу можно завести задачу на исправление с причиной.
- Поставить задачу на исправление — отличие ещё не решено окончательно, но за исправлением нужно проследить.
- Отозвать одобрение — вернуть в очередь то, что было одобрено раньше. Полезно, когда решение приняли поспешно.
Кроме вердиктов есть две организационные вещи: карточку можно взять на себя (тогда видно, что ей занимается конкретный человек) и назначить проверяющего — выбрать, кто будет решать.
Задачи проверки
Отклонение без последствий — решение, которое легко забыть. Поэтому отклонённый снимок получает задачу проверки с той причиной, по которой его отклонили. Пока задача не закрыта, снимок остаётся в очереди: очередная сборка снова покажет это отличие, и о нём не забудут.
У задачи есть срок и ответственный. В неё можно положить ссылку на внешний трекер — если у вас заведено вести исправления в другой программе. Закрыть задачу без результата нельзя: нужно написать, что исправлено — или почему исправление не требуется. Так в истории остаётся ответ, а не пустая галочка.
Кто что может
Права зависят от роли. Роли заводит администратор, входа по почте или через чужие сервисы здесь нет — логин передаётся человеку лично:
| Роль | Что может |
| Наблюдатель | Смотреть сборки, отличия и эталоны. Ничего не решает. |
| Рецензент | Выносить вердикты, комментировать, вести задачи. Это та роль, которой доступна доска проверки. |
| Участник | Планировать сборки, запускать кампании агента, править тесты. |
| Администратор | Настройки проекта, жизненный цикл эталонов, пользователи. |
| Владелец | Ключи API, смена ключей шифрования, передача владения. |
Отдельно есть отметка дизайн-ревьюер. Она нужна там, где отличие задевает общие части интерфейса: одобрить такое может только человек с этой отметкой. Если одобрил кто-то другой, в журнале аудита появится пометка «без дизайн-одобрения».
Массовые действия — только по безопасным
Когда отличий десятки, разбирать их по одному долго. Поэтому есть кнопка «Принять все безопасные». Она принимает только те отличия, безопасность которых доказали строгие правила, а не ИИ и не человек:
- Картинка вернулась к ранее одобренному состоянию.
- Изменилось только то, что попало в маскированные области (например, дата в углу страницы).
- Отличия ниже настроенных порогов сравнения.
- Изменилось только динамическое содержимое — даты и идентификаторы.
Всё остальное массово не принимается — только по одной карточке. Перед нажатием продукт честно предупреждает: массовое действие может пропустить настоящую регрессию, просто потому что каждый элемент прошёл классификацию безопасности, а не потому что его посмотрел человек. В режиме деградации, когда сломалась база или не хватает места, массовые действия отключаются совсем — одиночные вердикты при этом работают.
Пока снимок не загрузился
Бывает, что сборка закончилась, а снимок ещё доезжает до сервера — например, исполнитель потерял связь. Пока содержимого нет, решать нечего: одобрить то, чего не видел, нельзя, и отложить такое тоже нельзя. Строка просто ждёт, пока поступит доказательство. Это сделано намеренно: вердикт должен опираться на картинку, а не на память о том, как всё выглядело раньше.
Дальше: как проверить, кто и на каком основании принял каждое решение, — в разделе Журнал аудита.