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