--- phase: 15-remove-softra-insurance plan: 01 type: execute wave: 1 depends_on: [] files_modified: - wp-content/plugins/carei-reservation/includes/class-elementor-widget.php - wp-content/plugins/carei-reservation/assets/js/carei-reservation.js autonomous: false delegation: off --- ## Goal Usunąć z modala rezerwacji wyświetlanie pozycji ubezpieczeniowych pobieranych z Softra API (np. "Zniesienie udziału własnego"). W sekcji "Pakiety ochronne" pozostają wyłącznie kafelki SOFT/PREMIUM zarządzane w panelu WP (Phase 13). ## Purpose Po wdrożeniu Phase 13 (pakiety WP) w sekcji "Pakiety ochronne" równolegle wyświetlały się dwa źródła: (1) kafelki WP (SOFT/PREMIUM), (2) pozycje z Softra pricelist rozpoznawane heurystyką nazwy ("zniesienie"/"insurance"). Powoduje to dublowanie oferty i konflikt z polityką cenową Carei. Zostawiamy jedno źródło prawdy — panel WP. ## Output - Dynamiczny kontener `#carei-insurance-container` usunięty z szablonu widgetu - Logika JS klasyfikująca i renderująca `insuranceItems` usunięta - Pozycje Softra rozpoznane jako „zniesienie/insurance” są **odfiltrowywane całkowicie** (nie trafiają ani do kafelków, ani do `extraItems`, ani do podsumowania) - Pakiety WP (SOFT/PREMIUM) działają bez zmian @.paul/PROJECT.md @.paul/ROADMAP.md @.paul/STATE.md @.paul/phases/13-protection-packages/13-02-SUMMARY.md @wp-content/plugins/carei-reservation/includes/class-elementor-widget.php @wp-content/plugins/carei-reservation/assets/js/carei-reservation.js ## AC-1: Brak renderowania pozycji Softra-insurance ```gherkin Given użytkownik otworzył modal rezerwacji i wybrał pojazd/daty When załaduje się lista dodatków z Softra pricelist zawierająca pozycję "Zniesienie udziału własnego" Then pozycja ta NIE pojawia się w sekcji "Pakiety ochronne" And NIE pojawia się w sekcji "Opcje dodatkowe" And w DOM nie istnieje element `#carei-insurance-container` ``` ## AC-2: Pakiety WP działają bez zmian ```gherkin Given w panelu WP są zdefiniowane pakiety SOFT i PREMIUM z ceną/dobę When użytkownik otworzy modal Then w sekcji "Pakiety ochronne" widoczne są wyłącznie kafelki SOFT i PREMIUM And zaznaczenie pakietu dodaje wiersz do podsumowania i do `grandTotal` (bez zmian względem Phase 13) ``` ## AC-3: Brak wycieku do podsumowania i submit payload ```gherkin Given użytkownik przechodzi do podsumowania bez zaznaczania żadnego pakietu WP When pricelist zawierał pozycję „Zniesienie udziału" Then pozycja NIE pojawia się w tabeli podsumowania And nie jest wysyłana w `priceItems` w `makebooking` And całkowity koszt nie zawiera składnika ubezpieczenia Softra ``` Task 1: Usunięcie kontenera insurance z szablonu widgetu wp-content/plugins/carei-reservation/includes/class-elementor-widget.php W `class-elementor-widget.php` (ok. linia 158–161) usunąć blok: - `` - `
...komentarz...
` Zachować strukturę sekcji „Pakiety ochronne" z kontenerem `#carei-protection-packages-container` (kafelki SOFT/PREMIUM). Unikać: usuwania dividerów sekcji zewnętrznej ani innych pól formularza. Zmieniamy wyłącznie divider wewnętrzny + kontener insurance.
grep -n "carei-insurance-container" wp-content/plugins/carei-reservation/includes/class-elementor-widget.php → brak wyników. Ręcznie: otwórz modal, sekcja „Pakiety ochronne" pokazuje tylko kafelki WP. AC-1 satysfakcjonowane: kontener nie istnieje w DOM.
Task 2: Usunięcie logiki insurance w carei-reservation.js wp-content/plugins/carei-reservation/assets/js/carei-reservation.js 1. Usunąć zmienną `insuranceContainer` z deklaracji (ok. linia 82) oraz jej przypisanie w init (`insuranceContainer = document.getElementById('carei-insurance-container');` ok. linia 107). 2. W funkcji renderującej dodatki (ok. linie 503–525): - Usunąć lokalną zmienną `insuranceItems` i blok `if (insuranceContainer) { ... }`. - Zastąpić heurystykę „dopasuj do insurance LUB extras" filtrowaniem typu **drop** — pozycje zawierające w nazwie `zniesienie` lub `insurance` (case-insensitive) mają być **pomijane całkowicie** (nie trafiają do `extraItems`). - Pozostałe pozycje trafiają jak dotychczas do `extraItems` i są renderowane w `extrasContainer`. 3. Sprawdzić, że przy budowaniu payloadu (`priceItems` / `makebooking`) nie ma osobnej ścieżki pobierającej z `insuranceContainer` — jeśli jest, usunąć. Unikać: zmian w logice Phase 13 (renderProtectionPackages, onProtectionCardClick, getSelectedProtectionPayload) — ten kod zostaje nietknięty. Nie usuwać `extrasContainer`. grep -nE "insuranceContainer|insuranceItems|carei-insurance-container" wp-content/plugins/carei-reservation/assets/js/carei-reservation.js → brak wyników. grep -nE "zniesienie|insurance" wp-content/plugins/carei-reservation/assets/js/carei-reservation.js → tylko w filtrze drop. AC-1, AC-3 satysfakcjonowane: pozycje Softra-insurance są dropowane przed renderem i przed budową payloadu. - Usunięty kontener `#carei-insurance-container` i jego divider w szablonie PHP. - Usunięta zmienna + render logic `insuranceItems` w JS; pozycje Softra „Zniesienie udziału"/„insurance" są pomijane. - Pakiety WP (SOFT/PREMIUM) bez zmian. 1. Wypchnij przez SFTP (albo zweryfikuj lokalnie, jeśli dostępny). 2. Otwórz stronę z modalem rezerwacji (carei.pagedev.pl) z DevTools. 3. Uzupełnij krok 1 formularza tak, aby pricelist z Softra został pobrany (wybór dat/oddziału/klasy). 4. Sprawdź sekcję „Pakiety ochronne": - Widoczne TYLKO kafelki SOFT i PREMIUM z panelu WP. - Brak pozycji „Zniesienie udziału własnego" ani żadnej innej z Softra. 5. Sprawdź sekcję „Opcje dodatkowe": - Pozycje Softra są (fotelik, GPS itd.), ale brak pozycji zawierających słowo „zniesienie" lub „insurance". 6. W DevTools → Elements: `document.getElementById('carei-insurance-container')` → `null`. 7. Przejdź do podsumowania bez zaznaczania pakietu WP: - W tabeli brak wiersza ubezpieczenia Softra. - `grandTotal` = suma Softra (bez insurance) (+ pakiet WP jeśli zaznaczony). 8. Zaznacz pakiet SOFT → kafelek zaznacza się, wiersz pakietu pojawia się w podsumowaniu, total rośnie o cena×doba. Napisz "approved" aby zamknąć plan, lub opisz problemy do poprawy.
## DO NOT CHANGE - `includes/class-admin-panel.php` — panel WP pakietów (Phase 13 stable) - `includes/class-rest-proxy.php` endpoint `/protection-packages` - Logika Phase 13 w JS: `loadProtectionPackages`, `renderProtectionPackages`, `onProtectionCardClick`, `getSelectedProtectionPayload`, sekcja podsumowania z pakietem WP - Kontener `#carei-protection-packages-container` i jego style - Inne sekcje formularza (segment, daty, lokalizacja, wyjazd zagraniczny, dane osobowe) ## SCOPE LIMITS - Nie zmieniamy heurystyki klasyfikacji innych pozycji extras - Nie dotykamy backend (PHP) poza szablonem widgetu - Nie ruszamy CSS — osierocone reguły `.carei-form__protection-divider` w CSS mogą zostać (brak użycia == brak efektu) - Nie zmieniamy wywołań API Softra ani żadnych endpointów Przed zamknięciem planu: - [ ] `grep -n "carei-insurance-container"` → 0 wyników w `includes/` oraz `assets/js/` - [ ] `grep -n "insuranceContainer"` w JS → 0 wyników - [ ] Modal otwiera się, sekcja „Pakiety ochronne" pokazuje tylko SOFT/PREMIUM - [ ] Opcje dodatkowe: brak pozycji „Zniesienie udziału" - [ ] Podsumowanie i makebooking payload wolne od Softra-insurance - [ ] AC-1, AC-2, AC-3 przeszły human-verify - Wszystkie tasks zakończone - Checkpoint human-verify zatwierdzony ("approved") - Brak regresji w Phase 13 (pakiety WP) i w pobieraniu extras Softra Po zakończeniu: `.paul/phases/15-remove-softra-insurance/15-01-SUMMARY.md`