5.5 KiB
5.5 KiB
ARCHITECTURE
Zakres
- Dokument opisuje aktualna architekture kodu (stan repo: 2026-04-19).
- Zrodlem prawdy sa:
src/,routes/web.php,database/migrations/.
Warstwy systemu
Core: bootstrap aplikacji, router, request/response, sesja, template, migrator, logger.Modules/*Controller: obsluga requestow HTTP i walidacja wejscia.Modules/*Repository: dostep do danych przez PDO/Medoo (prepared statements).Modules/*Service: logika domenowa i integracje zewnetrzne.Cron: runner, schedulery i handlery jobow okresowych.
Moduly domenowe
Auth: logowanie, wylogowanie, middleware sesyjne.Users: zarzadzanie uzytkownikami panelu.Orders: lista, szczegoly, statusy, platnosci reczne, preview, quick search.Shipments: przygotowanie, tworzenie, status trackingu, etykiety, usuwanie, paczki reczne.Accounting: paragony i eksport ksiegowy.Email: wysylka i preview wiadomosci z resolverem zmiennych i zalacznikow.Automation: reguly event-condition-action, historia wykonan.Settings: konfiguracja statusow, integracji, cron, skrzynek, szablonow, drukowania, mapowan projektow.Printing: API kolejkowania wydruku i klucze API dla klienta desktop.Statistics: raporty i agregacje dzienne zamowien z filtrowaniem po datach, kanalach i grupach statusow.Cron: synchronizacje integracji i zadania utrzymaniowe.Info: endpoint diagnostyczny/info.
Kluczowe klasy i odpowiedzialnosci
App\Core\Application: bootstrap, dispatch requestu, opcjonalny web-cron z lockiem DB.App\Modules\Cron\CronRunner: pobiera kolejke jobow zcron_schedules/cron_jobsi wykonuje handlery.App\Modules\Cron\CronHandlerFactory: sklada zaleznosci i mapujejob_type -> handler.App\Modules\Orders\OrdersController: flow UI zamowien + endpointy AJAX.App\Modules\Orders\OrdersRepository: query listy/szczegolow zamowien, update statusow, activity log.App\Modules\Shipments\ShipmentController: flow przesylek i etykiet.App\Modules\Shipments\ShipmentProviderRegistry: wybor providera wysylki poprovider_code.App\Modules\Printing\PrintApiController: endpointy kolejki wydruku (session/api-key).App\Modules\Automation\AutomationService: trigger eventow, ewaluacja warunkow, wykonanie akcji.App\Modules\Settings\ProjectMappingController: CRUD mapowania produkt -> skrypt generacji projektu.App\Modules\Statistics\OrdersStatisticsController: endpoint/statistics/orders, walidacja filtrow i przygotowanie modelu tabeli.App\Modules\Statistics\OrdersStatisticsRepository: agregacje SQL dzienne (COUNT,SUM total_net,SUM total_with_tax) i mapowanie filtrow kanal/status-group.
Integracje zewnetrzne
- Allegro: OAuth, import zamowien, sync statusow push/pull, mapowania statusow i dostaw.
- shopPRO: import zamowien, sync statusow push/pull, sync platnosci, mapowania statusow i dostaw.
- Apaczka: konfiguracja API, tworzenie i tracking przesylek.
- InPost: konfiguracja API, tworzenie i tracking przesylek.
Glowny przeplyw HTTP
- Request ->
Router-> middleware (AuthMiddlewarelubApiKeyMiddleware) -> Controller. - Controller waliduje dane i CSRF, wywoluje Repository/Service.
- Response: HTML (widoki) albo JSON (endpointy AJAX/API).
Przeplyw Statystyk Zamowien
- Route:
GET /statistics/orders(wymaga sesji uzytkownika). - Controller:
- parsuje
date_from,date_to,channels[],status_groups[], - ustawia domyslne grupy statusow (wszystkie poza grupa
anulowane), - pobiera agregaty dzienne z repozytorium,
- buduje tabele z dynamicznymi kolumnami kanalow i stopka
Razem.
- parsuje
- Repository:
- liczy kanaly jako
allegroorazshoppro:{integration_id}, - dla statusu efektywnego allegro stosuje mapowanie
allegro_order_status_mappings, - zwraca zagregowane rekordy dzien/kanal.
- liczy kanaly jako
Glowny przeplyw Cron
- Trigger:
GET /cron(public token) lub web-cron wApplication::maybeRunCronOnWeb.CronRunner::run(limit)przetwarza aktywne zadania.- Obslugiwane joby:
allegro_token_refreshallegro_orders_importallegro_status_syncshoppro_orders_importshoppro_order_status_syncshoppro_payment_status_syncshipment_tracking_syncautomation_history_cleanuporder_status_aged
Automatyzacja
- Triggerowana z wielu miejsc (m.in. zmiana statusu, przesylki, platnosci, wystawienie paragonu, cron age).
AutomationService:- wyszukuje aktywne reguly po
event_type, - sprawdza warunki,
- wykonuje akcje (
send_email,issue_receipt,update_shipment_status,update_order_status), - zapisuje wynik do
automation_execution_logs.
Printing
- Panel tworzy job
print_jobsprzez/api/print/jobs. - Klient desktop pobiera pending joby przez API key.
- Klient pobiera etykiete i zamyka job przez
/complete. - Konfiguracja i zarzadzanie kluczami:
PrintSettingsController+print_api_keys.
Projekt generation
project_mappingsmapuje wzorzec nazwy produktu nascript_nameioutput_dir.order_items.project_generatediproject_generated_attrzymaja status wygenerowania artefaktu.- UI konfiguracji:
/settings/project-mappings.
Bezpieczenstwo
- Session auth dla panelu.
- API key auth dla zdalnego klienta druku.
- CSRF dla POST w panelu.
- Sekrety integracji szyfrowane przez
IntegrationSecretCipher.
Zaleznosci miedzy modulami
Orderskorzysta zAutomation,Email,Printing,Shipments,Settings.Shipmentskorzysta zOrders,CompanySettings,Automation.CronspinaSettings,Orders,Shipments,Automation,Email.Automationkorzysta zOrders,Email,Accounting,Shipments.