# MoexClientService Split — Tasks ## Этап 1: Создание инфраструктурного клиента - [ ] 1.1 Создать `moex-http.client.ts` — перенести `request()`, `extractTable()`, circuit breaker, PQueue из `MoexClientService` - [ ] 1.2 Написать unit-тесты для `MoexHttpClient` - [ ] 1.3 Написать тест на circuit breaker (threshold → open → reset) ## Этап 2: Создание доменных клиентов - [ ] 2.1 `MoexSecuritiesClient` — `searchSecurities()`, `getSecurityDescription()` - [ ] 2.2 `MoexMarketDataClient` — `getShareMarketData()`, `getShareMarketDataBatch()`, `getBondData()`, `getBondMarketData()`, `getBondPositionDataBatch()` - [ ] 2.3 `MoexCandlesClient` — `getCandles()` - [ ] 2.4 `MoexHistoryClient` — `getHistory()`, `getBondHistory()` - [ ] 2.5 `MoexDividendsClient` — `getDividends()` - [ ] 2.6 Написать unit-тесты для каждого доменного клиента (mocked http client) ## Этап 3: Обновление модуля - [ ] 3.1 Убрать `@Global()` из `MoexClientModule` - [ ] 3.2 Добавить новые клиенты в providers/exports - [ ] 3.3 Убрать старый `MoexClientService` из providers - [ ] 3.4 Проверить, что `MoexHttpClient` не экспортируется ## Этап 4: Миграция потребителей - [ ] 4.1 `shares/` — обновить модуль, сервис, тесты - [ ] 4.2 `bonds/` — обновить модуль, сервис, тесты - [ ] 4.3 `candles/` — обновить модуль, сервис, тесты - [ ] 4.4 `securities/` — обновить модуль, securities.service, screener.service, тесты - [ ] 4.5 `portfolio/` — обновить модуль, сервис, тесты - [ ] 4.6 `tbank/` — обновить broker-events.service, тесты ## Этап 5: Финализация - [ ] 5.1 Удалить старый `moex-client.service.ts` - [ ] 5.2 `npm run build` успешен - [ ] 5.3 Все тесты проходят - [ ] 5.4 Обновить `docs/features/backend-architecture-improvements/tasks.md` — отметить Iteration 6 как выполненную