3.2 KiB
3.2 KiB
Backend Architecture Improvements — Tasks
Итерация 1: Shared envelope DTO + consistency fixes ✅
- 1.1 Создать документ аудита в
docs/research/ - 1.2 Вынести
ApiResponseMetaвcommon/dto/api-response.dto.tsкак единый shared класс - 1.3 Заменить
AuthResponseMetaDtoнаApiResponseMetaвauth/ - 1.4 Заменить
PortfolioResponseMetaDtoнаApiResponseMetaвportfolio/ - 1.5 Заменить
BrokerResponseMetaDtoнаApiResponseMetaвtbank/ - 1.6 Поправить
shares/shares.service.ts:getShare()— обернуть вApiEnvelopePayload - 1.7 Убрать лишний импорт
CacheModuleизsecurities/securities.module.ts - 1.8 Удалить дублирующиеся envelope DTO (
ScreenerResponseMetaDto,AuthResponseMetaDto,PortfolioResponseMetaDto,BrokerResponseMetaDto) - 1.9
npm run buildуспешен, 116 тестов проходят
Итерация 2: Screener caching ✅
- 2.1 Добавить
screenerTtlв конфиг (900s default) - 2.2 Перевести screener на отдельный TTL
- 2.3 Тест на cache key + ttl config key
Итерация 3: Domain exceptions ✅
- 3.1 Создать
common/exceptions/domain.exception.ts - 3.2 Создать
common/exceptions/entity-not-found.exception.ts - 3.3 Создать
common/exceptions/moex-api.exception.ts - 3.4 Создать
common/exceptions/tbank-api.exception.ts(+TBankNotConfiguredException) - 3.5 Создать
common/exceptions/portfolio-access.exception.ts - 3.6 Обновить
HttpExceptionFilterс логгированием необработанных ошибок - 3.7 Заменить generic исключения в shares, bonds, portfolio, tbank сервисах
- 3.8 Обновлены все тесты (117 проходят)
Итерация 4: Health check ✅
- 4.1 Создан
HealthServiceсcheckPrisma()— реальный SQL-запрос - 4.2 Добавлен
checkMoex()— HTTP-запрос к ISS MOEX с 5s timeout - 4.3 Добавлен
checkTBank()— проверка наличия токена - 4.4
HealthResponseDtoобновлён: добавлено полеchecks: HealthCheckResultDto[] - 4.5 Модуль обновлён (imports PrismaModule, providers HealthService)
- 4.6 Тесты:
health.service.spec.ts(3 теста) +envelope-contract.spec.tsпроверяет checks - Все 120 тестов проходят
Итерация 5: RequestLoggingMiddleware DI ✅
- 5.1
AppModuleimplementsNestModuleсconfigure()→consumer.apply(RequestLoggingMiddleware).forRoutes('*') - 5.2 Убран
new RequestLoggingMiddleware()иapp.use()изmain.ts - 120 тестов проходят, build успешен
Итерация 6: MoexClientService split → docs/features/moex-client-split/
- 6.1 ADR на разделение MoexClientService
- 6.2 spec/plan/tasks отдельного эпика → перенесено в
docs/features/moex-client-split/{spec,plan,tasks}.md