4.4 KiB
FSD Entities Migration
Дата: 2026-06-20 Статус: в работе
Контекст
Продолжается поэтапный переход frontend на Feature-Sliced Design (FSD). После успешного пилота
broker-домена (frontend-fsd-broker-pilot) и создания shared-слоя (frontend-fsd-shared-layer)
следующий шаг — миграция core domain entities: stock, bond, portfolio.
В текущей структуре их код размазан по техническим каталогам:
- API-функции акций и облигаций находятся в
shared/api/client.ts(вместе с HTTP-инфраструктурой) - API-функции портфелей находятся в
api/portfolio.ts(в legacy-папке) - TanStack Query хуки находятся в
hooks/(5 файлов для portfolio + 3 для stock + 2 для bond) - Типы уже централизованы в
shared/api/responses.ts
Это усложняет навигацию, поддержку и дальнейшее масштабирование FSD-архитектуры.
Цель
Перенести stock, bond и portfolio домены в FSD-сущности (entities/) по тому же паттерну, что и
broker-account/broker-position/broker-operation:
entities/stock/— API-функции и query-хуки для акцийentities/bond/— API-функции и query-хуки для облигацийentities/portfolio/— API-функции и query-хуки для портфелей
Требования
1. Каждая сущность получает явную FSD-структуру
api/— чистые функции запросов (без TanStack Query, толькоrequestвызовы)model/— TanStack Query хуки и бизнес-логикаindex.ts— barrel export (только re-exports, без логики)
2. API-функции выносятся из shared/api/client.ts
shared/api/client.ts должен содержать только инфраструктуру:
request— базовый HTTP-клиентsetAccessToken,getAccessToken,setOnUnauthorized— управление токенамиsearchSecurities— поиск (кросс-доменный)getHealth— health check
Все stock/bond API-функции переезжают в соответствующие entity api/.
3. Query-хуки переносятся из global hooks/
Все TanStack Query хуки для stock, bond и portfolio переезжают из hooks/ в
entities/{entity}/model/.
4. Совместимость на время перехода
Старые файлы становятся re-export шимами, чтобы избежать big-bang переписывания. Потребители (страницы) обновляются на новые FSD-импорты в рамках этой же фичи.
5. Тесты следуют за кодом
Unit-тесты и hook-тесты перемещаются рядом с новым расположением кода.
6. Поведение не меняется
Никакой функциональности не добавляется и не изменяется. Только перегруппировка кода.
Ограничения
- Не затрагиваются
features/иapp/слои — они будут в следующих итерациях - Не затрагиваются
useSearch,useScreener,api/auth.ts,api/screener.ts - Не меняются
shared/api/responses.tsи generated types - Не меняются backend-контракты
Acceptance Criteria
entities/stock/существует с api/model/index.ts, все тесты проходятentities/bond/существует с api/model/index.ts, все тесты проходятentities/portfolio/существует с api/model/index.tsshared/api/client.tsбольше не содержит stock/bond API-функций- Все страницы (StockPage, BondPage, PortfolioDetailPage, PortfoliosListPage) импортируют из новых entity entrypoints
- Старые файлы стали re-export шимами
- Frontend lint, tests и build проходят