Перейти к содержанию

Модули бэкенда

Бэкенд стартует как модульный монолит. Каждый пакет — отдельный ограниченный контекст с узкой публичной моделью и сервисным интерфейсом. Так ядро финансового плана остаётся консистентным, а тяжёлые части можно вынести позже.

Текущий стенд уже использует real Spring Boot сервисы с embedded H2; публичный Swagger UI real backend доступен по http://66.42.121.18/finguide-api/swagger-ui.html. Legacy mock server остаётся отдельным переходным модулем, но не является основным API.

les13.finguide.backend
  auth/              интеграция с Keycloak JWT, SecurityConfig, текущий пользователь
  users/             бизнес-профиль пользователя, связанный с Keycloak identity
  plans/             агрегат финансового плана, H2/JDBC demo persistence, cloning seeded plan for authenticated users, read API, финансовый CRUD и политика доступа
  incomes/           модель источников дохода, сохраняется через financial item CRUD
  expenses/          модель расходов и бюджетная классификация, сохраняется через financial item CRUD
  goals/             финансовые цели, waterfall-приоритет и reorder API
  contributions/     фактические взносы в цели
  pension/           пенсионные настройки, preserve-capital и spend-down проекции
  budget/            50/30/20 и бюджетные конверты
  analytics/         предположения из Excel-модели, денежный поток, баланс, сбережения, дашборд, оценка финансового здоровья
  scenarios/         снимки и корректировки сценариев
  importexport/      граница задач импорта/экспорта
  notifications/     производные уведомления, milestone-события и подсказки

Граница аналитической модели

Загруженная Excel-модель — эталон расчётов. Бэкенд владеет логикой Excel-файла; фронтенд её не дублирует.

analytics/
  ModelAssumptions           стартовый год, горизонт/год окончания, инфляция, доходность, начальный капитал
  YearRatePoint              годовая ставка для инфляции и роста строк
  BalanceSnapshot            текущий годовой баланс из листа Баланс
  CashFlowProjectionPoint    годовые доходы, расходы, цели, сбережения, накопленный капитал
  ProjectionCalculator       воспроизводит листы Доходы / Расходы / Цели / Сбережения
  DashboardCalculator        строит карточки дашборда из результатов проекции
pension/
  PensionProjection          варианты preserve-capital и spend-down из листа Пенсия
  PensionSpendDownPoint      годовая строка расходования пенсионного капитала

Входные данные должны быть нормализованы и удобны пользователю: расходы и цели передаются положительными исходящий платёж-суммами. Расчётный слой сам переводит знаки внутрь модели и наружу отдаёт положительные исходящий платёж + netSavings.

Что можно выносить позже

Если нагрузка или границы ответственности команды потребуют разделения, первыми кандидатами на вынос будут:

  • analytics → отдельный обработчик или сервис аналитики, когда пересчёты станут тяжёлыми или асинхронными;
  • importexport → отдельный обработчик или сервис для импорта и экспорта;
  • notifications → отдельный обработчик или сервис для уведомлений.

plans + incomes + expenses + goals + pension лучше держать вместе, пока расчёты финансового плана требуют сильной консистентности.