20 lines
1.1 KiB
Markdown
20 lines
1.1 KiB
Markdown
# Quality Risks
|
||
|
||
**Aktualizacja:** 2026-07-06 (post-apply Plan 2 — degraded)
|
||
|
||
## Zaakceptowane świadomie
|
||
- **Kopiowanie wzorców zapytań** z `OperationModel` do `InvOperationModel`/`ValuationModel` (filtered/join). Osobna domena (brak type income/expense, dochodzą wyceny) — nie konsolidować w bazowy model, kod krótki.
|
||
- **Format kwoty** `number_format(...,2,',',' ').' zł'` powtórzony w widokach jako lokalna funkcja `$fmt`. Trywialny, świadomie nie wydzielony do helpera (YAGNI).
|
||
|
||
## Rozwiązane
|
||
- Zarobek netto: jedno źródło prawdy `InstrumentModel::withStats` (`net_invested`, `profit`, `percent`); nie liczony w widokach.
|
||
- Typ operacji inwestycyjnej: ENUM `deposit|withdraw` w DB + walidacja `in_list` w modelu + sanity w kontrolerze.
|
||
- Integralność: FK RESTRICT na `inv_operations`/`inv_valuations`.
|
||
|
||
## Odłożone
|
||
- Pełna indeksacja `codebase-memory-mcp` — `$paul-map-codebase`.
|
||
- jscpd/ast-grep — wyłączone polityką w `config.md` (skan on-demand).
|
||
|
||
## Do obserwacji
|
||
- `portfolioTimeline` liczony w PHP O(daty × operacje) — trywialne przy ręcznych wycenach; przy dużej liczbie wpisów rozważyć agregację SQL.
|