TIWAG Data-Hub

    Was ist der Data-Hub?

    Der Data-Hub ist eine Laravel-Plattform für die TIWAG, in der alle Daten zusammenlaufen, die früher in der Bakehouse-Welt nur mit einer Vielzahl unterschiedlicher PHP Dateien im Feiladmin abgebildet werden konnten. Hier werden Daten gesammelt, aufbereitet, in einer Filament-Admin-Oberfläche verwaltet und über klar definierte HTTP-Schnittstellen wieder zur Verfügung gestellt.

    Wichtig: Endkunden greifen nie selbst auf den Data-Hub zu. Im Backend (/admin) arbeiten ausschließlich TIWAG-Mitarbeiter:innen. Sobald ein Endkunde mit Daten aus dem Data-Hub interagiert (Voting, Umfrage, Stammdatencheck, Ladepunkt-Suche, Spotpreise, Futures), passiert das ausschließlich über eine API — meist eingebettet in die TIWAG-Website oder den Business-Hub.

    Erste Bugfix-Methode:

    • Laravel-Log lokal herunterladen
    • Ins Claude werfen
    • Fragen wo das Problem liegt

    Es gibt drei Instanzen:

    DEV - https://datahub.tiwag.bakehouse.dev/
    PROD - https://datahub.tiwag.at/

    1. Anmeldung & Filament-Admin

    Der Data-Hub nutzt eigene lokale User in der Laravel-Datenbank.

    Login-Flow

    • URL: /admin (Filament-Panel)
    • Hier ist 2FA erzwungen und auch ein Passwort Renew nach bestimmten Zeiten. Bricht mit den restlichen TIWAG Spezifikationen, aber war der Rechtsabteilung hier aus irgendeinem Grund wichtig. 

    User anlegen

    Im Admin-Panel unter Users. Pflichtfelder: name, email, password. Anschließend muss dem User mindestens eine Rolle (siehe unten) zugewiesen werden, sonst sieht er im Admin nichts.

    canAccessPanel() auf dem User-Model gibt aktuell immer true zurück (app/Models/User.php:65). Der eigentliche Zugriffsschutz erfolgt also nicht im Login selbst, sondern Resource-pro-Resource über die Filament-Shield-Permissions.

    2. Rollen & Berechtigungen

    Verwaltet über Filament-Shield (spatie/laravel-permission im Hintergrund). Definition in database/seeders/ShieldSeeder.php.

    Pro Ressource gibt es immer nur eine Zugriffsrechtsebene. Wenn jemand auf die Ressource zugreifen darf, darf er alles in der Ressource. 

    • Endkunden sprechen die APIs nie direkt mit Login an - sie laden eine TIWAG-/Bakehouse-Seite, die im Browser per JS gegen den Data-Hub fetcht. Es gibt hir nur IP und CORS Schutz mit Rate-Limiting

    Die Resourcen / Tools

    Die Seitenleiste ist nach Navigationsgruppen sortiert. Jede Gruppe enthält eine oder mehrere "Ressourcen" (Tabellen) und ggf. eigene Übersichts-Seiten.

    1. Spotpreise

    Hier liegen die stündlichen Strom-Spotpreise für Österreich und Deutschland (EPEX). Die Daten kommen normalerweise täglich automatisch vom TIWAG-System als XML-Datei rein.

    • Spotpreise (Dateien-Übersicht): Zeigt zwei Listen — links manuell hochgeladene Dateien, rechts die automatisch eingelieferten. Pro Datei sieht man Region (AT/DE), Dateigröße und Zeitpunkt des letzten Imports.
    • CSV importieren: Knopf oben rechts. Wenn ein Tag fehlt oder die automatische Lieferung kaputt war, kann man hier eine CSV hochladen, die intern in die XML-Struktur umgewandelt wird.
    • Verzeichnis aktualisieren: Lädt die Liste neu, falls außerhalb des Admins Dateien dazugekommen sind.
    • Manuelle Datei löschen: Über die rote Schaltfläche neben der jeweiligen Datei. (Automatische Dateien können nicht aus dem Admin gelöscht werden, das ist Absicht.)

    Hintergrund: Sobald eine neue Datei reinkommt, wird im Hintergrund ein Cache neu aufgebaut und der Business-Hub benachrichtigt, damit dort der tägliche Spotpreis-Mailreport rausgehen kann.


    2. Datenimport Preise — Futures

    Hier liegen die Terminmarkt-Preise (EEX-Futures) für Österreich und Deutschland, getrennt nach Base/Peak und nach Monat/Quartal/Jahr.

    • Futures (Tabelle): Eine Zeile pro Handelstag mit allen Werten (Frontmonat, Frontquartal, Frontjahr, je +1 und +2, jeweils DE/AT, Base/Peak).
    • Einsehen & korrigieren: Einzelne Tage können geöffnet und bei Bedarf händisch korrigiert werden.
    • Datenquelle: Die Werte kommen täglich automatisch via CSV-Import. Im Normalbetrieb muss hier niemand etwas tun.

    Konsumenten: Business-Hub und TIWAG-Website ziehen daraus die Charts und Tarif-Berechnungen.


    3. Klimaschutzpreis

    Dieser Bereich gehört zum jährlichen TIWAG-Klimaschutzpreis, bei dem auf der Website über Projekte abgestimmt werden kann.

    • Votings (Tabelle): Jede einzelne Stimme, die über das Voting-Formular auf der TIWAG-Seite abgegeben wurde, mit Projekt-ID, IP und User-Agent. Wird normalerweise nicht angefasst — die Stichprobe ist da, damit man im Verdachtsfall (z.B. Stimmen-Spam) nachvollziehen kann, was passiert ist.
    • Übersicht (Page): Aufbereitete Auswertung pro Projekt — wie viele Stimmen jedes Projekt aktuell hat. Das ist die Seite, die die TIWAG-Verantwortlichen im laufenden Voting täglich anschauen.


    4. Umfragen

    Hier landen die Einreichungen aus den TIWAG-Formularen, die auf Bakehouse-Seiten als Umfrage/Inquiry eingebaut sind (Stichwort: Mitarbeiter:innen-Befragungen, Kundenformulare etc.).

    • Umfragen (Tabelle): Alle eingegangenen Einträge mit Datum, Inquiry-ID, Titel und Abteilung. Über die Suchleiste kann nach Inquiry, Titel oder Department gefiltert werden.
    • Übersicht (Page): Aggregierte Auswertung — eine Umfrage zusammengefasst (Anzahl Einreichungen pro Tag, Verteilung pro Abteilung, Häufigkeiten je Antwortfeld).

    Datenquelle: Die Einträge schickt unser Cookis-Server, wenn jemand auf einer Bakehouse-Seite ein Umfrage-Formular absendet. Ein direkter Zugriff von außen ist nicht möglich.


    5. Laden im Wohnbau — Ladepunkte

    Datenbestand für die E-Mobility-Aktion "Laden im Wohnbau". Endkunden geben auf der TIWAG-Website ihre Adresse ein und sehen, ob es an ihrem Standort bereits Ladepunkte gibt und wie viele in Betrieb sind.

    • Ladepunkte (Tabelle): Pro Adresse eine Zeile mit Projektname, Ort, PLZ, Straße, Hausnummer, Status und Anzahl Ladepunkte in Betrieb.
    • Ladepunkte via CSV überschreiben: Knopf oben. Komplette Liste über CSV ersetzen — typisch wenn die TIWAG einen neuen Datenstand schickt.
    • Suche & Filter: Über die Spaltensuche; nützlich beim Support, wenn Kund:innen melden, dass ihre Adresse "nicht gefunden" wird.

    Wichtig: Die Adress-Suche auf der TIWAG-Seite verwendet ein Fuzzy-Matching (Schreibfehler in Straßennamen werden toleriert). Wenn eine Adresse trotzdem nicht erkannt wird, hilft meist ein Blick in die Tabelle, ob Hausnummer und PLZ wirklich exakt passen.


    6. VK & GP Abgleich (Stammdaten-Check)

    Dieser Bereich speist den Stammdaten-Check: TIWAG-Endkunden geben auf einem Formular ihre Kundennummer + Vertragsnummer ein und bekommen zurückgemeldet, ob die Kombination gültig ist.

    • VK und GP-Hashes (Tabelle): Aus Datenschutzgründen werden Kunden- und Vertragsnummer nicht im Klartext gespeichert, sondern nur als Hash. In der Tabelle sieht man deshalb nur kryptische Zeichenketten — das ist so gewollt.
    • VK & GP Daten via CSV überschreiben: Der einzige sinnvolle Bedienvorgang. CSV mit den Spalten "Geschäftspartner-Nummer" und "Konto-Nummer" hochladen — der Importer leert die Tabelle und befüllt sie neu mit Hashes.

    Konsequenz für den Support: Wenn ein Kunde meldet "mein Stammdatencheck schlägt fehl", können wir nicht in der DB nachschauen, ob seine Nummer drin ist. Wir können nur fragen, ob der letzte Import sauber gelaufen ist, und im Zweifel die TIWAG bitten, die Liste neu zu liefern.


    7. Users & Roles

    Standard-User- und Rollenverwaltung von Filament.

    • Users: Anlegen, bearbeiten, deaktivieren von Admin-Usern. Passwortregeln werden bei der Eingabe durchgesetzt (mindestens 10 Zeichen, Groß-/Kleinbuchstabe, Zahl, Sonderzeichen). 2FA wird vom User beim ersten Login eingerichtet.
    • Roles: Rollen anlegen/ändern und Permissions häkeln (siehe Abschnitt 2).

    Automatiken und APIs

    1. Cronjobs:

    Damit niemand überrascht ist, wenn plötzlich etwas Automatisches losläuft — eine knappe Liste der Jobs, die ohne menschliches Zutun arbeiten:

    • Alle 10 Minuten: Der Spotprice-Watcher schaut, ob neue XML-Dateien angekommen sind. Wenn ja, baut er den internen Cache neu auf und meldet das an den Business-Hub, damit dieser den Tages-Mailreport verschickt.
    • Täglich: Import der Futures-Preise aus CSV.
    • Bei Bedarf (manuell ausgelöst durch Import-Buttons): CSV-Imports für Ladepunkte, Spotpreise, VK/GP-Abgleich. Diese laufen als Background-Job, deshalb sieht man oben rechts im Admin einen Fortschritts-Indikator und am Ende eine Erfolgsmeldung.


    2. Welche Daten gehen wohin raus/rein?

    Der Data-Hub stellt seine Daten anderen Systemen über APIs zur Verfügung. Aus Endanwender-Sicht relevant ist vor allem wer wofür Daten zieht:

    KonsumentWas er zieht
    TIWAG-Website (tiwag.at)Spotpreise, Futures, Klimaschutzpreis-Voting, Stammdatencheck, Ladepunkt-Suche, Umfrage-Auswertungen
    Business-Hub (businesshub.tiwag.at)Spotpreise, Futures — für Charts und tägliche Reports
    Großkunden-DB (grosskundendb.tiwag.at)Spotpreise, Futures
    Cookis-TYPO3-ServerSchickt Umfrage-Einreichungen an den Data-Hub (nicht umgekehrt)


    Der Zugriff von außen ist durch eine Kombination aus Domain-Whitelist (welche Webseiten dürfen die Daten anzeigen) und IP-Whitelist (welche Server dürfen Umfrage-Einträge schicken) geschützt. Eine neue Domain oder ein neuer Server muss explizit eingetragen werden — das ist ein 2-Zeilen-Code-Change und kein Konfigurations-Klick.


    Wenn gar nichts hilft

    Im Zweifel: nichts deployen, Issue auf Eis legen, bis Manuel oder Sascha zurück ist.
    Keine "schnellen Workarounds" auf IP- oder Domain-Whitelists — lieber sauber ergänzen. Zur Not eine ältere Version einspielen.

    Der Data-Hub ist von unserer Seite stabil. Wenn ein Wert komisch aussieht, liegt es fast immer an der Datenquelle (fehlende/kaputte XML, veralteter CSV-Import) — nicht am Code.