Files
2026-07-12 19:21:35 +02:00

53 lines
4.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`