update
This commit is contained in:
165
.paul/phases/15-remove-softra-insurance/15-01-PLAN.md
Normal file
165
.paul/phases/15-remove-softra-insurance/15-01-PLAN.md
Normal file
@@ -0,0 +1,165 @@
|
||||
---
|
||||
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
|
||||
---
|
||||
|
||||
<objective>
|
||||
## 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
|
||||
</objective>
|
||||
|
||||
<context>
|
||||
@.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
|
||||
</context>
|
||||
|
||||
<acceptance_criteria>
|
||||
|
||||
## 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
|
||||
```
|
||||
|
||||
</acceptance_criteria>
|
||||
|
||||
<tasks>
|
||||
|
||||
<task type="auto">
|
||||
<name>Task 1: Usunięcie kontenera insurance z szablonu widgetu</name>
|
||||
<files>wp-content/plugins/carei-reservation/includes/class-elementor-widget.php</files>
|
||||
<action>
|
||||
W `class-elementor-widget.php` (ok. linia 158–161) usunąć blok:
|
||||
- `<div class="carei-form__protection-divider" aria-hidden="true"></div>`
|
||||
- `<div class="carei-form__row" id="carei-insurance-container">...komentarz...</div>`
|
||||
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.
|
||||
</action>
|
||||
<verify>
|
||||
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.
|
||||
</verify>
|
||||
<done>AC-1 satysfakcjonowane: kontener nie istnieje w DOM.</done>
|
||||
</task>
|
||||
|
||||
<task type="auto">
|
||||
<name>Task 2: Usunięcie logiki insurance w carei-reservation.js</name>
|
||||
<files>wp-content/plugins/carei-reservation/assets/js/carei-reservation.js</files>
|
||||
<action>
|
||||
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`.
|
||||
</action>
|
||||
<verify>
|
||||
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.
|
||||
</verify>
|
||||
<done>AC-1, AC-3 satysfakcjonowane: pozycje Softra-insurance są dropowane przed renderem i przed budową payloadu.</done>
|
||||
</task>
|
||||
|
||||
<task type="checkpoint:human-verify" gate="blocking">
|
||||
<what-built>
|
||||
- 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.
|
||||
</what-built>
|
||||
<how-to-verify>
|
||||
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.
|
||||
</how-to-verify>
|
||||
<resume-signal>Napisz "approved" aby zamknąć plan, lub opisz problemy do poprawy.</resume-signal>
|
||||
</task>
|
||||
|
||||
</tasks>
|
||||
|
||||
<boundaries>
|
||||
|
||||
## 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
|
||||
</boundaries>
|
||||
|
||||
<verification>
|
||||
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
|
||||
</verification>
|
||||
|
||||
<success_criteria>
|
||||
- Wszystkie tasks zakończone
|
||||
- Checkpoint human-verify zatwierdzony ("approved")
|
||||
- Brak regresji w Phase 13 (pakiety WP) i w pobieraniu extras Softra
|
||||
</success_criteria>
|
||||
|
||||
<output>
|
||||
Po zakończeniu: `.paul/phases/15-remove-softra-insurance/15-01-SUMMARY.md`
|
||||
</output>
|
||||
Reference in New Issue
Block a user