This commit is contained in:
2026-04-04 18:20:13 +02:00
parent e95c4967d2
commit 7feda58a97
18 changed files with 845 additions and 325 deletions

View File

@@ -16,6 +16,7 @@
- deduplikacja wykonania tej samej pary `event_type + rule_id` w obrebie jednego lancucha,
- limit historii wykonan w kontekście (`MAX_CHAIN_EXECUTIONS`).
- `ShipmentTrackingHandler` triggeruje automatyzacje tylko po zmianie `delivery_status` i przekazuje kontekst (`package_id`, `provider`, `delivery_status`, `delivery_status_raw`, `previous_status`).
- `DeliveryStatus` normalizuje statusy Allegro edge zarowno z opisow PL, jak i EN (mapa slugow + fallback keyword matching), dzieki czemu opisy typu `Parcel is awaiting pick-up` i `Parcel has been delivered` sa mapowane na statusy biznesowe zamiast `unknown`.
- Kolejka wydruku ma akcje usuwania wpisu przez route `POST /settings/printing/jobs/delete` (CSRF + `OrderProAlerts.confirm`).
- Szablony e-mail obsluguja zmienne przesylki:
- `{{przesylka.numer}}` -> `shipment_packages.tracking_number` (najnowsza paczka zamowienia),
@@ -29,7 +30,7 @@
- `App\Modules\Settings`
- `App\Modules\Accounting` (modul paragonow — wystawianie, podglad, druk, PDF, lista, eksport XLSX)
- `App\Modules\Settings\EmailMailbox*` (skrzynki pocztowe SMTP — CRUD + test polaczenia)
- `App\Modules\Settings\EmailTemplate*` (szablony e-mail — CRUD + Quill.js + zmienne + zalaczniki)
- `App\Modules\Settings\EmailTemplate*` (szablony e-mail - lista + osobna podstrona formularza create/edit + Quill.js + zmienne + zalaczniki)
- `App\Modules\Email` (wysylka e-mail z zamowien — EmailSendingService, VariableResolver, AttachmentGenerator; kompozycja: header (mailbox) + body (template) + footer (mailbox))
- `App\Modules\Automation` (zadania automatyczne — reguly zdarzenie/warunki/akcje, CRUD)
@@ -92,6 +93,14 @@
- `POST /settings/email-mailboxes/delete`
- `POST /settings/email-mailboxes/toggle`
- `POST /settings/email-mailboxes/test`
- `GET /settings/email-templates`
- `GET /settings/email-templates/create`
- `GET /settings/email-templates/edit`
- `POST /settings/email-templates/save`
- `POST /settings/email-templates/delete`
- `POST /settings/email-templates/duplicate`
- `POST /settings/email-templates/toggle`
- `POST /settings/email-templates/preview`
- `GET /settings/automation`
- `GET /settings/automation/create`
- `POST /settings/automation/store`
@@ -490,6 +499,22 @@
- `activeSettings = users`
- Usunieto wewnetrzny pasek `settings-nav` z widokow podstron ustawien.
## Przeplyw Ustawienia > Szablony e-mail
- `GET /settings/email-templates`:
- `EmailTemplateController::index(Request): Response`
- renderuje liste szablonow (`resources/views/settings/email-templates.php`) i akcje tabeli.
- `GET /settings/email-templates/create`:
- `EmailTemplateController::create(Request): Response`
- renderuje osobna podstrone formularza tworzenia (`resources/views/settings/email-templates-form.php`).
- `GET /settings/email-templates/edit?id={id}`:
- `EmailTemplateController::edit(Request): Response`
- laduje wskazany szablon i renderuje osobna podstrone formularza edycji.
- `POST /settings/email-templates/save`:
- `EmailTemplateController::save(Request): Response`
- waliduje CSRF i wymagane pola,
- przy bledzie wraca na odpowiednia podstrone formularza (`create` lub `edit`),
- po sukcesie zapisuje szablon i wraca do listy.
## Zasady aktualizacji
- Przy kazdej zmianie dopisz:
- nowe klasy i metody (sygnatury + odpowiedzialnosc),
@@ -586,3 +611,4 @@
## Klasy (aktualizacja 2026-03-28)
- `App\Modules\Automation\AutomationExecutionLogRepository` (create, paginate, count, listEventTypes, purgeOlderThanDays).
- `App\Modules\Cron\AutomationHistoryCleanupHandler` (cleanup retencji historii automatyzacji).

