13 KiB
phase, plan, type, wave, depends_on, files_modified, autonomous
| phase | plan | type | wave | depends_on | files_modified | autonomous | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 49-automation-history-tab | 01 | execute | 1 |
|
false |
Purpose
Operator musi widziec kiedy i na jakim zamowieniu uruchomila sie automatyzacja (audyt) oraz miec mozliwosc automatycznej zmiany statusu zamowienia przez regule bez recznej ingerencji.
Output
Nowa historia wykonan automatyzacji zapisywana w dedykowanej tabeli, UI historii w tabie Historia z filtrowaniem i paginacja, automatyczne czyszczenie wpisow starszych niz 30 dni oraz nowa akcja reguly update_order_status w formularzu automatyzacji.
Prior Work (only if genuinely needed)
@.paul/phases/16-automated-tasks/16-02-SUMMARY.md @.paul/phases/47-shipment-created-automation/47-01-SUMMARY.md
Source Files
@src/Modules/Automation/AutomationController.php @src/Modules/Automation/AutomationRepository.php @src/Modules/Automation/AutomationService.php @resources/views/automation/form.php @public/assets/js/modules/automation-form.js @resources/views/automation/index.php @resources/scss/modules/_automation.scss @src/Modules/Cron/CronHandlerFactory.php @src/Modules/Cron/CronRepository.php @resources/views/settings/cron.php @routes/web.php
## Required Skills (from SPECIAL-FLOWS.md)| Skill | Priority | When to Invoke | Loaded? |
|---|---|---|---|
sonar-scanner |
required | Po APPLY, przed UNIFY | o |
| /frontend-design | optional | Przy dopracowaniu ukladu tabow i tabeli historii | o |
| /code-review | optional | Po APPLY, przed UNIFY | o |
BLOCKING: Required skills MUST be loaded before APPLY proceeds.
Skill Invocation Checklist
sonar-scanneruruchomiony po APPLY- /frontend-design (opcjonalnie)
- /code-review (opcjonalnie)
<acceptance_criteria>
AC-1: Zakladka automatyzacji ma dwa taby z rozdzielonym zakresem
Given uzytkownik otwiera `/settings/automation`
When laduje sie ekran
Then widzi tab `Ustawienia` z obecna lista regul i akcjami CRUD
And widzi tab `Historia` z lista wykonan automatyzacji
AC-2: Historia pokazuje co, kiedy i dla jakiego zamowienia
Given regula automatyzacji zostala wywolana przez trigger
When wykonanie reguly zakonczy sie sukcesem lub bledem
Then system zapisuje wpis historii zawierajacy co najmniej: event_type, rule_id/rule_name, order_id, status wykonania i timestamp
And wpis jest widoczny w tabie `Historia`
AC-3: Historia wspiera filtrowanie i paginacje
Given tab `Historia` zawiera wpisy z wielu regul i zdarzen
When uzytkownik uzyje filtrow (np. event, status, rule, order_id, zakres dat) i zmieni strone
Then widok pokazuje tylko pasujace rekordy
And paginacja zachowuje aktywne filtry
AC-4: Wpisy starsze niz 30 dni sa usuwane automatycznie
Given historia zawiera wpisy starsze niz 30 dni
When uruchomi sie harmonogram czyszczenia
Then wpisy starsze niz 30 dni zostana usuniete
And nowsze wpisy pozostaja bez zmian
AC-5: Dokumentacja odzwierciedla nowy kontrakt historii automatyzacji
Given wdrozono nowa tabele i flow zapisu historii automatyzacji
When zespol czyta dokumentacje techniczna
Then `DOCS/DB_SCHEMA.md`, `DOCS/ARCHITECTURE.md` i `DOCS/TECH_CHANGELOG.md` opisuja nowe elementy
AC-6: Automatyzacja obsluguje akcje zmiany statusu zamowienia
Given uzytkownik tworzy lub edytuje regule na `/settings/automation/create`
When wybierze akcje `Zmien status zamowienia` i wskaze status docelowy
Then konfiguracja zapisuje sie poprawnie
And po triggerze reguly status zamowienia jest zmieniany na wskazany status
And aktualizacja statusu jest zapisana zgodnie z obecnym flow historii statusow/activity log
</acceptance_criteria>
Task 1: Dodaj model danych historii wykonania automatyzacji i retencje 30 dni database/migrations/20260328_000072_create_automation_execution_logs_table.sql, src/Modules/Automation/AutomationExecutionLogRepository.php, src/Modules/Cron/AutomationHistoryCleanupHandler.php, src/Modules/Cron/CronHandlerFactory.php Dodaj migracje tworzaca tabele historii wykonan automatyzacji (`automation_execution_logs`) z indeksami pod filtry i sortowanie po czasie. Dodaj repozytorium historii z metodami: insert wpisu wykonania, paginowane pobieranie z filtrami, count, purgeOlderThanDays(30). Dodaj handler crona do cyklicznego usuwania starych wpisow i podlacz go w `CronHandlerFactory`. Dodaj seed harmonogramu cleanup (`automation_history_cleanup`) tak, aby dzialal automatycznie bez recznej konfiguracji. Trzymaj sie medoo/prepared statements i bez laczenia SQL stringiem przez wartosci dynamiczne. rg -n "automation_execution_logs|automation_history_cleanup|purgeOlderThanDays|AutomationHistoryCleanupHandler" database/migrations src/Modules/Automation src/Modules/Cron AC-2 satisfied i AC-4 satisfied: dane historii sa zapisywane i maja automatyczna retencje 30 dni. Task 2: Rozszerz AutomationService i kontroler o zapis historii oraz endpoint listowania src/Modules/Automation/AutomationService.php, src/Modules/Automation/AutomationController.php, src/Modules/Automation/AutomationRepository.php, routes/web.php W `AutomationService::trigger` dodaj rejestracje wykonania per regula (co najmniej: event_type, rule_id, rule_name, order_id, result_status, result_message, executed_at), z logowaniem sukcesu i bledow bez zatrzymywania kolejnych regul. Rozszerz `AutomationController::index` o obsluge query filtrow i paginacji historii oraz przekazanie danych do widoku. Dodaj potrzebne metody repository do listowania filtrow pomocniczych (np. aktywne reguly/eventy) jesli sa potrzebne do UI. Zadbaj, aby filtry/paginacja historii nie ingerowaly w istniejaca liste regul i zachowaly kompatybilnosc obecnych akcji CRUD. rg -n "execution log|history|history_page|history_filters|logExecution|automation history" src/Modules/Automation routes/web.php AC-2 satisfied i AC-3 satisfied: backend dostarcza pelna historie z filtrowaniem i paginacja. Task 3: Dodaj akcje `update_order_status` do automatyzacji (backend + formularz) src/Modules/Automation/AutomationController.php, src/Modules/Automation/AutomationService.php, resources/views/automation/form.php, public/assets/js/modules/automation-form.js Rozszerz `ALLOWED_ACTION_TYPES` o nowa akcje `update_order_status` oraz walidacje konfiguracji tej akcji. W `AutomationService` dodaj wykonanie akcji aktualizacji statusu zamowienia przez istniejacy, centralny flow domenowy (z zachowaniem wpisu historii statusow i activity log). W formularzu automatyzacji dodaj nowa opcje akcji `Zmien status zamowienia` oraz selector statusu docelowego oparty o aktywne statusy orderPRO. Utrzymaj zgodnosc create/edit i dynamicznego JS dodajacego kolejne akcje. rg -n "update_order_status|Zmien status zamowienia|order_status|action_type" src/Modules/Automation resources/views/automation public/assets/js/modules/automation-form.js AC-6 satisfied: nowa akcja jest konfigurowalna i zmienia status zamowienia. Task 4: Zbuduj UI dwoch tabow (Ustawienia/Historia) i zaktualizuj dokumentacje resources/views/automation/index.php, resources/scss/modules/_automation.scss, public/assets/css/app.css, DOCS/DB_SCHEMA.md, DOCS/ARCHITECTURE.md, DOCS/TECH_CHANGELOG.md Przebuduj widok `/settings/automation` na taby zgodne ze stylem projektu (`content-tabs-nav` / `content-tab-panel`): - tab `Ustawienia`: zachowuje obecna liste regul i akcje, - tab `Historia`: tabela historii + formularz filtrow + paginacja. Zachowaj kompaktowy layout (male odstepy, duza gestosc informacji) i brak natywnych `alert()/confirm()`. Dodaj/uzupelnij style SCSS tylko w plikach SCSS, a nastepnie przebuduj CSS. Zaktualizuj dokumentacje techniczna o nowa tabele historii oraz nowa akcje `update_order_status`. rg -n "content-tabs-nav|Historia|Ustawienia|automation history|30 dni|automation_execution_logs|update_order_status" resources/views/automation/index.php resources/scss/modules/_automation.scss DOCS/DB_SCHEMA.md DOCS/ARCHITECTURE.md DOCS/TECH_CHANGELOG.md AC-1 satisfied i AC-5 satisfied: UI i dokumentacja sa zgodne z nowa funkcjonalnoscia. Tab `Historia` na `/settings/automation` z filtrowaniem i paginacja, automatyczna retencja wpisow 30 dni oraz akcja `Zmien status zamowienia`. 1. Otworz: `https://orderpro.projectpro.pl/settings/automation`. 2. Potwierdz obecnosc tabow: `Ustawienia` i `Historia`. 3. W tabie `Historia` ustaw filtry (event, status, order ID lub zakres dat) i sprawdz czy lista oraz licznik/paginacja sa zgodne. 4. Wywolaj testowo regule automatyzacji i potwierdz pojawienie sie nowego wpisu (co, kiedy, jakie zamowienie). 5. W `Ustawienia > Zadania automatyczne > Dodaj zadanie` wybierz akcje `Zmien status zamowienia`, ustaw status docelowy i zapisz regule. 6. Wyzwol regule i potwierdz realna zmiane statusu zamowienia na wybrany status. 7. Potwierdz dzialanie cleanupu wpisow >30 dni (przez uruchomienie joba cron lub test na danych historycznych). Type "approved" to continue, or describe issues to fixDO NOT CHANGE
- Logika tworzenia/edycji reguly automatyzacji poza koniecznymi zmianami pod nowe taby.
- Istniejace flow wysylki e-mail/paragonow/statusow przesylki poza dodaniem logowania wykonan.
- Istniejace flow zmiany statusu zamowienia poza rozszerzeniem go jako nowej akcji automatyzacji.
- Konfiguracja runtime DB host (
DB_HOSTpozostaje runtime; bez podpinaniaDB_HOST_REMOTE).
SCOPE LIMITS
- Zakres dotyczy tylko ekranu
/settings/automationi warstwy historii automatyzacji. - Zakres obejmuje dodanie jednej nowej akcji automatyzacji:
update_order_status. - Bez zmian w innych ekranach ustawien.
- Bez dodatkowych funkcji biznesowych automatyzacji niezwi¹zanych z historia.
<success_criteria>
/settings/automationma dwa taby:UstawieniaiHistoria.- Historia pokazuje wykonania regul (co, kiedy, order) i ma filtry + paginacje.
- Akcja
Zmien status zamowieniajest dostepna i poprawnie zmienia status na wybrany przez uzytkownika. - Wpisy starsze niz 30 dni sa usuwane automatycznie.
- Dokumentacja techniczna odzwierciedla nowy model i przeplyw. </success_criteria>