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

Документация FinGuide

Документация backend/API для FinGuide / «Финансовый капитал».

FinGuide строится как contract-first продукт: frontend редактирует входные данные финансового плана, backend владеет хранением, безопасностью и расчётами. Текущий этап — переход от mock/localStorage прототипа к real Spring Boot backend с persisted demo state и Keycloak/OIDC boundary.

Быстрые ссылки

Legacy mock больше не входит в публичный deployment contract; старые mock artifacts оставлены только для переходного сравнения в коде/исторических отчётах.

Что читать первым

Текущий статус коротко

Реализовано в real backend:

  • API index;
  • GET /me;
  • GET /plans/current;
  • dashboard/health/cashflow and scenario CRUD/compare;
  • analytics assumptions, current balance, yearly projection, pension settings and pension projection from persisted state;
  • CRUD incomes/expenses/goals;
  • goals reorder;
  • Keycloak JWT Resource Server boundary;
  • user-owned current plan после логина;
  • защита authenticated users от чтения/мутации чужих планов;
  • frontend session restore без demo/default profile flash;
  • GHCR image publishing для backend/web и Kubernetes rollout через finguide-ops;
  • #16 OpenAPI coverage guard: real Springdoc защищён от регрессий относительно checked-in OpenAPI;
  • #13 persisted scenario CRUD/compare: user scenarios are adjustment deltas, built-ins are read-only;
  • #26 общий anonymous demo seed plan read-only для мутаций;
  • #4 analytics/pension endpoints строятся из persisted plan state;
  • #11 pension settings endpoints реализованы поверх persisted state;
  • #10 contributions ledger endpoints реализованы поверх persisted state; Goal.savedAmount теперь выводится из суммы взносов.

Следующий backend guardrail: сократить оставшийся gap между checked-in OpenAPI и real Springdoc, не ломая уже реализованные operations.

Главная договорённость

Frontend не должен дублировать финансовую математику. Backend принимает persisted PlanState и ModelAssumptions, затем строит производные данные:

PlanState + ModelAssumptions
  -> годовой денежный поток
  -> сбережения и накопленный капитал
  -> пенсионная проекция
  -> dashboard, health score, scenarios CRUD/compare

Канонический расчётный endpoint:

GET /plans/{planId}/analytics/cashflow