docs: update Profice-services/feedgine
This commit is contained in:
@@ -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.*
|
||||
|
||||
Reference in New Issue
Block a user