Skip to content

TRI-10 Avatar: AI-рефакторинг, unit-тесты, AI.md - #616

Open
dudim-ai wants to merge 2 commits into
mainfrom
TRI-10-avatar-ai-ready
Open

TRI-10 Avatar: AI-рефакторинг, unit-тесты, AI.md#616
dudim-ai wants to merge 2 commits into
mainfrom
TRI-10-avatar-ai-ready

Conversation

@dudim-ai

@dudim-ai dudim-ai commented Sep 14, 2026

Copy link
Copy Markdown
Contributor

Что сделано

  • 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

Summary by CodeRabbit

  • Документация

    • Добавлена подробная документация компонента Avatar: свойства, размеры и радиусы, accessibility-рекомендации и ограничения.
    • Уточнены описания параметров, размеров и скругления.
  • Примеры

    • В примерах Avatar явно задан радиус скругления 12.
  • Тесты

    • Улучшены проверки размеров, радиусов, дочерних элементов и передачи ref.
  • Обновления

    • Обновлена дорожная карта покрытия Avatar.
    • Подтверждено отсутствие изменений поведения компонента для потребителей.

## Что сделано

- 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
@coderabbitai

coderabbitai Bot commented Sep 14, 2026

Copy link
Copy Markdown
Contributor

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Essentials

Run ID: e6aede3b-f088-420a-b25f-54c17748d4ad

📥 Commits

Reviewing files that changed from the base of the PR and between 24826f8 and 0b43dff.

📒 Files selected for processing (3)
  • src/components/Avatar/Avatar-ai.md
  • src/components/Avatar/__tests__/Avatar.test.tsx
  • stories/Avatar/Avatar.stories.tsx
🚧 Files skipped from review as they are similar to previous changes (2)
  • src/components/Avatar/tests/Avatar.test.tsx
  • stories/Avatar/Avatar.stories.tsx

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

Для Avatar добавлена документация и уточнены комментарии API. Тесты стали параметризованными и проверяют дочерний элемент и ref. В stories добавлен borderRadius: 12. Функциональная логика компонента не изменена.

Changes

Обновление Avatar

Layer / File(s) Summary
Документация и комментарии Avatar
src/components/Avatar/Avatar-ai.md, src/components/Avatar/Avatar.tsx, src/components/Avatar/enums.ts, src/components/Avatar/types.ts
Добавлена документация компонента. Уточнены комментарии для размеров, радиусов и CSS-классов. Типы и функциональная логика не изменены.
Параметризованные тесты Avatar
src/components/Avatar/__tests__/Avatar.test.tsx
Проверки размеров и радиусов переведены на it.each. Добавлены проверки дочернего элемента и соответствия ref найденному DOM-элементу.
Stories и release notes
stories/Avatar/Avatar.stories.tsx, docs/ai/ROADMAP.md, stories/release-notes/v1/1.47.0.mdx
В трёх stories добавлен borderRadius: 12. В roadmap отмечено завершение покрытия Avatar. В release notes зафиксирован AI-рефакторинг без изменений для потребителя.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Other

Merge Risk: ⚪ Minimal · up to 0b43d

The Avatar documentation, tests, stories, and release notes changes present no established merge-blocking risk.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed Заголовок точно отражает основные изменения: AI-рефакторинг Avatar, обновление unit-тестов и добавление AI.md. Формулировка краткая и понятная.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 5…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch TRI-10-avatar-ai-ready

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown
Contributor

🚀 Storybook Preview:

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Отревьюил с чистого листа. 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

Comment thread src/components/Avatar/__tests__/Avatar.test.tsx
Comment thread src/components/Avatar/__tests__/Avatar.test.tsx Outdated

**Avatar**

- Проведён AI-рефакторинг: изменений для потребителя нет.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: docs/ai/commits.md § «Главное правило» задаёт для рефакторинга без изменений для потребителя ровно одну строку — «Проведён AI-рефакторинг.» Хвост «: изменений для потребителя нет» здесь ничего не добавляет: у Avatar в этом релизе больше нет записей, так что уточнять нечего. У CardStatic ниже формулировка «других изменений» оправдана — она отстраивается от пункта про ref строкой выше, а тут отстраиваться не от чего.


Generated by Claude Code

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Здесь оставляю как есть — это осознанная конвенция владельца для 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
@claude

claude Bot commented Sep 14, 2026

Copy link
Copy Markdown
Contributor

Отработаны замечания ревью (коммит 0b43dff):

  • warning про дублирование набора TAvatarBorderRadius — зафиксировал все пять точек синхронизации в «Инвариантах» Avatar-ai.md; вариант с новым публичным экспортом из enums.ts не брал (за рамками AI-рефакторинга).
  • nit про имя теста — переименован в should render with required props.
  • nit из summary про meta-описание stories — в docs.description.component добавлена строка «Скругление: 6, 8, 10, 12, 16 px», раз borderRadius такой же обязательный prop со своей story.
  • nit про формулировку в release notes 1.47.0 — оставлено как есть, тред не резолвлю: это конвенция владельца (запись про AI-рефакторинг с явным «изменений для потребителя нет», по образцу соседней записи CardStatic). Расхождение с каноническим примером в docs/ai/commits.md стоит закрыть отдельной правкой гайда.

Проверки на 0b43dff локально: vitest run src/components/Avatar — 17/17, eslint src/components/Avatar stories/Avatar — чисто, tsc --noEmit — 0 ошибок по Avatar (71 строка вывода, как и на main), syncAiMdTokens --check — ок. Публичный API и рендер не затронуты.

Также вне этого PR: ревью нашло src/components/FocusTrapExtended/__tests__/utils.ts с импортом vitest не в *.test.ts* (пришёл в TRI-100) — тот же паттерн, что дал регрессию 1.39.0. Нужна отдельная задача на переезд в корневой test-utils/.


Generated by Claude Code

@github-actions

Copy link
Copy Markdown
Contributor

🚀 Storybook Preview:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants