---
phase: 05-admin-panel
plan: 01
subsystem: admin
tags: [wordpress, cpt, post-meta, admin-panel]

requires:
  - phase: 03-form-submit-booking
    provides: booking flow z reservationId/reservationNo w API response
provides:
  - Admin panel CPT carei_reservation w wp-admin
  - Automatyczny zapis rezerwacji po sukcesie booking
  - Lista z kolumnami, filtr statusu, meta box szczegółów
  - System statusów nowe/przeczytane/zrealizowane
affects: []

tech-stack:
  added: []
  patterns: [CPT + post_meta for data storage, fire-and-forget save, static helper method pattern]

key-files:
  created: [includes/class-admin-panel.php]
  modified: [includes/class-rest-proxy.php, carei-reservation.php]

key-decisions:
  - "CPT + post_meta zamiast custom table — WordPress-native, prostsze dla MVP"
  - "Fire-and-forget save — nigdy nie blokuje response do usera"
  - "Meta-based status zamiast taxonomy — prosty 3-wartościowy enum"
  - "Auto-mark-read on edit — naturalny workflow bez dodatkowych kliknięć"

patterns-established:
  - "Static save helper: Carei_Admin_Panel::save_reservation() wywoływany z REST proxy"
  - "Inline admin CSS scoped do CPT screen"

duration: ~2h
started: 2026-03-25
completed: 2026-03-25
---

# Phase 5 Plan 01: Admin Panel — Historia Formularzy Summary

**CPT carei_reservation z automatycznym zapisem rezerwacji, listą z kolumnami/filtrami, meta boxem szczegółów i systemem statusów nowe/przeczytane/zrealizowane.**

## Performance

| Metric | Value |
|--------|-------|
| Duration | ~2h |
| Started | 2026-03-25 |
| Completed | 2026-03-25 |
| Tasks | 3 completed (2 auto + 1 human-verify) |
| Files modified | 3 |

## Acceptance Criteria Results

| Criterion | Status | Notes |
|-----------|--------|-------|
| AC-1: CPT carei_reservation zarejestrowany | Pass | Menu "Rezerwacje" z dashicons-car, public: false, show_ui: true |
| AC-2: Rezerwacja zapisuje się automatycznie | Pass | save_reservation() wywoływane po make_booking success |
| AC-3: Lista z kolumnami | Pass | Nr, Klient, Segment, Daty, Oddział, Status, Data + filtr statusu |
| AC-4: Podgląd szczegółów | Pass | Meta box z pełną tabelą danych + dropdown statusu |
| AC-5: Auto-mark-read | Pass | Status "nowe" → "przeczytane" przy otwarciu edycji |

## Accomplishments

- CPT `carei_reservation` z pełnym admin UI: kolumny, filtr, meta box, statusy z kolorowymi badge'ami
- Fire-and-forget zapis rezerwacji po sukcesie booking (nie blokuje response)
- Klikalny nr rezerwacji w liście (link do edycji)

## Files Created/Modified

| File | Change | Purpose |
|------|--------|---------|
| `includes/class-admin-panel.php` | Created | CPT registration, admin columns, meta box, status system, auto-mark-read, save helper |
| `includes/class-rest-proxy.php` | Modified | Wywołanie save_reservation() po udanym make_booking |
| `carei-reservation.php` | Modified | Include + inicjalizacja Carei_Admin_Panel |

## Decisions Made

| Decision | Rationale | Impact |
|----------|-----------|--------|
| CPT + post_meta (nie custom table) | WordPress-native, pełne admin UI za darmo | Prostsze dla MVP, ewentualna migracja jeśli skala wzrośnie |
| Fire-and-forget save | Rezerwacja już w Softra — WP save nie może blokować usera | Bezpieczne — error_log w razie problemu |
| Meta-based status (nie taxonomy) | 3 wartości enum, zero UI overhead | Proste, wystarczające dla MVP |
| Auto-mark-read on edit | Naturalny workflow, mniej kliknięć | UX improvement |
| Klikalny nr rezerwacji | Brak kolumny title = brak linku do edycji | Naprawione podczas checkpoint — link w kolumnie reservation_no |

## Deviations from Plan

### Summary

| Type | Count | Impact |
|------|-------|--------|
| Auto-fixed | 1 | Kliknięcie w rezerwację — minor UX fix |
| Scope additions | 0 | — |
| Deferred | 0 | — |

**Total impact:** Minimalne — jeden fix UX podczas checkpoint

### Auto-fixed Issues

**1. Brak linku do edycji w liście rezerwacji**
- **Found during:** Checkpoint (Task 3)
- **Issue:** Bez kolumny `title` nie było klikalnego linku do szczegółów
- **Fix:** Owinięcie nr rezerwacji w `<a>` z `get_edit_post_link()`
- **Files:** `includes/class-admin-panel.php`
- **Verification:** User potwierdził "Teraz jest ok"

## Issues Encountered

| Issue | Resolution |
|-------|------------|
| Brak linku do edycji rezerwacji | Dodano link w kolumnie reservation_no |

## Next Phase Readiness

**Ready:**
- Milestone v0.1 kompletny — wszystkie 5 faz zakończone
- Plugin w pełni funkcjonalny: formularz → API → admin panel

**Concerns:**
- Brak — MVP complete

**Blockers:**
- None

---
*Phase: 05-admin-panel, Plan: 01*
*Completed: 2026-03-25*
