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:
20
CHANGELOG.md
20
CHANGELOG.md
@@ -7,6 +7,26 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
||||
## [Unreleased]
|
||||
|
||||
### 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
|
||||
(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
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Padelnomics — Project Tracker
|
||||
|
||||
> 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] Credit pack purchases (25/50/100/250)
|
||||
- [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] Auto-create Resend audiences per blueprint (waitlist, planner nurture)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user