feat(v0.1): historia cen + jawnosc cen — milestone Initial Release

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>
This commit is contained in:
2026-03-12 15:40:29 +01:00
parent c954889b64
commit 972c69b136
19 changed files with 2854 additions and 3 deletions

123
.paul/HANDOFF-2026-03-12.md Normal file
View File

@@ -0,0 +1,123 @@
# PAUL Handoff
**Date:** 2026-03-12 (aktualizacja: sesja 2)
**Status:** paused — plan 02-01 gotowy, czeka na APPLY w nowej sesji
---
## READ THIS FIRST
You have no prior context. This document tells you everything.
**Project:** wyszynskiego12.pagedev.pl — strona internetowa dewelopera
**Core value:** Użytkownicy mogą przeglądać na stronie ofertę dewelopera
---
## Current State
**Version:** v0.0.0 (Prototype)
**Phase:** 2 of 2 — Jawność cen
**Plan:** 02-01 — PLAN created, ready for APPLY
**Loop Position:**
```
PLAN ──▶ APPLY ──▶ UNIFY
✓ ○ ○ [Plan 02-01 gotowy, oczekuje na zatwierdzenie]
```
---
## What Was Done
**Sesja 1 (wcześniej):**
- Tabela `wp_price_history` założona przez dbDelta()
- WP Cron `apartamenty_record_prices` dzienny — snapshot cen apartamentów
- AJAX endpoint `apartamenty_get_price_history` (public, nonce-secured)
- `wp_localize_script` przekazujący ajaxUrl + nonce do JS
**Sesja 2 (ta sesja):**
- Zbadano wymagania ustawy o jawności cen (dane.gov.pl)
- Odczytano XSD portalu: `https://www.dane.gov.pl/static/xml/otwarte_dane_latest.xsd`
- Ustalono format XML cen (voxDeveloper-compatible)
- Dodano Phase 2 do ROADMAP.md
- Utworzono plan `02-01-PLAN.md` — 3 zadania auto + 1 checkpoint
**WAŻNE: Plan 01-02 (frontend popup historia cen) nadal czeka na APPLY.**
Zdecydowano skupić się najpierw na 02-01 (jawność cen). Można wrócić do 01-02 później.
---
## What's In Progress
Plan `02-01-PLAN.md` gotowy, NIE był jeszcze uruchomiony APPLY.
---
## What's Next
**Immediate:** `/paul:apply .paul/phases/02-jawnosc-cen/02-01-PLAN.md`
Plan 02-01 zawiera 3 zadania auto + 1 checkpoint:
1. Endpoint `/ceny-mieszkan.xml` + `/ceny-mieszkan.md5` (price data XML z ACF + wp_price_history)
2. Endpoint `/dane-gov-pl.xml` + `/dane-gov-pl.md5` (katalog XSD-compliant dla dane.gov.pl)
3. Strona admin: `Narzędzia → Jawność Cen` z URL-ami do zgłoszenia do Ministerstwa
4. Checkpoint: weryfikacja URL-ów w przeglądarce
**After that:** UNIFY plan 02-01, then consider 01-02 (frontend popup)
---
## Key Context — Technikalia
**Jedyny plik do zmiany:** `wp-content/plugins/elementor-addon/elementor-addon.php`
**Stack:** WordPress + ACF + Elementor + custom plugin `elementor-addon`
**Dostępne ACF flat meta keys (z `information` group):**
- `information_price` — cena brutto
- `information_price_m2` — cena za m²
- `information_floor_space` — metraż
- `information_type` — typ lokalu
- `information_floor` — piętro
- `information_status` — status (value/label)
**Tabela wp_price_history:** `id, post_id, price, price_m2, floor_space, recorded_at`
**Post type:** `apartamenty`
**Istniejące hooki w elementor-addon.php:**
- Cron: `apartamenty_record_prices` (daily)
- AJAX: `wp_ajax_apartamenty_get_price_history` + nopriv
- Nonce: `apartamenty_price_history_nonce`
**Wymagania techniczne dane.gov.pl:**
- Content-Type: `application/xml` lub `text/xml`
- MD5 companion file — lowercase hex, ten sam URL ale z `.md5` zamiast `.xml`
- Port standardowy (80/443)
- Aktualizacja min. co 24h
---
## Key Files
| File | Purpose |
|------|---------|
| `.paul/STATE.md` | Live project state |
| `.paul/ROADMAP.md` | Phase overview (fazy 1 i 2) |
| `.paul/phases/02-jawnosc-cen/02-01-PLAN.md` | Plan do APPLY |
| `.paul/phases/01-historia-cen/01-01-SUMMARY.md` | Co zbudowano w backendzie |
| `wp-content/plugins/elementor-addon/elementor-addon.php` | Jedyny plik do modyfikacji |
---
## Resume Instructions
1. Przeczytaj `.paul/STATE.md` dla aktualnej pozycji
2. Uruchom `/paul:apply .paul/phases/02-jawnosc-cen/02-01-PLAN.md`
3. Po APPLY wykonaj checkpoint (flush permalinks, sprawdź URL-e w przeglądarce)
4. Następnie `/paul:unify`
---
*Handoff created: 2026-03-12 (updated: sesja 2)*