Files
orderPRO/.paul/phases/78-preset-auto-submit/78-01-PLAN.md
2026-04-07 20:32:43 +02:00

3.4 KiB

phase, plan, type, wave, depends_on, files_modified, autonomous
phase plan type wave depends_on files_modified autonomous
78-preset-auto-submit 01 execute 1
resources/views/shipments/prepare.php
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.

<acceptance_criteria>

AC-1: Auto-submit po kliknięciu presetu

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

Given preset z zapisanymi danymi (carrier, wymiary, metoda dostawy)
When preset jest aplikowany
Then wszystkie pola formularza są poprawnie wypełnione przed submitem

</acceptance_criteria>

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 `<form>` ma id. Jeśli nie, dodaj `id="shipment-form"` do tagu `<form>`.

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

<success_criteria>

  • Task 1 ukończony
  • Weryfikacja przeszła
  • Brak błędów PHP </success_criteria>
After completion, create `.paul/phases/78-preset-auto-submit/78-01-SUMMARY.md`