Fix public snapshot runner initialize storage argument

This commit is contained in:
devRaGonSa
2026-06-11 10:34:51 +02:00
parent d98ef1c0c5
commit d225e243ad
4 changed files with 165 additions and 2 deletions

View File

@@ -0,0 +1,70 @@
---
id: TASK-245
title: Fix public snapshot runner initialize storage argument
status: done
type: backend
team: Backend Senior
supporting_teams:
- Arquitecto Python
roadmap_item: foundation
priority: high
---
# TASK-245 - Fix public snapshot runner initialize storage argument
## Goal
Fix the deployed manual public jobs that failed with `initialize_rcon_materialized_storage() got an unexpected keyword argument 'ensure_storage'`.
## Context
TASK-243 added `ensure_storage` gating in the ranking and historical snapshot paths, but one wrapper incorrectly propagated that keyword into `initialize_rcon_materialized_storage()`, whose signature only accepts `db_path`.
The failure was visible when running:
- `python -m app.historical_runner --public-job ranking-weekly`
- `python -m app.historical_runner --public-job ranking-monthly`
- `python -m app.historical_runner --public-job historical-weekly`
- `python -m app.historical_runner --public-job historical-monthly`
## Steps
1. Audited every `ensure_storage=` path around public snapshot generation.
2. Confirmed that `initialize_rcon_materialized_storage()` does not accept that keyword.
3. Moved the gating logic to a local path resolver in `rcon_historical_leaderboards`.
4. Kept `connect_postgres_compat(initialize=False)` for follow-up read/write connections after the one-time initialization point.
5. Added regression tests for both enabled and disabled initialization flows.
## Files to Read First
- `AGENTS.md`
- `ai/architecture-index.md`
- `ai/repo-context.md`
- `backend/app/historical_runner.py`
- `backend/app/rcon_historical_leaderboards.py`
- `backend/app/rcon_admin_log_materialization.py`
## Expected Files to Modify
- `backend/app/rcon_historical_leaderboards.py`
- `backend/tests/test_historical_snapshot_refresh.py`
- `docs/public-snapshot-refresh-schedule.md`
## Constraints
- Keep public GET endpoints snapshot-only.
- Do not touch frontend, assets or server configuration.
- Preserve the TASK-243 fixes for JSON serialization, duplicate ranking items and monthly MVP V2 fallback.
## Validation
- `python -m compileall backend/app`
- `cd backend; python -m unittest tests.test_historical_snapshot_refresh`
- `cd backend; python -m unittest tests.test_current_match_payload tests.test_rcon_admin_log_storage tests.test_historical_snapshot_refresh`
## Outcome
- Manual public jobs no longer pass an invalid keyword to `initialize_rcon_materialized_storage()`.
- `ensure_storage=True` still initializes materialized storage once through the wrapper layer.
- `ensure_storage=False` now skips the base initializer cleanly and relies on the existing non-DDL connection path.
- Regression coverage now asserts both enabled and disabled initialization flows.