5.4 KiB
Frontend Guide: Migration
Как трактовать legacy
Legacy не означает “удалить немедленно”. Это означает:
- решение нельзя копировать в новые места
- при касании блока нужно оценить перевод на target state
- если перевод пока невозможен, причина должна быть понятна и зафиксирована
Что можно рефакторить массово
Без отдельного UX-исследования обычно можно:
- приводить card-like контейнеры к
rounded-xlиrounded-2xl - убирать
rounded-mdу карточек и стандартных полей - сокращать
rounded-[...]у обычных секций - подтягивать простые inputs, buttons и surfaces к
app-*primitives
Что требует ручного review
Ручной review обязателен для:
- сложных форм
- compose workflows
- multi-step dialogs
- dropdown-полей со сложным поведением
- drawer-like и workspace-like интерфейсов
- экранов, где геометрия тесно завязана на сценарий использования
Что нельзя делать механически
Без отдельного обоснования нельзя:
- брать удачный экран и переделывать его под другой визуальный жанр только ради декомпозиции
- считать, что выравнивание
rounded-*автоматически решает проблему согласованности системы - копировать успешный local layout в другие зоны без проверки, совпадает ли у экранов тип сценария
Особенно важно:
requestsсейчас ближе к общему operational style проектаusers/profileвизуально неплох, но местами ощущается как screen из другого продукта- это означает, что refactor должен сначала фиксировать продуктовый character экрана, а уже потом править geometry/detail-level debt
Приоритет рефакторинга
Рекомендуемый порядок:
- карточки и surface hierarchy
- сокращение custom radii
- выравнивание shared affordance
- только после этого формы по отдельным UX-паттернам
Ориентиры по крупным зонам
requests
Использовать как ориентир по compose-настроению и декомпозиции насыщенного экрана.
Сейчас это reference для:
- идеи “форма как рабочее пространство”
- разрезания page-level orchestration и feature-level list/detail/controls/preview блоков
- вынесения screen-specific router/menu/deep-link orchestration в отдельный hook
- feature containers уровня list-section / swipe-mode panel, которые собирают несколько leaf-компонентов внутри одного сценария
procurement
Хороший кандидат для следующей волны нормализации крупных panel-контейнеров и detail cards.
С оговоркой:
- зона крупная и функционально богатая, но в ней заметно смешение app-style и gray/white legacy fragments
- refactor должен идти не только по page-level layout, но и по дочерним panels/forms
equipment
Подходит для рефакторинга secondary cards и form blocks, потому что там много повторяющейся геометрии.
settings
Сильный ориентир по primary/secondary surface hierarchy, но там ещё встречаются кастомные радиусы, которые нужно сокращать.
users/profile
Использовать как ориентир по profile anatomy:
- hero
- section stack
- contacts/info/timeline decomposition
С оговоркой:
- профиль нельзя считать полным stylistic reference для всего приложения
- эту зону нужно подтянуть ближе к общему product feel без потери profile-specific anatomy
documents
Ключевая зона для аудита legacy-геометрии: заметно смешение rounded-md, rounded-lg, rounded-xl и локальных utility-решений.
Правила локального override
Локальный override допустим только если:
- задача не покрывается существующим primitive
- решение действительно локально
- override не ломает base semantics цвета, surface или focus behavior
- у него есть понятное обоснование
Если override начинает повторяться, он должен быть поднят в shared layer.