Процессы
Code Review
Процесс проверки кода перед merge.
Процесс проверки кода перед merge.
Чек-лист для Reviewer
1. Готовые решения (standard-ready-made-solutions)
- Использованы shared-модули (если применимо)
- Использованы Nuxt UI компоненты
- Кастомный компонент обоснован (если есть)
2. Структура и именование (standard-project-structure, standard-component-naming)
- Файлы в правильных директориях
- Компоненты именованы с префиксом модуля (
OrderFilters, неFilters) - Нет конфликтов имён компонентов
3. Декомпозиция (standard-component-decomposition)
- Компонент ≤ 200 строк (или обоснование)
- Одна ответственность на компонент
- Сложная логика вынесена в composables
- Tailwind классы ≤ 7-10 на элемент
4. Auto-imports (standard-auto-imports)
- Нет импортов Vue (
ref,computed,watch, etc.) - Нет импортов компонентов
- Нет импортов stores/composables
- Пути типов используют
~/types/
5. Composables (standard-composables)
- Бизнес-логика в composables (не в компонентах)
- Именование
use[Domain][Action] - Возвращает reactive объект
6. TypeScript (standard-typescript)
- Нет
any(используйunknownили generic) - API ответы типизированы
- Нет избыточной типизации (типы выводятся автоматически)
7. Формы (standard-forms-validation)
- UForm + Zod для валидации
- Маски для телефонов/БИН
- Loading состояние на submit
8. Адаптивность (standard-responsive-design)
- Mobile-First подход (без префикса = mobile)
- Нет фиксированных размеров (используй max-width)
- Touch-targets минимум 44x44px (padding, не margin)
- Таблицы имеют мобильную версию или скролл
9. UX Quality (standard-ux-quality)
- Работает в светлой и тёмной теме
- Кнопки имеют loading состояние
- Списки показывают Skeleton при загрузке
- Пустые состояния имеют кнопку действия
- Ошибки предлагают решение (повторить, сбросить)
10. Backend API (standard-service-layer, standard-error-handling)
- Хэндлер тонкий — только валидация, вызов сервиса, ответ
- Бизнес-логика в сервисном слое, не в хэндлере
- Ошибки через
AppErrorс кодом и статусом - Zod-схемы в
shared/schemas/(используются и на клиенте, и на сервере) - Prisma-запросы не в хэндлерах (через сервис или repository)
11. Безопасность
- Нет SQL injection — используется Prisma (параметризованные запросы), raw-запросы через
$queryRawс template literals - Нет XSS — не используется
v-htmlс пользовательским вводом, данные экранируются - Авторизация проверена — пользователь имеет доступ к запрашиваемому ресурсу (IDOR)
- Секреты не попадают в код — API ключи, токены только через
runtimeConfig/ env vars - Rate limiting на чувствительных эндпоинтах (auth, upload)
- Валидация входных данных на сервере (не только на клиенте)
12. Code Quality
- Код читаемый
- Нет console.log
- Нет закомментированного кода
Формат комментариев
Блокирующий
🔴 [BLOCK] Нарушение стандарта:
Удали импорт `ref` — auto-import в Nuxt.
См. [[standard-auto-imports]]
Важный
🟡 [IMPORTANT] Вынеси логику в composable.
См. [[standard-composables]]
Suggestion
💡 [SUGGESTION] Можно упростить:
const isActive = computed(() => status.value === 'active')
Процесс
- Author создаёт MR
- Автоматические проверки (lint, typecheck)
- Reviewer проверяет по чек-листу
- Author исправляет комментарии
- Approval и merge