Files
finansePRO/.paul/changelog/2026-07-06.md
T
2026-07-12 19:21:35 +02:00

4.7 KiB
Raw Blame History

2026-07-06

Co zrobiono

  • [Plan 20260706-1248] Fundament finansePRO na CodeIgniter 4.7.3 + moduł wydatków/przychodów bieżących.
  • Inicjalizacja PAUL (plan-first, Quality Radar), junction memory.
  • Instalacja CI4 (Composer), konfiguracja DB czytana z .env, włączenie intl w XAMPP.
  • Logowanie jednego użytkownika z .env (filtr auth, Auth::login/logout).
  • Migracje categories (hierarchia+typ) i operations (+FK), seeder 9 kategorii.
  • CRUD kategorii i operacji: filtry (data/kategoria/typ), sumy, blokada usunięcia używanej kategorii, typ operacji wymuszany przez kategorię.
  • Dashboard z 3 wykresami ApexCharts (bilans miesięczny, wydatki wg kategorii, saldo skumulowane).
  • Weryfikacja end-to-end przez php spark serve + curl; dane testowe wyczyszczone.
  • Naprawa wdrożenia hostido: root .htaccess (forward do public/, 403), sekcja produkcyjna w .env (CI_ENVIRONMENT=production, app.baseURL).
  • [Plan 20260706-1430] Moduł inwestycji: instrumenty (Obligacje/ETF), wpłaty/wypłaty, ręczne wyceny.
  • Migracje inv_instruments, inv_operations, inv_valuations (FK RESTRICT), seeder instrumentów.
  • CRUD instrumentów/operacji/wycen + filtry + blokada usunięcia instrumentu z powiązaniami.
  • Pulpit inwestycji /investments: kafelki, wykres 3-seryjny w czasie, tabela per instrument (zarobek netto = ostatnia wycena (Σwpłat Σwypłat)).
  • Pulpit globalny /dashboard (majątek razem = saldo bieżące + wartość inwestycji); dotychczasowy pulpit finansów przepięty pod /finances.
  • Nawigacja zgrupowana w dropdowny: „Finanse bieżące" i „Inwestycje" + top-level „Pulpit".
  • Weryfikacja end-to-end curl (ETF: netto 800, wartość 950, zarobek 150 = 18,75%); dane testowe wyczyszczone.
  • [Plan 20260706-2046] Półautomatyczny import paragonów: upload (jpg/png/pdf/json) → AI parsuje → przegląd/korekta → księgowanie pogrupowane po kategorii.
  • Parser OpenAI przez Responses API (/v1/responses + input_file), model o4-mini (rozumujący — najlepszy OCR paragonów, poprawne rabaty; > gpt-4o/4.1).
  • Tabele receipts, receipt_items (+display_name), receipt_category_map; kolumna operations.receipt_id.
  • Uczone podpowiedzi kategorii (surowa nazwa z paragonu → kategoria; tylko podpowiada, nie księguje z automatu).
  • Dwie nazwy pozycji: surowa (mapowanie) + ładna „ludzka" (wyświetlanie/opis operacji).
  • Przegląd z edytowalnymi nazwami/kwotami + podgląd sum na żywo; kategorie z pełną ścieżką „Nadrzędna → Podrzędna".
  • Naprawy pod hostido: przepływ bez fileinfo (własna nazwa pliku + MIME z rozszerzenia); migracje zastosowane ręcznie na zdalnej bazie.
  • UAT realnym paragonem (Biedronka PDF) potwierdzony przez użytkownika.

Zmienione pliki

  • composer.json, composer.lock, vendor/, spark, public/, writable/
  • app/Config/Database.php, app/Config/Routes.php, app/Config/Filters.php, app/Config/App.php
  • app/Controllers/BaseController.php, app/Controllers/Auth.php, app/Controllers/Categories.php, app/Controllers/Operations.php, app/Controllers/Dashboard.php
  • app/Filters/AuthFilter.php
  • app/Models/CategoryModel.php, app/Models/OperationModel.php
  • app/Database/Migrations/2026-07-06-100001_CreateCategories.php, app/Database/Migrations/2026-07-06-100002_CreateOperations.php
  • app/Database/Seeds/DefaultCategoriesSeeder.php
  • app/Views/layout/main.php, app/Views/auth/login.php, app/Views/categories/index.php, app/Views/categories/form.php, app/Views/operations/index.php, app/Views/operations/form.php, app/Views/dashboard/index.php
  • .env, .htaccess
  • app/Database/Migrations/2026-07-06-140001_CreateInvInstruments.php, ...140002_CreateInvOperations.php, ...140003_CreateInvValuations.php
  • app/Database/Seeds/DefaultInstrumentsSeeder.php
  • app/Models/InstrumentModel.php, app/Models/InvOperationModel.php, app/Models/ValuationModel.php
  • app/Controllers/Instruments.php, app/Controllers/InvOperations.php, app/Controllers/Valuations.php, app/Controllers/Investments.php, app/Controllers/Dashboard.php
  • app/Views/instruments/{index,form}.php, app/Views/inv_operations/{index,form}.php, app/Views/valuations/{index,form}.php, app/Views/investments/index.php
  • app/Views/dashboard/index.php (globalny), app/Views/dashboard/finances.php (finansowy)
  • app/Config/Routes.php, app/Views/layout/main.php
  • app/Database/Migrations/2026-07-06-2000{01..05}_*.php (receipts, receipt_items, receipt_category_map, operations.receipt_id, display_name)
  • app/Models/{ReceiptModel,ReceiptItemModel,ReceiptCategoryMapModel}.php, app/Models/OperationModel.php, app/Models/CategoryModel.php
  • app/Libraries/ReceiptParser.php
  • app/Controllers/Receipts.php
  • app/Views/receipts/{new,review,index,show}.php