Generated file. Source:
docs/product_spec.mdEdit the source document and runnpm run docs:syncto refresh this published copy.
Specyfikacja Produktowa¶
Dokument PM -> Developer¶
| Pole | Wartość |
|---|---|
| Produkt | Kalkulator Obligacji Skarbowych |
| Klasa dokumentu | authoritative product specification |
| Status dokumentu | active |
| Wersja | 1.1 |
| Ostatni przegląd | 2026-03-24 |
| Właściciel dokumentu | Product Manager |
| Odbiorca główny | Developer |
| Cel dokumentu | utrzymać wspólne rozumienie produktu, zakresu, statusu wdrożenia i kierunku rozwoju oraz ułatwić przekazywanie pracy między etapami |
Spis treści¶
- Cel dokumentu i sposób użycia
- Kontekst produktu i problem użytkownika
- Wizja produktu i cele biznesowe
- Stan implementacji i mapa zakresu
- Mapa źródeł prawdy
- Obowiązujące decyzje projektowe
- Grupy użytkowników
- Ekrany produktu i ich odpowiedzialność
- Diagramy i materiały wizualne
- Główne przepływy użytkownika
- Parametry wejściowe i ich znaczenie
- Zasady prezentacji i interpretacji wyników
- Wymagania funkcjonalne
- Wymagania dotyczące danych
- Granice produktu i odpowiedzialności warstw
- Wymagania UX/UI
- Wymagania niefunkcjonalne
- Roadmapa produktu
- Zależności i ryzyka
- Kryteria akceptacji
- Jak używać tej specyfikacji przy handoffie
- Otwarte pytania
- Dokumenty powiązane
1. Cel dokumentu i sposób użycia¶
1.1 Po co istnieje ten dokument¶
Dokument ma:
- opisać produkt z perspektywy biznesowej i użytkowej
- wskazać, co jest już wdrożone, a co dopiero planowane
- dać developerowi mapę: gdzie szukać logiki, danych i decyzji projektowych
- wspierać przejęcie pracy na dowolnym etapie bez zgadywania aktualnego stanu produktu
1.2 Czego ten dokument nie zastępuje¶
Ten dokument nie zastępuje:
- dokumentacji technicznej silnika obligacji
- dokumentacji logiki konkretnych strategii
- osobnego dokumentu roadmapy produktu
- testów
- implementacji w kodzie
Te rzeczy są powiązane z niniejszą specyfikacją, ale nie są tu powielane w detalach implementacyjnych.
1.3 Jak czytać ten dokument¶
Przy pracy developerskiej należy czytać dokument w tej kolejności:
Stan implementacji i mapa zakresuObowiązujące decyzje projektowe- sekcję odpowiadającą obszarowi, który ma być zmieniany
Dokumenty powiązane
1.4 Znaczenie statusów¶
W dokumencie używane są statusy:
Implemented- zachowanie istnieje w aktualnym produkcieImplemented / disabled- element jest obecny w produkcie, ale świadomie nie jest aktywny funkcjonalniePlanned- zachowanie jest zatwierdzonym kierunkiem, ale nie jest jeszcze wdrożoneOut of scope- zachowanie nie należy do bieżącego zakresu
2. Kontekst produktu i problem użytkownika¶
2.1 Problem użytkownika¶
Użytkownik detaliczny zainteresowany obligacjami skarbowymi ma dziś kilka praktycznych trudności:
- nie widzi szybko, która obligacja jest najlepsza dla jego konkretnego horyzontu inwestycji
- nie rozumie, jak na wynik wpływają podatki, inflacja, koszt przedterminowego wykupu i reinwestycja
- nie ma prostego sposobu porównania różnych obligacji rok po roku
- materiały źródłowe zwykle opisują parametry emisji, ale nie pokazują pełnego wyniku inwestycji w czytelnej formie
2.2 Dlaczego to ma znaczenie¶
Ten problem ma znaczenie, bo użytkownik:
- podejmuje decyzję finansową
- może wybrać obligację nieoptymalną dla swojego horyzontu
- może błędnie interpretować oprocentowanie jako wynik końcowy
- może nie rozumieć, że część kosztów i podatków pojawia się dopiero w końcowym rozliczeniu
2.3 Szansa produktowa¶
Produkt ma dwa poziomy potencjału:
- kalkulator porównawczy obligacji
- fundament pod przyszły produkt portfelowy oparty o konkretne emisje i historię inwestora
3. Wizja produktu i cele biznesowe¶
3.1 Cel główny¶
Dać użytkownikowi wiarygodne, czytelne i szybkie narzędzie do porównania opłacalności inwestycji w detaliczne obligacje skarbowe.
3.2 Cele szczegółowe¶
- zwiększyć zrozumienie różnic między typami obligacji
- ułatwić wybór najlepszego instrumentu dla danego horyzontu
- pokazać wynik końcowy i przebieg inwestycji w czasie
- przygotować produkt i warstwę danych pod przyszły rozwój portfelowy
3.3 Wizja długoterminowa¶
Docelowo produkt ma dojść do stanu, w którym:
- dane wejściowe są częściowo aktualizowane automatycznie
- użytkownik może pracować na scenariuszach inflacyjnych
- możliwe jest modelowanie regularnych inwestycji
- istnieje baza danych emisji i fundament pod portfel inwestycyjny
- użytkownik może uruchomić kalkulator także przez asystenta, który zadaje pytania, wypełnia formularz i uruchamia tę samą symulację co tryb ręczny
4. Stan implementacji i mapa zakresu¶
4.1 Status modułów produktu¶
| Obszar | Status | Uwagi |
|---|---|---|
| Wybór obligacji do porównania | Implemented |
Kafelki i tabela, logika dostępności obligacji rodzinnych; bez limitu kwotowego 800+ |
| Parametry inwestycji | Implemented |
Kwota, okres, inflacja, stopa referencyjna, 800+ |
| Typ rachunku | Implemented / disabled |
Widoczne w UI, bez wpływu na obliczenia |
| Wykres porównawczy | Implemented |
Przełączanie metryk i trybu słupkowy/liniowy oraz respektowanie globalnego trybu analizy |
| Podsumowanie wyników | Implemented |
Tabela i kafelki, ranking, filtry kolumn oraz respektowanie globalnego trybu analizy |
| Szczegółowa tabela roczna | Implemented |
Widok pojedynczej obligacji i widok porównawczy, filtry kolumn, wybór obligacji, dwa układy grupowania danych oraz respektowanie globalnego trybu analizy: przebieg inwestycji / rozliczenie rok po roku; lokalny interfejs przełącznika steruje tym samym wspólnym stanem co wykres |
Strona Jak działa kalkulator |
Implemented |
Dokumentacja in-app dla użytkownika |
Strona Roadmapa produktowa |
Implemented |
Komunikacja kierunku rozwoju |
| Asystent wejścia do kalkulatora | Planned |
Przyszły dialogowy kanał wejścia do tego samego formularza i silnika |
Logika IKE / IKZE |
Out of scope |
UI przygotowane, logika odłożona |
| Automatyczne dane rynkowe | Planned |
Referencyjna stopa, warunki emisji |
| Predykcje inflacji i scenariusze | Planned |
Etapy roadmapy |
| Portfel obligacji | Planned |
Kierunek długoterminowy |
4.2 Status rodzin logiki obligacji¶
| Rodzina / strategia | Status | Uwagi |
|---|---|---|
OTS |
Implemented |
Własna strategia kwartalna |
ROR, DOR |
Implemented |
Wspólna rodzina monthly-income |
TOS, EDO, ROS, ROD |
Implemented |
Wspólna rodzina annual-accumulation |
COI |
Implemented |
Rodzina annual-payout |
4.3 Co jest aktualnym zakresem MVP+¶
Za aktualny produkt uznajemy:
- kompletny kalkulator porównawczy dla wszystkich wspieranych obligacji
- poprawną interpretację wyników w UI
- wsparcie dokumentacyjne w produkcie
- stabilną bazę architektoniczną pod dalszy rozwój
4.4 Mapa handoffu dla głównych obszarów¶
| Obszar | Gdzie sprawdzić produktowo | Gdzie sprawdzić technicznie | Co zwykle trzeba zaktualizować przy zmianie |
|---|---|---|---|
| Wybór obligacji | ten dokument, sekcja 13 | selection.ts, store, komponent wyboru obligacji |
UI, tooltipy, eligibility rules |
| Parametry inwestycji | ten dokument, sekcja 11 | store, formularz, engine normalization | UI, help text, validacja |
| Interpretacja wyników | ten dokument, sekcja 12 | docs rodzin strategii, komponenty wyników | UI, tooltipy, docs techniczne |
| Wykres i podsumowanie | ten dokument, sekcje 8, 12, 16 | komponenty wyników, store | UI, metryki, filtry |
| Tabela roczna | ten dokument, sekcje 8, 12, 20 | komponent tabeli, event contract | UI, filtry, komunikaty statusów |
| Logika obligacji | ten dokument, sekcje 6 i 12 | bond_engine_architecture.md i docs per-bond |
docs techniczne, testy, prompt |
| Dane i roadmapa | ten dokument, sekcje 14, 18 | przyszła warstwa danych | roadmapa, acceptance criteria, docs |
5. Mapa źródeł prawdy¶
5.1 Źródło prawdy dla wymagań produktowych¶
- ten dokument: product_spec.md
5.1a Źródło prawdy dla roadmapy produktu¶
5.2 Źródło prawdy dla architektury silnika¶
5.2a Źródło prawdy dla kontraktu modelu wyników¶
5.2aa Źródło prawdy dla warstwy modeli interpretacyjnych¶
5.2b Źródło prawdy dla kontraktów danych i persistence¶
- data_persistence_contracts.md
- jawny kontrakt portfela na poziomie snapshotów:
types.ts: src/app/domain/portfolio/types.ts- jawny kontrakt historii predykcji:
types.ts: src/app/domain/prediction-history/types.ts- runtime repozytorium zapisanych symulacji:
repository.ts: src/app/domain/persistence/repository.ts- runtime serwis zapisanych symulacji:
service.ts: src/app/domain/persistence/service.ts- runtime repozytorium i serwis historii predykcji:
repository.ts: src/app/domain/prediction-history/repository.tsservice.ts: src/app/domain/prediction-history/service.ts
5.3 Źródło prawdy dla rodzin strategii¶
monthly-income:- ROR_logic.md
- DOR_logic.md
annual-accumulation:- annual_accumulation_logic.md
- TOS_logic.md
- EDO_logic.md
- ROS_logic.md
- ROD_logic.md
annual-payout:- annual_payout_logic.md
- COI_logic.md
- strategia własna:
- ODS_logic.md - historyczna nazwa dokumentu dla strategii
OTS
5.4 Źródło prawdy dla stanu UI¶
- store aplikacji:
useCalculatorStore.ts: src/app/store/useCalculatorStore.tspersistence.ts: src/app/store/persistence.tstypes.ts: src/app/store/types.ts- zasada odpowiedzialności:
- historia sesji kalkulatora należy do store
- trwałe zapisane symulacje należą do warstwy persistence
repository/service - kompozycja produktu:
App.tsx: src/app/App.tsx
5.5 Zasada aktualizacji¶
Przy każdej zmianie product behavior należy ocenić, czy trzeba zaktualizować:
- tę specyfikację
- dokument roadmapy produktu
- dokumentację techniczną odpowiedniej rodziny
- dokumentację konkretnej obligacji
- komunikaty i tooltipy w UI
5.6 Źródło prawdy dla aktualnego stanu produktu¶
Jeśli ten dokument, UI i dokumentacja techniczna wydają się niespójne, należy przyjąć taką kolejność weryfikacji:
- ten dokument określa wymaganie produktowe
- dokument roadmapy określa kolejność i zakres przyszłych etapów
- dokumentacja techniczna określa zamierzoną implementację
- kod i testy pokazują bieżący stan rzeczywisty
Jeśli punkt 1 lub 2 nie zgadzają się z punktami 3 i 4, należy potraktować to jako debt do wyjaśnienia, a nie jako domyślne zachowanie produktu.
6. Obowiązujące decyzje projektowe¶
To są decyzje obowiązujące teraz. Nie należy ich zmieniać nieświadomie przy kolejnych iteracjach.
6.1 Wynik końcowy interpretujemy przez ostatni rok¶
- użytkownik może analizować przebieg inwestycji w latach pośrednich
- kalkulator symuluje rzeczywisty przebieg inwestycji, więc finalną ocenę dla horyzontu
X latnależy opierać na ostatnim roku tabeli rocznej i wynikach końcowych - powód: podatki i koszty nie zawsze są realizowane od razu
6.2 Obligacje rodzinne są filtrowane przez eligibility, nie przez engine¶
ROSiRODsą zależne od800+- reguła wyboru należy do warstwy selekcji, nie do warstwy symulacji
- na tym etapie kalkulator świadomie nie kontroluje jeszcze limitu kwotowego zakupu wynikającego z wysokości otrzymanych świadczeń
6.3 Typ rachunku jest na razie wyłączony¶
Rachunek maklerski / IKE / IKZEjest widoczny w produkcie- przełączanie jest wyłączone
- nie wpływa na wynik kalkulatora
6.4 Wartość brutto i netto mają stałą semantykę¶
Wartość brutto= wartość portfela przed podatkami i kosztami już zrealizowanymi do danego momentuWartość netto= wartość portfela po podatkach i kosztach już zrealizowanych- w ostatnim roku
Wartość nettooznacza wynik końcowego rozliczenia - lata pośrednie pokazują przede wszystkim przebieg inwestycji i stan portfela w toku, a nie jeszcze osobny ujednolicony tryb odpowiedzi na pytanie: ile dostanę, jeśli zakończę inwestycję dokładnie w tym roku
6.5 Produkt nie jest jeszcze portfelem inwestycyjnym¶
- bieżąca wersja jest kalkulatorem porównawczym
- roadmapa i warstwa danych mają przygotować grunt pod portfel, ale portfel nie należy do obecnego zakresu
7. Grupy użytkowników¶
7.1 Użytkownik podstawowy¶
Osoba fizyczna, która:
- chce porównać detaliczne obligacje skarbowe
- zna podstawowe pojęcia finansowe, ale nie chce liczyć wszystkiego ręcznie
- potrzebuje prostego, czytelnego porównania
7.2 Użytkownik zaawansowany¶
Osoba, która:
- świadomie porównuje różne scenariusze inflacyjne
- zwraca uwagę na podatek, reinwestycję i wykup
- chce analizować wyniki rok po roku
7.3 Użytkownik przyszły¶
Osoba, która w przyszłości mogłaby:
- prowadzić portfel obligacji
- śledzić konkretne emisje
- aktualizować stan inwestycji w czasie
- porównywać historyczny zakup z aktualnym stanem portfela
- uruchamiać kalkulator przez dialog z asystentem zamiast ręcznie uzupełniać cały formularz
8. Ekrany produktu i ich odpowiedzialność¶
8.1 Kalkulator¶
Status: Implemented
Odpowiedzialność:
- umożliwić pełne porównanie obligacji bez opuszczania aplikacji
- zebrać dane wejściowe użytkownika
- pokazać wynik końcowy i przebieg inwestycji
Zawiera:
- wybór obligacji
- parametry inwestycji
- wykres porównawczy
- podsumowanie wyników
- szczegółową tabelę roczną
8.2 Jak działa kalkulator¶
Status: Implemented
Odpowiedzialność:
- wyjaśnić użytkownikowi jak korzystać z aplikacji
- zmniejszyć ryzyko błędnej interpretacji metryk
8.3 Roadmapa produktowa¶
Status: Implemented
Odpowiedzialność:
- pokazać kierunek rozwoju produktu
- osadzić aktualny kalkulator w szerszej wizji
8.4 Asystent wejścia do kalkulatora¶
Status: Planned
Odpowiedzialność:
- przeprowadzić użytkownika przez pytania o parametry inwestycji
- wypełnić formularz za użytkownika na podstawie odpowiedzi
- uruchomić tę samą symulację, z której korzysta tryb ręczny
- oddać użytkownikowi gotowy stan formularza i wynik z możliwością dalszej ręcznej korekty
9. Diagramy i materiały wizualne¶
Ta sekcja ma skracać czas wejścia w produkt. Diagramy Mermaid pokazują logikę i granice odpowiedzialności, a placeholdery pod screeny definiują, jakie ujęcia UI warto dodać do dokumentacji.
9.1 Diagram przepływu produktu¶
flowchart LR
A[Uzytkownik ustawia parametry] --> B[Warstwa selekcji]
B --> C[Wybor dozwolonych obligacji]
C --> D[Silnik symulacji]
D --> E[Wyniki roczne]
D --> F[Wyniki koncowe]
E --> G[Wykres i tabela roczna]
F --> H[Podsumowanie i ranking]
G --> I[Interpretacja w UI]
H --> I
Cel diagramu:
- pokazać drogę od wejścia użytkownika do wyników
- rozdzielić selekcję instrumentów od samej symulacji
- ułatwić nowej osobie zrozumienie, gdzie kończy się logika produktu, a zaczyna prezentacja
9.2 Diagram granic odpowiedzialności warstw¶
flowchart TB
subgraph Selection[Warstwa selekcji]
S1[Eligibility]
S2[Sanityzacja wyboru]
S3[Reguly 800+]
end
subgraph Engine[Warstwa silnika]
E1[Strategie obligacji]
E2[Podatki i wykup]
E3[Reinwestycja]
E4[Wyniki roczne i koncowe]
end
subgraph UI[Warstwa UI]
U1[Formularz]
U2[Wykres]
U3[Podsumowanie]
U4[Tabela roczna]
U5[Dokumentacja in-app]
end
Selection --> Engine
Engine --> UI
Cel diagramu:
- utrwalić granicę
selection -> engine -> UI - zmniejszyć ryzyko wrzucania reguł eligibility do silnika
- pomóc przy handoffie i review zmian
9.3 Diagram interpretacji wynikow¶
flowchart TD
A[Uzytkownik patrzy na rok N] --> B{Czy to ostatni rok horyzontu?}
B -- Tak --> C[Traktuj jako wynik koncowego rozliczenia]
B -- Nie --> D[Traktuj jako stan inwestycji w toku]
D --> E[Przydatne do zrozumienia przebiegu]
D --> F[Nie zawsze rowne pytaniu ile dostane po zamknieciu inwestycji]
C --> G[To jest glowna podstawa decyzji koncowej]
Cel diagramu:
- utrwalić najważniejszą zasadę interpretacji produktu
- odróżnić lata pośrednie od ostatniego roku
- ograniczyć ryzyko błędnego czytania tabel i wykresu
9.4 Diagram logiki 800+¶
flowchart TD
A[Czy uzytkownik zaznaczyl 800+?] --> B{Tak czy nie}
B -- Tak --> C[ROS i ROD sa dostepne w selekcji]
B -- Nie --> D[ROS i ROD sa niedostepne]
C --> E[Silnik liczy je jak inne obligacje rodzinne]
E --> F[Na obecnym etapie brak kontroli limitu kwotowego swiadczen]
Cel diagramu:
- jasno pokazać aktualny stan produktu
- podkreślić, że obecny etap świadomie nie implementuje limitu kwotowego
800+ - rozdzielić dostępność w UI od logiki symulacji
9.5 Diagram roadmapy i zaleznosci etapow¶
flowchart LR
P0[Etap 0\nDomkniecie logiki MVP] --> P1[Etap 1\nAutomatyzacja danych]
P1 --> P2[Etap 2\nBaza danych i zapis symulacji]
P2 --> P3[Etap 3\nModel inflacyjny]
P3 --> P4[Etap 4\nScenariusze min/max]
P3 --> P5[Etap 5\nSymulator zmiennosci]
P2 --> P6[Etap 6\nRegularne inwestowanie i IKE/IKZE]
P3 --> P6
P4 --> P6
P5 --> P6
P6 --> P7[Etap 7\nAsystent wejscia]
Cel diagramu:
- pokazać kolejność rozwoju produktu
- wyjaśnić zależności między danymi, predykcją i przyszłym portfelem, z uwzględnieniem tego, że
Etap 4iEtap 5są opcjonalnymi rozszerzeniami poEtapie 3 - ułatwić PM i developerowi planowanie scope
9.6 Placeholder screenow do uzupelnienia¶
Screen 1. Glowne wejscie do kalkulatora¶
Placeholder: TODO_SCREEN_01_MAIN_CALCULATOR_ENTRY
Na screenie powinno być uchwycone:
- cały górny obszar kalkulatora w widoku desktopowym
- formularz parametrów inwestycji
- sekcja wyboru obligacji
- widoczny stan zaznaczenia
800+ - widoczny stan wyłączonego wyboru
IKE / IKZE - przynajmniej kilka wybranych obligacji, w tym jedna rodzinna i jedna standardowa
Cel screenu:
- pokazać punkt wejścia użytkownika
- pokazać, które parametry są naprawdę aktywne
- pokazać, że część funkcji jest widoczna, ale jeszcze nieaktywna
Screen 2. Wykres i podsumowanie wynikow¶
Placeholder: TODO_SCREEN_02_RESULTS_OVERVIEW
Na screenie powinno być uchwycone:
- wykres porównawczy z co najmniej trzema obligacjami
- aktywna jedna konkretna metryka, najlepiej
Wartość nettoalboZysk realny - podsumowanie wyników bezpośrednio pod wykresem lub obok niego
- widoczna różnica między sekcją trendu a sekcją rankingu końcowego
Cel screenu:
- pokazać, że wykres i podsumowanie pełnią różne role
- pomóc czytelnikowi zrozumieć, gdzie patrzeć na trend, a gdzie na wynik końcowy
Screen 3. Szczegolowa tabela roczna¶
Placeholder: TODO_SCREEN_03_YEARLY_TABLE
Na screenie powinno być uchwycone:
- tabela roczna w widoku desktopowym
- widoczny przełącznik
Pojedyncza obligacja / Widok porównawczy - kilka aktywnych kolumn, w tym
Wartość brutto,Wartość netto,PodatkilubKoszty - widoczny ostatni rok oraz przynajmniej jeden rok pośredni
- jeśli to możliwe, widoczny wiersz z wykupem lub momentem istotnej zmiany stanu
- jeśli to możliwe, widoczny status
Wcześn. wykupalboPełny wykup
Cel screenu:
- pokazać, jak użytkownik analizuje przebieg inwestycji rok po roku
- pokazać, że ta sama sekcja wspiera też porównanie wielu obligacji w ujęciu rocznym
- wesprzeć wyjaśnienie, że lata pośrednie nie są tym samym co końcowe rozliczenie
Screen 4. Strona Jak dziala kalkulator¶
Placeholder: TODO_SCREEN_04_HOW_IT_WORKS
Na screenie powinno być uchwycone:
- górna część strony z najważniejszą zasadą interpretacji wyników
- sekcja tłumacząca metryki albo widoki wyników
- widoczne ostrzeżenie, że końcową ocenę inwestycji opiera się o ostatni rok
Cel screenu:
- pokazać, że produkt ma warstwę edukacyjną w aplikacji
- udokumentować sposób komunikacji ograniczeń i semantyki wyników
Screen 5. Strona roadmapy produktowej¶
Placeholder: TODO_SCREEN_05_PRODUCT_ROADMAP
Na screenie powinno być uchwycone:
- przynajmniej pierwsze 2-3 etapy roadmapy
- widoczny
Etap 0 - widoczne zależności między zamknięciem MVP, automatyzacją danych i dalszą rozbudową produktu
Cel screenu:
- pokazać aktualny kierunek rozwoju
- wesprzeć handoff między pracą nad obecnym kalkulatorem a przyszłymi etapami
9.7 Zasada utrzymania materialow wizualnych¶
- diagramy Mermaid powinny być aktualizowane razem ze zmianą logiki produktu lub roadmapy
- screenshoty powinny być odświeżane, jeśli zmienia się struktura ekranu, interpretacja wyników albo komunikacja ograniczeń
- docelowe pliki screenshotow powinny trafiać do katalogu
docs/assets/product-spec/ - nazwa pliku screenshotu powinna odpowiadać placeholderowi, np.
TODO_SCREEN_01_MAIN_CALCULATOR_ENTRY->docs/assets/product-spec/screen_01_main_calculator_entry.png - po dodaniu realnego screenshotu placeholder w tekście powinien zostać zastąpiony linkiem do pliku
- jeśli dokument tekstowy i materiał wizualny są niespójne, trzeba potraktować to jako debt dokumentacyjny do zamknięcia
10. Główne przepływy użytkownika¶
10.1 Porównanie kilku obligacji¶
- Użytkownik wybiera obligacje do porównania.
- Ustawia parametry inwestycji.
- Analizuje wykres i podsumowanie wyników.
- Dla decyzji końcowej patrzy na wynik z ostatniego roku inwestycji.
10.2 Analiza jednej obligacji rok po roku¶
- Użytkownik wybiera obligację.
- Przechodzi do szczegółowej tabeli rocznej.
- Sprawdza rok po roku, kiedy schodzą podatki, kiedy pojawia się wykup i jak zmienia się wartość netto.
10.2a Porównanie wielu obligacji rok po roku¶
- Użytkownik przełącza tabelę na
Widok porównawczy. - Wybiera zestaw danych widocznych w tabeli.
- Przełącza układ grupowania na
ObligacjealboParametry. - Porównuje roczne przebiegi kilku obligacji w jednej tabeli bez opuszczania ekranu wyników.
10.3 Zrozumienie logiki produktu¶
- Użytkownik otwiera stronę
Jak działa kalkulator. - Czyta opis parametrów, metryk i interpretacji.
- Wraca do kalkulatora z lepszym rozumieniem wyniku.
10.4 Przyszły flow: wejście przez asystenta¶
- Użytkownik na wejściu wybiera, czy chce skorzystać z asystenta.
- Asystent zadaje pytania o parametry inwestycji, np. kwotę startową, dopłaty cykliczne, horyzont,
800+i typ rachunku. - Asystent mapuje odpowiedzi na stan formularza.
- Kalkulator uruchamia standardową symulację na tych samych zasadach co tryb ręczny.
- Użytkownik dostaje gotowy wynik i może ręcznie skorygować formularz przed ponownym przeliczeniem.
11. Parametry wejściowe i ich znaczenie¶
11.1 Kwota inwestycji¶
Status: Implemented
- wpływa na liczbę kupionych obligacji
- wpływa na moment dokupienia kolejnych obligacji z odsetek lub gotówki
11.2 Okres inwestycji¶
Status: Implemented
- określa długość symulacji
- wpływa na to, czy obligacja dojdzie do naturalnego wykupu, czy zakończy się przedterminowym rozliczeniem
- jest kluczowy dla interpretacji wyniku końcowego
11.3 Inflacja¶
Status: Implemented
- wpływa na obligacje indeksowane inflacją
- wpływa na wartość realną i zysk realny
11.4 Stopa referencyjna NBP¶
Status: Implemented
- wpływa na obligacje zmiennoprocentowe
11.5 800+¶
Status: Implemented
- odblokowuje obligacje rodzinne
ROSiROD - nie zmienia logiki symulacji dla innych obligacji
- na tym etapie kalkulator świadomie nie obsługuje jeszcze limitu kwotowego zakupu wynikającego z wysokości pobranych świadczeń
800+
11.6 Typ rachunku¶
Status: Implemented / disabled
- obecnie ma charakter informacyjny
- jest przygotowany pod przyszły rozwój logiki
IKE / IKZE
12. Zasady prezentacji i interpretacji wyników¶
12.1 Wartość brutto¶
Wartość portfela przed podatkami i kosztami już zrealizowanymi do danego momentu.
12.2 Wartość netto¶
Wartość portfela po podatkach i kosztach już zrealizowanych. W ostatnim roku oznacza wynik końcowego rozliczenia.
12.3 Zysk netto¶
Różnica między wartością netto a wpłaconą kwotą inwestycji.
12.4 Zysk realny¶
Zysk netto po uwzględnieniu inflacji.
12.5 Najważniejsza zasada interpretacji¶
Jeśli użytkownik analizuje inwestycję na X lat, powinien finalnie patrzeć na wynik z ostatniego roku, ponieważ:
- wcześniejsze lata pokazują przebieg inwestycji
- część podatków i kosztów może zostać zrealizowana dopiero na końcu
Wcześniejsze lata są ważne do zrozumienia przebiegu inwestycji, ale nie zawsze są jeszcze ostatecznym wynikiem końcowego rozliczenia dla danego roku.
Scenariusz, w którym produkt pokazuje osobny porównawczy wynik dla pytania: ile dostanę, jeśli zakończę inwestycję w każdym kolejnym roku, jest już wdrożony jako jawnie wybierany globalny model analityczny. Nadal nie jest to ukryta semantyka podstawowych wyników rocznych, tylko świadomie przełączany sposób interpretacji tych samych wyników.
12.6 Obecny produkt ma globalny tryb zamknij inwestycję w roku X¶
Aktualna wersja produktu:
- pokazuje roczny przebieg inwestycji zgodny z mechaniką danej obligacji
- pokazuje końcowe rozliczenie w ostatnim roku przyjętego horyzontu
- udostępnia globalny model interpretacyjny
Rozliczenie rok po roku - stosuje aktywny model analizy spójnie w wykresie, podsumowaniu wyników i szczegółowej tabeli rocznej
- nadal traktuje ten tryb jako jawnie wybraną interpretację, a nie jako ukrytą semantykę wszystkich podstawowych rocznych wyników
13. Wymagania funkcjonalne¶
13.1 Wybór obligacji¶
Status: Implemented
Produkt musi umożliwiać:
- wybór wielu obligacji jednocześnie
- logiczną kontrolę dostępności obligacji rodzinnych
- prezentację obligacji w dwóch widokach
- świadome ograniczenie obecnego etapu:
800+steruje dostępnościąROS / ROD, ale nie wymusza jeszcze limitu kwotowego zakupu wynikającego z wysokości świadczeń - w przyszłości umożliwić także wybór i konfigurację wejścia przez asystenta, który kończy pracę na tym samym stanie formularza
13.2 Symulacja¶
Status: Implemented
Produkt musi:
- przeliczać wyniki dla wszystkich wspieranych obligacji
- uwzględniać różne mechanizmy naliczania odsetek
- uwzględniać podatki, wykup i reinwestycję
13.3 Wyniki¶
Status: Implemented
Produkt musi:
- pokazywać wynik końcowy
- pokazywać przebieg rok po roku
- umożliwiać porównanie wielu obligacji także w tabeli rocznej
- umożliwiać zmianę zestawu danych widocznych w tabeli rocznej
- pokazywać status wykupu w sposób odróżniający wykup naturalny od wcześniejszego
- umożliwiać filtrowanie kolumn
- umożliwiać interpretację wyniku bez znajomości implementacji silnika
- jasno rozróżniać przebieg inwestycji w czasie od końcowego rozliczenia dla wybranego horyzontu
13.3a Globalny tryb analizy wyników¶
Status: Implemented
Produkt musi udostępniać jeden globalny stan modelu analizy wyników, do którego UI może dostarczać więcej niż jeden punkt sterowania.
Wymagania obowiązkowe:
- przełącznik musi sterować jedną wspólną wartością stanu dla całej aplikacji
- aktywny tryb analizy musi wpływać spójnie na:
- wykres porównawczy
- podsumowanie wyników
- szczegółową tabelę roczną
- lokalne komponenty wynikowe nie mogą utrzymywać własnej, konkurencyjnej semantyki interpretacji
- produkt może udostępniać więcej niż jeden interfejs sterujący tym samym globalnym stanem, o ile nie tworzy to konkurencyjnych źródeł prawdy
Obsługiwane tryby:
Przebieg inwestycjiRozliczenie rok po roku
Wymagania dotyczące umiejscowienia w UI:
- w aktualnym produkcie nie ma jednego, dużego panelu sterowania nad wynikami
- globalny stan
analysisModejest sterowany przez dwa małe przełączniki UI: - w sekcji
Wykres Porównawczy - w sekcji
Szczegółowa Tabela Roczna - oba przełączniki muszą sterować dokładnie tym samym stanem globalnym
- sekcja
Podsumowanie Wynikówma odzwierciedlać aktywny tryb, ale nie musi dostarczać własnego przełącznika - opisowe headery sekcji nie powinny powtarzać pełnym zdaniem aktywnego trybu, jeśli ten sam kontekst jest już pokazywany badge'em lub przełącznikiem
Tabela odpowiedzialności sekcji wynikowych:
| Sekcja | Czy ma własny przełącznik? | Czy pokazuje aktywny tryb? | Reaguje na globalny analysisMode? |
|---|---|---|---|
Wykres Porównawczy |
Tak |
Tak |
Tak |
Podsumowanie Wyników |
Nie |
Tak |
Tak |
Szczegółowa Tabela Roczna |
Tak |
Tak |
Tak |
Diagram sterowania:
Ten diagram pokazuje zachowanie produktu od strony UI i zależności między punktami sterowania a sekcjami wyników.
flowchart LR
A[Przełącznik w Wykresie] --> C[Globalny stan analysisMode]
B[Przełącznik w Tabeli Rocznej] --> C
C --> D[Wykres Porównawczy]
C --> E[Podsumowanie Wyników]
C --> F[Szczegółowa Tabela Roczna]
Wymagania semantyczne:
Przebieg inwestycjioznacza rzeczywisty przebieg inwestycji zgodny z mechaniką produktu i pozostaje domyślną interpretacją canonical resultRozliczenie rok po rokuoznacza porównanie wyniku przy założeniu zakończenia inwestycji w każdym kolejnym roku jej trwania- oba tryby muszą być jawnie nazwane w UI
- oba tryby muszą być traktowane jako alternatywne interpretacje tych samych danych wejściowych, a nie jako dwa niezależne kalkulatory
- wielokrotne punkty sterowania w UI są dozwolone tylko jako interfejsy do tego samego stanu globalnego
13.3b Wymagania implementacyjne dla modelu Rozliczenie rok po roku¶
Status: Implemented
Ta sekcja jest obowiązującą specyfikacją dla developera.
Model Rozliczenie rok po roku musi działać tak:
- przyjmuje te same wejściowe parametry inwestycji, które służą do zbudowania canonical result
- dla każdego roku
Xod1do pełnego horyzontu inwestycji tworzy osobny zestaw parametrów z horyzontem skróconym doX - dla każdego takiego horyzontu uruchamia pełną rekalkulację przez bond engine
- z każdej rekalkulacji pobiera wynik końcowy dla tego horyzontu
- składa z tych wyników serię rocznych wierszy modelu analitycznego
Diagram przepływu:
flowchart TD
A[Wejście: params i canonical context] --> B{Rok X od 1 do N}
B --> C[Utwórz params z horyzontem = X]
C --> D[Uruchom pełną rekalkulację bond engine]
D --> E[Pobierz wynik końcowy dla roku X]
E --> F[Dodaj wiersz do YearByYearLiquidationAnalysis]
F --> B
B -->|po zakończeniu pętli| G[Zwróć kompletny analysis model]
Wymagania obowiązkowe:
- model nie może interpretować pośrednich wierszy
investment_progressionjako gotowego rozliczenia dla rokuX - model nie może dopisywać własnych pól bezpośrednio do canonical result contract
- model musi być osobnym analysis model z własnym kontraktem wyjściowym
- model musi zachować spójne znaczenie dla wszystkich sekcji wynikowych korzystających z aktywnego globalnego trybu analizy
Wymagania nazewnicze i semantyczne:
- pola modelu rozliczeniowego muszą być jawnie odróżnione od pól progression, jeśli ich znaczenie nie jest identyczne
- developer nie może reuse'ować nazw z canonical result tylko dlatego, że są podobne wizualnie w tabeli
Wymagania wydajnościowe i jakościowe:
- pierwsza implementacja może używać rekalkulacji silnika per rok
- jeśli feature zostanie rozszerzony i zacznie generować problem wydajnościowy, optymalizacja musi zachować tę samą semantykę wyników
- ewentualna optymalizacja nie może zmienić znaczenia modelu bez aktualizacji tej specyfikacji i dokumentacji technicznej
13.4 Dokumentacja w produkcie¶
Status: Implemented
Produkt powinien zawierać:
- stronę z objaśnieniem działania kalkulatora
- stronę z roadmapą produktową
13.5 IKE / IKZE¶
Status: Out of scope
Aktualne zasady:
- element jest widoczny w UI
- nie wolno implementować częściowej logiki podatkowej bez pełnej decyzji produktowej
- przyszłe wdrożenie wymaga osobnego scope i acceptance criteria
13.6 Przyszły asystent wejścia do kalkulatora¶
Status: Planned
Produkt powinien w przyszłości umożliwiać:
- uruchomienie kalkulatora w trybie dialogowym
- zbieranie danych wejściowych przez sekwencję pytań zamiast ręcznego wypełniania wszystkich pól
- obsługę zarówno inwestycji jednorazowej, jak i cyklicznej
- wypełnienie tego samego formularza, którego używa tryb ręczny
- wygenerowanie identycznego wyniku jak dla tych samych danych wpisanych ręcznie
- przejście z trybu asystenta do trybu ręcznego bez utraty danych
14. Wymagania dotyczące danych¶
14.1 Dane obecne¶
Status: Implemented
Produkt korzysta z katalogu obligacji jako źródła prawdy dla parametrów produktu.
14.2 Dane dynamiczne w przyszłości¶
Status: Planned
Plan zakłada automatyzację:
- stopy referencyjnej
- warunków emisji
- bieżącej inflacji jako domyślnego parametru wejściowego
Predykcja inflacji należy do późniejszego etapu rozwoju modelu symulacyjnego, a nie do podstawowej automatyzacji danych bieżących.
14.3 Rola scrapera¶
Status: Planned
Scraper ma dwa cele:
- aktualizować parametry emisji i dane potrzebne kalkulatorowi
- rozpocząć budowę warstwy danych pod przyszły portfel inwestycyjny
To oznacza, że scraper powinien docelowo zbierać dane nie tylko o typach obligacji, ale też o konkretnych emisjach i ich historii.
14.4 Kierunek portfelowy¶
Status: Planned
Warstwa danych powinna w przyszłości umożliwić:
- zapis historycznych parametrów emisji
- pokazanie historycznego zakupu w portfelu
- aktualizację bieżącego stanu inwestycji bez utraty kontekstu historycznego
15. Granice produktu i odpowiedzialności warstw¶
Ta sekcja jest szczególnie ważna dla developerów.
15.1 Warstwa selekcji¶
Odpowiada za:
- dostępność obligacji dla bieżących parametrów
- logikę eligibility, np.
800+ - sanitizację wyboru instrumentów
Nie odpowiada za:
- symulację cash flow
- podatki
- wykup
15.2 Warstwa silnika obligacji¶
Odpowiada za:
- logikę finansową
- zdarzenia symulacji
- wyniki roczne i końcowe
Nie odpowiada za:
- eligibility produktu
- reguły UI
- przyszłe zasady portfela, które nie są jeszcze częścią scope
15.3 Warstwa UI¶
Odpowiada za:
- poprawne pokazanie wyników
- spójne filtry, tooltipy i widoki
- pomoc użytkownikowi w interpretacji danych
- w przyszłości także za spójne doświadczenie przejścia między wejściem ręcznym i wejściem przez asystenta
Nie powinna zmieniać znaczenia metryk względem silnika.
15.4 Warstwa modeli analizy¶
Odpowiada za:
- budowanie jawnych modeli interpretacji nad canonical result
- rozdzielenie rzeczywistego przebiegu inwestycji od alternatywnych modeli analitycznych
- dostarczenie jednej bronionej semantyki do adapterów widoku
Musi:
- być osobną warstwą między canonical result a view adapters
- używać jawnych identyfikatorów modeli analitycznych
- mieć osobne kontrakty dla modeli o realnie różnej semantyce
Nie może:
- przenosić semantyki do komponentów UI
- rozszerzać canonical result o pola specyficzne dla jednej interpretacji
- mieszać logiki layoutu z logiką analityczną
15.5 Relacja między canonical result i analysis models¶
Obowiązująca zasada:
- canonical result opisuje rzeczywisty przebieg inwestycji i pozostaje source of truth
- analysis models opisują sposób interpretacji lub przeliczenia tych danych na broniony model analityczny
- view adapters przygotowują dane do wykresu, podsumowania i tabel
Developer ma zakładać, że kolejne modele analizy mogą pojawić się później.
To oznacza:
- nowy model analizy powinien być dodawany jako osobny moduł
- dodanie nowego modelu nie powinno wymagać psucia istniejącego canonical result
- komponenty UI powinny konsumować dane już po warstwie analysis model / view adapter, a nie dorabiać znaczenie lokalnie
16. Wymagania UX/UI¶
16.1 Priorytety UX¶
- produkt ma być czytelny dla użytkownika nie-technicznego
- dane finansowe mają być łatwe do interpretacji
- interfejs ma tłumaczyć logikę produktu, a nie tylko pokazywać liczby
16.2 Priorytety wizualne¶
- spójność między sekcjami
- konsekwentne stany aktywne i nieaktywne
- czytelna hierarchia informacji
- spójność light i dark mode
16.3 Tabele i filtry¶
Filtry i przełączniki powinny być:
- spójne między tabelami i wykresami
- czytelne także w stanie nieaktywnym
- interpretowalne bez zgadywania ich działania
17. Wymagania niefunkcjonalne¶
17.1 Responsywność¶
Produkt ma działać poprawnie na desktopie i urządzeniach mobilnych.
17.2 Czytelność i dostępność¶
Produkt powinien:
- utrzymywać czytelny kontrast
- prezentować dane w sposób jednoznaczny
- minimalizować ryzyko błędnej interpretacji
17.3 Utrzymywalność¶
Zmiany produktowe powinny być możliwe bez przepisywania całego silnika.
17.4 Audytowalność danych¶
Każda zmiana w warstwie danych powinna przechodzić walidację i być możliwa do audytu.
18. Roadmapa produktu¶
Etap 0. Domknięcie logiki biznesowej i UI dla MVP¶
Status: Planned
Cel:
- zamknąć decyzje biznesowe i interpretacyjne, zanim produkt zacznie szerzej automatyzować dane i rozbudowywać scenariusze
Zakres:
- opis aktualnego modelu obliczeń i weryfikacja zachowania dla wszystkich rodzin obligacji
- decyzja, czy produkt pokazuje przede wszystkim rzeczywisty stan inwestycji rok po roku, czy osobny ujednolicony model porównawczy
- doprecyzowanie zasad interpretacji podatków, kosztów i końcowego rozliczenia w UI
- jawne opisanie rzeczy odłożonych poza MVP, np. limitu kwotowego
800+i logikiIKE / IKZE
Etap 1. Automatyzacja danych rynkowych i emisyjnych¶
Status: Planned
Cel:
- ograniczyć ręczne utrzymywanie danych
Zakres:
- automatyczna stopa referencyjna
- automatyczne pobieranie bieżącej inflacji jako domyślnego parametru wejściowego
- scraper warunków emisji
- pipeline walidacji i aktualizacji katalogu
Etap 2. Baza danych pod przyszły portfel obligacji¶
Status: Planned
Cel:
- przygotować warstwę danych pod historię emisji i przyszły portfel użytkownika
Zakres:
- dane o konkretnych emisjach
- historia parametrów emisji
- model danych pod historię zakupu i bieżący stan inwestycji
- model danych pod zapis kalkulacji i zapis symulacji użytkownika
- model danych pod zapis predykcji inflacji, źródła predykcji, daty pobrania i późniejszego porównania z inflacją rzeczywistą
Etap 3. Rozbudowa modelu inflacyjnego¶
Status: Planned
Cel:
- przejść z ręcznej inflacji do bardziej wiarygodnej predykcji
Zakres:
- zewnętrzna predykcja inflacji
- rozdzielenie inflacji ręcznej i domyślnej
- zapis użytej predykcji inflacji do warstwy danych przygotowanej w
Etapie 2 - możliwość późniejszego porównania dawnej predykcji z inflacją rzeczywistą
Etap 4. Scenariusze min / max¶
Status: Planned
Cel:
- pokazać użytkownikowi zakres wyników, a nie tylko jeden wariant
Zakres:
- scenariusz minimalny
- scenariusz maksymalny
- prezentacja zakresu w UI
Etap 5. Symulator zmienności inflacji¶
Status: Planned
Priorytet: Niski
Cel:
- dodać bardziej realistyczny model wahań inflacji
Zakres:
- ścieżki inflacji
- uwzględnienie historycznej zmienności
- prezentacja rozkładu lub przedziału wyników
Etap 6. Regularne inwestowanie + IKE / IKZE¶
Status: Planned
Cel:
- rozwinąć produkt z kalkulatora jednorazowej inwestycji do modelu inwestowania cyklicznego
Zakres:
- regularne wpłaty
- logika
IKE / IKZE - wpływ harmonogramu wpłat i typu rachunku na wynik
Etap 7. Asystent wejścia do kalkulatora¶
Status: Planned
Cel:
- umożliwić użytkownikowi przygotowanie kompletnej symulacji przez dialog zamiast ręcznego wypełniania formularza
Zakres:
- pytanie startowe, czy użytkownik chce skorzystać z asystenta
- sekwencja pytań o parametry inwestycji, np. kwotę startową, dopłaty cykliczne, częstotliwość dopłat, horyzont inwestycji,
800+oraz typ rachunku - obsługa zarówno inwestycji jednorazowej, jak i cyklicznej
- mapowanie odpowiedzi na ten sam stan formularza, którego używa tryb ręczny
- uruchamianie tej samej symulacji i tego samego engine co w kalkulatorze ręcznym
- możliwość przejścia do ręcznej korekty formularza po zakończeniu dialogu
19. Zależności i ryzyka¶
19.1 Zależności¶
- dane zewnętrzne o stopie referencyjnej
- źródło danych o warunkach emisji
- przyszłe źródło predykcji inflacji
- docelowy model danych dla portfela
19.2 Ryzyka produktowe¶
- błędna interpretacja wyników przez użytkownika
- brak spójności między logiką produktu i komunikacją w UI
- rozlanie scope przy łączeniu kalkulatora z przyszłym portfelem
- niejawne traktowanie ograniczenia
800+jako zaimplementowanego w pełni, mimo że obecny etap świadomie nie obsługuje limitu kwotowego zakupu
19.3 Ryzyka delivery¶
- drift między dokumentacją produktową i techniczną
- częściowe wdrażanie przyszłych funkcji bez pełnych decyzji PM
- zmiany w warstwie danych bez pełnego planu walidacji i aktualizacji
20. Kryteria akceptacji¶
20.1 Kalkulator¶
Za zaakceptowany uznajemy stan, w którym:
- użytkownik może policzyć wynik dla wszystkich wspieranych obligacji
- wynik końcowy jest spójny między wykresem, podsumowaniem i tabelą roczną
- użytkownik może porównać kilka obligacji bez znajomości implementacji silnika
20.2 Interpretacja wyników¶
Za zaakceptowany uznajemy stan, w którym:
- użytkownik rozumie znaczenie
Wartości brutto,Wartości netto,Zysku nettoiZysku realnego - komunikacja w UI nie stoi w sprzeczności z semantyką silnika
- dokumentacja in-app wyjaśnia, dlaczego końcową ocenę należy opierać na ostatnim roku
- dokumentacja produktowa jasno rozróżnia podstawowy przebieg inwestycji od jawnego globalnego trybu analizy
zamknij inwestycję w roku X - model
Rozliczenie rok po rokujest implementowany jako osobny analysis model, a nie jako reinterpretacja pośrednich wierszy progression - wykres, podsumowanie i tabela roczna reagują na ten sam aktywny globalny tryb analizy
20.3 UI i interakcje¶
Za zaakceptowany uznajemy stan, w którym:
- filtry i przełączniki są spójne wizualnie i logicznie
- tabele i podsumowanie używają tych samych znaczeń metryk
- elementy niedostępne lub odłożone są jasno oznaczone
- globalny przełącznik modelu analizy jest umieszczony wyżej niż sekcje wyników i jednoznacznie komunikuje, że zmienia interpretację całego zestawu wyników
20.4 Każdy kolejny etap roadmapy¶
Każdy etap uznajemy za gotowy dopiero wtedy, gdy:
- ma osobny, zamknięty zakres
- ma aktualizację dokumentacji produktowej i technicznej
- ma testy
- nie psuje dotychczasowej funkcji kalkulatora
20.5 Minimalny evidence pack przy odbiorze prac¶
Przy odbiorze zmian developer powinien dostarczyć:
- informację, które wymaganie lub sekcja tej specyfikacji zostały zmienione
- informację, które dokumenty techniczne zostały zaktualizowane
- informację, jakie testy potwierdzają zmianę
- informację, czy zmieniło się zachowanie użytkowe, czy tylko implementacja
21. Jak używać tej specyfikacji przy handoffie¶
21.1 Jeśli przejmujesz projekt¶
W pierwszej kolejności:
- przeczytaj sekcje
Stan implementacji i mapa zakresu,Mapa źródeł prawdyiObowiązujące decyzje projektowe - zidentyfikuj obszar, który zmieniasz
- otwórz odpowiedni dokument techniczny z sekcji
Dokumenty powiązane - dopiero potem sprawdź implementację
21.2 Jeśli zmieniasz scope produktu¶
Musisz ocenić, czy zmiana wymaga aktualizacji:
- tej specyfikacji
- roadmapy
- dokumentacji in-app
- dokumentów technicznych rodziny lub obligacji
21.3 Jeśli zmieniasz zachowanie już wdrożone¶
Musisz jawnie wskazać:
- czy zmienia się wymaganie produktowe
- czy zmienia się tylko implementacja
- czy zmienia się komunikacja w UI
21.4 Checklista przed zamknięciem taska¶
Przed zamknięciem taska sprawdź:
- czy status zakresu w tej specyfikacji nadal jest poprawny
- czy UI nie komunikuje czegoś innego niż silnik
- czy dokumentacja techniczna została zaktualizowana tam, gdzie trzeba
- czy nie dodano częściowo aktywnej funkcji oznaczonej obecnie jako
Out of scope
21.5 Zasada wersjonowania dokumentu¶
Przy każdej istotnej zmianie produktu:
- zaktualizuj pole
ostatni przegląd - jeśli zmienia się znaczenie wymagań lub zakresu, podnieś wersję dokumentu
- jeśli zmienia się tylko doprecyzowanie opisu, zachowaj wersję i opisz zmianę w PR lub commicie
22. Otwarte pytania¶
- jakie źródło predykcji inflacji ma być bazowe
- jak często scraper ma aktualizować dane
- czy przyszły portfel ma być lokalny czy z backendem
- jak prezentować użytkownikowi historyczne emisje
- kiedy i w jakim zakresie aktywować logikę
IKE / IKZE - kiedy i w jaki sposób włączyć kontrolę limitu kwotowego dla obligacji rodzinnych
ROS / ROD
23. Dokumenty powiązane¶
Dokumenty techniczne powiązane z tą specyfikacją:
- bond_engine_architecture.md
- annual_accumulation_logic.md
- annual_payout_logic.md
- ODS_logic.md - historyczna nazwa dokumentu dla
OTS - ROR_logic.md
- DOR_logic.md
- TOS_logic.md
- EDO_logic.md
- ROS_logic.md
- ROD_logic.md
- COI_logic.md
Uwaga końcowa¶
Ta specyfikacja ma pozostać spójna z:
- aktualnym UI
- dokumentacją techniczną
- roadmapą
- założeniami danych i architektury
Jej wartość polega nie tylko na opisie produktu, ale na tym, że pozwala przejąć pracę w środku projektu bez rekonstruowania stanu z commitów i rozmów.