2.9 KiB
2.9 KiB
Frontend FSD Screener
Дата: 2026-06-20 Статус: спецификация
Контекст
Предыдущие FSD-итерации мигрировали broker-домен, shared-слой, entities, app-слой c auth, market pages и portfolios.
Скринер остаётся единственным крупным блоком кода вне FSD-структуры: api/screener.ts, hooks/useScreener.ts, components/screener/ (4 файла), плоская pages/screener/ScreenerPage.tsx. Также это первая возможность создать слой features/ — первый feature-slice в проекте.
Цель
Перевести скринер в FSD, создав features/screener/ — первый feature-slice, и мигрировав pages/screener/ в FSD-структуру.
Область изменений
features/screener/— новый слой; включает API-функцию, хук с URLSearchParams + TanStack Query, UI-компоненты (FilterPanel, FilterPanelShare, FilterPanelBond, ScreenerTable)pages/screener/— миграция из плоской страницы в FSD с barrel exportapp/routing/AppRoutes.tsx— обновление импорта- Удаление legacy:
api/screener.ts,hooks/useScreener.ts,components/screener/(4 файла),pages/screener/ScreenerPage.tsx
Требования
1. Features слой
features/screener/содержит полную реализацию скринера: API, модель (URLSearchParams + TanStack Query), UI (фильтры, таблица)- Public API (
index.ts) экспортирует:useScreener,FilterPanel,FilterPanelShare,FilterPanelBond,ScreenerTable - Запрещены глубокие импорты в
model/илиui/извнеfeatures/screener/
2. Pages слой
pages/screener/— тонкая композиция, только импортирует изfeatures/screener- Public API (
index.ts) экспортируетScreenerPage
3. Совместимость
- Никаких shim-файлов не требуется — скринер не имеет внешних потребителей кроме
AppRoutes - Поведение страницы скринера не меняется
Критерии приемки (Acceptance Criteria)
npm test -w apps/frontend— PASSnpm run lint -w apps/frontend— PASSnpm run build -w apps/frontend— PASS- Нет deep imports в
features/screener/model/илиfeatures/screener/ui/извне pages/screener/импортируется только через barrel (@/pages/screener)features/screener/импортируется только через barrel (@/features/screener)- Все legacy-файлы удалены