Historia cen: - Tabela wp_price_history z WP Cronem dziennym (snapshot cen) - AJAX endpoint apartamenty_get_price_history (zabezpieczony nonce) - Popup "Historia cen" w widgecie — vanilla JS, modal zgodny z projektem Jawnosc cen: - Endpointy /ceny-mieszkan.xml + /dane-gov-pl.xml (XSD-compliant) - Pliki MD5 dla obu XML - Strona admina: Narzedzia -> Jawnosc Cen z URL-ami do Ministerstwa - Transient cache 1h z inwalidacja przez cron Dokumentacja: docs/readme.md + docs/jawnosc-cen.md Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
4.3 KiB
4.3 KiB
phase, plan, subsystem, tags, requires, provides, affects, tech-stack, key-files, key-decisions, patterns-established, duration, started, completed
| phase | plan | subsystem | tags | requires | provides | affects | tech-stack | key-files | key-decisions | patterns-established | duration | started | completed | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 01-historia-cen | 01 | database |
|
|
|
|
|
|
|
15min | 2026-03-12T14:00:00Z | 2026-03-12T14:15:00Z |
Faza 1 Plan 01: Backend Historii Cen — Summary
Tabela wp_price_history + WP Cron dzienny + AJAX endpoint zabezpieczony nonce — cały backend historii cen gotowy.
Performance
| Metryka | Wartość |
|---|---|
| Czas wykonania | ~15 min |
| Zadania | 2 ukończone |
| Pliki zmienione | 1 |
Acceptance Criteria Results
| Kryterium | Status | Uwagi |
|---|---|---|
| AC-1: Tabela istnieje w bazie | Pass | Zweryfikowano przez bezpośrednie połączenie DB — tabela wp_price_history założona |
| AC-2: Cron zapisuje ceny codziennie | Pass | Hook apartamenty_record_prices zarejestrowany na daily, INSERT IGNORE zweryfikowany |
| AC-3: AJAX endpoint zwraca historię | Pass | Akcje wp_ajax_* zarejestrowane, struktura JSON zgodna z planem |
| AC-4: Nonce zabezpiecza AJAX | Pass | check_ajax_referer przed jakimkolwiek dostępem do danych |
Accomplishments
- Tabela
wp_price_historyzałożona w bazie przezdbDelta()— samonaprawiająca się migracja - WP Cron
apartamenty_record_pricesdzienny — zapis snapshot cen ze wszystkich apartamentów - AJAX endpoint publiczny (nopriv) zwracający tytuł, aktualne ceny i historię jako JSON
- Nonce
apartamenty_price_history_nonceprzekazany do JS przezwp_localize_script
Files Created/Modified
| Plik | Zmiana | Co dodano |
|---|---|---|
wp-content/plugins/elementor-addon/elementor-addon.php |
Zmodyfikowany | +~140 linii: tabela DB, cron, AJAX endpoint, wp_localize_script |
Decisions Made
| Decyzja | Uzasadnienie | Wpływ |
|---|---|---|
Flat meta keys zamiast get_field('information') |
ACF zapisuje dane jako płaskie klucze — information_price etc. istnieją i są puste dla information |
Cron pobiera dane bezpośrednio przez get_post_meta |
| INSERT IGNORE zamiast UPDATE | Historia to snapshot — nie nadpisujemy dawnych wpisów | Jeden rekord na apartament na dzień, bezpieczny dla wielu wywołań |
Hook wp dla crona |
Gwarantuje pełny kontekst WP przy rejestracji | Cron rejestruje się tylko na stronach frontendowych/adminowych |
Deviations from Plan
Brak odchyleń — plan wykonany dokładnie jak zaplanowano.
Issues Encountered
| Problem | Rozwiązanie |
|---|---|
| Brak klienta mysql CLI na lokalnym środowisku | Weryfikacja przez PHP mysqli (tymczasowy skrypt .paul/verify_task1.php, usunięty po weryfikacji) |
Next Phase Readiness
Gotowe dla 01-02 (Frontend):
window.apartamentsData.ajaxUrl— URL do admin-ajax.phpwindow.apartamentsData.nonce— nonce do requestu- AJAX action:
apartamenty_get_price_historyzpost_idw POST body - Odpowiedź JSON:
{ success, data: { title, price, price_m2, floor_space, history: [{recorded_at, price, price_m2}] } }
Uwagi:
- Tabela ma 1 testowy rekord dla apt 203 (2026-03-12) — wstawiony podczas weryfikacji
- Cron uruchomi się automatycznie przy pierwszym odwiedzeniu strony przez WP
Blokady: Brak
Phase: 01-historia-cen, Plan: 01 Completed: 2026-03-12