4.6 KiB
4.6 KiB
vtmf_pipeline_v1.5 — Kompletní V-TMF workflow (report → Mongo → download → SeaweedFS)
Verze: 1.5 · Datum: 2026-06-15
Změny v1.5: upload každého staženého dokumentu do SeaweedFS Filer
(192.168.1.50:8888, cesta /vtmf-documents/ab/cd/<sha256>).
SHA-256 content-addressed dedup — identický soubor se uloží jen jednou
(HEAD check → 404 → PUT; při 200 dedup hit). Chyba uploadu neblokuje
download ani zápis do Mongo — soubor zůstane na disku a pole
sha256/seaweed_path/seaweed_url/seaweed_synced_at zůstanou null
(lze doplnit backfillem). Souhrn na konci uvádí počet nově nahraných,
dedup hitů a případných chyb uploadu zvlášť.
(Předchozí změny viz TRASH/vtmf_pipeline_v1.4.md)
Jeden běh skriptu udělá celé workflow pro studii 77242113UCO3001:
- Login do vtmf.veevavault.com (persistentní profil
vault_profile/, J&J SSO, případné 2FA potvrdíte na telefonu- ENTER; údaje z
.envv rootu projektu).
- ENTER; údaje z
- Export reportu „Document Inventory Report - Study Level"
(přímá URL s ID reportu
0RP000000000182a filtrem studie0ST000000137008) → menu ⋯ → Export to Excel → Data Only → uloží se s timestampem doWhatToDownload/, po zpracování se přesune doWhatToDownload/Zpracovano/. - Parse + sync do MongoDB — Tower
mongodb://192.168.1.76:27017, db VTMF, kolekce documents, klíč_id = "VTMF-xxx|vY.Z":- nové dokumenty se založí,
- změny sledovaných polí se promítnou (+
history[]), - dokumenty chybějící v reportu se označí
deleted=Truea stažený soubor dostane[D]před příponou, - znovuobjevené se vzkřísí a
[D]se odebere.
- Stažení + SeaweedFS upload — všechny
deleted=False, downloaded≠True:- Source File se uloží do
U:\Dropbox\!!!Days\Downloads Z230\VTMF-77242113UCO3001\<Type>\<Subtype>\jakoYYYY-MM-DD Description [VTMF-xxx] [vY.Z].<přípona>, - soubor se přečte z disku, vypočítá se SHA-256, obsah se nahraje
do SeaweedFS na
/vtmf-documents/{sha256[:2]}/{sha256[2:4]}/{sha256}, - do Mongo se zapíše
downloaded=True, file, sha256, seaweed_path, seaweed_url, seaweed_synced_at; chyba SeaweedFS tyto fieldy nechánullaledownloaded=Truese zapíše (soubor je na disku). - Placeholder dokumenty (
div.vv_placeholder_textviditelný) se přeskočí splaceholder=True, downloaded=True.
- Source File se uloží do
Mongo schéma (kolekce documents)
_id: "VTMF-19077748|v1.0"
vtmf, version, url, name, status, type, subtype, desc, date, studies
first_seen, last_seen # kdy poprvé/naposledy v reportu
deleted, deleted_at # není ve výsledné sadě reportu
downloaded, file, downloaded_at
placeholder # True = Vault placeholder bez obsahu
sha256 # hex SHA-256 staženého souboru
seaweed_path # /vtmf-documents/ab/cd/<sha256>
seaweed_url # http://192.168.1.50:8888/vtmf-documents/...
seaweed_synced_at # kdy nahráno / null při chybě
last_error, error_at # poslední chyba stahování
history: [{ts, changes: {pole: {old, new}}}]
SeaweedFS detaily
- Filer:
http://192.168.1.50:8888(přímý PUT, žádný master assign) - Dedup: HEAD → 404 → PUT; HEAD → 200 → dedup hit (vrátí
uploaded=False) - Timeout: HEAD 10 s, PUT 120 s (velké soubory)
- MIME:
mimetypes.guess_type(), fallbackapplication/octet-stream - Backfill: dokumenty s
downloaded=True, seaweed_path=nulllze dohnat samostatným skriptem (čtefilez Mongo, nahraje, zapíše pola)
Konfigurace (konstanty nahoře)
SEAWEED_FILER— URL Filer serveruSEAWEED_PREFIX— prefix cesty (/vtmf-documents)REPORT_URL— ID reportu + filtr studieLIMIT— None = vše; číslo = dávkaMONGO_URI/DB/COLL,DOWNLOAD_ROOT,EXCEL_DIRTRACKED_FIELDS,MAX_ATTEMPTS,RETRY_PAUSE_MS,BETWEEN_DOCS_MS
Ověřené technické detaily (nesahat bez ověření)
- Maintenance dialog: zavírat POUZE přes
.ui-dialog a.ok.vv_button(křížek.ui-dialog-titlebar-closeje display:none). - Report Excel má rozbité deklarované rozměry → přímá iterace řádků.
- Document Name/Number/Status jsou =HYPERLINK vzorce → regex.
- Export kliknout právě jednou; rozhoduje
expect_download. - Placeholder detekce:
div.vv_placeholder_text(uvnitřdiv.vv_placeholder_pane > div.vv_placeholder_container).
Spuštění
& "U:\PythonProject\Janssen\.venv\Scripts\python.exe" "U:\PythonProject\Janssen\VTMFDownloadFiles\vtmf_pipeline_v1.5.py"
Předchůdce: vtmf_pipeline_v1.4 (TRASH/).