TRI-10 Avatar: AI-рефакторинг, unit-тесты, AI.md - #616
Conversation
## Что сделано - JSDoc: описан `TAvatarBorderRadius`, уточнены `size` / `borderRadius`, дополнен JSDoc компонента (как задаётся содержимое). Inline-комментарий над `SIZE_TO_CLASS_NAME_MAP` переведён в JSDoc, второй карте JSDoc добавлен. - Unit-тесты: перебор размеров и радиусов переведён на `it.each` — размеры выводятся из `Object.values(EAvatarSize)`, поэтому новые значения enum покрываются автоматически. Добавлен тест на рендер children, усилена проверка forwardRef (сверка с реальным корневым узлом). Итого 17 тестов. - Создан `src/components/Avatar/Avatar-ai.md` по `docs/ai/template-ai.md`. - `stories/Avatar/Avatar.stories.tsx`: в args сторис Default / Sizes / Example добавлен обязательный `borderRadius` — это убирает три давние ошибки tsc. Рендер не меняется: эти примеры args не читают, baseline-скриншоты актуальны. - ROADMAP: у Avatar закрыты колонки AI.md и AI refactoring. - Release notes 1.47.0: запись про AI-рефакторинг Avatar. Публичный API не менялся: имена и типы props, значения `EAvatarSize` и `TAvatarBorderRadius`, barrel-экспорты, `forwardRef` и корневой `<div>` — без изменений. Стили не трогались. ## Как проверить - `npx vitest run src/components/Avatar` — 17/17; `npm run test-unit` — 3410/3410. - `npx eslint src/components/Avatar stories/Avatar` — 0 ошибок и warning'ов. - `npx tsc --noEmit` — новых ошибок относительно main нет, три ошибки `stories/Avatar/Avatar.stories.tsx` ушли. - `npm run syncAiMdTokens -- --check` — по Avatar предупреждений нет, `Avatar.Background` сходится с DesignTokens. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01P7w9DMBfziaT6kaM8KqtXD
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Essentials Run ID: 📒 Files selected for processing (3)
🚧 Files skipped from review as they are similar to previous changes (2)
Included review availability: 4 reviews are currently available. Your included PR review attempts over the past 7 days set your current allowance at 5 reviews per hour. WalkthroughДля ChangesОбновление Avatar
Priority: ⬇️ Low Estimated code review effort: 2 (Simple) | ~10 minutes Change: Other Merge Risk: ⚪ Minimal · up to The Avatar documentation, tests, stories, and release notes changes present no established merge-blocking risk. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
|
🚀 Storybook Preview:
|
There was a problem hiding this comment.
Отревьюил с чистого листа. PR аккуратный и точно попадает в объём type:ai-ready: публичный API не тронут (в enums.ts / types.ts / index.ts только JSDoc, значения EAvatarSize и TAvatarBorderRadius на месте), forwardRef и корневой <div> сохранены, стили не менялись. Проверил локально на 24826f8: npx vitest run src/components/Avatar — 17/17, npx eslint src/components/Avatar stories/Avatar — чисто, npx tsc --noEmit — ни одной ошибки по путям Avatar (три давние ошибки в stories/Avatar/Avatar.stories.tsx действительно ушли). Добавление borderRadius в args сторис Default / Sizes / Example на рендер не влияет — эти примеры args не читают, так что baseline'ы avatar--default|sizes|border-radius корректно остались нетронутыми. Avatar-ai.md совпадает с docs/ai/template-ai.md по набору секций и фактически верен: размеры в таблице сходятся с styles/Avatar.module.less (28/32/40/56/80/96/128), overflow: hidden есть, токен Avatar.Background совпадает с DesignTokens/components/Avatar.ts, имена example-файлов существуют, пустой related оправдан (ни семьи, ни альтернативы, ни контракта по CONTEXT.md). Release notes 1.47.0 — та самая следующая версия после 1.46.0 в package.json, запись одной строкой по commits.md.
Итого: 0 blocker, 1 warning, 3 nit — всё некритичное, мержить можно и без правок.
Отдельно, не про этот PR: проверка «импорты vitest только в *.test.tsx» из docs/ai/tests.md сейчас ловит по репозиторию один файл — src/components/FocusTrapExtended/__tests__/utils.ts (приехал в 1d41234, TRI-100). Это ровно тот паттерн, который дал регрессию 1.39.0; стоит завести отдельную задачу на переезд в корневой test-utils/.
Generated by Claude Code
|
|
||
| **Avatar** | ||
|
|
||
| - Проведён AI-рефакторинг: изменений для потребителя нет. |
There was a problem hiding this comment.
nit: docs/ai/commits.md § «Главное правило» задаёт для рефакторинга без изменений для потребителя ровно одну строку — «Проведён AI-рефакторинг.» Хвост «: изменений для потребителя нет» здесь ничего не добавляет: у Avatar в этом релизе больше нет записей, так что уточнять нечего. У CardStatic ниже формулировка «других изменений» оправдана — она отстраивается от пункта про ref строкой выше, а тут отстраиваться не от чего.
Generated by Claude Code
There was a problem hiding this comment.
Здесь оставляю как есть — это осознанная конвенция владельца для AI-рефакторинга в этой итерации: запись про рефакторинг добавляется всегда, и отсутствие изменений для потребителя проговаривается явно, по образцу соседних записей файла. Формулировка «Проведён AI-рефакторинг: изменений для потребителя нет» ровно это и делает.
Замечание по docs/ai/commits.md справедливо: канонический пример там короче. Расхождение между каноном и практикой имеет смысл закрыть отдельной правкой гайда, а не точечно в этом PR.
Generated by Claude Code
- `Avatar-ai.md` → «Инварианты»: перечислены все пять точек синхронизации набора `TAvatarBorderRadius` (union в `enums.ts`, CSS-класс в LESS, карта в `Avatar.tsx`, `BORDER_RADIUSES` в тесте, `options` в story) — тип стирается при компиляции, рантайм-источника правды у набора нет. - Тест `should render with default props` → `should render with required props`: дефолтов у Avatar нет, оба собственных props обязательные. - `Avatar.stories.tsx`: в описание компонента добавлена строка про скругление — второй обязательный prop со своей story. Публичный API не затронут, рендер не изменён. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01P7w9DMBfziaT6kaM8KqtXD
|
Отработаны замечания ревью (коммит 0b43dff):
Проверки на 0b43dff локально: Также вне этого PR: ревью нашло Generated by Claude Code |
|
🚀 Storybook Preview:
|
Что сделано
TAvatarBorderRadius, уточненыsize/borderRadius,дополнен JSDoc компонента (как задаётся содержимое). Inline-комментарий
над
SIZE_TO_CLASS_NAME_MAPпереведён в JSDoc, второй карте JSDoc добавлен.it.each— размерывыводятся из
Object.values(EAvatarSize), поэтому новые значения enumпокрываются автоматически. Добавлен тест на рендер children, усилена
проверка forwardRef (сверка с реальным корневым узлом). Итого 17 тестов.
src/components/Avatar/Avatar-ai.mdпоdocs/ai/template-ai.md.stories/Avatar/Avatar.stories.tsx: в args сторис Default / Sizes / Exampleдобавлен обязательный
borderRadius— это убирает три давние ошибки tsc.Рендер не меняется: эти примеры args не читают, baseline-скриншоты актуальны.
Публичный API не менялся: имена и типы props, значения
EAvatarSizeиTAvatarBorderRadius, barrel-экспорты,forwardRefи корневой<div>—без изменений. Стили не трогались.
Как проверить
npx vitest run src/components/Avatar— 17/17;npm run test-unit— 3410/3410.npx eslint src/components/Avatar stories/Avatar— 0 ошибок и warning'ов.npx tsc --noEmit— новых ошибок относительно main нет, три ошибкиstories/Avatar/Avatar.stories.tsxушли.npm run syncAiMdTokens -- --check— по Avatar предупреждений нет,Avatar.Backgroundсходится с DesignTokens.Co-Authored-By: Claude Opus 5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01P7w9DMBfziaT6kaM8KqtXD
Summary by CodeRabbit
Документация
Примеры
12.Тесты
ref.Обновления