62 lines
2.8 KiB
Markdown
62 lines
2.8 KiB
Markdown
# 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"
|
||
```
|