View File

@@ -104,6 +104,7 @@ Migracje z prefiksem `ensure_` to migracje kompensujące — zostały dodane
- nowa tabela `automation_execution_logs` (historia wykonan regul automatyzacji: co, kiedy, na jakim zamowieniu, wynik),
- indeksy pod filtrowanie po czasie/zdarzeniu/statusie/regule/zamowieniu,
- seed harmonogramu `cron_schedules` dla joba `automation_history_cleanup` (retencja historii starszej niz 30 dni).
- 2026-04-04: Hotfix trackingu Allegro Delivery (edge API) - rozszerzono mapowanie statusow EN i fallback keyword matching (`Parcel is awaiting pick-up`, `Parcel has been delivered`, itp.) w warstwie aplikacyjnej; bez zmian schematu bazy.
## Tabele

View File

@@ -1,5 +1,30 @@
# Tech Changelog
## 2026-04-04 (Email templates - split list/form view)
- `EmailTemplateController`:
- dodano osobne endpointy widokowe `create()` i `edit()` dla formularza szablonu,
- wydzielono render formularza do `renderForm(...)`,
- `save()` przy bledzie walidacji/CSRF wraca na odpowiednia podstrone formularza (`/create` albo `/edit?id=`), zamiast do listy.
- Routing:
- dodano trasy `GET /settings/email-templates/create` oraz `GET /settings/email-templates/edit`.
- Widoki:
- `resources/views/settings/email-templates.php` zawiera tylko liste szablonow i akcje tabeli,
- dodano `resources/views/settings/email-templates-form.php` jako osobna podstrone create/edit (Quill, zmienne, preview).
- Brak zmian schematu bazy danych.
## 2026-04-04 (Phase 69 - Allegro Tracking English Statuses, Plan 01)
- `DeliveryStatus::slugifyAllegroDescription()`:
- dodano obsluge prefiksow EN (`Parcel has been ...`, `Parcel is ...`, `Courier has ...`) przed slugifikacja.
- `DeliveryStatus`:
- rozszerzono `ALLEGRO_EDGE_MAP` o slugi EN i ich mapowanie na statusy biznesowe (m.in. `awaiting_pick_up`, `delivered`, `dispatched`, `released_for_delivery`),
- rozszerzono `ALLEGRO_EDGE_DESCRIPTIONS` o opisy EN/PL dla nowych slugow,
- rozszerzono `guessStatusFromDescription()` o keyword fallback dla statusow EN (delivery/return/cancel/pickup/transit/confirmed/created/problem).
- Dodano test jednostkowy `tests/Unit/DeliveryStatusTest.php` pokrywajacy:
- mapowanie EN (`Parcel is awaiting pick-up`, `Parcel has been delivered`),
- fallback EN (`released for delivery`),
- regresje mapowania PL (`Przesylka zostala dostarczona`).
- Brak zmian schematu bazy danych.
## 2026-04-03 (Phase 64 - Receipt Datetime Precision, Plan 01)
- Migracja `20260403_000076_alter_receipts_issue_date_to_datetime.sql`: ALTER TABLE receipts MODIFY issue_date DATETIME NOT NULL.
- `ReceiptController::store()`: zapis issue_date jako Y-m-d H:i:s, konwersja z formatu datetime-local (T separator).
@@ -878,5 +903,3 @@