docs: update CHANGELOG and PROJECT.md for supervisor + feature flags

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Deeman
2026-02-23 15:27:23 +01:00
parent b5c9a4e573
commit 8b7d474ede
2 changed files with 24 additions and 2 deletions

View File

@@ -7,6 +7,26 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
## [Unreleased] ## [Unreleased]
### Added ### Added
- **Python supervisor** (`src/padelnomics/supervisor.py`) — replaces `supervisor.sh`;
reads `infra/supervisor/workflows.toml` (module, schedule, entry, depends_on,
proxy_mode); runs due workflows in topological waves (parallel within each wave);
croniter-based `is_due()` check; systemd service updated to use `uv run python`
- **`workflows.toml` workflow registry** — 5 extractors registered: overpass,
eurostat, playtomic_tenants, playtomic_availability, playtomic_prices; cron
presets: hourly/daily/weekly/monthly; `playtomic_availability` depends on
`playtomic_tenants`
- **`proxy.py` proxy rotation** (`extract/padelnomics_extract/proxy.py`) — reads
`PROXY_URLS` env var; `make_round_robin_cycler()` for thread-safe round-robin;
`make_sticky_selector()` for consistent per-tenant proxy assignment (hash-based)
- **DB-backed feature flags** — `feature_flags` table (migration 0019);
`is_flag_enabled(name, default)` helper; `feature_gate(flag, template)` decorator
replaces `WAITLIST_MODE`/`waitlist_gate`; 5 flags seeded: `markets` (on),
`payments`, `planner_export`, `supplier_signup`, `lead_unlock` (all off)
- **Admin feature flags UI** — `/admin/flags` lists all flags with toggle;
`POST /admin/flags/toggle` flips enabled bit; requires admin role; flash message
on unknown flag
- **`lead_unlock` gate** — `unlock_lead` route returns HTTP 403 when `lead_unlock`
flag is disabled
- **Playtomic full data extraction** — expanded venue bounding boxes from 4 regions - **Playtomic full data extraction** — expanded venue bounding boxes from 4 regions
(ES, UK, DE, FR) to 23 globally (Italy, Portugal, NL, BE, AT, CH, Nordics, Mexico, (ES, UK, DE, FR) to 23 globally (Italy, Portugal, NL, BE, AT, CH, Nordics, Mexico,
Argentina, Middle East, USA); PAGE_SIZE increased from 20 to 100; availability Argentina, Middle East, USA); PAGE_SIZE increased from 20 to 100; availability

View File

@@ -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-22. > Last updated: 2026-02-23.
--- ---
@@ -59,7 +59,9 @@
- [x] Boost purchases (logo, highlight, verified, card color, sticky week/month) - [x] Boost purchases (logo, highlight, verified, card color, sticky week/month)
- [x] Credit pack purchases (25/50/100/250) - [x] Credit pack purchases (25/50/100/250)
- [x] Supplier subscription tiers (Basic free / Growth €149 / Pro €399, monthly + annual) - [x] Supplier subscription tiers (Basic free / Growth €149 / Pro €399, monthly + annual)
- [x] `WAITLIST_MODE` toggle — gates supplier signup + export on GET (default: false) - [x] **Feature flags** (DB-backed, migration 0019) — `is_flag_enabled()` + `feature_gate()` decorator replace `WAITLIST_MODE`; 5 flags (markets, payments, planner_export, supplier_signup, lead_unlock); admin UI at `/admin/flags` with toggle
- [x] **Python supervisor** (`src/padelnomics/supervisor.py`) + `workflows.toml` — replaces `supervisor.sh`; topological wave scheduling; croniter-based `is_due()`; systemd service updated
- [x] **Proxy rotation** (`extract/padelnomics_extract/proxy.py`) — round-robin + sticky hash-based selector via `PROXY_URLS` env var
- [x] Resend email integration (transactional: magic link, welcome, quote verify, lead forward, enquiry) - [x] Resend email integration (transactional: magic link, welcome, quote verify, lead forward, enquiry)
- [x] Auto-create Resend audiences per blueprint (waitlist, planner nurture) - [x] Auto-create Resend audiences per blueprint (waitlist, planner nurture)