CW Environment 0.1.0-alpha92
================================

Data Service Builder 1.0 · RAW -> DS

Ziel
- alpha92 setzt Phase 1 der zentralen Environment-Datenarchitektur um.
- Vorhandene Copernicus-RAW-Daten werden in eine einheitliche, dokumentierte DS-Ebene normalisiert.
- Das Workspace-/Mockup-Frontend bleibt bewusst der nächste Schritt und wird nicht mit provider-spezifischen Dateiformaten gekoppelt.

RAW-Sicherheit
- project/storage/environment/copernicus/raw/ ist für den DS Builder strikt read-only.
- Der DS Builder besitzt keinen Download-, Rename-, Delete- oder Overwrite-Pfad für RAW.
- Vor der ersten Aufbereitung eines Pakets wird dessen SHA-256 gegen das validierte RAW-Manifest geprüft.
- Erfolgreiche RAW-Prüfungen werden ausschließlich im DS-Speicher quittiert.
- Bereits erzeugte DS-Ergebnisse desselben RAW-SHA werden bei einer Neuplanung wiederverwendet.

DS Builder 1.0
- neuer produktiver Bereich unter Copernicus -> DS Builder.
- RAW-Bestand inventarisieren und Queue erzeugen.
- resumierbarer Step-Runner: höchstens eine Quellvariable pro Tick.
- Pause/Reload/Queue-Reset verlieren weder RAW noch fertige DS-Daten.
- fehlerhafte Variablen können gezielt erneut eingeplant werden.
- unbekannte Einheiten oder nicht eindeutig lesbare Zeit-/Rasterachsen werden abgelehnt statt geraten.

Normalisierte Datenebene
- Rasterwerte: gzip-komprimiertes Little-Endian Float32.
- Metadaten/Provenienz: JSON je Variable und Quellpaket.
- dokumentiert werden u. a. Provider, Dataset, Variable, Einheiten, Zeitraum, Zeitauflösung,
  Raster, Region, RAW-SHA-256, RAW-Manifest, Request, Datenstand und Aufbereitungszeit.
- Datenkatalog catalog.json als gemeinsamer Einstieg für spätere Karten, Charts, Tabellen, Formeln und Export.
- interne provider-unabhängige PHP-Abfragen für Variable, Periode und Zeitreihen (inkl. Länder-/BBox-Summaries).
- Katalog kann aus fertigen DS-Metadaten reproduzierbar neu aufgebaut werden.

Regionen & Kennzahlen
- Rastermasken für vorhandene DACH-Ländergeometrien werden einmal je Raster erzeugt und wiederverwendet.
- flächengewichtete Mittelwerte sowie Min/Max und gültige Rasterzellen pro Zeitschritt.
- Perioden-Zusammenfassungen respektieren Summe bzw. Mittelwert der Variablen.
- monatliche Jahresmittel werden nach Kalendertagen gewichtet.

Abgeleitete Winddaten
- sobald ERA5-Land U- und V-Komponente eines Zeitraums vorliegen, entstehen zusätzlich:
  - wind_speed_10m
  - wind_direction_10m
- Windrichtung verwendet für räumliche und zeitliche Mittel eine zirkuläre Mittelung.
- U/V bleiben als dokumentierte Quell-Layer erhalten; es werden keine neuen RAW-Daten benötigt.

Backend
- neuer Tab DS Datencheck mit RAW-/DS-Status und DS-Engine-Preflight.
- neuer Tab DS Builder 1.0 mit Fortschritt, aktueller Quelle/Periode/Variable und Fehlerliste.
- Pipeline bleibt: RAW / Download -> DS Datencheck -> DS Builder -> Datenfreigabe -> CWE FE.
- Legacy Climate Builder bleibt DEPRECATED für Bestandskompatibilität erhalten.

Python
- der eingebettete CDS/ADS-Downloadclient benötigt weiterhin kein cdsapi-Paket.
- der generische NetCDF4/HDF5 DS Builder benötigt numpy + h5py.
- der Backend-Preflight prüft beides, bevor Daten verarbeitet werden.
- fehlen die Module, bleibt RAW unverändert und der Builder startet nicht.

Kompatibilität
- Voraussetzung: CW >= 3.0.0-beta11.4.4, PHP >= 8.3.
- keine Datenbankmigration.
- update.backup_mode bleibt code_only.
- keine Root-.htaccess im Modulpaket.
