Sergey Krylov b069575fbb
Some checks failed
CI / ci (pull_request) Failing after 2m51s
CI / ci (push) Failing after 2m38s
refactor(frontend): remove FSD shim files and dead code
- Break entity shim chain: brokerPositionApi, brokerOperationApi now use shared/api/client directly
- Remove all 43 shim re-export files (api/, hooks/, context/, components/, pages/ flat shims, routes.tsx)
- Remove entire pages/broker/ dead code directory
- Remove api/broker.ts after breaking the shim chain
- Switch auth consumers from AuthProvider (shim) to SessionProvider (FSD)
- Fix api/screener.ts imports to use @/shared/api
- Update frontend hooks.md and routes.md documentation
- 2840 lines removed, 71 lines added
2026-06-20 20:42:44 +03:00

85 lines
4.6 KiB
Markdown
Raw 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 FSD Cleanup
Дата: 2026-06-20
Статус: спецификация
## Контекст
FSD-миграция фронтенда выполнена в 5 фаз:
1. Broker pilot — entities broker-account/broker-position/broker-operation + widgets + pages
2. Shared layer — shared/api, shared/ui
3. Entities migration — stock, bond, portfolio, session, search
4. App + auth — providers, routing, layouts
5. Market pages — home/stock/bond pages + widgets
После завершения миграции остались shim-файлы — однострочные re-export из старых путей в новые
FSD-точки входа — а также мёртвый код в `pages/broker/` и старая цепочка entity API-прокси,
которая идёт через `api/broker.ts` вместо прямого вызова `shared/api/client`.
## Цель
Удалить shim-файлы и мёртвый код, разорвав последние цепочки legacy-импортов, чтобы
FSD-структура стала единственной архитектурой фронтенда без дублирующихся точек входа.
## Область изменений
### Удаляемые shim-файлы (re-export only)
- `api/``auth.ts`, `client.ts`, `portfolio.ts`, `responses.ts`, `types.ts`, `broker.test.ts`
- `hooks/` — все файлы, кроме `useScreener.ts`
- `context/``AuthContext.tsx`, `AuthContext.test.tsx`
- `components/` — все файлы, кроме `screener/` и `portfolios/`
- `pages/broker/` — все 13 файлов
- `pages/HomePage.tsx`, `pages/StockPage.tsx`, `pages/BondPage.tsx`
- `routes.tsx`
- Тесты, привязанные к удаляемым shim-файлам
### Переписываемые entity API (разрыв цепочки к `api/broker.ts`)
- `entities/broker-position/api/brokerPositionApi.ts` — прямой вызов `shared/api/client`
- `entities/broker-operation/api/brokerOperationApi.ts` — прямой вызов `shared/api/client`
### Удаляемый мёртвый код
- `api/broker.ts` — после разрыва цепочки перестаёт быть нужен
### Обновляемые потребители (переключение с shim на FSD-импорты)
- `pages/broker/BrokerPages.test.tsx` — импорты из `../../hooks/``entities/broker-*`
- `pages/broker/BrokerAccountsPage.test.tsx` — импорт shim → `pages/broker-accounts`
- `test/test-utils.tsx`, `hooks/useAuth.test.tsx`, `entities/session/model/useSession.test.tsx``AuthProvider` из `context/AuthContext``SessionProvider` из `app/providers/SessionProvider`
### Обновляемая документация
- `apps/docs/docs/frontend/hooks.md` — убрать legacy shim-пути
- `apps/docs/docs/frontend/routes.md` — убрать shim-файлы
## Ограничения
- Изменения ограничены frontend-пакетом.
- Не мигрируется screener (живой код, не shim) — остаётся в текущей структуре.
- Не мигрируется portfolio pages (живой код, не shim) — остаются в текущей структуре.
- Не мигрируется LoginPage/RegisterPage/ProfilePage (живой код, не shim).
- Не меняется поведение UI, API-контракты, роутинг.
- Не вводятся ESLint import boundaries.
## Acceptance Criteria
- `api/` содержит только `screener.ts` (живой код)
- `hooks/` содержит только `useScreener.ts` (живой код)
- `context/` удалён полностью
- `components/` содержит только `screener/` и `portfolios/` (живой код)
- `pages/broker/` удалён полностью
- `pages/HomePage.tsx`, `StockPage.tsx`, `BondPage.tsx` удалены (живут в `pages/home/`, `pages/stock/`, `pages/bond/`)
- `routes.tsx` удалён (живёт в `app/routing/AppRoutes.tsx`)
- `api/broker.ts` удалён
- `entities/broker-position/api/brokerPositionApi.ts` и `entities/broker-operation/api/brokerOperationApi.ts` импортируют напрямую из `shared/api/client`
- Все тестовые файлы, привязанные к удалённым shim-файлам, удалены
- Все потребители переключены на FSD-импорты
- `npm test -w apps/frontend` — PASS
- `npm run lint -w apps/frontend` — PASS
- `npm run build -w apps/frontend` — PASS
- `npm run build -w apps/docs` — PASS
- Документация обновлена