--- name: python-runner description: "Docker kontejner na Unraidu s email pipeline — architektura, závislosti, scheduling, hlášení" metadata: node_type: memory type: project originSessionId: ec13e72a-c0a8-4862-93d9-6da9b29b82f3 --- Email pipeline běží v Docker kontejneru `python-runner` na Unraidu (192.168.1.76). Skripty jsou v `/mnt/user/Scripts/` (volume → `/scripts/`). **Pipeline** spouštěna 2× denně cronem (`0 6,18 * * *`) přes `run_pipeline.sh`: - `1b` — Graph delta sync (nové/změněné emaily → MongoDB) - `3` — Download attachments - `4` — Unwrap S/MIME - `5` — Enrich fulltext → PostgreSQL **Wrapper:** `0_run_pipeline_v1.0.py` - Na začátku auto-install: `pip install -q -r /scripts/requirements.txt` — odolné vůči recreate kontejneru - Na konci email report: HTML tabulka výsledků z `reports@buzalka.cz` → `vladimir.buzalka@buzalka.cz`; při chybě přiloží log selhavšího kroku **Závislosti:** `requirements.txt` v `/scripts/` + v repo `Python-runner/requirements.txt` Klíčové: `msal`, `asn1crypto`, `pymongo`, `psycopg`, `extract-msg`, `beautifulsoup4` **Incident 2026-06-05:** kontejner byl recreated → ztraceny balíčky → pipeline padala 24h (kroky 1b/3/4 FAIL s ModuleNotFoundError). Opraveno auto-installem. **Knihovna pro odesílání emailů:** `Knihovny/EmailMessagingGraph.py` (kopie na serveru `/scripts/EmailMessagingGraph.py`) - SENDER: `reports@buzalka.cz`, tenant TrialHelp s.r.o. **Logy:** `/mnt/user/Scripts/logs/pipeline_YYYYMMDD_HHMM.log`, symlink `pipeline_latest.log`, retence 30 dní. **Centrální logging (2026-06-09):** wrapper `0_run_pipeline` posílá do Grafana Loki (přes [[central-logging]] gateway) **každý řádek konzole** každého kroku — `app="email_pipeline"`, pole `logger=step.`. Klient `central_logging*.py` zkopírován do `/scripts/`. Token+gateway NEjsou v kontejneru — dány přes `os.environ.setdefault` přímo ve wrapperu (kroky je dědí jako subprocesy). Grafana dotaz: `{app="email_pipeline"}`. Souvisí s [[graph-email-import]], [[project-mcp-emaily]].