moex-vibe/apps/docs/docs/adr/ADR-010-backend-price-computation.md
Sergey Krylov 106467e5c4
All checks were successful
CI / lint (pull_request) Successful in 2m8s
CI / test (pull_request) Successful in 1m57s
CI / build (pull_request) Successful in 2m5s
CI / lint (push) Successful in 2m1s
CI / test (push) Successful in 1m51s
CI / build (push) Successful in 2m9s
docs: translate docs to russian
2026-06-16 05:13:34 +03:00

1.5 KiB
Raw Blame History

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