Модули бэкенда¶
Бэкенд стартует как модульный монолит. Каждый пакет — отдельный ограниченный контекст с узкой публичной моделью и сервисным интерфейсом. Так ядро финансового плана остаётся консистентным, а тяжёлые части можно вынести позже.
Текущий стенд уже использует 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 лучше держать вместе, пока расчёты финансового плана требуют сильной консистентности.