2.3 KiB
2.3 KiB
API Envelope Runtime Contract — Tasks
Task 1: Добавить ApiEnvelopePayload и обновить TransformInterceptor
- Добавить
ApiEnvelopePayload<T>класс вapi-response.dto.ts - Обновить
TransformInterceptor— распознаватьApiEnvelopePayload - Проверить сборку (
npm run build -w apps/backend)
Task 2: Migrate services — ApiEnvelopePayload вместо { data, meta }
- SharesService: getMarketData, getDividends, getHistory
- BondsService: getBond, getMarketData, getHistory
- CandlesService.getCandles
- BrokerAccountsService.findAll
- BrokerPortfolioService.getPortfolio, getPositions
- BrokerEventsService.getEvents
- BrokerAnalyticsService.getAnalytics
- BrokerOperationsService.getOperations
- Проверить сборку
Task 3: Migrate controllers — plain data returns вместо ручного envelope
- SharesController.getShare
- SecuritiesController.search, screener
- PortfolioController: все методы
- AuthController: все методы
- TBankController: stop ApiResponse wrapping
- Проверить сборку
Task 4: Update backend tests
- tbank.controller.spec.ts — ApiResponse → ApiEnvelopePayload
- broker-accounts.service.spec.ts — result.meta → result
- broker-analytics.service.spec.ts
- broker-events.service.spec.ts
- broker-portfolio.service.spec.ts
- broker-operations.service.spec.ts
- broker-operation-sync.service.spec.ts
- shares.service.spec.ts
- securities.service.spec.ts
- screener.service.spec.ts
- portfolio.service.spec.ts
- Запустить
npm test -w apps/backend
Task 5: HTTP contract tests
- Создать
apps/backend/src/envelope-contract.spec.tsс тестами single envelope - Запустить contract tests
Task 6: Simplify frontend normalizeEnvelope
- Убрать double-wrap detection из
normalizeEnvelope() - Запустить
npm test -w apps/frontend - Запустить
npm run build -w apps/frontend
Task 7: Final verification
npm test -w apps/backendnpm test -w apps/frontendnpm run build -w apps/backendnpm run build -w apps/frontend- OpenAPI artifacts check
- docs consistency check