docs: update Profice-services/feedgine

This commit is contained in:
2026-03-26 13:33:32 +00:00
committed by Jane Doe
parent 3a833aa8e8
commit 20bc5db523

View File

@@ -2,7 +2,7 @@
title: FEEDGINE
description:
published: true
date: 2026-03-26T13:14:25.187Z
date: 2026-03-26T13:33:30.807Z
tags:
editor: markdown
dateCreated: 2026-03-26T13:12:31.315Z
@@ -12,7 +12,7 @@ dateCreated: 2026-03-26T13:12:31.315Z
**Projekt:** POAS Feed Enricher
**Sprache:** Python 3.11
**Stand:** März 2026
**Stand:** 26.01.2026
---
@@ -58,7 +58,7 @@ flowchart TD
D --> E["Angereicherter XML-Feed"]
E --> F["Google Merchant Center"]
E --> G["nginx Feed-Server"]
D --> H["Telegram-Benachrichtigung"]
D --> H["Chat- & E-Mail-Benachrichtigung"]
```
---
@@ -228,7 +228,7 @@ Der Scheduler ist der Haupteinstiegspunkt. Er läuft dauerhaft und startet die P
- Berechnung des nächsten Ausführungszeitpunkts aus `SCHEDULE_HOUR` und `SCHEDULE_MINUTE`
- Wartemodus in 60-Sekunden-Intervallen (CPU-schonend)
- Unterstützt `--run-now` (sofortige Ausführung), `--once` (einmalig, dann Beenden), `--lookback-days N`
- Sendet Telegram-Benachrichtigung beim Start des Schedulers
- Sendet Chat- und E-Mail-Benachrichtigung beim Start des Schedulers
### 3.2 Watchdog / Pipeline-Ausführer (`Startup/watchdog.py`)
@@ -240,7 +240,7 @@ Der Watchdog orchestriert den gesamten Ausführungsablauf und implementiert Fehl
- Startet die Pipeline als Subprozess (mit Timeout)
- Retry-Logik: bis zu `MAX_RETRIES` Versuche mit `RETRY_DELAY_SECONDS` Pause
- **Integritätsprüfungen** vor der Veröffentlichung (siehe 3.6)
- Telegram-Benachrichtigungen bei Erfolg und Fehler (inkl. Log-Anhang)
- Chat- und E-Mail-Benachrichtigungen bei Erfolg und Fehler (inkl. Log-Anhang)
### 3.3 Google Ads Datenabruf (`poas_feed_enricher/app.py`)
@@ -300,7 +300,7 @@ Vor der Veröffentlichung des Feeds werden drei Sicherheitsprüfungen durchgefü
| Integritäts-Check | Keine Produkte mit fehlender `g:id` | Strukturfehler im XML |
| Sanity-Check | Produktanzahl weicht < ±1000 vom Vorrun ab | Anomaler Produktverlust |
Schlägt eine Prüfung fehl, wird der Feed **nicht** veröffentlicht und eine Telegram-Warnung gesendet.
Schlägt eine Prüfung fehl, wird der Feed **nicht** veröffentlicht und eine Chat- sowie E-Mail-Warnung gesendet.
### 3.7 Feed-Veröffentlichung (`Startup/feed_publisher.py`)
@@ -320,21 +320,21 @@ Verwaltet Speicherplatz durch automatische Rotation der datierten Ordner.
- Behält die neuesten `KEEP_LAST_N` (Standard: 3) Ordner
- Löscht ältere Ordner automatisch
### 3.9 Telegram-Benachrichtigungen (`Startup/telegram_notifier.py`)
### 3.9 Chat- und E-Mail-Benachrichtigungen (`Startup/notifier.py`)
Sendet Status-Nachrichten an konfigurierte Telegram-Chats.
Sendet Status-Nachrichten über zwei Kanäle: als **Chat-Nachricht** (z. B. an einen konfigurierten Messaging-Dienst) und als **E-Mail** an definierte Empfängeradressen.
**Nachrichten-Typen:**
| Ereignis | Inhalt |
|---|---|
| Scheduler-Start | Programmstart, geplante Uhrzeit, Lookback-Tage |
| Pipeline gestartet | Ausführungsbeginn |
| **Erfolg** | Feed-Statistiken, Label-Verteilung, Feed-URL |
| **Fehler** | Fehlermeldung + vollständige Log-Datei als Anhang |
| Feed gesperrt | Grund der Sicherheitsprüfung (Zero/Integrität/Sanity) |
| Ereignis | Chat-Nachricht | E-Mail |
|---|---|---|
| Scheduler-Start | Programmstart, geplante Uhrzeit, Lookback-Tage | Startbestätigung |
| Pipeline gestartet | Ausführungsbeginn | — |
| **Erfolg** | Feed-Statistiken, Label-Verteilung, Feed-URL | Zusammenfassung mit allen Kennzahlen |
| **Fehler** | Fehlermeldung + Log-Anhang | Detaillierte Fehlermeldung + Log-Datei im Anhang |
| Feed gesperrt | Grund der Sicherheitsprüfung (Zero/Integrität/Sanity) | Detaillierte Sperrmeldung mit Empfehlung |
**Beispielformat einer Erfolgsmeldung:**
**Beispielformat einer Chat-Erfolgsnachricht:**
```
POAS Pipeline — SUCCESS
@@ -364,6 +364,36 @@ GMC Feed: https://[FEED-SERVER]/[CLIENT_PREFIX]/poas_feed.xml
> *Dies ist ein Beispielformat — Zahlen und URLs sind Platzhalter.*
**Beispielformat einer E-Mail-Erfolgsnachricht:**
```
Betreff: [POAS Pipeline] Feed-Lauf erfolgreich — TT.MM.JJJJ
Guten Tag,
der tägliche Feed-Lauf wurde erfolgreich abgeschlossen.
Datum: TT.MM.JJJJ HH:MM
Ausgabeordner: Output TT.MM.JJJJ
Feed-Zusammenfassung:
Quell-XML: XXX.XXX Produkte
Endgültiger Feed: XXX.XXX Produkte
Ads-Treffer: XXX.XXX Produkte
Label-Verteilung:
Longtail: XX.XXX (XX,X %)
Core: XX.XXX (XX,X %)
Feeder: XX.XXX (XX,X %)
Feed-URL: https://[FEED-SERVER]/[CLIENT_PREFIX]/poas_feed.xml
Mit freundlichen Grüßen
POAS Pipeline
```
> *Dies ist ein Beispielformat — Zahlen, Adressen und URLs sind Platzhalter.*
---
## 4. Installation ohne Docker (Direktinstallation)
@@ -422,8 +452,11 @@ nano .env
Die folgenden Variablen **müssen** gesetzt werden (Details siehe [Abschnitt 6](#6-konfiguration)):
```dotenv
TELEGRAM_BOT_TOKEN=...
TELEGRAM_CHAT_IDS=...
NOTIFY_CHAT_TOKEN=...
NOTIFY_CHAT_IDS=...
NOTIFY_EMAIL_TO=...
NOTIFY_EMAIL_FROM=...
NOTIFY_EMAIL_SMTP=...
SHOP_NAME=...
SHOP_URL=...
FEED_ZIPS=...
@@ -621,9 +654,15 @@ services:
container_name: poas-pipeline
restart: unless-stopped
environment:
# Telegram
TELEGRAM_BOT_TOKEN: "[BOT_TOKEN]"
TELEGRAM_CHAT_IDS: "[CHAT_ID_1],[CHAT_ID_2]"
# Chat-Benachrichtigung
NOTIFY_CHAT_TOKEN: "[CHAT_BOT_TOKEN]"
NOTIFY_CHAT_IDS: "[CHAT_ID_1],[CHAT_ID_2]"
# E-Mail-Benachrichtigung
NOTIFY_EMAIL_TO: "[empfaenger@beispiel.de]"
NOTIFY_EMAIL_FROM: "[absender@beispiel.de]"
NOTIFY_EMAIL_SMTP: "[smtp.beispiel.de]"
NOTIFY_EMAIL_SMTP_PORT: "587"
# Shop-Informationen
SHOP_NAME: "[SHOPNAME]"
@@ -760,16 +799,16 @@ graph TB
end
end
INTERNET["Internet\nGoogle Ads API / Telegram / Shop-ZIP"]
INTERNET["Internet\nGoogle Ads API / Shop-ZIP"]
GMC["Google Merchant Center"]
TELEGRAM["Telegram"]
NOTIFY["Chat- & E-Mail-Benachrichtigung"]
PIPELINE --> V1
PIPELINE --> V2
NGINX --> V2
PIPELINE --> INTERNET
NGINX -->|"Port 8525"| GMC
PIPELINE --> TELEGRAM
PIPELINE --> NOTIFY
```
---
@@ -782,8 +821,12 @@ Alle Konfigurationsparameter werden über die `.env`-Datei (Direktinstallation)
| Variable | Beispielformat | Beschreibung |
|---|---|---|
| `TELEGRAM_BOT_TOKEN` | `[TOKEN]:AAG...` | Token des Telegram-Bots |
| `TELEGRAM_CHAT_IDS` | `[ID1],[ID2]` | Chat-IDs (kommagetrennt) |
| `NOTIFY_CHAT_TOKEN` | `[TOKEN]` | API-Token für den Chat-Benachrichtigungsdienst |
| `NOTIFY_CHAT_IDS` | `[ID1],[ID2]` | Empfänger-IDs für Chat-Nachrichten (kommagetrennt) |
| `NOTIFY_EMAIL_TO` | `[empfaenger@beispiel.de]` | E-Mail-Empfängeradresse(n), kommagetrennt |
| `NOTIFY_EMAIL_FROM` | `[absender@beispiel.de]` | Absenderadresse für E-Mail-Benachrichtigungen |
| `NOTIFY_EMAIL_SMTP` | `[smtp.beispiel.de]` | SMTP-Serveradresse |
| `NOTIFY_EMAIL_SMTP_PORT` | `587` | SMTP-Port (587 für STARTTLS, 465 für SSL) |
| `SHOP_NAME` | `[Shopname]` | Name des Shops (für Feed-Titel) |
| `SHOP_URL` | `https://[shop-domain]` | Shop-URL (für Feed-Link) |
| `SHOP_DESCRIPTION` | `[Beschreibung]` | Shop-Beschreibung |
@@ -842,9 +885,9 @@ sequenceDiagram
participant API as Google Ads API
participant ZIP as Shop-ZIP-Server
participant N as nginx
participant TG as Telegram
participant MSG as Chat & E-Mail
S->>TG: Scheduler gestartet
S->>MSG: Scheduler gestartet
Note over S: Wartet bis SCHEDULE_HOUR:SCHEDULE_MINUTE
loop Täglich
@@ -857,7 +900,7 @@ sequenceDiagram
W->>W: Integritätsprüfungen
W->>N: Feed veröffentlichen
W->>W: Alte Ordner löschen
W->>TG: Erfolgsmeldung mit Statistiken
W->>MSG: Erfolgsmeldung mit Statistiken
end
```
@@ -974,13 +1017,13 @@ graph TD
LABEL["label_engine.py — POAS-Berechnung"]
PUB["feed_publisher.py — Veröffentlichung"]
CLEAN["cleanup.py — Speicherverwaltung"]
TG["telegram_notifier.py — Benachrichtigung"]
TG["notifier.py — Chat- & E-Mail-Benachrichtigung"]
end
subgraph OUTPUT["Ausgabe"]
FEED["poas_feed.xml (angereicherter GMC-Feed)"]
NGINX["nginx — Feed-Server"]
TELEGRAM["Telegram — Benachrichtigung"]
NOTIFY["Chat- & E-Mail-Benachrichtigung"]
end
ZIP --> WATCH
@@ -997,7 +1040,7 @@ graph TD
FEED --> NGINX
WATCH --> CLEAN
WATCH --> TG
TG --> TELEGRAM
TG --> NOTIFY
```
### 8.2 Dateistruktur
@@ -1033,7 +1076,7 @@ poas-pipeline/
│ ├── watchdog.py ← Pipeline-Ausführer + Retry
│ ├── cleanup.py ← Ordner-Erstellung & -Rotation
│ ├── feed_publisher.py ← Feed nach nginx kopieren
│ ├── telegram_notifier.py ← Telegram-Benachrichtigungen
│ ├── notifier.py ← Chat- & E-Mail-Benachrichtigungen
│ └── logs/ ← Ausführungs-Logs
├── Datei/ ← Statische Eingabedaten
@@ -1058,13 +1101,13 @@ sequenceDiagram
participant APP as Ads-Abruf
participant TRN as XML-Anreicherung
participant PUB as Feed-Publisher
participant TG as Telegram
participant MSG as Chat & E-Mail
SCH->>TG: Scheduler gestartet
SCH->>MSG: Scheduler gestartet
Note over SCH: Wartet bis SCHEDULE_HOUR:SCHEDULE_MINUTE (UTC)
SCH->>WDG: execute_pipeline(lookback_days)
WDG->>TG: Pipeline gestartet
WDG->>MSG: Pipeline gestartet
WDG->>CLN: Datierten Input-Ordner erstellen
CLN->>CLN: ZIP-Feeds herunterladen
@@ -1099,9 +1142,9 @@ sequenceDiagram
PUB->>PUB: ZIP-Archiv erstellen
PUB-->>WDG: OK
WDG->>CLN: Alte Ordner rotieren
WDG->>TG: Erfolgsmeldung mit Statistiken
WDG->>MSG: Erfolgsmeldung + Statistiken (Chat & E-Mail)
else Prüfung fehlgeschlagen
WDG->>TG: Warnung: Feed gesperrt (Grund)
WDG->>MSG: Warnung: Feed gesperrt (Chat & E-Mail)
end
```
@@ -1132,8 +1175,7 @@ flowchart TD
F6 -- Ja --> FU["underperformer — custom_label_4"]
F6 -- Nein --> FI["invisibles — custom_label_4"]
```
---
**Letzte Aktualisierung:** 26.03.2026
*Dokumentation für POAS Feed Enricher — alle Namen, URLs, IDs und Zahlen in dieser Dokumentation sind Platzhalter und dienen ausschließlich der Veranschaulichung.*