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

94 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# download_vault_v1.4 — Stažení source file z Veeva Vault (J&J V-TMF)
**Verze:** 1.4 · **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.
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
```powershell
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 projektu** — `U:\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í
```powershell
& "U:\PythonProject\Janssen\.venv\Scripts\python.exe" "U:\PythonProject\Janssen\VTMFDownloadFiles\download_vault_v1.4.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_DIR` — `U:\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á).