refactor: align frontend ownership boundaries

Close audit gaps across API drift, query policy, UI, and tests.
This commit is contained in:
2026-09-06 18:20:05 +03:00
parent 175727bc93
commit c97f62bd98
118 changed files with 2190 additions and 2254 deletions
+8 -11
View File
@@ -9,9 +9,8 @@
- Публичный импорт слайса идёт через его `index.ts`.
- Тесты лежат рядом с исходником как `*.test.tsx`.
- Зависимости используют exact versions; не добавлять semver ranges.
- Главный `*.view.tsx` страницы не содержит несколько state-компонентов:
каждый state/section — отдельный `*.view.tsx` в `components/` (см. File roles).
- Полный локальный gate: `npm run verify`. Pre-commit запускает staged formatting, OpenAPI check и FSD dependency checks; commit message должен следовать Conventional Commits.
- Полный локальный gate: `npm run verify`. Pre-commit запускает staged formatting
и FSD dependency checks; commit message должен следовать Conventional Commits.
## React component style
@@ -39,11 +38,9 @@ Mandatory review conventions:
- `Component.types.ts` - props и локальные типы.
- `Component.module.css` - локальные стили.
State-компоненты страницы не колоцируются в одном `*.view.tsx`. Каждый
top-level state (loading, error, empty, loaded) и каждый именуемый section
выносится в отдельный `*.view.tsx` в подпапку `components/`. Имя файла
отражает state/section: `AccountOperationsPageLoaded.view.tsx`,
`AccountOperationsPageLoading.view.tsx`, `AccountOperationsPageError.view.tsx`.
Контейнер (`AccountOperationsPage.tsx`) импортирует их из `./components` и
выбирает нужный по `viewModel.state`. Нельзя держать несколько state components
внутри одного файла view — это mandatory review convention.
Самостоятельный top-level state или именуемый section обычно выносится в
соседний `*.view.tsx`, когда у него есть отдельная responsibility, reuse либо
change cadence или он скрывает principal component. Небольшой tightly-coupled
renderer остаётся рядом с parent. Предпочтительный flat pattern —
`components/AccountOperationsPageLoaded.view.tsx` без отдельной директории,
barrel, test и stylesheet для каждого компонента.