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

Текущее состояние реализации

Эта страница фиксирует фактическое состояние real Spring Boot backend и публичного demo-стенда. Она важнее старых mock-артефактов: mock остаётся только как переходный эталон для сравнения контрактов.

Публичный стенд

Backend

Текущий backend — Java 21 + Spring Boot 3.3 + Spring Security OAuth2 Resource Server + Spring Data JDBC + embedded H2 demo persistence.

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

  • GET /api/v1 — индекс API;
  • GET /api/v1/me — профиль текущего пользователя из JWT / demo контекста;
  • GET /api/v1/plans/current — текущий план;
  • GET /plans/{planId}/dashboard;
  • GET /plans/{planId}/analytics/health;
  • GET /plans/{planId}/analytics/cashflow;
  • GET /scenarios — read-only список сценариев;
  • CRUD доходов, расходов и целей;
  • POST /plans/{planId}/goals/reorder;
  • Keycloak/OIDC boundary: JWT validation, audience check, lazy local profile mapping, user-owned current plan after first authenticated request, plan ownership checks;
  • frontend/auth bootstrap fixes: authenticated session no longer reuses anonymous demo cache/default profile;
  • H2 seed data from schema.sql + data.sql.

Текущая checked-in OpenAPI спецификация шире real Springdoc. Guardrail-задача: #16.

Demo/H2 режим

По умолчанию используется:

jdbc:h2:mem:finguide;MODE=PostgreSQL;DATABASE_TO_UPPER=false;DB_CLOSE_DELAY=-1
FINGUIDE_DEMO_MODE=true
spring.sql.init.mode=always

Anonymous requests читают seeded plan 22222222-2222-4222-8222-222222222222. Authenticated users получают собственный cloned current plan. Запрет мутации общего anonymous seed выделен в отдельную задачу #26.

Frontend

Текущий frontend — React 19 + TypeScript + Vite + TanStack Query/Router + Orval generated API client.

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

  • публичный deploy под /fg/;
  • OIDC Authorization Code + PKCE через Keycloak;
  • разделение React Query cache для anonymous demo и authenticated user;
  • нейтральный loader во время auth/current-plan restore;
  • persisted sidebar counters из /plans/current;
  • real API base для demo deploy: /finguide-api/api/v1.

Что ещё не реализовано

Основные открытые группы:

  • analytics/pension из persisted state — #4;
  • PUT /plans/current#7;
  • profile/avatar/account mutations — #8;
  • contributions ledger — #10;
  • pension settings — #11;
  • budget/monthly tracker — #12;
  • scenarios CRUD/compare — #13;
  • import/export — #14;
  • notifications — #15;
  • frontend generated client smoke — finguide-web#2.