Model danych
Cały stan planu to jeden spójny obiekt (w trybie chmurowym przechowywany jako
jsonb na gospodarstwo). Najważniejsze elementy:
Pozycje portfela
Inwestycje i dług (kredyt). Każda pozycja ma m.in.: wartość bieżącą, wpłatę
docelową, stopę (oprocentowanie/zwrot), cel, ratę/okres/datę wykupu oraz
kategorię (categoryId).
Opcjonalnie: typ konta (accountKind — IKE/IKZE/PPK/PPE/OIPE/zwykłe/bank,
wrapper podatkowy), instrument (instrumentType — ETF/akcje/obligacje/…),
znacznik JDG (wyższy limit IKZE), ticker/ISIN/alokacja docelowa, właściciel
i beneficjent. Pola są wstecznie kompatybilne — brak typu konta = zachowanie jak
dotąd.
Aktywa poza portfelem
Nieruchomości, działki, gotówka, pojazdy — wartość i opcjonalna stopa wzrostu.
Każde aktywo ma klasę (assetClass): cash (gotówka/oszczędności),
real_estate (nieruchomości; realEstateUsage: główne/wynajem/działka) lub
physical_asset (rzeczowe: physicalKind auto/sprzęt/kolekcja). Brak klasy →
wnioskowana (gotówka po nazwie, inaczej nieruchomość), więc starsze dane działają
bez migracji. Flagi includeInInvestable / liquid sterują soczewkami majątku
(domyślne wg klasy), a growth opisuje zachowanie w projekcji (patrz
Jak liczymy).
Cele
Większe wydatki z kwotą, terminem i postępem odkładania.
Wpisy miesięczne
Per miesiąc: przychody (per osoba), wpłaty/nadpłaty z podziałem na osoby (suma trafia do obliczeń), budżet na oszczędności, raty kredytu, ocena kosztów życia, notatka, oznaczenie „kto z domowników zrobił przegląd" oraz ile już doliczono do wartości portfela (pozwala doliczać przyrostowo, bez podwójnego liczenia).
Kategorie
Grupowanie pozycji definiowane przez użytkownika (categories: Category[] w
stanie). Każda kategoria ma id, nazwę, kolor (z palety) i opcjonalne emoji;
kolejność na liście = kolejność wyświetlania. Domyślny zestaw to Emerytura,
Inwestycje, Kredyt, Obligacje, Crypto — ale można je dowolnie zmieniać,
dodawać i usuwać (Ustawienia → Kategorie). Migracja ze starego modelu „filarów"
(stałe I–V) mapuje je na kategorie ze stałymi id (Bitcoin → Crypto), bez utraty
przypisań pozycji.
Profil i preferencje
- Profil planu (współdzielony w Duo): imiona, kraj, data urodzenia, główny cel.
- Preferencje urządzenia (NIE synchronizowane): język, motyw, rola w planie.
Snapshoty wartości netto
Lekki zapis wartości netto per miesiąc — zasila trend majątku (30 dni / 12 mies.).
Każdy odczyt i zapis danych przechodzi przez walidację (Zod) — patrz Bezpieczeństwo.