36 lines
1.8 KiB
Markdown
36 lines
1.8 KiB
Markdown
# FSD Final Cleanup
|
|
|
|
## Goal
|
|
|
|
Complete the Feature-Sliced Design (FSD) migration of the frontend codebase by eliminating all remaining architecture compliance gaps — relative cross-layer imports, misplaced components, missing API layers, and deep imports into entity internals.
|
|
|
|
## Requirements
|
|
|
|
### R1: All imports use `@/` path aliases
|
|
No `../../../` or `../../` relative imports across the entire `src/` tree. Every import must use the `@/` alias pointing to `src/`.
|
|
|
|
### R2: BrokerAccountLayout lives in widgets layer
|
|
The `BrokerAccountLayout` component (layout with routing + `useOutletContext`) currently lives in `entities/broker-account/ui/`. It must be moved to `widgets/broker-account-layout/` since it is a page layout, not a business entity.
|
|
|
|
### R3: entities/search has an `api/` layer
|
|
The `searchSecurities` function — a domain API call — currently lives in `shared/api/client.ts`. It must be moved to `entities/search/api/searchApi.ts` so that each entity owns its domain calls.
|
|
|
|
### R4: App layer uses barrel imports
|
|
Files in `app/` must import from entity barrel files (`@/entities/session`) rather than deep-importing into `model/` or `api/` subdirectories.
|
|
|
|
### R5: Tests use `@/` path aliases
|
|
All test files must import `test/server` and `test/test-utils` via `@/` prefix instead of relative paths.
|
|
|
|
## Constraints
|
|
|
|
- Only modify imports and restructure entities/search and BrokerAccountLayout. Do not change business logic.
|
|
- Share `request()` from shared/api — `entities/search/api/searchApi.ts` imports `request` from shared.
|
|
- `entities/broker-account/index.ts` barrel exports remain unchanged.
|
|
|
|
## Out of Scope
|
|
|
|
- Moving `styles.css` or `main.tsx` into `app/`
|
|
- Type deduplication (`responses.ts` vs `types.ts`)
|
|
- Moving `src/test/` to `shared/lib/tests/`
|
|
- Refactoring `entities/broker-account/model/brokerAccountsOverview` deep imports
|