# ============================================================ # vtmf_pipeline_v1.5.py # Verze: 1.5 # Datum: 2026-06-15 # Popis: Kompletní workflow V-TMF (J&J Veeva Vault), studie # 77242113UCO3001. Jeden běh udělá: # 1) login do Vaultu (persistentní session + ruční 2FA), # 2) export reportu "Document Inventory Report - Study # Level" do Excelu (Data Only) do WhatToDownload/, # 3) parse reportu a synchronizaci do MongoDB # (Tower, db VTMF, kolekce documents, # klíč = VTMF číslo + verze): # - nové dokumenty se založí, # - změny polí se promítnou (+ history[]), # - dokumenty chybějící v reportu se označí # deleted=True a stažený soubor dostane ' [D]', # - znovuobjevené se vzkřísí a ' [D]' se odebere, # 4) stažení všech dosud nestažených dokumentů do # U:\Dropbox\!!!Days\Downloads Z230\VTMF-77242113UCO3001\ # \\"YYYY-MM-DD Description # [VTMF-x] [v1.0]." + zápis stavu do Mongo. # # Tracking stahování je KOMPLETNĚ v Mongo; starý # download_state.csv se při prvním běhu jednorázově # namigruje a přejmenuje na .imported. # # Vychází z download_vault_v2.1 (v TRASH/) — login, dialogy # a stahování beze změny; nové jsou kroky 2 a 3. # # v1.1: oprava tichého selhání — chyba kteréhokoli kroku se teď # hlasitě vypíše (a exit kód 2), místo aby běh skončil # souhrnem "0 staženo, 0 chyb". Export reportu: více # selektorů pro menu ⋯ i položku Export to Excel (včetně # hledání ve všech frames) a při selhání automatický záchyt # diagnostiky stránky do debug/ (screenshot + HTML frames). # v1.2: selektory exportu OVĚŘENÉ na živém DOM (žádný iframe): # menu ⋯ = .actionMenuContainer .dropDown.vv_dropdown_toggle # button.vv-icon-button (title prázdný!); menu se načítá # asynchronně -> čekat na položku; položka = # a.ReportAction[data-action-name='ExcelExport']; Data Only = # radio name=requiredRadioField value=STANDARD (default # checked); Export =