--- phase: 78-preset-auto-submit plan: 01 type: execute wave: 1 depends_on: [] files_modified: - resources/views/shipments/prepare.php autonomous: true --- ## Goal Presety przesyłek po autofill automatycznie submitują formularz (kliknięcie "Utwórz przesyłkę"). ## Purpose Aktualnie użytkownik musi kliknąć preset, a potem ręcznie kliknąć "Utwórz przesyłkę". Skoro preset wypełnia wszystkie dane — submit powinien nastąpić automatycznie, oszczędzając jedno kliknięcie. ## Output - Funkcja `applyPreset()` po wypełnieniu pól automatycznie submituje formularz ## Project Context @.paul/PROJECT.md @.paul/STATE.md ## Source Files @resources/views/shipments/prepare.php (linie 957-993: applyPreset + setTimeout 200ms) No specialized flows configured — optional skills only. ## AC-1: Auto-submit po kliknięciu presetu ```gherkin Given formularz przygotowania przesyłki z co najmniej jednym presetem When użytkownik klika przycisk presetu Then formularz wypełnia się danymi presetu And formularz automatycznie się submituje (tworzenie przesyłki) ``` ## AC-2: Brak regresji autofill ```gherkin Given preset z zapisanymi danymi (carrier, wymiary, metoda dostawy) When preset jest aplikowany Then wszystkie pola formularza są poprawnie wypełnione przed submitem ``` Task 1: Dodanie auto-submit po applyPreset resources/views/shipments/prepare.php W funkcji `applyPreset()` (linia ~957), wewnątrz istniejącego `setTimeout` (200ms) na końcu callbacku (po `selectDeliveryService(preset)`): 1. Dodaj drugi `setTimeout` (krótki, np. 100ms) po zakończeniu autofill, który: - Znajduje formularz: `document.getElementById('shipment-form')` lub `document.querySelector('form[action*="shipment/create"]')` - Wywołuje `form.submit()` lub klika przycisk submit 2. Formularz może nie mieć id — sprawdź czy `
` ma id. Jeśli nie, dodaj `id="shipment-form"` do tagu ``. Uwaga: `selectDeliveryService()` może mieć swój setTimeout — sprawdź czy submit nie nastąpi przed zakończeniem selekcji. Użyj wystarczającego opóźnienia (np. łącznie 400-500ms od kliknięcia presetu). Przegląd kodu: po applyPreset formularz submituje się automatycznie. PHP lint: brak błędów składni. AC-1 i AC-2 spełnione — preset autofill + auto-submit ## DO NOT CHANGE - Logika autofill presetu (kolejność wypełniania pól, setTimeout 200ms) - Backend ShipmentController (logika tworzenia przesyłki) - API presetów (/api/shipment-presets/*) ## SCOPE LIMITS - Tylko auto-submit po kliknięciu presetu - Nie zmieniamy zachowania przycisku "Utwórz przesyłkę" ani ręcznego formularza Before declaring plan complete: - [ ] Kliknięcie presetu wypełnia formularz i submituje go - [ ] Formularz ma id umożliwiające łatwe znalezienie w JS - [ ] Brak błędów PHP syntax - [ ] Ręczne wypełnienie formularza i kliknięcie "Utwórz przesyłkę" nadal działa - Task 1 ukończony - Weryfikacja przeszła - Brak błędów PHP After completion, create `.paul/phases/78-preset-auto-submit/78-01-SUMMARY.md`