- 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
4.6 KiB
4.6 KiB
Frontend FSD Cleanup
Дата: 2026-06-20 Статус: спецификация
Контекст
FSD-миграция фронтенда выполнена в 5 фаз:
- Broker pilot — entities broker-account/broker-position/broker-operation + widgets + pages
- Shared layer — shared/api, shared/ui
- Entities migration — stock, bond, portfolio, session, search
- App + auth — providers, routing, layouts
- 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.tshooks/— все файлы, кромеuseScreener.tscontext/—AuthContext.tsx,AuthContext.test.tsxcomponents/— все файлы, кромеscreener/иportfolios/pages/broker/— все 13 файловpages/HomePage.tsx,pages/StockPage.tsx,pages/BondPage.tsxroutes.tsx- Тесты, привязанные к удаляемым shim-файлам
Переписываемые entity API (разрыв цепочки к api/broker.ts)
entities/broker-position/api/brokerPositionApi.ts— прямой вызовshared/api/cliententities/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-accountstest/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— PASSnpm run lint -w apps/frontend— PASSnpm run build -w apps/frontend— PASSnpm run build -w apps/docs— PASS- Документация обновлена