# 0_run_pipeline_v1.0.py **Wrapper kolem celé emailové pipeline.** Spustí postupně všechny 4 kroky daily syncu, vždy přes všechny dostupné schránky: | # | Krok | Skript | |---|---|---| | 1b | Graph delta sync (inkrementální Mongo update) | `1b_parse_emails_graph_delta_v1.0.py` | | 3 | Download attachments | `3_download_attachments_v1.4.py` | | 4 | Unwrap S/MIME | `4_unwrap_smime_v1.0.py` | | 5 | Enrich fulltext (PG) | `5_enrich_fulltext_emails_v1.3.py` | ## Politika chyb Default je **continue-on-error** — když některý krok selže, pipeline pokračuje dalším (downstream se nezasekne kvůli minor problému). Po vyběhnutí dostaneš souhrnnou tabulku s `OK / FAIL(N)` per krok. Použij `--stop-on-error` pokud chceš tvrdou abort při první chybě. ## Logování Každý krok jde do vlastního logu v `/scripts/pipeline_.log`: - `pipeline_1b.log` - `pipeline_3.log` - `pipeline_4.log` - `pipeline_5.log` Live výstup se zároveň tee-uje na konzoli (vypneš přes `--quiet`). ## Argumenty | Argument | Hodnoty | Popis | |---|---|---| | `--only` | `1b 3 4 5` | Spustit jen tyto kroky | | `--skip` | `1b 3 4 5` | Přeskočit tyto kroky | | `--stop-on-error` | flag | Zastavit při první chybě (default: pokračovat) | | `--quiet` | flag | Necpat stdout na konzoli (zůstane v logu) | ## Varianty volání ```bash # Daily run — vše, všechny schránky: docker exec -it python-runner python /scripts/0_run_pipeline_v1.0.py # Jen enrich (např. po manuálním zásahu do Mongo): docker exec -it python-runner python /scripts/0_run_pipeline_v1.0.py --only 5 # Vše mimo S/MIME (krok 4 občas vyžaduje pip install asn1crypto): docker exec -it python-runner python /scripts/0_run_pipeline_v1.0.py --skip 4 # Test daily sync bez fulltextu: docker exec -it python-runner python /scripts/0_run_pipeline_v1.0.py --only 1b 3 4 # Na pozadí, master log: docker exec -d python-runner bash -c "python /scripts/0_run_pipeline_v1.0.py --quiet > /scripts/pipeline_master.log 2>&1" docker exec -it python-runner tail -f /scripts/pipeline_master.log ``` ## Cron / nightly automation Pro nightly se hodí jednoduchý cron na Unraidu (`/etc/cron.daily/` nebo User Scripts plugin): ```bash #!/bin/bash docker exec python-runner python /scripts/0_run_pipeline_v1.0.py --quiet \ > /mnt/user/Scripts/pipeline_$(date +%Y%m%d).log 2>&1 ``` Stačí denně, delta sync z minulého stavu trvá ~30s s prázdným backlogem. ## Exit kódy wrapperu | Kód | Význam | |---|---| | 0 | Všechny kroky OK | | 1 | Alespoň jeden krok selhal | | 2 | Žádný krok k běhu (--only + --skip vyloučily vše) | | 127 | Některý skript neexistuje v `/scripts/` | | 130 | Přerušeno Ctrl+C |