Files
janssen/Python-runner/_deploy_seaweed.py
T
administrator 6bcb721eb4 Přílohy ze všech 3 email pipeline → SeaweedFS (globální SHA-256 dedup)
Sjednocení ukládání příloh do jednoho blob storu na Tower1 (SeaweedFS Filer),
content-addressed cesta /mail-attachments/ab/cd/<sha256> přes sdílený
seaweed_store.py. Tři zdroje, jeden dedup:

- mailstore: mailstore_attachments_poc.py (pole seaweed_attachments[])
- Graph: 3_download_attachments v1.4→v1.5 (upload při stažení nové přílohy;
  attachments_index dostává seaweed_path/url/synced_at) + backfill graph
- JNJ: jnj_tower_ingest v1.2→v1.3 (upload při parse .msg; attachments[]
  dostává sha256/seaweed_path/url + doc-level seaweed_synced_at) + backfill jnj

Backfill skripty jsou idempotentní (batch+resume, --retry-errors). Výpadek
SeaweedFS žádnou pipeline neshodí (jen warning, doplní backfill).

Ověřeno: 114 726 objektů / 53.3 GB, 0 nesynchronizovaných dokumentů,
globální dedup mezi větvemi funguje.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 21:43:01 +02:00

41 lines
1.2 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Deploy seaweed zmen do /mnt/user/Scripts na Unraidu (.76) pres SFTP."""
import sys, paramiko
from pathlib import Path
LOCAL = Path(r"U:\janssen\Python-runner")
REMOTE = "/mnt/user/Scripts"
FILES = [
"seaweed_store.py",
"seaweed_attachments_backfill_graph.py",
"3_download_attachments_v1.5.py",
"0_run_pipeline_v1.0.py",
]
c = paramiko.SSHClient()
c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
c.connect("192.168.1.76", username="root", password="7309208104", timeout=10)
sftp = c.open_sftp()
for f in FILES:
lp = LOCAL / f
rp = f"{REMOTE}/{f}"
sftp.put(str(lp), rp)
print(f"PUT {f} ({lp.stat().st_size} B)")
# smaz stary v1.4
old = f"{REMOTE}/3_download_attachments_v1.4.py"
try:
sftp.remove(old)
print("DEL 3_download_attachments_v1.4.py")
except IOError as e:
print(f"(v1.4 uz neni / {e})")
# overeni
_, out, _ = c.exec_command(f"ls -la {REMOTE}/seaweed_store.py "
f"{REMOTE}/seaweed_attachments_backfill_graph.py "
f"{REMOTE}/3_download_attachments_v1.5.py")
print(out.read().decode())
sftp.close(); c.close()