Corp/docs/guides/frontend/05-MIGRATION.md

111 lines
5.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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
## Приоритет рефакторинга
Рекомендуемый порядок:
1. карточки и surface hierarchy
2. сокращение custom radii
3. выравнивание shared affordance
4. только после этого формы по отдельным 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.