Динамика оценок
История ревью
| Дата ↓ | Тема | 🔴 | 🟡 | 🟢 | %🟢 | Замечания |
|---|---|---|---|---|---|---|
| 11 августа 2026 г. | Utility Types0.3 | 2 | 2 | 6 | 60% | Сильная работа: цепочка производных типов (KanbanTask → CreateTaskDTO → Partial) построена правильно, код компилируется, computed readonly, все типы экспортированы. Два обязательных исправления: (1) в теории 1.1 Required<Partial<T>> ≡ T — поля получаются обязательными, нужен просто Partial<Omit<User, 'id'|'createdAt'|'role'>>; (2) tasksByStatus инициализировать объектом со всеми 5 ключами, иначе для пустого статуса в рантайме undefined при том, что типы обещают массив. Мелочи: DTO короче через Omit, id — через crypto.randomUUID(). Пустой App.vue не критичен — по ТЗ код живёт в useKanban.ts и solution.md. |
| 11 августа 2026 г. | Renderless Components: абстракция логики без UI2.2 | 1 | 7 | 7 | 47% | Сильная реализация renderless-компонента: паттерн, generic-типизация и вынос клавиатуры в композабл — на уровне. Один блокер: при изменении items сбрасывается выбор, но не фокус — закэшированный focusedIndex ведёт к TypeError на Enter/Space (плюс прямое нарушение ТЗ). Плюс функциональные недочёты: глобальный keydown без фильтра target ломает ввод в полях, в slot не передана обязательная clearSelection. После исправлений — тема закрыта. |
| 2 июня 2026 г. | Слои приложения1.2 | 2 | 3 | 7 | 58% | export забыт, res.ok потерян при рефакторинге, нейминг. Исправлено. |
| 28 мая 2026 г. | Presentation vs Container2.1 | 9 | 3 | 1 | 8% | Дебаг-вывод в Container, имена пропсов/emit не совпадают, deleteTask с ошибкой |
| 25 мая 2026 г. | Анатомия composable3.1 | 0 | 5 | 3 | 38% | Отличная архитектура, JSDoc + naming замечания |
| 23 мая 2026 г. | Generics: базовый синтаксис, constrained generics0.2 | 5 | 3 | 2 | 20% | Много ошибок в ограничениях дженериков и type inference |
| 18 мая 2026 г. | Feature-based vs Layer-based1.1 | 0 | 3 | 2 | 40% | Dashboard как page, shared/ границы, вопросы не отвечены |
| 16 мая 2026 г. | Типы-основа0.1 | 0 | 0 | 1 | 100% | notification?.error→code, narrowing с опциональными полями |