Download all files FTP

This commit is contained in:
2026-04-13 15:50:16 +02:00
parent d8382136b2
commit cb5b386424
6906 changed files with 1956223 additions and 40713 deletions

View File

@@ -0,0 +1,134 @@
---
phase: 03-miejsca-postojowe
plan: 01
subsystem: ui, api, database
tags: [elementor, acf, wp-cron, xml, ajax, parking]
requires:
- phase: 01-historia-cen
provides: price_history table, popup pattern, AJAX pattern, XML endpoint
- phase: 02-jawnosc-cen
provides: XML export structure, dane.gov.pl integration
provides:
- Elementor widget "Miejsca Postojowe" with price display and history popup
- wp_parking_price_history DB table
- Daily cron recording parking prices
- AJAX endpoint for parking price history
- XML export extended with parking spots
affects: []
tech-stack:
added: []
patterns: [ACF group field access pattern]
key-files:
created:
- wp-content/plugins/elementor-addon/widgets/parking-spots.php
modified:
- wp-content/plugins/elementor-addon/elementor-addon.php
- wp-content/plugins/elementor-addon/assets/js/main.js
- wp-content/plugins/elementor-addon/assets/css/main.css
key-decisions:
- "ACF groups: pola cen w grupach, nie flat — get_field('grupa', 'option')['pole']"
- "Osobna tabela wp_parking_price_history zamiast rozszerzania wp_price_history"
- "Cena m2 ukryta w widgecie na życzenie użytkownika (dane nadal w cronie/XML)"
- "Layout bez ramek, kolumnowy zamiast grid 2-kolumnowego"
patterns-established:
- "ACF group field access: get_field('group_name', 'option')['group_name_field']"
- "Parking popup reuse: fallback overlay usuwany jeśli apartamentowy istnieje"
duration: ~30min
completed: 2026-03-25
---
# Phase 3 Plan 01: Miejsca Postojowe Summary
**Widget Elementor wyswietlajacy ceny miejsc postojowych (zwykle/rodzinne) z historia cen, cron i XML export**
## Performance
| Metric | Value |
|--------|-------|
| Duration | ~30min |
| Completed | 2026-03-25 |
| Tasks | 2 auto + 2 checkpoints |
| Files modified | 4 (1 new, 3 modified) |
## Acceptance Criteria Results
| Criterion | Status | Notes |
|-----------|--------|-------|
| AC-1: Widget wyswietla ceny parkingowe | Pass | Dwa typy z cenami z ACF grup, layout kolumnowy |
| AC-2: Popup historia cen dziala | Pass | Reuse popup apartamentow, AJAX endpoint dziala |
| AC-3: Cron zapisuje ceny codziennie | Pass | INSERT IGNORE do wp_parking_price_history |
| AC-4: XML export zawiera miejsca postojowe | Pass | Sekcja <miejsca_postojowe> w /ceny-mieszkan.xml |
## Accomplishments
- Widget "Miejsca Postojowe" w Elementorze — 2 karty (zwykle/rodzinne) z ceną i przyciskiem historia cen
- Tabela wp_parking_price_history z codziennym zapisem cen przez WP Cron
- AJAX endpoint parking_get_price_history z popupem reusujacym overlay apartamentow
- XML /ceny-mieszkan.xml rozszerzony o sekcje <miejsca_postojowe> z historia
## Files Created/Modified
| File | Change | Purpose |
|------|--------|---------|
| `widgets/parking-spots.php` | Created | Elementor widget rendering parking spot cards |
| `elementor-addon.php` | Modified | DB table, cron extension, AJAX endpoint, XML export |
| `assets/js/main.js` | Modified | Parking price history click handler + AJAX |
| `assets/css/main.css` | Modified | Parking widget styles (no border, column layout) |
## Decisions Made
| Decision | Rationale | Impact |
|----------|-----------|--------|
| Osobna tabela wp_parking_price_history | Parking to opcje ACF, nie CPT — inna struktura (parking_type vs post_id) | Czysta separacja, brak zmian w istniejącej tabeli |
| ACF group access pattern | Pola cen są w grupach ACF, nie flat | Wymaga get_field('grupa', 'option')['pole'] |
| Ukrycie ceny m2 w widgecie | Request użytkownika — uproszczony wygląd | Dane m2 nadal w cronie i XML |
| Layout bez ramek, kolumnowy | Request użytkownika — bliższy designowi Figma | Prostszy CSS |
## Deviations from Plan
### Summary
| Type | Count | Impact |
|------|-------|--------|
| User-requested changes | 2 | Design adjustments, no functional impact |
| Auto-fixed | 1 | ACF group access pattern |
**Total impact:** Essential fixes + design preferences, no scope creep
### Details
1. **ACF group fields** — Plan zakladal flat access (get_field('pole', 'option')). Odkryto ze pola sa w grupach ACF. Naprawione na get_field('grupa', 'option')['pole'].
2. **Ukrycie ceny m2** — User request. Usunieto z HTML widgetu, dane nadal zapisywane.
3. **Layout bez ramek, kolumnowy** — User request. Zmieniono z grid 2-kolumnowego z ramkami na flex column bez ramek.
## Issues Encountered
| Issue | Resolution |
|-------|------------|
| Figma MCP niedostępny (oryginalny plik) | User udostępnił kopię, pobrano screenshot Frame 16 |
| Ceny nie wyświetlały się po wdrożeniu | ACF pola w grupach — naprawiony pattern dostępu |
## Next Phase Readiness
**Ready:**
- Milestone v0.2 Miejsca Postojowe kompletny (1 faza, 1 plan)
- Wszystkie AC spełnione
**Concerns:**
- WP Cron pseudocron — na produkcji zalecany systemowy cron
- Cena m2 ukryta — może wymagać przywrócenia w przyszłości
**Blockers:**
- None
---
*Phase: 03-miejsca-postojowe, Plan: 01*
*Completed: 2026-03-25*