# Milestones

Completed milestone log for this project.

| Milestone | Completed | Duration | Stats |
|-----------|-----------|----------|-------|
| v0.1 Initial Release | 2026-03-12 | 1 dzień | 2 fazy, 3 plany, 6 plików |

---

## ✅ v0.1 Initial Release

**Completed:** 2026-03-12
**Duration:** 1 dzień

### Stats

| Metric | Value |
|--------|-------|
| Phases | 2 |
| Plans | 3 |
| Files changed | 6 |

### Key Accomplishments

- Tabela `wp_price_history` z WP Cronem dziennym — automatyczny snapshot cen wszystkich apartamentów
- AJAX endpoint `apartamenty_get_price_history` zabezpieczony nonce — historia cen jako JSON
- Popup „Historia cen" w widgecie — vanilla JS, modal zgodny z projektem (Barlow, #192c44)
- Cztery publiczne endpointy XML: `/ceny-mieszkan.xml`, `/ceny-mieszkan.md5`, `/dane-gov-pl.xml`, `/dane-gov-pl.md5`
- Katalog XSD-compliant dla portalu dane.gov.pl z automatycznym URL przez `home_url()`
- Strona admina wp-admin → Narzędzia → Jawność Cen z URL-ami do skopiowania
- Transient cache XML (1h) z inwalidacją przy każdym cronie
- Dokumentacja klienta w `docs/jawnosc-cen.md` — instrukcja zgłoszenia do Ministerstwa

### Key Decisions

| Decyzja | Uzasadnienie |
|---------|--------------|
| Flat ACF meta keys zamiast `get_field('information')` | ACF zapisuje dane jako płaskie klucze — bezpośredni `get_post_meta` |
| INSERT IGNORE w cronie | Historia to snapshot — jeden rekord na apt na dzień, idempotentny |
| XML jako czysty PHP string (ENT_XML1) | Brak gwarancji ext-dom na hostingu |
| Transient 1h + inwalidacja przez cron | Balans między wydajnością a świeżością danych |
| Wszystko w elementor-addon.php | Scope limit z planu — brak osobnych plików |

---
