Mit dem fünften Meilenstein kommt der zweite große Teil der Kladde dazu: öffentliche Ausschreibungen. Öffentliche Auftraggeber in der EU veröffentlichen ihre Ausschreibungen in TED (Tenders Electronic Daily), und TED bietet eine Such-Schnittstelle, die jeder ohne Schlüssel nutzen kann. In Modul 2.8 haben Sie dafür einen Client gebaut und einen nächtlichen Import, der zu festen CPV-Codes aus der Konfiguration liest. Jetzt wird daraus ein Import, den das Büro selbst steuert: Die Leitung legt fest, wonach gesucht wird, der Import holt jede Nacht nur das Neue, er übersteht Ausfälle von TED, und jede Person sieht, wie der letzte Lauf ausging.
Der Schnitt aus Lektion 2.11.1 mit der Änderung, die dort in Lösung 3 empfohlen ist: Die Läufe werden festgehalten, bevor die Abfrage den letzten erfolgreichen Lauf braucht.
| Pull Request | Branch | Bringt | Wo in dieser Lektion |
|---|---|---|---|
| 1 | feature/m5-search-criteria |
CPV-Codes und Länder, geprüft, gespeichert, von der Leitung gepflegt | Übung 1 und „Pull Request 1“ |
| 2 | feature/m5-import-runs |
jeder Lauf festgehalten, der letzte sichtbar, neu und geändert gezählt | „Pull Request 2“ |
| 3 | feature/m5-query-from-criteria |
die Abfrage aus den Kriterien, ab dem letzten Erfolg, alle Seiten der Antwort | „Pull Request 3“ |
| 4 | feature/m5-retry-run |
um 3 Uhr Ortszeit, nach einem Fehler bis zu dreimal neu, der Client wiederholt kein POST | Übung 2 und „Pull Request 4“ |
Wo die Kladde steht
Nach Modul 2.8 und Meilenstein 4 gilt in den Lösungen:
TedClientim eigenen ProjektKladde.Tedist ein typisierter Client (Lektion 2.8.1) mitAllowAutoRedirect = falseund Tests intests/Kladde.Ted.Testsmit einem nachgemachtenHttpMessageHandlerfür Erfolg, 500, Weiterleitung und kaputtes JSON. Die Abfrage bautTedQueryaus einemTenderSearch(CPV-Codes, Länder, Grenze) ausKladde.Core.Tenders.- Ein Hintergrunddienst importiert jede Nacht die Bekanntmachungen zu den CPV-Codes und Ländern aus der Konfiguration (
Tenders:Import, Lektion 2.8.2). - Der Import ist idempotent: Ein eindeutiger Index auf der Bekanntmachungsnummer verhindert Doppelte (Lektion 2.8.3). Der
Standard-Resilienz-Handler wiederholt kein
POST(DisableForUnsafeHttpMethods). - Unter
/ausschreibungensteht eine einfache Liste der importierten Ausschreibungen.
Die Beispiele dieser Lektion geben TenderSearch eine Fabrikmethode mit den Regeln für die Eingaben der Leitung und lassen die Grenze
weg, weil der Import jetzt alle Seiten liest; TedQuery bekommt den Tag des letzten Erfolgs dazu. Ändern Sie diese beiden Typen aus
Modul 2.8, statt neue danebenzustellen. Heißen Ihre Dateien, Klassen oder Ordner anders, behalten Sie Ihre Namen und übertragen Sie die
Schritte.