first commit
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
# Impact Map
|
||||
|
||||
**Aktualizacja:** 2026-07-06 (post-apply Plan 2 — degraded)
|
||||
|
||||
## Kontekst
|
||||
CodeIgniter 4.7.3 + MySQL (`.env`). Radar degraded — brak indeksu codebase-memory-mcp; weryfikacja runtime.
|
||||
|
||||
## Moduły
|
||||
### Finanse bieżące (Plan 1)
|
||||
- Kategorie/operacje: `app/Models/{Category,Operation}Model.php`, `app/Controllers/{Categories,Operations}.php`, tabele `categories`/`operations`.
|
||||
- Pulpit finansów: `Dashboard::finances` → `app/Views/dashboard/finances.php`, trasa `/finances`.
|
||||
|
||||
### Inwestycje (Plan 2)
|
||||
- Instrumenty: `InstrumentModel` (`withStats`, `portfolioTimeline`, `hasChildren`), `Instruments.php`, widoki `instruments/`, tabela `inv_instruments`.
|
||||
- Operacje: `InvOperationModel`, `InvOperations.php`, widoki `inv_operations/`, tabela `inv_operations` (FK RESTRICT → inv_instruments).
|
||||
- Wyceny: `ValuationModel`, `Valuations.php`, widoki `valuations/`, tabela `inv_valuations` (FK RESTRICT → inv_instruments).
|
||||
- Pulpit inwestycji: `Investments::index` → `investments/index.php`, trasa `/investments`.
|
||||
|
||||
### Pulpit globalny
|
||||
- `Dashboard::index` → `app/Views/dashboard/index.php`, trasy `/` i `/dashboard`. Majątek = saldo bieżące (`OperationModel::totals`) + wartość inwestycji (`InstrumentModel::withStats`).
|
||||
|
||||
## Routing / nawigacja
|
||||
- `app/Config/Routes.php` — grupa `auth`: `/`, `dashboard`, `finances`, `operations/*`, `categories/*`, `investments`, `instruments/*`, `investments/operations/*`, `investments/valuations/*`.
|
||||
- `app/Views/layout/main.php` — top-level „Pulpit" + dropdowny „Finanse bieżące" / „Inwestycje".
|
||||
|
||||
## Dane / config
|
||||
- MySQL z `.env` (dev → `db_host_remote`, prod → `db_host`) w `Database.php`.
|
||||
- Tabele inwestycji: `inv_instruments` (name unique), `inv_operations` (instrument_id, date, amount, type enum deposit/withdraw), `inv_valuations` (instrument_id, date, value).
|
||||
|
||||
## Ukryte sprzężenia
|
||||
- Zarobek netto liczony wyłącznie w `InstrumentModel::withStats` — kontrolery/widoki konsumują (jedno źródło prawdy).
|
||||
- FK RESTRICT: instrument z operacjami/wycenami nieusuwalny (spójne z blokadą w `Instruments::delete`).
|
||||
- Pulpit globalny zależny od obu domen (finanse + inwestycje).
|
||||
|
||||
## Weryfikacja manualna
|
||||
- Migracje `inv_*`; CRUD 3 encji; filtry; blokada usunięcia; wzór zarobku; pulpity `/dashboard`, `/finances`, `/investments`.
|
||||
@@ -0,0 +1,19 @@
|
||||
# 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.
|
||||
@@ -0,0 +1,16 @@
|
||||
# Tooling Status
|
||||
|
||||
**Timestamp:** 2026-07-06T13:10
|
||||
**Scan mode:** post-apply (plan 20260706-1248-fundament-wydatki-przychody)
|
||||
|
||||
## Narzędzia
|
||||
- `codebase-memory-mcp`: enabled, indeks nieodświeżony (ponytail: pełna indeksacja odłożona do `$paul-map-codebase`; kod świeżo dodany, weryfikacja przeszła runtime'owo).
|
||||
- `jscpd`: disabled by policy
|
||||
- `ast-grep`: disabled by policy
|
||||
|
||||
## Weryfikacja runtime (zamiast skanu statycznego)
|
||||
- `php spark migrate` / `db:seed` — OK (zdalna baza hostido).
|
||||
- `php spark serve` + curl: login/logout, CRUD kategorii i operacji, filtry, sumy, 3 wykresy dashboardu, blokada usunięcia używanej kategorii, wymuszenie typu operacji przez kategorię — wszystko potwierdzone.
|
||||
|
||||
## Następna akcja
|
||||
`$paul-map-codebase` (pełny indeks codebase-memory-mcp) po ustabilizowaniu modułu, lub przed Planem 2 (inwestycje).
|
||||
Reference in New Issue
Block a user