DWD-Regenvorhersage: Pipeline + /radar-Route + Timeline-Integration + Settings-Toggle

PoC BESTANDEN (tools/dwd-radar/poc): Anker (9E,51N) = Pixel-Mitte (470/600),
Ecken decken sich mit der DWD-DE1200-Spec — Georeferenzierung bewiesen.
- tools/dwd-radar: RV-Komposit (25 Frames, 0-120min) -> kolorierte RGBA-
  PMTiles z4-7 je Frame (MapLibre overzoomt darueber) + manifest.json,
  atomarer Swap, KEEP_RUNS-Aufraeumen; 25 Frames in ~14s lokal
- docker-compose.dwd.yml (DSM-Cron alle 5 min, NIE --remove-orphans)
- main.py: /radar/manifest.json (no-store) + /radar/{run}/{file} (Range/206,
  immutable — Run-Id im Pfad); sw.js: /radar/ pass-through
- map.js: Radar-Frames heterogen ({url,time,dwd}) — DWD ersetzt RainViewer-
  Nowcast (0-120min, 5-min-Schritte) wenn Toggle an + GL + Karte in DE +
  Manifest frisch (<30min); sonst RainViewer-Fallback; Label '+X Min - DWD'
- settings.js: Toggle 'DWD-Regenvorhersage' (by_dwd_radar, Default AN)
- pytest 39 passed
Bump v1240
This commit is contained in:
rene 2026-06-06 18:08:57 +02:00
parent 6a06c9be7e
commit 5330681059
17 changed files with 4685 additions and 23 deletions

View file

@ -86,14 +86,14 @@
<title>Ban Yaro</title>
<!-- Theme + theme-color Statusleiste vor CSS setzen -->
<script src="/js/boot-early.js?v=1239"></script>
<script src="/js/boot-early.js?v=1240"></script>
<!-- CSS: Reihenfolge ist wichtig — ?v= zwingt Browser zur Neuladung -->
<link rel="stylesheet" href="/css/design-system.css?v=1239">
<link rel="stylesheet" href="/css/layout.css?v=1239">
<link rel="stylesheet" href="/css/components.css?v=1239">
<link rel="stylesheet" href="/css/utilities.css?v=1239">
<link rel="stylesheet" href="/css/lists.css?v=1239">
<link rel="stylesheet" href="/css/design-system.css?v=1240">
<link rel="stylesheet" href="/css/layout.css?v=1240">
<link rel="stylesheet" href="/css/components.css?v=1240">
<link rel="stylesheet" href="/css/utilities.css?v=1240">
<link rel="stylesheet" href="/css/lists.css?v=1240">
</head>
<body>
@ -612,11 +612,11 @@
<div id="modal-container"></div>
<!-- JS: Reihenfolge ist wichtig — erst Basis, dann Features -->
<script src="/js/api.js?v=1239"></script>
<script src="/js/ui.js?v=1239"></script>
<script src="/js/app.js?v=1239"></script>
<script src="/js/worlds.js?v=1239"></script>
<script src="/js/offline-indicator.js?v=1239"></script>
<script src="/js/api.js?v=1240"></script>
<script src="/js/ui.js?v=1240"></script>
<script src="/js/app.js?v=1240"></script>
<script src="/js/worlds.js?v=1240"></script>
<script src="/js/offline-indicator.js?v=1240"></script>
<!-- Feature-Seiten werden lazy geladen -->
@ -626,7 +626,7 @@
<!-- Boot: Offline-Banner + SW-Registration (extrahiert für CSP) -->
<script src="/js/boot.js?v=1239"></script>
<script src="/js/boot.js?v=1240"></script>
</body>