94 lines
4.1 KiB
Markdown
94 lines
4.1 KiB
Markdown
# 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á).
|