feat(seo): expand city coverage to 40 cities + DuckDB refresh script

- 22 new cities: Madrid, Barcelona, Valencia, Seville, Málaga (ES),
  Paris, Lyon, Marseille (FR), Milan, Rome (IT), Amsterdam (NL),
  Vienna (AT), Zurich (CH), Stockholm (SE), Lisbon, Porto (PT),
  Brussels (BE), Dubai (AE), Sydney, Melbourne (AU), Dublin (IE)
- Total: 40 cities × EN + DE = 80 articles
- refresh_from_daas.py: sync template_data from planner_defaults
  serving table; dry-run mode; graceful when analytics unavailable

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Deeman
2026-02-22 00:01:37 +01:00
parent 3710665f45
commit f958f1e816
3 changed files with 818 additions and 0 deletions

View File

@@ -6,6 +6,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
## [Unreleased]
### Added
- Expanded programmatic SEO city coverage from 18 to 40 cities (+22 cities across ES, FR,
IT, NL, AT, CH, SE, PT, BE, AE, AU, IE) — generates 80 articles (40 cities × EN + DE)
- `scripts/refresh_from_daas.py`: syncs template_data rows from DuckDB `planner_defaults`
serving table; supports `--dry-run` and `--generate` flags; graceful no-op when DuckDB unavailable
### Added
- `analytics.py`: DuckDB read-only reader (`open_analytics_db`, `close_analytics_db`,
`fetch_analytics`) registered in app lifecycle (startup/shutdown)