Phase 110 complete: - add Statistics -> Podsumowanie page - add monthly order count and value charts per integration plus total - use Chart.js with table fallback and 04-2026 default history start - update PAUL and DOCS technical documentation
4.1 KiB
4.1 KiB
Technical Changelog
2026-04-28 - Phase 110 Plan 01: Statistics Summary
Co zrobiono:
/statistics/summary- nowy widok podsumowania w menuStatystyki -> Podsumowanie.OrdersStatisticsController::summary()- buduje miesieczny view-model dla wykresow liczby i wartosci zamowien.OrdersStatisticsRepository::aggregateByMonth()- agreguje istniejace zamowienia po miesiacu i kanale/integracji.public/assets/js/modules/statistics-summary-charts.js- renderer dwoch interaktywnych wykresow liniowych oparty o Chart.js 4.4.8 CDN.resources/views/statistics/summary.php- filtry zgodne z raportem dziennym, dwa wykresy obok siebie na desktopie oraz dwie tabele fallback pod nimi.- Domyslny poczatek historii ustawiony na
2026-04-01(04-2026) mimo starszych danych.
Dlaczego:
- Operator potrzebuje szybkiego trendu miesiecznego przed przejsciem do szczegolowych dziennych statystyk.
- Wykresy uzywaja obecnych tabel
orders,integrations,order_status_groupsiorder_statuses, wiec migracja DB nie jest potrzebna. - Seria
Razemjest liczona z tych samych danych co serie integracji, co ulatwia sprawdzenie sum miesiecznych.
2026-04-28 - Phase 109 Plan 01: Checkbox Multiselect Filters
Co zrobiono:
public/assets/js/modules/checkbox-multiselect.js- nowy vanilla JS enhancer dla natywnych<select multiple data-checkbox-multiselect>.resources/views/layouts/app.php- globalne podpiecie modulu z cache busting przezfilemtime().resources/views/statistics/orders.php- filtrychannels[]istatus_groups[]oznaczone do progresywnego ulepszenia bez zmiany nazw pol formularza.resources/scss/app.scss- kompaktowe style dropdownu z checkboxami i opcja "Wszystkie".
Dlaczego:
- Natywne selecty multiple byly malo czytelne i zajmowaly za duzo miejsca w filtrach statystyk.
- Zachowanie oryginalnego selecta w DOM utrzymuje obecny kontrakt GET i fallback bez JavaScript.
- Brak zmian w schemacie DB i logice agregacji statystyk.
Chronologiczny log zmian technicznych — co i dlaczego.
2026-04-27 — Phase 108 Plan 02: Automation Dropdowns z DB
Co zrobiono:
AutomationController— usunięto stałąSHIPMENT_STATUS_OPTIONS(8 grupowych kluczy)- Dropdown statusów w warunku
shipment_statusi akcjiupdate_shipment_statusładuje statusy z DB przezDeliveryStatus::getAllOptions() - Walidacja w
parseConditionValue()iparseActionConfig()używaDeliveryStatus::getAllStatuses() AutomationService— usunięto stałąSHIPMENT_STATUS_OPTION_MAP; ewaluacjaevaluateShipmentStatusCondition()porównuje klucze bezpośrednioresolveStatusFromActionKey()— bezpośredni klucz statusu z DB jako target (zamiast pierwszego z grupy)
Dlaczego:
- Zamknięcie integracji z Plan 01 — operator dodaje status w
/settings/delivery-statusesi jest on od razu dostępny w dropdownach automatyzacji bez deploymentu - Eliminacja kolizji semantycznej: stary klucz grupowy
picked_upmapował nadelivered(paczka odebrana przez klienta), nowy klucz DBpicked_upto "Odebrana przez kuriera" (od nadawcy) - BREAKING: stare reguły z grupowymi kluczami (
registered,courier_pickup,dropped_at_point,unclaimed,picked_up_return, orazpicked_up/ready_for_pickup/cancelledw starym znaczeniu) nie matchują — wymagają ręcznego odtworzenia z nowymi kluczami DB
2026-04-27 — Phase 108 Plan 01: Delivery Status Management
Co zrobiono:
- Tabela
delivery_statusesz seedem 11 statusów (migracja20260427_000103) DeliveryStatusRepository— CRUD + per-request cacheDeliveryStatus.php— dynamiczne ładowanie statusów z DB (setRepository())- Panel
/settings/delivery-statusesz CRUD (zakładka "Statusy") i mapowaniem (zakładka "Mapowanie dostawy") - Sidebar: "Statusy" → "Statusy zamówień", nowe "Statusy przesyłek" z badge niezmapowanych
- Badge przesyłek: inline CSS custom property
--status-colordla niestandardowych statusów
Dlaczego:
- Dodanie nowego statusu wymagało zmiany kodu + deploymentu; teraz z UI
- Operator może definiować własne statusy znormalizowane bez ingerencji w kod