z230
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
# download_vault_v2.0 — Dávkové stažení source files z Veeva Vault (J&J V-TMF)
|
||||
|
||||
**Verze:** 2.0 · **Datum:** 2026-06-12
|
||||
|
||||
Playwright skript pro dávkové stažení source-file dokumentů z Veeva
|
||||
Vault (vtmf.veevavault.com) podle Excelu, s perzistentní session,
|
||||
ručním potvrzením 2FA, průběžným stavem (resume) a přejmenováním
|
||||
souborů podle VTMF čísla.
|
||||
|
||||
**Změny v2.0 oproti v1.x** (jednodokumentové verze v TRASH/):
|
||||
seznam dokumentů se čte z Excelu ve `WhatToDownload/`, průběžný stav
|
||||
v `download_state.csv` (přerušený běh naváže, hotové se přeskakují),
|
||||
retry 2× na dokument, volitelný filtr Document Status.
|
||||
|
||||
## Vstupní Excel
|
||||
|
||||
Skript vezme **nejnovější `.xlsx`** ze složky `WhatToDownload/`
|
||||
(typicky „Document Inventory Report - Study Level.xlsx" z Vaultu).
|
||||
Očekávané sloupce: `Document Name`, `Document Number`,
|
||||
`Document Status`. Sloupec Document Number obsahuje vzorec
|
||||
`=HYPERLINK("https://vtmf.veevavault.com/ui/#doc_info/<id>/<maj>/<min>", "VTMF-XXXXXXXX")`
|
||||
— skript z něj regexem bere přímou doc URL i VTMF číslo (ošetřen je
|
||||
i „pravý" hyperlink přes cell.hyperlink a oříznutí rozbité URL).
|
||||
|
||||
Pozor: report z Vaultu má rozbité deklarované rozměry listu (tváří se
|
||||
jako 1×1) — skript proto iteruje řádky přímo a nespoléhá na
|
||||
max_row/max_column.
|
||||
|
||||
## Co skript dělá
|
||||
|
||||
1. Načte přihlašovací údaje z `.env` v rootu projektu
|
||||
(`VAULT_USER`/`VAULT_PASS`); když chybí, založí/doplní šablonu
|
||||
v `.env`, vyzve k doplnění a skončí.
|
||||
2. Načte dokumenty z Excelu, odečte už stažené podle
|
||||
`download_state.csv`.
|
||||
3. Otevře viditelný maximalizovaný Chromium s perzistentním profilem
|
||||
(`vault_profile/`), přihlásí se přes J&J SSO; případné 2FA
|
||||
potvrdíte na telefonu a stisknete ENTER.
|
||||
4. Zavře maintenance/login dialog — kliká na viditelné OK
|
||||
(`.ui-dialog a.ok.vv_button`; křížek v titulku je display:none
|
||||
a nejde na něj klikat). Dialog se objevuje se zpožděním, čeká se
|
||||
na něj 8 s na home, 2 s na stránkách dokumentů.
|
||||
5. Pro každý dokument: otevře doc URL, klikne na ikonu **Source
|
||||
File**, stažený soubor uloží do `U:\Dropbox\!!!Days\Downloads Z230\`
|
||||
jako `původní název [VTMF-XXXXXXXX].přípona`. Při chybě 1 retry
|
||||
po 5 s; výsledek se ihned zapíše do `download_state.csv`.
|
||||
6. Na konci vypíše souhrn (staženo/chyb) a čeká na ENTER.
|
||||
|
||||
## Průběžný stav a navázání
|
||||
|
||||
`download_state.csv` (vedle skriptu): sloupce `vtmf, result, file,
|
||||
timestamp`. Dokumenty s `result=ok` se při dalším běhu přeskakují;
|
||||
chybové se zkusí znovu. Běh jde kdykoli přerušit (Ctrl+C nebo
|
||||
zavření okna) — stav se zapisuje po každém dokumentu.
|
||||
Pro úplně nový běh od nuly soubor smažte (resp. přesuňte do TRASH/).
|
||||
|
||||
## Konfigurace (konstanty nahoře ve skriptu)
|
||||
|
||||
- `EXCEL_DIR` — `WhatToDownload/` (bere se nejnovější .xlsx)
|
||||
- `STATE_FILE` — `download_state.csv`
|
||||
- `DOWNLOAD_DIR` — `U:\Dropbox\!!!Days\Downloads Z230`
|
||||
- `STATUS_FILTER` — `None` = stahovat vše; např. `{"Approved"}`
|
||||
pro jen schválené dokumenty
|
||||
- `MAX_ATTEMPTS` / `RETRY_PAUSE_MS` / `BETWEEN_DOCS_MS` — retry a pauzy
|
||||
|
||||
## Spuštění
|
||||
|
||||
```powershell
|
||||
& "U:\PythonProject\Janssen\.venv\Scripts\python.exe" "U:\PythonProject\Janssen\VTMFDownloadFiles\download_vault_v2.0.py"
|
||||
```
|
||||
|
||||
Společný venv projektu už obsahuje playwright i Chromium; jinak
|
||||
`pip install -r requirements.txt` a `playwright install chromium`.
|
||||
Reference in New Issue
Block a user