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