This commit is contained in:
2026-04-07 20:32:43 +02:00
parent 1933c74395
commit 8fa9ca6439
45 changed files with 2974 additions and 3382 deletions

View File

@@ -0,0 +1,109 @@
---
phase: 78-preset-auto-submit
plan: 01
type: execute
wave: 1
depends_on: []
files_modified:
- resources/views/shipments/prepare.php
autonomous: true
---
<objective>
## 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
</objective>
<context>
## Project Context
@.paul/PROJECT.md
@.paul/STATE.md
## Source Files
@resources/views/shipments/prepare.php (linie 957-993: applyPreset + setTimeout 200ms)
</context>
<skills>
No specialized flows configured — optional skills only.
</skills>
<acceptance_criteria>
## 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
```
</acceptance_criteria>
<tasks>
<task type="auto">
<name>Task 1: Dodanie auto-submit po applyPreset</name>
<files>resources/views/shipments/prepare.php</files>
<action>
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).
</action>
<verify>
Przegląd kodu: po applyPreset formularz submituje się automatycznie.
PHP lint: brak błędów składni.
</verify>
<done>AC-1 i AC-2 spełnione — preset autofill + auto-submit</done>
</task>
</tasks>
<boundaries>
## 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
</boundaries>
<verification>
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
</verification>
<success_criteria>
- Task 1 ukończony
- Weryfikacja przeszła
- Brak błędów PHP
</success_criteria>
<output>
After completion, create `.paul/phases/78-preset-auto-submit/78-01-SUMMARY.md`
</output>

View File

@@ -0,0 +1,91 @@
---
phase: 78-preset-auto-submit
plan: 01
subsystem: shipments
tags: [presets, autofill, auto-submit, ux]
requires:
- phase: 23-shipment-presets-backend
provides: preset API i autofill
provides:
- Auto-submit formularza po kliknieciu presetu przesylki
affects: []
tech-stack:
added: []
patterns: []
key-files:
created: []
modified:
- resources/views/shipments/prepare.php
key-decisions:
- "500ms laczny delay (200ms autofill + 300ms submit) — wystarczajacy na selectDeliveryService"
patterns-established: []
duration: 5min
started: 2026-04-07T00:00:00Z
completed: 2026-04-07T00:05:00Z
---
# Phase 78 Plan 01: Preset Auto Submit Summary
**Presety przesylek automatycznie submituja formularz po autofill — jedno klikniecie zamiast dwoch**
## Performance
| Metric | Value |
|--------|-------|
| Duration | ~5min |
| Started | 2026-04-07 |
| Completed | 2026-04-07 |
| Tasks | 1 completed |
| Files modified | 1 |
## Acceptance Criteria Results
| Criterion | Status | Notes |
|-----------|--------|-------|
| AC-1: Auto-submit po kliknieciu presetu | Pass | form.submit() po 500ms od klikniecia |
| AC-2: Brak regresji autofill | Pass | Autofill bez zmian, submit nastepuje po nim |
## Accomplishments
- Dodano `id="shipment-form"` na formularz tworzenia przesylki
- `applyPreset()` po autofill (200ms) czeka 300ms i wywoluje `form.submit()`
- Jedno klikniecie presetu = wypelnienie + utworzenie przesylki
## Files Created/Modified
| File | Change | Purpose |
|------|--------|---------|
| `resources/views/shipments/prepare.php` | Modified | id na formularzu + auto-submit w applyPreset() |
## Decisions Made
None — plan wykonany zgodnie ze specyfikacja.
## Deviations from Plan
None — plan executed exactly as written.
## Issues Encountered
None.
## Next Phase Readiness
**Ready:**
- Preset flow kompletny: klik → autofill → submit
**Concerns:**
- None
**Blockers:**
- None
---
*Phase: 78-preset-auto-submit, Plan: 01*
*Completed: 2026-04-07*