Phase 5 complete — CPT carei_reservation z automatycznym zapisem, lista z kolumnami i filtrem statusu, meta box szczegółów, system statusów nowe/przeczytane/zrealizowane, auto-mark-read. Milestone v0.1 Formularz Rezerwacji MVP — all 5 phases complete. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
3.2 KiB
3.2 KiB
Carei - Formularz Rezerwacji Samochodu
Value Proposition
Plugin Elementor do rezerwacji samochodu na stronie carei.pagedev.pl, zintegrowany z API Softra Rent. Formularz wielokrokowy: krok 1 (podstawowe dane rezerwacji) → krok 2 (Overlay z pełnym podsumowaniem i płatnością).
Core Requirements
- Elementor Widget — plugin rejestrujący widget w Elementorze, wywoływany przyciskiem "Złóż zapytanie o rezerwację"
- Integracja z Softra Rent API — pobieranie oddziałów, klas pojazdów, cen, dodatków; tworzenie klientów i rezerwacji
- Multi-step form — krok 1: formularz z Figmy (segment, daty, lokalizacja, opcje, dane osobowe), krok 2: Overlay z podsumowaniem
- Responsive — desktop (modal overlay) i mobile (full-screen bottom sheet)
- Design zgodny z Figmą — kolory Carei (#2F2482, #FF0000), font Albert Sans
Tech Stack
- WordPress + Hello Elementor theme
- Elementor + Elementor Pro
- Istniejący plugin:
wp-content/plugins/elementor-addon/(custom widgets) - PHP backend (REST API proxy do Softra)
- Vanilla JS + CSS frontend (bez frameworków JS)
- Softra Rent API:
https://softra.com.pl:8444/rent2www-ci-tst
Constraints
- Dane API w
.env(url, username, password) - Token JWT ważny 1h — cacheowanie po stronie serwera
- Formularz NIE jest natywnym formularzem Elementor Pro — to custom widget
- Brak dodatkowych zależności npm/composer — czysty PHP + JS
Validated Requirements (Milestone v0.1)
- ✓ Elementor Widget z modalem rezerwacji — Phase 1-2
- ✓ Integracja z Softra Rent API (auth, branch, carclass, pricelist, booking) — Phase 1, 3
- ✓ Multi-step form: formularz → podsumowanie → sukces — Phase 2-3
- ✓ Responsive modal (desktop overlay + mobile) — Phase 2
- ✓ Error handling: token retry, timeout, network errors — Phase 4
- ✓ Accessibility: ARIA dialog, focus trap, aria-live — Phase 4
- ✓ Admin panel: CPT carei_reservation, lista, szczegóły, statusy — Phase 5
Key Decisions
| Decision | Phase | Rationale |
|---|---|---|
| CPT + post_meta (nie custom table) | 5 | WordPress-native, prostsze dla MVP |
| Fire-and-forget save | 5 | Nie blokuj response — rezerwacja już w Softra |
| Meta-based status (nie taxonomy) | 5 | Prosty 3-wartościowy enum |
| Token retry on 401/403 | 4 | Automatyczny re-auth bez interwencji usera |
| Inline display:none for steps | 4 | CSS class conflict resolution |
Out of Scope (backlog)
- Ubezpieczenie (pakiet Soft/Premium) — czeka na API Softra
- Wyjazd zagraniczny (lista krajów + ceny) — czeka na API Softra
- Eksport CSV/PDF rezerwacji
- Email notyfikacje
API Endpoints (kluczowe)
| Endpoint | Metoda | Użycie |
|---|---|---|
/account/auth |
POST | Autoryzacja JWT |
/branch/list |
GET | Lista oddziałów (miejsce odbioru) |
/car/class/list |
POST | Klasy pojazdów wg dat i oddziału |
/pricelist/list |
POST | Cennik z dodatkami |
/customer/add |
POST | Tworzenie klienta |
/rent/makebooking |
POST | Złożenie rezerwacji |
/rent/confirm |
POST | Potwierdzenie rezerwacji |
/rent/princingSummary |
POST | Podsumowanie opłat |
/agreement/def/list |
GET | Definicje zgód RODO |