Inhaltsverzeichnis
Schnittstelle 1074: Stundenwetter abrufen und Tageswetter verdichten
Du rufst Stundenwetter für die in Filialen hinterlegten Orte ab und verdichtest es zu Tageswerten.
Stand: 02.10.2026, statische Analyse von PEP4 Desktop, Commit f1d82a003b62f2658f06eaa943dc685ab219bdf3. Statisch dokumentiert; Nutzerprüfung offen. Kein Schnittstellenlauf, Live-Schema- oder API-Test. Lokale PEP-Änderungen außerhalb dieser Schnittstellen wurden nicht einbezogen.
Zweck, Parameter und Eingangsvertrag
Trotz Enum-Präfix Imp als Programm registriert. DATVON/DATBIS: Datumsmuster via SetDatum, keine Von≤Bis-Prüfung. Kein PFAD, keine Eingangsdatei/Archivierung. Aktiver Shared-Einstieg ruft GetWeather2, nicht das noch vorhandene ältere GetWeather. Orte kommen aus TOOLS.My.Resources.Orte (CSV-Ressource: Schlüssel Feld1, Latitude/Lon Feld4/5) oder Filialen.GeoLocation='Lat;Lon'. Konvertiert mit Punkt→Komma, auf2 Stellen gerundet, gleiche Koordinaten gruppiert; kulturabhängig.
Je Koordinate/Tag synchroner HTTP-GET mit date yyyy-MM-dd und tz Europe/Berlin; Antwort BrightSkyResponse.Weather, Timestamp als DateTime, optionale Nullable-Zahlen/Stringwerte. Kein festgelegter Einheitenumrechner im Code. API-Vertrag/Einheiten/Stationswahl nicht live geprüft (Q12); keine echte URLabfrage ausgeführt.
SQL-Kette, Datenwirkung und Betrieb
Filialen.FilialID/GeoLocation SELECT → je gemappter Filiale/Tag DELETE WetterH vor HTTP → INSERT aller gelieferten Stunden mit Timestamp.Date=Datum → Calc_WetterDatum(DatVon,DatBis,ZeitVon,ZeitBis). Kein Upsert. HTTP-/Insertfehler im Tagesthread werden im leeren Catch verschluckt; nicht erfolgreiche HTTP-Statusantwort ergibt ebenfalls keinen Fehlerstatus. Gelöschte Tagesstunden können fehlen.
SP löscht Wetter aller Filialen im Datumintervall und fügt Tagesverdichtung aus WetterH ein: Min/MaxTemperatur gerundet, SonnenDauer/Niederschlag summiert, Wind max, Wolkendichte avg, ts max. DATEPART(hour) zwischen ZeitVon/ZeitBis inklusiv. Datum between DatVon/DatBis bezieht sich auf Zeitstempel: Endtag DATBIS als Mitternacht schließt spätere Stunden des letzten Tages aus, obwohl VB sie abgerufen hat.
SQL-Commands Default30, SQL_TIMEOUT nicht gelesen. HttpClient.Timeout kommt aus dem bereitgestellten Clientkontext, in dieser Klasse nicht gesetzt. Keine Transaktion, kein Fach-SP-Fehlercatch außen; Ressourcen-/DB-/SP-Ausnahmen können AusführungEnde überspringen.
Befunde und Grenzen
Shared GetWetter ohne Return liefert False, obwohl GetWeather2 Daten schreibt und True zurückgibt. Interner Erfolg ist weder Fehlerfrei() noch HTTP-Erfolgsnachweis. NULL-Wetterwerte werden DBNull, sight wird Real-Parameter→int, Timestamp→smalldatetime im Schema0878. Tagesziel Schema0873/0874/0877 enthält Result, das aktive GetWeather2/Calc_WetterDatum nicht schreibt. Alte JSON-Result-Ausgabe aus GetWeather ist kein aktiver Pfad.
Q12 benötigt bestätigten API-/Einheiten-/Zeitvertrag und isolierte Tests zu HTTP-Ausfall, fehlenden Koordinaten, Endtag, Rundung, NULL und DST. Kein direkter Umsätze-UPDATE.
Systemeinstellungen und gemeinsame Nebenwirkungen
Gemeinsamer Rückmeldepfad: cSchnitt_Basis mit bedingtem Logging, Mail-/Outbox- und Meldungs-API-Aufruf. MANUELL/SILENT und Rückmeldeschalter beeinflussen diesen Pfad; serverseitige API-Wirkungen bleiben offen.
| Beziehung | Schlüssel / Variable | Default | Einflussweg | Wirkung | Beleg |
|---|
| 1074-S001 | SCHNITT_WETTER_ZEITVON / SCHNITT_WETTER_ZEITVON | 9 | Calc_WetterDatum Stundenfilter | erste eingeschlossene Stunde der Tagesverdichtung | B,SQL,SET |
| 1074-S002 | SCHNITT_WETTER_ZEITBIS / SCHNITT_WETTER_ZEITBIS | 19 | Calc_WetterDatum Stundenfilter | letzte eingeschlossene Stunde; keine Wirkung auf HTTP-Abrufmenge | B,SQL,SET |
Nur belegte Profilzuordnung; Fachdaten und Rückmeldung sind nicht atomar. Defaults sind keine Livewerte.
Feldbeziehungen
Unqualifizierte Fachobjekte in der Anmeldedatenbank; Import.dbo ausdrücklich Importdatenbank. Dateifelder stehen separat im Dateivertrag.
| Beziehung | Tabelle.Feld | Operation | Datenfluss / Verwendung | Bedingung | Beleg |
|---|
| 1074-D001 | Filialen.FilialID | SELECT | Filiale zur normalisierten Koordinate | GeoLocation nicht NULL | B |
| 1074-D002 | Filialen.GeoLocation | SELECT | Orte-Ressourcenkey oder Lat;Lon | numerisch, auf2 Dezimalstellen gerundet | B |
| 1074-D003 | WetterH.— Zeilen | DELETE | Alle Stunden der gemappten Filiale am angefragten Tag vor HTTP | HTTP-Ausfall verhindert Wiederbefüllung | B |
| 1074-D004 | WetterH.Filiale | INSERT | Filialen.FilialID | HTTP erfolgreich; Timestamp.Date=angefragter Tag; NULL via DBNull | B,DDLH |
| 1074-D005 | WetterH.Datum | INSERT | weather.timestamp | HTTP erfolgreich; Timestamp.Date=angefragter Tag; NULL via DBNull | B,DDLH |
| 1074-D006 | WetterH.Niederschlag | INSERT | precipitation | HTTP erfolgreich; Timestamp.Date=angefragter Tag; NULL via DBNull | B,DDLH |
| 1074-D007 | WetterH.Niederschlagswahrscheinlichkeit | INSERT | precipitation_probability | HTTP erfolgreich; Timestamp.Date=angefragter Tag; NULL via DBNull | B,DDLH |
| 1074-D008 | WetterH.Druck | INSERT | pressure_msl | HTTP erfolgreich; Timestamp.Date=angefragter Tag; NULL via DBNull | B,DDLH |
| 1074-D009 | WetterH.SonnenDauer | INSERT | sunshine | HTTP erfolgreich; Timestamp.Date=angefragter Tag; NULL via DBNull | B,DDLH |
| 1074-D010 | WetterH.SonnenIntensität | INSERT | solar | HTTP erfolgreich; Timestamp.Date=angefragter Tag; NULL via DBNull | B,DDLH |
| 1074-D011 | WetterH.Temperatur | INSERT | temperature | HTTP erfolgreich; Timestamp.Date=angefragter Tag; NULL via DBNull | B,DDLH |
| 1074-D012 | WetterH.Wind | INSERT | wind_speed | HTTP erfolgreich; Timestamp.Date=angefragter Tag; NULL via DBNull | B,DDLH |
| 1074-D013 | WetterH.Windrichtung | INSERT | wind_direction | HTTP erfolgreich; Timestamp.Date=angefragter Tag; NULL via DBNull | B,DDLH |
| 1074-D014 | WetterH.Wolkendichte | INSERT | cloud_cover | HTTP erfolgreich; Timestamp.Date=angefragter Tag; NULL via DBNull | B,DDLH |
| 1074-D015 | WetterH.Boeen | INSERT | wind_gust_speed | HTTP erfolgreich; Timestamp.Date=angefragter Tag; NULL via DBNull | B,DDLH |
| 1074-D016 | WetterH.Taupunkt | INSERT | dew_point | HTTP erfolgreich; Timestamp.Date=angefragter Tag; NULL via DBNull | B,DDLH |
| 1074-D017 | WetterH.Sicht | INSERT | visibility (VB Real-Parameter, DB int) | HTTP erfolgreich; Timestamp.Date=angefragter Tag; NULL via DBNull | B,DDLH |
| 1074-D018 | WetterH.Bedingung | INSERT | condition, varchar25 | HTTP erfolgreich; Timestamp.Date=angefragter Tag; NULL via DBNull | B,DDLH |
| 1074-D019 | WetterH.Icon | INSERT | icon, varchar25 | HTTP erfolgreich; Timestamp.Date=angefragter Tag; NULL via DBNull | B,DDLH |
| 1074-D020 | WetterH.ts | INSERT | getdate() | HTTP erfolgreich; Timestamp.Date=angefragter Tag; NULL via DBNull | B,DDLH |
| 1074-D021 | WetterH.Filiale | SELECT | Tagesverdichtung; Stunde inklusiv ZeitVon–ZeitBis | Datum zwischen Von/Bis; Enddatum Mitternacht beachten | SQL |
| 1074-D022 | WetterH.Datum | SELECT | Tagesverdichtung; Stunde inklusiv ZeitVon–ZeitBis | Datum zwischen Von/Bis; Enddatum Mitternacht beachten | SQL |
| 1074-D023 | WetterH.Temperatur | SELECT | Tagesverdichtung; Stunde inklusiv ZeitVon–ZeitBis | Datum zwischen Von/Bis; Enddatum Mitternacht beachten | SQL |
| 1074-D024 | WetterH.SonnenDauer | SELECT | Tagesverdichtung; Stunde inklusiv ZeitVon–ZeitBis | Datum zwischen Von/Bis; Enddatum Mitternacht beachten | SQL |
| 1074-D025 | WetterH.Niederschlag | SELECT | Tagesverdichtung; Stunde inklusiv ZeitVon–ZeitBis | Datum zwischen Von/Bis; Enddatum Mitternacht beachten | SQL |
| 1074-D026 | WetterH.Wind | SELECT | Tagesverdichtung; Stunde inklusiv ZeitVon–ZeitBis | Datum zwischen Von/Bis; Enddatum Mitternacht beachten | SQL |
| 1074-D027 | WetterH.Wolkendichte | SELECT | Tagesverdichtung; Stunde inklusiv ZeitVon–ZeitBis | Datum zwischen Von/Bis; Enddatum Mitternacht beachten | SQL |
| 1074-D028 | WetterH.ts | SELECT | Tagesverdichtung; Stunde inklusiv ZeitVon–ZeitBis | Datum zwischen Von/Bis; Enddatum Mitternacht beachten | SQL |
| 1074-D029 | Wetter.— Zeilen | DELETE | Alle Filialen im Datumintervall | Nicht auf tatsächlich abgerufene Locations begrenzt | SQL |
| 1074-D030 | Wetter.Filiale | INSERT | WetterH.Filiale | nur Stunden innerhalb des inklusiven Zeitfensters/Datumintervalls | SQL,DDL,DDL2 |
| 1074-D031 | Wetter.Datum | INSERT | convert(date,WetterH.Datum) | nur Stunden innerhalb des inklusiven Zeitfensters/Datumintervalls | SQL,DDL,DDL2 |
| 1074-D032 | Wetter.MinTemp | INSERT | round(min(Temperatur),2) | nur Stunden innerhalb des inklusiven Zeitfensters/Datumintervalls | SQL,DDL,DDL2 |
| 1074-D033 | Wetter.MaxTemp | INSERT | round(max(Temperatur),2) | nur Stunden innerhalb des inklusiven Zeitfensters/Datumintervalls | SQL,DDL,DDL2 |
| 1074-D034 | Wetter.Sonne | INSERT | sum(isnull(SonnenDauer,0)) | nur Stunden innerhalb des inklusiven Zeitfensters/Datumintervalls | SQL,DDL,DDL2 |
| 1074-D035 | Wetter.Regen | INSERT | sum(isnull(Niederschlag,0)) | nur Stunden innerhalb des inklusiven Zeitfensters/Datumintervalls | SQL,DDL,DDL2 |
| 1074-D036 | Wetter.WindSpeed | INSERT | max(Wind) | nur Stunden innerhalb des inklusiven Zeitfensters/Datumintervalls | SQL,DDL,DDL2 |
| 1074-D037 | Wetter.Wolken | INSERT | avg(Wolkendichte) | nur Stunden innerhalb des inklusiven Zeitfensters/Datumintervalls | SQL,DDL,DDL2 |
| 1074-D038 | Wetter.ts | INSERT | max(ts) | nur Stunden innerhalb des inklusiven Zeitfensters/Datumintervalls | SQL,DDL,DDL2 |
Quellen und weitere Schritte
Enum, aktive Registrierung, Projekteinschluss und die in der internen Einzelbeschreibung genannten VB-/SQL-Dateien wurden am Quellencommit geprüft. Konkrete fehlende Quellen und fachliche Fragen stehen oben; bei Tests benötigst du eine isolierte Umgebung und synthetische Dateien.