# vtmf_pipeline_v1.0 — Kompletní V-TMF workflow (report → Mongo → download) **Verze:** 1.0 · **Datum:** 2026-06-12 Jeden běh skriptu udělá celé workflow pro studii 77242113UCO3001: 1. **Login** do vtmf.veevavault.com (persistentní profil `vault_profile/`, J&J SSO, případné 2FA potvrdíte na telefonu + ENTER; údaje z `.env` v rootu projektu). 2. **Export reportu** „Document Inventory Report - Study Level" (přímá URL s ID reportu `0RP000000000182` a filtrem studie `0ST000000137008`) → menu ⋯ → Export to Excel → Data Only → uloží se s timestampem do `WhatToDownload/`, po zpracování se přesune do `WhatToDownload/Zpracovano/`. 3. **Parse + sync do MongoDB** — Tower `mongodb://192.168.1.76:27017`, db **VTMF**, kolekce **documents**, klíč `_id = "VTMF-xxx|vY.Z"` (VTMF číslo + verze, unikátní index na dvojici): - nový dokument → založí se (first_seen, deleted=False, downloaded=False), - změna sledovaných polí (name, status, type, subtype, desc, date, url, studies) → promítne se + záznam do `history[]` (timestamp + old/new), - dokument chybí v reportu → `deleted=True, deleted_at` a stažený soubor se přejmenuje s ` [D]` před příponou, - dokument se vrátí do reportu → `deleted=False` a ` [D]` se ze souboru zase odebere. Výsledná sada = záznamy s `deleted=False`. 4. **Stažení chybějících** — všechny `deleted=False, downloaded≠True`: doc URL → Source File → uložení do `U:\Dropbox\!!!Days\Downloads Z230\VTMF-77242113UCO3001\\\` jako `YYYY-MM-DD Description [VTMF-xxx] [vY.Z].`. Výsledek (cesta, čas, případně chyba) se ihned zapisuje do Mongo — běh jde kdykoli přerušit a příště naváže. ## 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 last_error, error_at # poslední chyba stahování history: [{ts, changes: {pole: {old, new}}}] ``` ## Migrace starého stavu Při prvním běhu se `download_state.csv` (z download_vault v2.x) jednorázově namigruje: záznamy `ok` se k odpovídajícímu VTMF zapíší jako `downloaded=True` + cesta. CSV se přejmenuje na `download_state.csv.imported`. ## Konfigurace (konstanty nahoře) - `REPORT_URL` — ID reportu + filtr studie (pro jinou studii se mění jen tato dvě ID) - `LIMIT` — None = stáhnout vše zbývající; číslo = dávka na běh - `MONGO_URI/DB/COLL`, `DOWNLOAD_ROOT`, `EXCEL_DIR` - `TRACKED_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-close` je display:none); objevuje se se zpožděním → wait_for visible 8 s (home) / 2-4 s (jinde). - Report Excel má rozbité deklarované rozměry → přímá iterace řádků. - Document Name/Number/Status jsou =HYPERLINK vzorce → regex. - Export kliknout právě jednou; 503/redirecty v network logu ignorovat, rozhoduje expect_download. ## Spuštění ```powershell & "U:\PythonProject\Janssen\.venv\Scripts\python.exe" "U:\PythonProject\Janssen\VTMFDownloadFiles\vtmf_pipeline_v1.0.py" ``` Předchůdce: download_vault v1.x–v2.1 (TRASH/).