4.1 KiB
4.1 KiB
phase, plan, type, wave, depends_on, files_modified, autonomous
| phase | plan | type | wave | depends_on | files_modified | autonomous | |||
|---|---|---|---|---|---|---|---|---|---|
| 58-automation-form-preserve | 01 | execute | 1 |
|
|
true |
Purpose
Uzytkownik nie traci wypelnionych danych (nazwa, zdarzenie, warunki, akcje) po napotkaniu bledu walidacji.
Output
- Zmiana store() i update() w AutomationController — renderForm() z danymi z request zamiast redirect
<acceptance_criteria>
AC-1: Store — dane zachowane po bledzie walidacji
Given wypelniam formularz nowej reguly automatyzacji
When walidacja zwraca blad (np. brak warunkow)
Then formularz wyswietla sie ponownie z wypelnionymi danymi
And komunikat bledu jest widoczny
And nie nastepuje redirect
AC-2: Update — dane zachowane po bledzie walidacji
Given edytuje istniejaca regule i zmieniam dane
When walidacja zwraca blad
Then formularz wyswietla sie ponownie z danymi z formularza (nie z DB)
And komunikat bledu jest widoczny
AC-3: Zapis sukces — bez zmian w zachowaniu
Given wypelniam poprawnie formularz
When zapisuje
Then regula jest zapisana i nastepuje redirect do listy
</acceptance_criteria>
Task 1: Re-render formularza zamiast redirect przy bledzie walidacji src/Modules/Automation/AutomationController.php 1. Dodaj prywatna metode buildRuleFromRequest(Request $request, ?int $id = null): array - Zbuduj tablice $rule z POST data w formacie oczekiwanym przez form.php: - 'id' => $id - 'name' => $request->input('name') - 'event_type' => $request->input('event_type') - 'is_active' => $request->input('is_active') !== null ? 1 : 0 - 'conditions' => zmapuj z extractConditions — format: [{condition_type, condition_value}] - 'actions' => zmapuj z extractActions — format: [{action_type, action_config}] - Warunki i akcje powinny byc w takim formacie, jaki form.php oczekuje od $rule2. Zmien renderForm(?array $rule, string $errorMessage = ''): Response
- Dodaj parametr $errorMessage
- Uzyj $errorMessage jesli niepusty, inaczej Flash::get
3. W store():
- Zamiast: Flash::set('error') + redirect('/create')
- Zrob: return $this->renderForm($this->buildRuleFromRequest($request), $validationError)
4. W update():
- Zamiast: Flash::set('error') + redirect('/edit?id=')
- Zrob: return $this->renderForm($this->buildRuleFromRequest($request, $id), $validationError)
5. Upewnij sie ze try/catch bledy (blad zapisu DB) tez uzywaja renderForm z danymi request — nie redirect.
PHP lint. Sprawdz ze formularz z bledna walidacja renderuje sie z danymi.
AC-1, AC-2, AC-3 satisfied
DO NOT CHANGE
- resources/views/automation/form.php (widok juz obsluguje $rule — nie wymaga zmian)
- public/assets/js/modules/automation-form.js
- src/Modules/Automation/AutomationRepository.php
- src/Modules/Automation/AutomationService.php
SCOPE LIMITS
- Tylko formularz automatyzacji — nie naprawiamy innych formularzy w tej fazie
- Nie zmieniamy struktury Flash class
<success_criteria>
- Dane formularza zachowane po bledzie walidacji
- Brak regresji w happy path (poprawny zapis) </success_criteria>