Code review снижает риск багов в проде. Ниже — конкретный чеклист: что смотреть в PR и как описывать изменения.

Scope и задача
- PR решает одну задачу из трекера, diff не раздувается
- Нет «заодно отрефакторил полпроекта»
- Описание PR: что, зачем, как проверить
Корректность и краевые случаи
- Null/empty, pagination, idempotency для POST payments
- Права доступа на уровне сервиса, не только UI
- Транзакции для multi-step операций (wallet, orders)
Безопасность
- Нет секретов в коде и логах
- SQL injection / XSS / SSRF — типовые векторы закрыты
- Rate limits на auth и публичные формы

AI-сгенерированный код
Код из Cursor/Copilot проверяется строже: галлюцинации API, лишние зависимости, отсутствие error handling.
Reviewer обязан прогнать сценарии руками, не только green CI.
Чеклист reviewer
- Понимаю бизнес-логику изменения
- Есть тест или manual test plan
- Миграции обратимы или есть expand/contract
- Observability: логи/метрики на новый путь
Шаблон описания PR
Каждый PR начинается с ссылки на задачу, краткого «что изменилось для пользователя/бизнеса» и шагов ручной проверки.
Если PR затрагивает auth, payments или wallet — reviewer обязан приложить скрин или лог успешного сценария и негативного (401, insufficient funds).
Метрики качества review
- Median time to first review < 4 часов в рабочее время
- Доля PR с тестами на критичных модулях > 80%
- Количество production incidents, связанных с «пропущенным в review» — trending down
Культура review без токсичности
Review — про риск и ясность, не про «кто умнее». Фиксируйте blocking vs nit comments. В шаблоне PR укажите шаги ручной проверки — reviewer быстрее находит пропуски.
Review в распределённой команде
Если reviewer в другом часовом поясе — blocking comments с deadline, nit без блокировки merge. Async review работает, когда PR маленький и описание содержит screencast или шаги проверки.
Раз в две недели: 15 мин sync по открытым PR с высоким риском (auth, payments), без формального статус-митинга.
Как внедрить чеклист в команде
- Добавьте шаблон PR в репозиторий (.github/pull_request_template.md)
- Согласуйте blocking vs nit в review comments
- Для payments/auth — обязательный manual test plan в PR
- Раз в месяц: 3 случайных merged PR и retro по пропущенным рискам