2.1 KiB
Raw Blame History

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 успешен