docs: update CHANGELOG and PROJECT.md for pSEO template improvements
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
25
CHANGELOG.md
25
CHANGELOG.md
@@ -6,7 +6,32 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- **Double language prefix in article URLs** — articles were served at
|
||||||
|
`/en/en/markets/italy` (double prefix) because `generate_articles()` stored
|
||||||
|
`url_path` with the lang prefix baked in, but the blueprint is already mounted
|
||||||
|
at `/<lang>`. Now `url_path` is stored without the prefix; canonical URLs,
|
||||||
|
breadcrumbs, sitemap, and admin links all generate correct single-prefix URLs.
|
||||||
|
- **`/markets` removed from RESERVED_PREFIXES** — pSEO articles live under
|
||||||
|
`/markets/` and the explicit `/markets` route takes priority over the catch-all,
|
||||||
|
so the reservation was blocking article generation.
|
||||||
|
- **`country-overview` schema_type** — changed from `[Article]` to
|
||||||
|
`[Article, FAQPage]` to enable FAQ rich results for existing FAQ content.
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
- **Bilingual pSEO templates (DE + EN)** — all 3 article templates
|
||||||
|
(`city-cost-de`, `city-pricing`, `country-overview`) now generate proper
|
||||||
|
German prose via `{% if language == "de" %}` conditionals. German text uses
|
||||||
|
informal "Du/Dein", natural business German (not calque translation), and
|
||||||
|
localized labels/units (€/Std, Hauptzeit/Nebenzeit, etc.).
|
||||||
|
- **Expanded English pSEO content** — all 3 templates expanded from ~400–900
|
||||||
|
words to ~1300–1500 words each. Added: Market Context/Landscape sections,
|
||||||
|
analytical commentary after scenario markers, cross-template links
|
||||||
|
(cost ↔ pricing ↔ country), planner links in FAQ answers, second CTA at
|
||||||
|
bottom of each article, 2 additional FAQ questions per template.
|
||||||
|
- **Scenario cross-reference** — `city-pricing` template now embeds
|
||||||
|
`[scenario:city-cost-de-{{ city_key }}:operating]` to show operating cost
|
||||||
|
data from the investment analysis template.
|
||||||
- **CMS admin improvement** — articles list now has HTMX filter bar (search,
|
- **CMS admin improvement** — articles list now has HTMX filter bar (search,
|
||||||
status, template, language), pagination (50/page), and stats strip
|
status, template, language), pagination (50/page), and stats strip
|
||||||
(total/live/scheduled/draft counts). Article actions (publish/unpublish,
|
(total/live/scheduled/draft counts). Article actions (publish/unpublish,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# Padelnomics — Project Tracker
|
# Padelnomics — Project Tracker
|
||||||
|
|
||||||
> Move tasks across columns as you work. Add new tasks at the top of the relevant column.
|
> Move tasks across columns as you work. Add new tasks at the top of the relevant column.
|
||||||
> Last updated: 2026-02-23.
|
> Last updated: 2026-02-24.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -80,6 +80,8 @@
|
|||||||
- [x] Per-city financial model overrides (rates, rent, utilities, permits, court config)
|
- [x] Per-city financial model overrides (rates, rent, utilities, permits, court config)
|
||||||
- [x] Admin CMS (template CRUD, data row management, bulk CSV upload, bulk generate, publish toggle, rebuild)
|
- [x] Admin CMS (template CRUD, data row management, bulk CSV upload, bulk generate, publish toggle, rebuild)
|
||||||
- [x] Admin CMS v2: HTMX filter/search/pagination, background generation, inline actions, sitemap invalidation, markdown editing
|
- [x] Admin CMS v2: HTMX filter/search/pagination, background generation, inline actions, sitemap invalidation, markdown editing
|
||||||
|
- [x] pSEO template improvements: bilingual DE+EN (all 3 templates), expanded content depth (~1500 words), cross-template links, scenario cross-references, FAQPage schema fix, 2 extra FAQs per template, second CTAs
|
||||||
|
- [x] URL prefix fix: articles stored without lang prefix (was causing `/en/en/markets/...`), all consumers updated
|
||||||
- [x] Markets hub (`/<lang>/markets`) — article listing with FTS + country/region filters
|
- [x] Markets hub (`/<lang>/markets`) — article listing with FTS + country/region filters
|
||||||
- [x] DuckDB refresh script (`refresh_from_daas.py`)
|
- [x] DuckDB refresh script (`refresh_from_daas.py`)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user