36 lines
2.0 KiB
Markdown
36 lines
2.0 KiB
Markdown
---
|
||
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.<id>`. 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]].
|