Files
2026-04-13 15:50:16 +02:00

4.9 KiB

phase, plan, subsystem, tags, requires, provides, affects, tech-stack, key-files, key-decisions, patterns-established, duration, completed
phase plan subsystem tags requires provides affects tech-stack key-files key-decisions patterns-established duration completed
03-miejsca-postojowe 01 ui, api, database
elementor
acf
wp-cron
xml
ajax
parking
phase provides
01-historia-cen price_history table, popup pattern, AJAX pattern, XML endpoint
phase provides
02-jawnosc-cen XML export structure, dane.gov.pl integration
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
added patterns
ACF group field access pattern
created modified
wp-content/plugins/elementor-addon/widgets/parking-spots.php
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
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
ACF group field access: get_field('group_name', 'option')['group_name_field']
Parking popup reuse: fallback overlay usuwany jeśli apartamentowy istnieje
~30min 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