36 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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