1.5 KiB
1.5 KiB
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