Files
janssen/VTMFDownloadFiles/TRASH/download_vault_v1.5.md
T
2026-06-12 15:29:57 +02:00

4.5 KiB
Raw Blame History

download_vault_v1.5 — Stažení source file z Veeva Vault (J&J V-TMF)

Verze: 1.5 · Datum: 2026-06-12

Změny v1.1: přihlašovací údaje se čtou ze souboru .env v rootu projektu Janssen (U:\PythonProject\Janssen\.env, sekce Veeva Vault). Změny v1.2: když údaje chybí (typicky nový počítač — .env se přes Giteu nepřenáší), skript .env sám založí, případně do něj doplní chybějící řádky VAULT_USER=/VAULT_PASS=, vyzve k doplnění a skončí. Změny v1.3: robustnější odeslání login formuláře (Sign On / Login / submit input / Enter v poli hesla jako poslední fallback). Změny v1.4: opravené zavírání maintenance okna. Je to jQuery UI dialog (.vv_login_msg_dialog) a jeho modré „OK" v patičce je nefunkční — jediné funkční zavření je křížek .ui-dialog-titlebar-close v titulku. Zavírá se ve smyčce (dialogy umí být ve frontě), kontrola se opakuje 3× po 1 s (okno se objevuje se zpožděním), záloha je klávesa Escape. Změny v1.5: dialog se hledá ve všech frames — Veeva renderuje části UI v iframech a selektor na hlavní stránce ho pak nevidí. Když se dialog nepodaří zavřít, skript uloží diagnostiku do debug/<datum_čas>_dialog/ (screenshot, HTML všech frames, výpis kandidátů na tlačítka), požádá o ruční zavření a pokračuje — běh kvůli tomu nespadne a z diagnostiky se dá určit přesný selektor.

Playwright skript pro stažení source-file dokumentů z Veeva Vault (vtmf.veevavault.com) s perzistentní session, ručním potvrzením 2FA na telefonu a přejmenováním staženého souboru podle VTMF čísla.

Co skript dělá

  1. Otevře viditelný maximalizovaný Chromium s perzistentním profilem (vault_profile/ vedle skriptu) — session přežije běhy, takže po prvním přihlášení už se obvykle přihlašovat nemusí.
  2. Otevře J&J SSO login URL a vyplní jméno + heslo.
  3. Pokud SSO vyžaduje mobilní ověření (2FA), skript se zastaví a čeká, až ho potvrdíte v mobilní aplikaci a stisknete ENTER.
  4. Ověří, že jsme uvnitř Vaultu (URL vtmf.veevavault.com/ui), a zavře případné informační okno o údržbě.
  5. Otevře stránku dokumentu, klikne na ikonu Source File (vpravo nahoře, list papíru se šipkou dolů) a stažený soubor uloží do U:\Dropbox\!!!Days\Downloads Z230\ pod názvem původní název [VTMF-XXXXXXXX].přípona, např. 42847922MDD3003---Ongoing Third Party Oversight-31 May 2026 [VTMF-25690359].zip

Instalace

pip install -r requirements.txt
playwright install chromium

Přihlašovací údaje

Heslo není ve skriptu. Údaje se čtou v tomto pořadí:

  1. .env v rootu projektuU:\PythonProject\Janssen\.env, sekce Veeva Vault (doplňte hodnoty za =):

    VAULT_USER=vbuzalka
    VAULT_PASS=vaše-heslo
    

    Soubor je v .gitignore, do gitu se nedostane.

  2. Env proměnné VAULT_USER / VAULT_PASS (mají přednost před .env).

Pokud údaje chybí, skript .env založí / doplní v něm prázdné řádky VAULT_USER= a VAULT_PASS=, vypíše výzvu k doplnění a skončí — doplňte hodnoty a spusťte skript znovu.

Spuštění

& "U:\PythonProject\Janssen\.venv\Scripts\python.exe" "U:\PythonProject\Janssen\VTMFDownloadFiles\download_vault_v1.5.py"

První běh: zobrazí se login formulář, skript vyplní údaje, vy potvrdíte 2FA na telefonu a stisknete ENTER. Profil se uloží do vault_profile/, takže další běhy by měly jet rovnou bez přihlášení (dokud session nevyprší — pak se login + 2FA zopakuje).

Na konci běhu skript čeká na ENTER, teprve pak zavře prohlížeč (abyste si mohli stav zkontrolovat).

Konfigurace (konstanty nahoře ve skriptu)

  • LOGIN_URL — J&J SSO startSSO.ping URL cílící na vtmf.veevavault.com
  • PROFILE_DIR — perzistentní Chromium profil (vault_profile/)
  • DOWNLOAD_DIRU:\Dropbox\!!!Days\Downloads Z230
  • DOCUMENTS — seznam dvojic (url_dokumentu, vtmf_cislo); zatím jeden testovací dokument, připraveno na fázi 2 (načítání seznamu z Excelu)

Známé body k dořešení (fáze 2)

  • Ověřit selektor [title='Source File'] na různých typech dokumentů.
  • Dokumenty s dropdownem (Source File + Viewable Rendition) — základní ošetření přes menuitem je ve skriptu, chce ověřit na reálném případu.
  • Načítání seznamu URL + VTMF čísel z Excelu (openpyxl) a smyčka přes všechny dokumenty (struktura DOCUMENTS je na to připravená).