From 8f2ffd432b77d4af665a9716d71d07203238c1f6 Mon Sep 17 00:00:00 2001 From: Deeman Date: Sun, 1 Mar 2026 11:41:29 +0100 Subject: [PATCH] fix(admin): correct docker volume mount + pipeline_routes repo root MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - docker-compose.prod.yml: fix volume mount for all 6 web containers from /opt/padelnomics/data (stale) → /data/padelnomics (live supervisor output); add LANDING_DIR=/app/data/pipeline/landing so extraction/landing stats work - pipeline_routes.py: fix _REPO_ROOT parents[5] → parents[4] so workflows.toml is found in dev and pipeline overview shows workflow schedules Co-Authored-By: Claude Sonnet 4.6 --- CHANGELOG.md | 2 ++ docker-compose.prod.yml | 18 ++++++++++++------ web/src/padelnomics/admin/pipeline_routes.py | 2 +- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b7bcf4a..286fbdb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). - 15 new tests in `web/tests/test_affiliate.py` (41 total) ### Fixed +- **Data Platform admin view showing stale/zero row counts** — Docker web containers were mounting `/opt/padelnomics/data` (stale copy) instead of `/data/padelnomics` (live supervisor output). Fixed volume mount in all 6 containers (blue/green × app/worker/scheduler) and added `LANDING_DIR=/app/data/pipeline/landing` so extraction stats and landing zone file stats are visible to the web app. +- **`workflows.toml` never found in dev** — `_REPO_ROOT` in `pipeline_routes.py` used `parents[5]` (one level too far up) instead of `parents[4]`. Workflow schedules now display correctly on the pipeline overview tab in dev. - **Article preview frontmatter bug** — `_rebuild_article()` in `admin/routes.py` now strips YAML frontmatter before passing markdown to `mistune.html()`, preventing raw `title:`, `slug:` etc. from appearing as visible text in article previews. ### Added diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 95e4017..174526c 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -60,9 +60,10 @@ services: environment: - DATABASE_PATH=/app/data/app.db - SERVING_DUCKDB_PATH=/app/data/pipeline/analytics.duckdb + - LANDING_DIR=/app/data/pipeline/landing volumes: - app-data:/app/data - - /opt/padelnomics/data:/app/data/pipeline:ro + - /data/padelnomics:/app/data/pipeline:ro networks: - net healthcheck: @@ -82,9 +83,10 @@ services: environment: - DATABASE_PATH=/app/data/app.db - SERVING_DUCKDB_PATH=/app/data/pipeline/analytics.duckdb + - LANDING_DIR=/app/data/pipeline/landing volumes: - app-data:/app/data - - /opt/padelnomics/data:/app/data/pipeline:ro + - /data/padelnomics:/app/data/pipeline:ro networks: - net @@ -98,9 +100,10 @@ services: environment: - DATABASE_PATH=/app/data/app.db - SERVING_DUCKDB_PATH=/app/data/pipeline/analytics.duckdb + - LANDING_DIR=/app/data/pipeline/landing volumes: - app-data:/app/data - - /opt/padelnomics/data:/app/data/pipeline:ro + - /data/padelnomics:/app/data/pipeline:ro networks: - net @@ -115,9 +118,10 @@ services: environment: - DATABASE_PATH=/app/data/app.db - SERVING_DUCKDB_PATH=/app/data/pipeline/analytics.duckdb + - LANDING_DIR=/app/data/pipeline/landing volumes: - app-data:/app/data - - /opt/padelnomics/data:/app/data/pipeline:ro + - /data/padelnomics:/app/data/pipeline:ro networks: - net healthcheck: @@ -137,9 +141,10 @@ services: environment: - DATABASE_PATH=/app/data/app.db - SERVING_DUCKDB_PATH=/app/data/pipeline/analytics.duckdb + - LANDING_DIR=/app/data/pipeline/landing volumes: - app-data:/app/data - - /opt/padelnomics/data:/app/data/pipeline:ro + - /data/padelnomics:/app/data/pipeline:ro networks: - net @@ -153,9 +158,10 @@ services: environment: - DATABASE_PATH=/app/data/app.db - SERVING_DUCKDB_PATH=/app/data/pipeline/analytics.duckdb + - LANDING_DIR=/app/data/pipeline/landing volumes: - app-data:/app/data - - /opt/padelnomics/data:/app/data/pipeline:ro + - /data/padelnomics:/app/data/pipeline:ro networks: - net diff --git a/web/src/padelnomics/admin/pipeline_routes.py b/web/src/padelnomics/admin/pipeline_routes.py index cc27504..258b9f0 100644 --- a/web/src/padelnomics/admin/pipeline_routes.py +++ b/web/src/padelnomics/admin/pipeline_routes.py @@ -49,7 +49,7 @@ _LANDING_DIR = os.environ.get("LANDING_DIR", "data/landing") _SERVING_DUCKDB_PATH = os.environ.get("SERVING_DUCKDB_PATH", "data/analytics.duckdb") # Repo root: web/src/padelnomics/admin/ → up 4 levels -_REPO_ROOT = Path(__file__).resolve().parents[5] +_REPO_ROOT = Path(__file__).resolve().parents[4] _WORKFLOWS_TOML = _REPO_ROOT / "infra" / "supervisor" / "workflows.toml" # A "running" row older than this is considered stale/crashed.