# MoexClientService Split ## Цель Разделить God Service `MoexClientService` на инфраструктурный слой и набор доменных клиентов, устранив нарушение SRP и улучшив тестируемость. ## Требования 1. `MoexHttpClient` — выделить инфраструктуру (axios, PQueue, circuit breaker, `request()`, `extractTable()`) 2. Доменные клиенты — по одному на группу MOEX-запросов: - `MoexSecuritiesClient` — поиск и описание ценных бумаг - `MoexMarketDataClient` — рыночные данные акций и облигаций - `MoexCandlesClient` — свечи - `MoexHistoryClient` — история торгов - `MoexDividendsClient` — дивиденды 3. Убрать `@Global()` — каждый потребитель явно импортирует `MoexClientModule` 4. `MoexHttpClient` не экспортируется из модуля (внутренняя деталь) 5. Все MOEX-типы остаются в `moex-client.types.ts` 6. API-контракт всех потребителей не меняется — только DI ## Ограничения - Один коммит на всю миграцию (нельзя половинчатое состояние) - Не менять сигнатуры публичных методов — только перенос кода - Не менять типы в `moex-client.types.ts` - Каждое изменение через TDD-цикл ## Критерии приемки (Acceptance Criteria) - [ ] `MoexClientService` удалён, все 11 методов распределены по 5 доменным клиентам - [ ] `MoexHttpClient` содержит rate limiter + circuit breaker - [ ] `@Global()` убран с `MoexClientModule` - [ ] Все 7 потребителей обновлены: явный импорт модуля + новые DI - [ ] Все тесты проходят (существующие обновлены) - [ ] `npm run build` успешен