4.6 KiB
4.6 KiB
Impact Map
Post-apply 20260712-1647
- Mechanizm wdrożony w kontrolerze logowania, filtrze, widoku, modelu i migracji.
- Zdalna tabela
remember_tokensistnieje. - Trasy i globalna konfiguracja sesji pozostały bez zmian.
- Do ręcznego potwierdzenia pozostaje UAT dwóch profili przeglądarki.
Plan 20260712-1647 — zapamiętywanie logowania (plan scan)
- Logowanie:
app/Controllers/Auth.php,app/Views/auth/login.php. - Odtworzenie sesji:
app/Filters/AuthFilter.php; trasy pozostają bez zmian. - Dane: nowa tabela tokenów i model; wiele rekordów umożliwia wiele urządzeń.
- Konfiguracja: użyć istniejących ustawień HttpOnly/SameSite; nie wydłużać
Session::$expiration. - Test/UAT: dwa profile, wylogowanie jednego urządzenia, nieważny i wygasły token.
- Wdrożenie: migrację zastosować ręcznie na hostido przed kodem.
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, tabelecategories/operations. - Pulpit finansów:
Dashboard::finances→app/Views/dashboard/finances.php, trasa/finances.
Inwestycje (Plan 2)
- Instrumenty:
InstrumentModel(withStats,portfolioTimeline,hasChildren),Instruments.php, widokiinstruments/, tabelainv_instruments. - Operacje:
InvOperationModel,InvOperations.php, widokiinv_operations/, tabelainv_operations(FK RESTRICT → inv_instruments). - Wyceny:
ValuationModel,Valuations.php, widokivaluations/, tabelainv_valuations(FK RESTRICT → inv_instruments). - Pulpit inwestycji:
Investments::index→investments/index.php, trasa/investments.
Import paragonów (Plan 3)
- Paragony:
ReceiptModel(withCounts),ReceiptItemModel(forReceipt,namesurowa +display_nameładna),Receipts.php, widokireceipts/, tabelereceipts+receipt_items(FK CASCADE → receipts, SET NULL → categories). - Uczone dopasowania:
ReceiptCategoryMapModel(normalize,suggest,remember), tabelareceipt_category_map(item_name UNIQUE → category_id). Klucz = surowa nazwa z paragonu. Tylko podpowiedź, brak auto-zapisu. - Parser AI:
app/Libraries/ReceiptParser.php— OpenAI Responses API (/v1/responses) przez\Config\Services::curlrequest(); jpg/png (input_image), pdf (input_file— OpenAI renderuje strony), json (input_text). Model zenv('openai.model')domyślnie o4-mini (rozumujący; mini/gpt-4o za słabe na gęsty druk). Zwracaname+display. KluczOPEN_AI_API. - Upload bez
fileinfo(hostido je wyłącza): walidacja rozszerzeń ręczna, własna nazwa pliku, MIME z rozszerzenia. Cały przepływ w try/catch → błąd zapisany wreceipts.error_msg, nie 500. - Zapis:
confirm()grupuje pozycje po kategorii → 1 operacjaexpense/kategoria (suma edytowalnych kwot) przezOperationModel, zoperations.receipt_id(FK SET NULL). Uczenie na surowej nazwie, opis z ładnych. Transakcja DB. - Kategorie:
CategoryModel::tree()dajepath_label(„Nadrzędna → Podrzędna") — używane w przeglądzie paragonu;indent_labelnadal w operacjach. - Pliki skanów:
writable/uploads/receipts/, serwowane przezReceipts::filepod filtremauth.
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— grupaauth:/,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) wDatabase.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.