This commit is contained in:
2026-06-12 15:29:57 +02:00
parent 39e578af2d
commit 35e6310dac
79 changed files with 27428 additions and 0 deletions
@@ -0,0 +1,61 @@
# download_vault_v2.1 — Dávkové stažení source files z Veeva Vault (J&J V-TMF)
**Verze:** 2.1 · **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 ukládáním do
adresářového stromu Type\Subtype s pojmenováním podle Description.
**Změny v2.1 oproti v2.0** (starší verze v TRASH/):
- cílová složka `U:\Dropbox\!!!Days\Downloads Z230\VTMF-77242113UCO3001\<Type>\<Subtype>\`
- jméno souboru: `YYYY-MM-DD Description [VTMF-xxxxxxxx] [v1.0].<přípona>`
- datum z `Document Date` (165 řádků ho nemá → bez prefixu)
- Description sanitizovaný na platné jméno (nepovolené znaky → `_`,
sjednocené mezery/podtržítka, ořezané okraje); 16 prázdných
Description → fallback na Document Name bez koncové verze
- verze z konce `Document Name` `(vX.Y)``[vX.Y]` (u všech 1959)
- přípona skutečná ze staženého souboru
- `LIMIT = 10` — počet dokumentů na jeden běh (None = všechny zbývající);
kombinuje se s resume: další běh navazuje na download_state.csv
- všech 1959 cílových cest ověřeno jako unikátní (suchý test)
## Vstupní Excel
Nejnovější `.xlsx` ze `WhatToDownload/` („Document Inventory Report -
Study Level.xlsx" z Vaultu). Potřebné sloupce: Document Name, Document
Number, Document Status, Type, Subtype, Description, Document Date.
Document Name/Number/Status jsou `=HYPERLINK(...)` vzorce — URL
(`/ui/#doc_info/<id>/<maj>/<min>`) a zobrazený text se berou regexem.
Pozor: report má rozbité deklarované rozměry listu — čte se přímou
iterací řádků, ne přes max_row/max_column.
## Běh
1. Údaje z `.env` v rootu projektu (`VAULT_USER`/`VAULT_PASS`);
chybí-li, skript šablonu založí/doplní, vyzve a skončí.
2. Načte Excel, odečte hotové z `download_state.csv`, vezme
prvních `LIMIT` zbývajících.
3. Chromium s perzistentním profilem (`vault_profile/`), J&J SSO
login, 2FA potvrdíte na telefonu + ENTER.
4. Maintenance dialog zavírá přes viditelné OK
(`.ui-dialog a.ok.vv_button` — křížek je display:none!), čeká se
na něj 8 s na home, 2 s na doc stránkách.
5. Každý dokument: doc URL → ikona Source File → uložení do stromu
pod novým jménem. Retry 2× po 5 s, výsledek ihned do
`download_state.csv` (`vtmf,result,file,timestamp`).
6. Souhrn a ENTER pro zavření.
Pro úplně nový běh od nuly smazat/odsunout `download_state.csv`.
## Konfigurace (konstanty nahoře)
`DOWNLOAD_ROOT`, `LIMIT` (10), `STATUS_FILTER` (None = vše),
`MAX_ATTEMPTS`/`RETRY_PAUSE_MS`/`BETWEEN_DOCS_MS`, `EXCEL_DIR`,
`STATE_FILE`.
## Spuštění
```powershell
& "U:\PythonProject\Janssen\.venv\Scripts\python.exe" "U:\PythonProject\Janssen\VTMFDownloadFiles\download_vault_v2.1.py"
```