Dokumentation
HansalogInhalt
Überblick
Der Provider Hansalog holt Stellenanzeigen aus den Hansalog-Bewerbermanagement-Systemen zweier Mercedes-Benz-Händlergruppen und stellt sie im Projekt Zukunft mit Stern bereit.
| Crawler | Kürzel | Händlergruppe | Quelle (API) |
|---|---|---|---|
| Hansalog Lueg | HAL |
Autohaus Lueg GmbH | https://hansalog.lueg.de/api/index.php |
| Hansalog Senger | HAS |
Egon Senger GmbH | https://ausbildung.senger-mobility.de/api/index.php |
Was ein Crawler tut
Ein Crawler liest alle aktuellen Stellenanzeigen einer Händlergruppe, ordnet jede Anzeige den passenden Mercedes-Benz-Standorten zu, ergänzt sie um Kategorie, Berufsprofil, Kontakt und Bilder und schreibt das Ergebnis in den Solr-Suchindex der Zielseite oder in eine Datei.
Jeder Lauf ist ein vollständiger Abgleich: Nach dem Schreiben nach Solr werden alle Anzeigen dieses Crawlers für diese Seite gelöscht, die im aktuellen Lauf nicht mehr vorkamen.
Begriffe
| Begriff | Bedeutung |
|---|---|
| Provider | Anbieter einer Datenquelle, hier Hansalog. Wird über die Adresse dieser Oberfläche erkannt. |
| Crawler | Abruf für genau eine Händlergruppe (HAL oder HAS). Kann ein- und ausgeschaltet werden. |
| Runner | Eine konkrete Konfiguration eines Crawlers: Modus, Quelle, Ziel und Zielseite. Ein Crawler kann beliebig viele Runner haben. |
| Modus | Dev (Entwicklung), Stage (Vorschau) oder Live (öffentliche Seite). |
| Protokoll | Ergebnis eines Laufs, wird nach dem Start unter den Runnern angezeigt. |
Zielseiten
| Modus | Site | Site-Hash |
|---|---|---|
| Live | zukunftmitstern.de |
7900d4ed7d9e4dc7ccd3670cef49576c9b2e203f |
| Stage | stage.zms.annakannte.tech |
e3466741640b4a7596542375fef789fddbc357b0 |
| Dev | dev-zms.local |
f568f399f0d16401967f80ea8107914024f93de6 |
Der Site-Hash kennzeichnet in Solr, zu welcher Seite eine Anzeige gehört. Er ist der SHA1-Wert des Site-Namens (z. B. sha1("dev-zms.local")) und muss im Runner exakt zur Zielseite passen. Die Suche der Zielseite filtert nach genau diesem Wert.
Ablauf eines Laufs
Jeder Lauf durchläuft dieselben vier Schritte. Was in einem Schritt passiert, steht im Protokoll.
1. Einlesen (collect)
Je nach Runner-Einstellung Input:
- API: Anmeldung an der Hansalog-API mit dem Token, Abruf aller Stellen über
/applicantManagement/jobs, danach Abmeldung. Die Sitzung wird indata/<source>/cookie.txtgehalten. - Datei: Die Anzeigen werden aus der JSON-Datei gelesen, die im Runner unter
from_filesteht. Gut für Tests ohne API-Zugriff.
2. Zuordnen (transform)
Jede Anzeige wird geprüft und den Standorten zugeordnet:
- Fehlen Pflichtangaben (z. B. ID oder Titel), wird die Anzeige verworfen. Im Protokoll erscheint eine Warnung.
- Der Hansalog-Standort der Anzeige muss in der Standortliste des Crawlers bekannt sein. Ein Standort kann mehreren Händlern zugeordnet sein. Dann entsteht pro Händler ein eigener Eintrag.
- Die Händlerdaten (Name, Adresse, Geo-Koordinaten, Website, Logo, Bewerbungslink) kommen aus der lokalen Händlerliste, nicht aus der API.
Die Besonderheiten je Crawler stehen in den Kapiteln zu HAL und HAS.
3. Anreichern (enrich)
Für jeden Eintrag werden ergänzt:
| Feld | Herkunft |
|---|---|
| Eindeutige ID | <Site-Hash>-<Kürzel>-<Stellen-ID>-<Händler-Referenz> |
| Kategorie | aus dem Titel: enthält „Praktikum“ → INTERNSHIP, „Ausbildung“ → EDUCATION, „Initiativ“ → PROACTIVE, sonst EXPERT |
| Berufsprofil | aus Stichworten im Titel, z. B. „Mechatronik“ + „Pkw“. Ohne Treffer: OTHERS |
| Hintergrundbild | Bild zum Berufsprofil, sonst das allgemeine Bild OTHERS |
| Ansprechpartner | Name des Sachbearbeiters aus der Anzeige, sonst der Standard-Kontakt des Händlers |
| Erstellt / Geändert | Startdatum der Anzeige |
| Beschreibung | Stellenbeschreibung, Unternehmensbeschreibung und Aufgaben, bereinigt |
Pro aufgenommener Anzeige erscheint eine INFO-Zeile „Die Anzeige ist valide und wurde aufgenommen“. Im Protokoll der Oberfläche sind diese Zeilen eingeklappt.
4. Ausgeben (transmit)
Je nach Runner-Einstellung Output:
- Solr: Zuerst wird gezählt, wie viele Anzeigen dieses Crawlers für die Site schon im Index sind. Dann werden alle neuen Einträge in den Core
core_degeschrieben und erneut gezählt. Zum Schluss werden alle älteren Einträge dieses Crawlers für diese Site gelöscht (Bereinigung). Die Bereinigung läuft nur, wenn das Schreiben erfolgreich war. - Datei: Alle Einträge werden als JSON in die Datei unter
to_filegeschrieben. Eine vorhandene Datei wird überschrieben.
Schutz bei Solr: Liefert die Quelle keine gültigen Anzeigen, wird weder geschrieben noch bereinigt. Die bisherigen Anzeigen bleiben auf der Seite, im Protokoll steht eine Warnung „Es gibt keine gültigen Anzeigen …“. Lehnt Solr das Schreiben ab oder ist nicht erreichbar, bricht der Lauf mit einem Fehler ab, und die bisherigen Anzeigen bleiben ebenfalls erhalten.
Hansalog Lueg (HAL)
Der Crawler Hansalog Lueg (HAL) liest die Stellen der Autohaus Lueg GmbH.
| Controller | Controller\HansalogLueg |
| Source | hansalog-lueg |
| API | https://hansalog.lueg.de/api/index.php |
| Daten-Ordner | data/hansalog-lueg/ |
Welche Anzeigen aufgenommen werden
Eine Anzeige wird nur übernommen, wenn alle Bedingungen erfüllt sind:
- Stellen-ID, Titel, Standort-ID und Standort-Name sind gefüllt. Sonst: Warnung „Die Mindestanforderung an die Daten ist nicht erfüllt“.
- Die Standort-ID ist in der Standortliste von HAL bekannt.
- Das Unternehmen der Anzeige ist „Mercedes-Benz“.
Ist Punkt 2 oder 3 nicht erfüllt, erscheint die Warnung „Die Location (…) ist nicht bekannt, oder gehört nicht zu Mercedes (…)“. Das ist bei Lueg normal, weil die API auch Stellen anderer Marken und Gesellschaften liefert (z. B. Volvo, Ferrari, Mobexo, LUEG Holding).
Standorte
HAL kennt 12 Hansalog-Standorte, die auf 14 Händler verweisen. Einige Standorte sind Sammelstandorte und mehreren Händlern zugeordnet:
| Standort | Händler |
|---|---|
C101, C201, NRW |
je 8 |
C401, C701 |
je 4 |
C140 |
2 |
C100, C110, C120, C130, C150, C170 |
je 1 |
Eine Anzeige an einem Sammelstandort erscheint deshalb mehrfach, einmal pro Händler.
Sonstiges
- Für die API-Anmeldung wird nur der Token gebraucht.
userundpassim Runner bleiben leer. - Neue Standorte oder Händler können nicht in Directus gepflegt werden. Sie stehen im Code (
app/model/location.php,app/model/retailer.php). Nach einer Änderung lädt Neu aufbauen im Bereich „Händlerspeicher“ der Übersicht sie in den lokalen Speicher. Für die Änderung selbst ist eine Entwicklerin oder ein Entwickler nötig.
Hansalog Senger (HAS)
Der Crawler Hansalog Senger (HAS) liest die Stellen der Egon Senger GmbH.
| Controller | Controller\HansalogSenger |
| Source | hansalog-senger |
| API | https://ausbildung.senger-mobility.de/api/index.php |
| Daten-Ordner | data/hansalog-senger/ |
Welche Anzeigen aufgenommen werden
- Stellen-ID und Titel müssen gefüllt sein. Sonst: Warnung „Die Mindestanforderung an die Daten ist nicht erfüllt“.
- Eine Senger-Anzeige kann mehreren Standorten zugeordnet sein. Für jeden Standort, der in der Standortliste von HAS bekannt ist, entsteht ein Eintrag.
Anders als bei HAL gibt es keinen Filter auf „Mercedes-Benz“. Für jeden unbekannten Standort einer Anzeige erscheint die Warnung „Die Location (…) ist nicht bekannt, oder gehört nicht zu Mercedes (…)“. In der Klammer am Ende steht hier der Standortname. Viele solcher Warnungen sind normal, weil Senger-Anzeigen oft auch an Standorten anderer Marken (z. B. Audi, VW, Skoda) veröffentlicht sind. Fehlt eine Mercedes-Anzeige auf der Seite, liegt es meist an einem Standort, der in der Liste fehlt.
Standorte
HAS kennt 29 Hansalog-Standorte (Kennungen beginnen mit A, z. B. A1005, A2100, A4000). Jeder Standort ist genau einem Händler zugeordnet.
Sonstiges
- Für die API-Anmeldung wird nur der Token gebraucht.
userundpassim Runner bleiben leer. - Neue Standorte oder Händler können nicht in Directus gepflegt werden. Sie stehen im Code (
app/model/location.php,app/model/retailer.php). Nach einer Änderung lädt Neu aufbauen im Bereich „Händlerspeicher“ der Übersicht sie in den lokalen Speicher. Für die Änderung selbst ist eine Entwicklerin oder ein Entwickler nötig.
Einrichtung in Directus
Alles, was diese Oberfläche anzeigt und ausführt, kommt aus Directus. Die Einrichtung erfolgt von oben nach unten.
1. Projekt und Provider
| Collection | Feld | Wert für Hansalog |
|---|---|---|
project |
name / short |
Zukunft mit Stern / ZMS |
data_provider |
name |
Hansalog |
provider_ident |
hansalog |
|
project |
Zukunft mit Stern | |
url |
https://zms-hansalog.home.pandaworkx.de |
Die url muss die Adresse sein, unter der diese Oberfläche aufgerufen wird. Daran erkennt die Oberfläche, welcher Provider gemeint ist.
2. Crawler (data_crawler)
| Feld | HAL | HAS | Hinweis |
|---|---|---|---|
name |
Hansalog Lueg | Hansalog Senger | Anzeige in der Oberfläche |
short |
HAL |
HAS |
Kürzel, Teil jeder Solr-ID. Nach dem ersten Lauf nicht mehr ändern |
source |
hansalog-lueg |
hansalog-senger |
Kennung in Solr und im Händlerspeicher. Nach dem ersten Lauf nicht mehr ändern |
controller |
Controller\HansalogLueg |
Controller\HansalogSenger |
exakt so, inkl. Groß-/Kleinschreibung |
status |
on / off |
on / off |
Bei off kann kein Runner gestartet werden |
data_provider |
Hansalog | Hansalog |
sourceundshortbestimmen, welche Anzeigen in Solr zu einem Crawler gehören. Werden sie geändert, gelten alle bisherigen Anzeigen als fremd: Der nächste Lauf legt alle Anzeigen neu an, die alten bleiben zusätzlich stehen. Am besten beide Felder in Directus auf „nur lesen“ stellen.
3. Runner (crawler_config)
Pro Crawler und Modus beliebig viele Runner, z. B. einen für den API-Abruf nach Solr und einen zum Testen mit Dateien.
| Feld | Werte | Bedeutung |
|---|---|---|
crawler |
HAL / HAS | Zu welchem Crawler der Runner gehört |
mode |
3 Dev, 2 Stage, 1 Live |
Bestimmt den Tab in der Oberfläche |
collect_from |
api oder file |
Quelle |
send_to |
solr oder file |
Ziel |
data.site |
z. B. dev-zms.local |
Zielseite, siehe Tabelle im Überblick |
data.site_hash |
40-stelliger Hash | Muss zur Zielseite passen |
data.from_api.url |
API-Adresse | bei api |
data.from_api.token |
API-Token | bei api |
data.from_api.user / pass |
leer lassen | wird bei Hansalog nicht genutzt |
data.from_file |
z. B. data/hansalog-lueg/in_data.json |
bei Input file |
data.to_solr.url / port |
http://192.168.188.220 / 8983 (Dev, Stage und Live) |
bei Output solr |
data.to_file |
z. B. data/hansalog-lueg/out_data.json |
bei Output file |
schedule_enabled |
an / aus | Runner automatisch nach Zeitplan starten. Lässt sich auch über den Zeitplan-Button der Oberfläche schalten |
schedule_pattern |
Cron-Ausdruck, z. B. 0 21 * * * |
Wann der Runner automatisch startet, siehe unten |
Zeitplan
Ein Runner startet automatisch, wenn schedule_enabled an ist, schedule_pattern gefüllt ist und der Crawler auf status: on steht. Das Muster hat fünf Stellen: Minute, Stunde, Tag, Monat, Wochentag.
| Muster | Bedeutung |
|---|---|
0 21 * * * |
täglich um 21:00 |
15 21 * * * |
täglich um 21:15 |
0 * * * * |
jede volle Stunde |
0 6 * * 1-5 |
montags bis freitags um 6:00 |
Ein leeres Muster bedeutet „nur manuell“. Steht dort der Vorgabewert * * * * *, läuft der Runner nach dem Einschalten jede Minute. Ein ungültiges Muster wird nicht ausgeführt und im Cron-Log auf dem Server vermerkt. Mehrere Runner zur selben Zeit laufen getrennt voneinander. Bricht einer ab, laufen die anderen weiter.
Pflichtfelder
Vor jedem Lauf wird geprüft, ob alles Nötige gefüllt ist. Fehlt etwas, startet der Lauf nicht, und das Protokoll zeigt den Fehler „Der Runner (…) ist unvollständig, es fehlt: …“.
| Immer | bei Input api |
bei Input file |
bei Output solr |
bei Output file |
|---|---|---|---|---|
site, site_hash |
from_api.url, from_api.token |
from_file |
to_solr.url, to_solr.port |
to_file |
Beispiel: Dev-Runner HAL, API → Solr
| Feld | Wert |
|---|---|
mode |
3 |
collect_from / send_to |
api / solr |
data.site / data.site_hash |
dev-zms.local / f568f399f0d16401967f80ea8107914024f93de6 |
data.from_api.url |
https://hansalog.lueg.de/api/index.php |
data.from_api.token |
Token von Lueg |
data.to_solr.url / port |
http://192.168.188.220 / 8983 |
Dateipfade sind relativ zum Projektordner auf dem Server. Wer Pfade aus einem anderen Projekt kopiert, schreibt in den falschen Ordner. Pfade immer auf
data/hansalog-lueg/…bzw.data/hansalog-senger/…prüfen.
4. Dokumentation (docs)
Diese Seite. Ein Eintrag pro Kapitel mit title, content (Markdown), sort für die Reihenfolge, provider und optional crawler. Sichtbar sind nur Kapitel mit Status published.
Bedienung und Protokoll
Übersicht
Die Startseite zeigt alle Crawler des Providers mit Status, Runnern je Modus und dem Datum der letzten Änderung in Directus. Ein Klick auf eine Karte öffnet den Crawler. Zurück zur Übersicht geht es auf der Crawler-Seite über den Link mit dem Provider-Namen (z. B. „← Hansalog“) über dem Crawler-Namen oder über das Logo oben links.
Im Kopf der Übersicht steht der Händlerspeicher: die lokale Liste aller Händler und Standorte, denen die Anzeigen zugeordnet werden. Angezeigt werden Anzahl und Datum des letzten Aufbaus, auf jeder Crawler-Karte zusätzlich die Zahlen dieses Crawlers.
Neu aufbauen lädt die Listen aus dem Code neu, nach einer Rückfrage. Der bisherige Stand wird ersetzt, danach erscheint eine Bestätigung mit den neuen Zahlen. Nötig ist das nur, nachdem eine Entwicklerin oder ein Entwickler die Listen geändert hat.
Einen Lauf starten
- Crawler öffnen.
- Den Tab des Modus wählen (Dev, Stage, Live). Die Zahl am Tab zeigt, wie viele Runner es gibt.
- Beim gewünschten Runner auf Starten klicken.
Während des Laufs zeigt der Button „Läuft …“, und alle anderen Start-Buttons sind gesperrt. Ein Lauf mit API und Solr kann je nach Datenmenge einige Sekunden bis Minuten dauern. Die Seite nicht neu laden, solange er läuft.
Bei Runnern mit Input API gibt es links neben „Starten“ einen zweiten Button (Pfeil nach unten). Er speichert die aktuelle API-Antwort unverändert in die Datei unter from_file, ohne etwas zu verarbeiten. Diese Datei kann danach ein Runner mit Input Datei zum Testen verwenden. Ist im Runner kein from_file angegeben, ist der Button ausgegraut.
Zeitplan ein- und ausschalten
Der Button mit dem Wecker links neben „Starten“ schaltet den Zeitplan des Runners ein oder aus. Die Änderung wird sofort in Directus gespeichert (schedule_enabled), die Seite muss nicht neu geladen werden.
- Grün: Der Zeitplan ist aktiv, der Runner startet automatisch nach seinem Muster.
- Hell: Der Zeitplan ist aus, der Runner startet nur über „Starten“.
- Ausgegraut: Im Runner ist kein
schedule_patternhinterlegt.
Bei Live-Runnern und bei Mustern, die mehrmals pro Stunde laufen (z. B. * * * * *), fragt die Oberfläche vor dem Einschalten nach. Unter den Details zeigt Zeitplan das Muster mit „aktiv“ oder „aus“, ohne Muster steht dort „nur manuell“.
Ist der Crawler deaktiviert, zeigt der Runner Deaktiviert statt „Starten“. Eingeschaltet wird er in Directus über status.
Das Protokoll lesen
Nach dem Lauf erscheint die Crawler-Seite wieder, unter den Runnern das Protokoll:
- Grüner Hinweis „Lauf beendet“: Der Lauf ist durchgelaufen. Warnungen sind möglich und meist normal.
- Roter Hinweis „Lauf fehlgeschlagen“: Der Lauf wurde nicht ausgeführt, siehe Fehlerzeilen.
| Level | Farbe | Bedeutung |
|---|---|---|
ERROR |
rot | Lauf nicht möglich, z. B. Runner unvollständig |
WARN |
gelb | Einzelne Anzeige verworfen, Lauf geht weiter |
CORE |
blau | Hauptschritte: Start, Quelle, Anzahl in Solr, Ende |
INFO |
hellblau | Eine Zeile pro aufgenommener Anzeige, standardmäßig eingeklappt („INFO ein-/ausblenden“) |
Die wichtigsten CORE-Zeilen:
| Meldung | Bedeutung |
|---|---|
| „Datenabgleich (…) beginnt / beendet“ | Start und Ende des Laufs |
| „Die Daten werden aus der Datei (…) eingelesen“ | Input file |
| „Erfolgreich an der API von … angemeldet“ / „Daten … abgerufen“ | Input api |
| „In Solr sind X Datensätze für …“ | Anzahl vor und nach dem Schreiben |
| „An Solr werden X Datensätze für … übergeben“ | So viele Einträge wurden geschrieben |
Das Protokoll wird einmal angezeigt. Nach dem Neuladen der Seite ist es weg. Auf dem Server steht es zusätzlich im Log unter logs/<source>/<Jahr>/<Monat>/<Tag>_out.log.
Fehlerbilder und Lösungen
| Was man sieht | Ursache | Lösung |
|---|---|---|
| Runner zeigt Deaktiviert oder Fehlerseite 403 | Crawler hat in Directus status: off |
status auf on setzen |
| Fehlerseite 404 beim Start | Runner gehört nicht zu diesem Crawler oder existiert nicht mehr | Seite neu laden. In Directus crawler des Runners prüfen |
| Fehlerseite 500 „… ist kein Crawler“ | controller des Crawlers ist falsch geschrieben |
Exakt Controller\HansalogLueg bzw. Controller\HansalogSenger eintragen |
| Protokoll: „Der Runner (…) ist unvollständig, es fehlt: …“ | Pflichtfeld im Runner leer | Genannte Felder in Directus füllen, siehe Kapitel Einrichtung |
| Protokoll: „API-Fehler, abgebrochen … Die API von … konnte nicht erreicht werden (…)“ | API nicht erreichbar, falsche Adresse (z. B. „HTTP 404“) oder Token ungültig („keine gültige Sitzung, Token prüfen“) | API-Adresse und Token im Runner prüfen. Ggf. Token bei der Händlergruppe neu anfordern. Es wurde nichts geschrieben, die Seite zeigt den alten Stand |
| Protokoll: „API-Fehler, abgebrochen … Das JSON von … konnte nicht korrekt übersetzt werden“ | API liefert keine gültigen Daten, z. B. eine Wartungsseite | Später erneut versuchen. Bleibt es, API-Antwort von einer Entwicklerin oder einem Entwickler prüfen lassen |
| Protokoll: „Solr-Fehler, der Lauf wurde abgebrochen … Das dev/stage/live SOLR konnte nicht erreicht werden“ | Solr-Server nicht erreichbar | to_solr.url und port prüfen, Solr-Server prüfen. Die bisherigen Anzeigen bleiben erhalten |
| Protokoll: „Solr-Fehler, der Lauf wurde abgebrochen … Solr antwortet mit HTTP …“ | Solr hat das Schreiben oder Löschen abgelehnt, z. B. wegen eines ungültigen Feldes | Meldung an eine Entwicklerin oder einen Entwickler geben. Die bisherigen Anzeigen bleiben erhalten |
| Protokoll: „Es gibt keine gültigen Anzeigen für …, die Datensätze in Solr bleiben unverändert.“ | Die Quelle lieferte keine Anzeige, die einem bekannten Standort zugeordnet werden konnte | Warnungen im Protokoll prüfen. Auf der Seite bleibt der alte Stand stehen |
| Viele Warnungen „Die Location (…) ist nicht bekannt, oder gehört nicht zu Mercedes“ | Stellen oder Standorte anderer Marken bzw. Gesellschaften | Normal. Fehlt eine echte Mercedes-Stelle, ist ihr Standort nicht in der Standortliste, siehe Kapitel HAL bzw. HAS |
| Anzeige fehlt auf der Seite (HAS) | Standort der Anzeige nicht in der Standortliste | Standort-Kennung in Hansalog nachsehen und von einer Entwicklerin oder einem Entwickler ergänzen lassen |
| Anzeigen erscheinen auf der falschen Seite | site_hash passt nicht zur site |
Hash aus der Tabelle im Überblick übernehmen |
| Tab zeigt „Kein Runner für diesen Modus“ | Für diesen Modus ist kein Runner angelegt | Runner in crawler_config mit passendem mode anlegen |
| Zeitplan-Button ist ausgegraut | Im Runner ist kein schedule_pattern hinterlegt |
Muster in Directus eintragen, z. B. 0 21 * * *, dann Seite neu laden |
| Fehlerseite 403 oder Hinweis „Die Seite ist veraltet, bitte neu laden.“ (Starten, Speichern, Zeitplan) | Die Seite wurde inzwischen in einem anderen Tab neu geladen. Aus Sicherheitsgründen gilt nur die zuletzt geladene Seite | Seite neu laden und erneut klicken |
| Hinweis „Im Runner ist kein gültiges schedule_pattern hinterlegt.“ | Muster fehlt oder ist kein gültiger Cron-Ausdruck | Muster in Directus korrigieren |
| Hinweis „Directus: …“ beim Zeitplan | Directus nicht erreichbar oder der API-Rolle fehlt das Recht, crawler_config zu ändern |
Directus und Rechte der API-Rolle prüfen |
| Runner startet nicht automatisch | Zeitplan aus, Crawler status: off, Muster ungültig oder System-Crontab nicht aktiv |
Zeitplan-Button prüfen, Hinweise in logs/cron.log lesen |
| Protokoll: „Der Runner (…) ist unvollständig, es fehlt: source (Crawler)“ | Beim Crawler ist in Directus kein source eingetragen |
source am Crawler eintragen (hansalog-lueg bzw. hansalog-senger) |
| Crawler-Karte zeigt „0 Händler · 0 Standorte“ | source des Crawlers passt nicht zum Händlerspeicher, oder der Speicher ist leer |
source prüfen; sonst in der Übersicht Neu aufbauen |
| Diese Dokumentation ist leer | Kein Kapitel mit Status published oder fehlende Leserechte | Status prüfen. Leserechte der API-Rolle auf docs prüfen |
Betrieb und Technik
Dieses Kapitel richtet sich an Entwicklerinnen, Entwickler und den Betrieb.
Konfiguration
Alles Fachliche steht in Directus: Quelle, Ziel, Zielseite, Zugangsdaten und Zeitplan jedes Runners. Auf dem Server liegen nur noch:
| Datei | Inhalt |
|---|---|
cfg/config.ini |
Grundeinstellungen und Provider-Kennung ([dataprovider] name = hansalog) |
cfg/<umgebung>/directus.ini |
Adresse und Token von Directus |
cfg/<umgebung>/cron.ini |
nur Grundeinstellungen, die Jobs kommen aus Directus |
cfg/mailer.ini |
Mailserver und Empfänger der Fehlermails (notify_to, mehrere durch Komma getrennt) |
cfg/database.ini |
lokaler Speicher |
Automatische Läufe (Cron)
Die System-Crontab ruft jede Minute php index.php /cron im Projektordner auf. Dabei werden alle Runner des Providers mit schedule_enabled und schedule_pattern aus Directus gelesen. Jeder fällige Runner startet in einem eigenen Prozess. Bei automatischen Läufen wird der Provider über die Kennung hansalog erkannt, nicht über die Adresse der Oberfläche.
Ausgeführte und ungültige Jobs stehen in logs/cron.log.
Fehler und Fehlermails
Schwere Fehler (ab 500, z. B. PHP-Fehler oder Directus nicht erreichbar) und jeder Fehler eines automatischen Laufs (z. B. API oder Solr nicht erreichbar) werden
- mit dem bisherigen Protokoll des Laufs an
protocol/fatal/<Jahr>/<Monat>/<Tag>_out_protocol.txtangehängt, - per Mail an die Empfänger aus
notify_togeschickt, Betreff „Fehler (<Code>) Hansalog“.
Derselbe Fehler (gleicher Code, gleiche Adresse) erzeugt höchstens eine Mail pro Stunde, im Protokoll steht er jedes Mal. Fehler wie 404 (falsche Adresse) oder 403 (Seite veraltet) in der Oberfläche lösen keine Mail aus. Die Fehlerseite zeigt den Grund (DEBUG=1).
Standorte und Händler
Die Standort- und Händlerlisten stehen im Code (app/model/location.php, app/model/retailer.php). Nach einer Änderung lädt Neu aufbauen im Bereich „Händlerspeicher“ der Übersicht sie in den lokalen Speicher (data/fv_retailer.json, data/fv_location.json). Der bisherige Stand wird dabei ersetzt. Zugeordnet werden sie über das Feld source des Crawlers in Directus.
Dateien auf dem Server
| Pfad | Inhalt |
|---|---|
from_file des Runners |
Gespeicherte API-Antwort, Quelle für Input file |
to_file des Runners |
Ergebnis bei Output file. Bei Dev-Runnern sind die Rohdaten (rawData_binS) lesbar statt base64-kodiert |
data/<source>/cookie.txt |
API-Sitzung |
logs/<source>/<Jahr>/<Monat>/<Tag>_out.log |
Protokoll aller Läufe |
logs/cron.log |
Automatische Läufe |
protocol/fatal/<Jahr>/<Monat>/<Tag>_out_protocol.txt |
Schwere Fehler mit Protokoll des Laufs |
logs/mail.log |
Fehlgeschlagene Mails |
data/pictures/converted/ |
Vorhandene Hintergrundbilder je Berufsprofil |
<source> ist hansalog-lueg bzw. hansalog-senger.