update
This commit is contained in:
@@ -1,5 +1,67 @@
|
||||
# Tech Changelog
|
||||
|
||||
## 2026-03-28 (Public HTTPS cron endpoint)
|
||||
- Dodano publiczny endpoint triggera crona:
|
||||
- `GET /cron?token=<CRON_PUBLIC_TOKEN>`
|
||||
- dodatkowo kompatybilny wariant sciezki: `GET /cron/token=<CRON_PUBLIC_TOKEN>`.
|
||||
- Token jest walidowany przez `hash_equals` i pochodzi z nowej zmiennej srodowiskowej `CRON_PUBLIC_TOKEN`.
|
||||
- Endpoint uruchamia `CronRunner` z limitem z ustawienia `cron_web_limit`.
|
||||
- `Application::maybeRunCronOnWeb(...)` ignoruje teraz sciezki `/cron` i `/cron/*`, aby uniknac podwojnego triggera.
|
||||
- Zaktualizowano `.env.example` o `CRON_PUBLIC_TOKEN`.
|
||||
|
||||
## 2026-03-28 (Hotfix - Apaczka pickup day fallback)
|
||||
- `ApaczkaShipmentService`:
|
||||
- dodano automatyczny retry `order_send` dla bledu API `Pickup not available for selected day`,
|
||||
- rozszerzono detekcje bledu o wariant komunikatu: `We're sorry, you can't place an order today. Change its date to another working day.`,
|
||||
- fallback dotyczy tylko `pickup.type=COURIER`,
|
||||
- kazdy retry przesuwa `pickup.date` na kolejny dzien roboczy (`normalizeCourierPickupDate`) i ponawia wysylke,
|
||||
- limit fallbacku: do 7 kolejnych dni, potem zwracany jest oryginalny blad API.
|
||||
|
||||
## 2026-03-28 (Phase 49 - Automation History Tab, Plan 01 - rozszerzenie akcji)
|
||||
- Rozszerzono automatyzacje o nowy typ akcji `update_order_status` (UI: `Zmiana statusu zamowienia`).
|
||||
- `AutomationController`:
|
||||
- `ALLOWED_ACTION_TYPES` zawiera `update_order_status`,
|
||||
- waliduje i parsuje `order_status_code` tylko do aktywnych statusow z `order_statuses`.
|
||||
- `AutomationRepository`:
|
||||
- nowa metoda `listActiveOrderStatuses()` zwracajaca aktywne statusy (`code`, `name`) sortowane rosnaco po nazwie.
|
||||
- `resources/views/automation/form.php` i `public/assets/js/modules/automation-form.js`:
|
||||
- nowa opcja akcji z wyborem docelowego statusu zamowienia.
|
||||
- `AutomationService`:
|
||||
- nowy handler `handleUpdateOrderStatus(...)`,
|
||||
- wykonanie zmiany przez `OrdersRepository::updateOrderStatus(...)` z aktorem systemowym `Automatyzacja: <nazwa reguly>`,
|
||||
- fallback log aktywnosci `automation_order_status_failed` gdy zmiana nie powiedzie sie.
|
||||
|
||||
## 2026-03-28 (Phase 49 - Automation History Tab, Plan 01)
|
||||
- `Ustawienia > Zadania automatyczne` (`/settings/automation`) rozdzielone na 2 taby:
|
||||
- `Ustawienia` - obecne zarzadzanie regulami,
|
||||
- `Historia` - log wykonan automatyzacji z filtrowaniem i paginacja.
|
||||
- Dodano migracje `20260328_000072_create_automation_execution_logs_table.sql`:
|
||||
- nowa tabela `automation_execution_logs` (event, regula, order, status, wynik, context, timestamp),
|
||||
- indeksy pod filtry historii,
|
||||
- seed harmonogramu crona `automation_history_cleanup` (co 24h).
|
||||
- Nowe klasy backend:
|
||||
- `AutomationExecutionLogRepository` - zapis/listowanie/paginacja/licznik historii + purge retencji,
|
||||
- `AutomationHistoryCleanupHandler` - usuwanie wpisow starszych niz konfigurowalna liczba dni (domyslnie 30).
|
||||
- `AutomationService::trigger(...)` zapisuje wpis historii per wykonana regula:
|
||||
- `success` po poprawnym wykonaniu akcji,
|
||||
- `failed` przy wyjatku w wykonaniu reguly.
|
||||
- `AutomationController::index(...)` obsluguje filtry historii (`history_*`) i paginacje (`history_page`), zachowujac kompatybilnosc listy regul.
|
||||
- UI historii wykorzystuje kompaktowy formularz filtrow i paginacje z zachowaniem aktywnych parametrow.
|
||||
|
||||
## 2026-03-28 (Phase 48 - Email Template Shipment Variables, Plan 01)
|
||||
- Email templates (`/settings/email-templates`):
|
||||
- dodano zmienne `{{przesylka.numer}}` i `{{przesylka.link_sledzenia}}` w `EmailTemplateController::VARIABLE_GROUPS`,
|
||||
- rozszerzono `SAMPLE_DATA` do preview o przykladowy numer i URL sledzenia.
|
||||
- `VariableResolver`:
|
||||
- otrzymuje zaleznosc `ShipmentPackageRepository`,
|
||||
- pobiera najnowsza paczke (`findLatestByOrderId(order_id)`),
|
||||
- mapuje `przesylka.numer` i `przesylka.link_sledzenia`,
|
||||
- link jest liczony przez `DeliveryStatus::trackingUrl(provider, tracking_number, carrier_id)`.
|
||||
- DI:
|
||||
- `routes/web.php` i `CronHandlerFactory` przekazuja `ShipmentPackageRepository` do `VariableResolver`.
|
||||
- Zachowanie brzegowe:
|
||||
- brak paczki lub brak numeru trackingowego nie psuje renderu - zmienne przesylki zwracaja pusty string.
|
||||
|
||||
## 2026-03-28 (Phase 47 - Shipment Creation Automation, Plan 01)
|
||||
- Automatyzacja:
|
||||
- dodano nowe zdarzenie `shipment.created` (UI: `Utworzenie przesylki`),
|
||||
@@ -739,3 +801,4 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user