# ADR-010: Расчёт цен на backend **Статус:** Accepted **Дата:** 2026-06-14 ## Контекст Позициям портфеля нужны текущие рыночные цены для расчёта стоимости. Нужно решить, где выполнять расчёт: на backend или frontend. ## Решение Рассчитывать цены на backend. `GET /api/v1/portfolios/:id` возвращает полностью рассчитанный `PortfolioDetailResponseDto` с `currentPrice`, `currentValue`, `weightPercent` и `deviation` для каждой позиции. ## Обоснование - Единый источник правды для финансовых расчётов - Frontend получает готовые к отображению данные - Backend cache сокращает количество запросов к MOEX API - Frontend не делает N отдельных запросов цен ## Последствия - Backend делает N запросов к MOEX при чтении портфеля; они кешируются с TTL 900s - Portfolio endpoint не может использовать наивное response caching, потому что цены считаются для пользователя - При одновременном просмотре портфелей многими пользователями растёт нагрузка на backend