Files
carei.pagedev.pl/.paul/PROJECT.md
Jacek Pyziak 2af73782f2 feat(05-admin-panel): Admin panel z historią rezerwacji
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>
2026-03-25 17:39:09 +01:00

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

  1. Elementor Widget — plugin rejestrujący widget w Elementorze, wywoływany przyciskiem "Złóż zapytanie o rezerwację"
  2. Integracja z Softra Rent API — pobieranie oddziałów, klas pojazdów, cen, dodatków; tworzenie klientów i rezerwacji
  3. Multi-step form — krok 1: formularz z Figmy (segment, daty, lokalizacja, opcje, dane osobowe), krok 2: Overlay z podsumowaniem
  4. Responsive — desktop (modal overlay) i mobile (full-screen bottom sheet)
  5. 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