docs: update frontend overview for portfolio FSD migration
This commit is contained in:
parent
4d6e6620d7
commit
697c4d708a
@ -32,68 +32,51 @@ apps/frontend/src/
|
||||
│ ├── AppLayout.tsx # Шапка + <Outlet/>
|
||||
│ └── index.ts
|
||||
├── api/
|
||||
│ ├── auth.ts # re-export shim → entities/session/api
|
||||
│ ├── client.ts # HTTP-клиент (fetch)
|
||||
│ ├── portfolio.ts # Portfolio API helpers
|
||||
│ ├── responses.ts # Типы ответов (ручные)
|
||||
│ ├── screener.ts # Screener API helpers
|
||||
│ └── types.ts # Типы из openapi-typescript
|
||||
├── context/
|
||||
│ └── AuthContext.tsx # re-export shim → app/providers/SessionProvider
|
||||
│ └── screener.ts # Screener API helpers (не мигрирован)
|
||||
├── hooks/
|
||||
│ ├── useAuth.ts # re-export shim → entities/session/model
|
||||
│ ├── usePortfolio.ts
|
||||
│ ├── usePortfolioAnalytics.ts
|
||||
│ ├── usePortfolioMutations.ts
|
||||
│ ├── usePortfolios.ts
|
||||
│ ├── usePositionMutations.ts
|
||||
│ ├── useScreener.ts
|
||||
│ ├── useSearch.ts
|
||||
│ ├── useStock.ts
|
||||
│ ├── useStockCandles.ts
|
||||
│ ├── useStockDividends.ts
|
||||
│ ├── useBond.ts
|
||||
│ └── useBondCandles.ts
|
||||
│ └── useScreener.ts # Screener hook (не мигрирован)
|
||||
├── components/
|
||||
│ ├── Layout.tsx # re-export shim → app/layouts
|
||||
│ ├── ProtectedRoute.tsx # re-export shim → app/routing
|
||||
│ ├── SearchBar.tsx
|
||||
│ ├── PriceChart.tsx
|
||||
│ ├── StockDetails.tsx
|
||||
│ ├── BondDetails.tsx
|
||||
│ └── portfolios/
|
||||
├── entities/
|
||||
│ ├── session/ # FSD: auth/session (api, model/context + hook)
|
||||
│ ├── broker-account/ # FSD: account slice (api, model, ui)
|
||||
│ ├── broker-position/ # FSD: position slice (api, model)
|
||||
│ └── broker-operation/ # FSD: operation slice (api, model)
|
||||
├── widgets/
|
||||
│ ├── broker-account-card/ # FSD: account card widget
|
||||
│ ├── broker-accounts-summary/ # FSD: accounts summary widget
|
||||
│ ├── broker-allocation-chart/ # FSD: allocation chart widget
|
||||
│ └── broker-operations-table/ # FSD: operations table widget
|
||||
├── pages/
|
||||
│ ├── HomePage.tsx
|
||||
│ ├── StockPage.tsx
|
||||
│ ├── BondPage.tsx
|
||||
│ ├── LoginPage.tsx
|
||||
│ ├── RegisterPage.tsx
|
||||
│ ├── ProfilePage.tsx
|
||||
│ ├── portfolios/
|
||||
│ ├── screener/
|
||||
│ ├── broker-accounts/ # FSD: page entrypoint
|
||||
│ ├── broker-account/ # FSD: page entrypoint
|
||||
│ ├── broker-positions/ # FSD: page entrypoint
|
||||
│ └── broker-operations/ # FSD: page entrypoint
|
||||
│ └── screener/ # Screener UI (не мигрирован)
|
||||
├── entities/ # FSD business entities
|
||||
│ ├── session/ # Auth/session (api, model)
|
||||
│ ├── stock/ # Акции (api, model)
|
||||
│ ├── bond/ # Облигации (api, model)
|
||||
│ ├── portfolio/ # Портфели (api, model)
|
||||
│ └── search/ # Поиск (model)
|
||||
├── widgets/ # FSD compositional widgets
|
||||
│ ├── stock-details/ # Детальная карточка акции
|
||||
│ ├── bond-details/ # Детальная карточка облигации
|
||||
│ ├── price-chart/ # График цены
|
||||
│ ├── dividends-table/ # Таблица дивидендов
|
||||
│ ├── search-bar/ # Поисковая строка
|
||||
│ ├── portfolio-card/ # Карточка портфеля
|
||||
│ ├── portfolio-form/ # Форма портфеля
|
||||
│ ├── portfolio-summary/ # Сводка портфеля (график + стоимость)
|
||||
│ ├── portfolio-analytics/ # Метрики портфеля
|
||||
│ ├── share-positions-table/ # Таблица позиций-акций
|
||||
│ └── bond-positions-table/ # Таблица позиций-облигаций
|
||||
├── pages/ # FSD page entrypoints
|
||||
│ ├── home/ # Главная
|
||||
│ ├── stock/ # Страница акции
|
||||
│ ├── bond/ # Страница облигации
|
||||
│ ├── login/ # Вход
|
||||
│ ├── register/ # Регистрация
|
||||
│ ├── profile/ # Профиль
|
||||
│ ├── portfolios/ # Список и детальная портфеля
|
||||
│ ├── screener/ # Скринер (не мигрирован)
|
||||
│ └── broker-*/ # Брокерские страницы
|
||||
├── test/
|
||||
│ ├── factories.ts # Фабрики тестовых данных
|
||||
│ ├── handlers.ts # MSW handlers
|
||||
│ └── test-utils.tsx
|
||||
│ ├── server.ts # MSW server
|
||||
│ ├── test-utils.tsx # Обёртка рендера
|
||||
│ └── setup.ts # Настройка jsdom
|
||||
└── styles.css
|
||||
```
|
||||
|
||||
## FSD-миграция
|
||||
|
||||
### app-слой и session-сущность
|
||||
### app-слой
|
||||
|
||||
Создан `app/` слой FSD, в который перенесены инфраструктурные модули:
|
||||
|
||||
@ -102,21 +85,41 @@ apps/frontend/src/
|
||||
- `app/layouts/` — AppLayout (шапка + Outlet)
|
||||
- `app/App.tsx` — BrowserRouter → AppRoutes
|
||||
|
||||
Домен auth переведён в `entities/session/`:
|
||||
### entities
|
||||
|
||||
- `entities/session/api/` — login, register, logout, refresh, getMe, updateProfile
|
||||
- `entities/session/model/` — SessionContext, useSession
|
||||
Домены бизнес-сущностей переведены в FSD:
|
||||
|
||||
Старые файлы (`api/auth.ts`, `hooks/useAuth.ts`, `context/AuthContext.tsx`, `routes.tsx`, `components/Layout.tsx`, `components/ProtectedRoute.tsx`, `App.tsx`) сохранены как ре-экспорт шмы для обратной совместимости.
|
||||
| Сущность | api | model | ui |
|
||||
|----------|-----|-------|----|
|
||||
| `session` | login, register, refresh, logout, getMe, updateProfile | SessionContext, useSession | — |
|
||||
| `stock` | getStock, getStockCandles, getStockDividends | useStock, useStockCandles, useStockDividends | — |
|
||||
| `bond` | getBond, getBondCandles | useBond, useBondCandles | — |
|
||||
| `portfolio` | CRUD портфелей и позиций, аналитика | usePortfolio, usePortfolios, usePortfolioAnalytics, usePortfolioMutations, usePositionMutations | — |
|
||||
| `search` | — | useSearch | — |
|
||||
|
||||
### broker-домен (пилот)
|
||||
Каждая сущность имеет barrel-файл `index.ts`, реэкспортирующий публичное API.
|
||||
|
||||
Broker-домен переведён в пилотный FSD срез:
|
||||
### widgets
|
||||
|
||||
- `pages/broker-*` — тонкие route entrypoints
|
||||
- `widgets/broker-*` — screen-level композиция
|
||||
- `entities/broker-*` — доменные срезы (api, model, ui)
|
||||
Композиционные блоки UI. Каждый виджет — директория с `index.ts` и `ui/`:
|
||||
|
||||
### Остальные домены
|
||||
- `stock-details`, `bond-details` — детальные карточки бумаг
|
||||
- `price-chart`, `dividends-table` — графики и таблицы
|
||||
- `search-bar` — поиск с автодополнением
|
||||
- `portfolio-card`, `portfolio-form`, `portfolio-summary`, `portfolio-analytics` — UI портфелей
|
||||
- `share-positions-table`, `bond-positions-table` — таблицы позиций
|
||||
|
||||
`portfolio`, `screener` пока остаются в исторической технической структуре.
|
||||
### pages
|
||||
|
||||
Страницы-точки входа. FSD-страницы мигрированы: `home/`, `stock/`, `bond/`, `broker-*`. Временно не мигрированы: `portfolios/`, `screener/`, `LoginPage.tsx`, `RegisterPage.tsx`, `ProfilePage.tsx`.
|
||||
|
||||
### Не мигрировано
|
||||
|
||||
Скринер остаётся в исторической структуре:
|
||||
|
||||
- `api/screener.ts` — API-вызовы
|
||||
- `hooks/useScreener.ts` — логика с URLSearchParams
|
||||
- `components/screener/` — FilterPanel, FilterPanelBond, FilterPanelShare, ScreenerTable
|
||||
- `pages/screener/ScreenerPage.tsx` — страница
|
||||
|
||||
ESLint-правила на границы импортов FSD пока не введены.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user