notebookvb
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
# OZP (207) — Stahování seznamu registrovaných pojištěnců
|
||||
|
||||
## Co skript dělá
|
||||
|
||||
`StahniSeznamPojistencuOZP.py` provede v jednom spuštění čtyři kroky:
|
||||
|
||||
1. **Přihlásí se** certifikátem na portál OZP (čistý Python, bez NMSigneru)
|
||||
— uloží cookies do sdíleného `StahováníZpráv/207 OZP/ozp_cookies.json`
|
||||
2. **Stáhne nové výpisy** z výpisové schránky `schranky-vypis-pojistencu-v-kapitaci`
|
||||
— stahuje soubory, jejichž obsah začíná `H09305001`
|
||||
— ukládá do `…\Zúčtovací zprávy\SeznamyPojištěnců\` (Dropbox)
|
||||
— zastaví se při první již stažené zprávě
|
||||
— po stahování se **znovu přihlásí** (Playwright invaliduje requests session)
|
||||
3. **Podá žádost** o aktuální výpis (typ=soubor, třídění dle příjmení)
|
||||
|
||||
## Platforma
|
||||
|
||||
OZP běží na stejné platformě jako **ZPŠ, VoZP, RBP** (portalzp.cz / json-api).
|
||||
Login je identický se ZPŠ. Liší se URL schránky, ID formuláře a názvy filtru/položek.
|
||||
|
||||
## Flow přihlášení (stejné jako ZPŠ)
|
||||
|
||||
1. GET `/app/prihlaseni` → session cookie
|
||||
2. POST `/json-api/prihlaseni/prihlasovaci-zprava` → challenge (`zprava`)
|
||||
3. Podpis challenge certifikátem (PKCS7/SHA-256, **s** certifikátem)
|
||||
4. POST `/json-api/prihlaseni/prihlaseni-certifikatem` → autentizovaná session
|
||||
|
||||
## Stažení přílohy
|
||||
|
||||
GET `/html/prehled-zprav-ve-schrankach/zobrazit-prilohu?zprava_id={fileId}`
|
||||
`fileId` se získá z `onclick="SchrPolOpenFile(<id>)"` v řádcích tabulky schránky.
|
||||
Soubory ve schránce mají název `F207MMRR.xxx` (MM/RR = měsíc/rok generování).
|
||||
|
||||
## Podání žádosti (KLÍČOVÝ ROZDÍL oproti ZPŠ)
|
||||
|
||||
OZP **nemá pole „datum/měsíc"** — výpis je *aktuální snímek* platných registrací
|
||||
(„připraveno do příštího dne"). Nepodává se za konkrétní měsíc, nepočítá se „další měsíc".
|
||||
Při každém běhu se podá jedna žádost o aktuální výpis. Žádný stavový soubor s měsícem.
|
||||
|
||||
POST `https://portal.ozp.cz/json-api/formular-schranky/108-vypis-pojistencu-v-registraci/ulozit-formular`
|
||||
Body: `{"schrXml": "...", "schrSign": "-----BEGIN PKCS7-----...", "schrFiles": []}`
|
||||
|
||||
### XML žádosti (řádky `\r\n`)
|
||||
|
||||
```xml
|
||||
<SchrankaZadost NazevSchranky="SEZNAM_KAP" NazevFiltru="SEZNAM_KAP">
|
||||
<PolozkaFiltru Nazev="nicoz">13074913</PolozkaFiltru>
|
||||
<PolozkaFiltru Nazev="trideni">p</PolozkaFiltru>
|
||||
<PolozkaFiltru Nazev="typ">soubor</PolozkaFiltru>
|
||||
</SchrankaZadost>
|
||||
```
|
||||
|
||||
| Položka | Hodnota | Význam |
|
||||
|---------|---------|--------|
|
||||
| `nicoz` | `13074913` | **interní ID** položky IČZ (zobrazené IČZ = 09305000). Ověřeno: posílá se interní ID, ne číslo IČZ. |
|
||||
| `trideni` | `p` | `p`=podle příjmení, `i`=IČP+příjmení, `r`=rodná čísla |
|
||||
| `typ` | `soubor` | `soubor`=datový soubor dle rozhraní, `sestava`=tiskový výstup |
|
||||
|
||||
### Podpis XML
|
||||
|
||||
PKCS7/SHA-256, **bez** certifikátu v podpisu (`NoCerts`) — stejně jako ZPŠ formulář.
|
||||
Server certifikát v podpisu odmítá.
|
||||
|
||||
## Jak byly endpointy zjištěny
|
||||
|
||||
Odposlechem reálného podání v Chrome (MCP) — `data-xml-*` atributy formuláře daly názvy
|
||||
schránky/filtru a položek, odchycený XHR na `ulozit-formular` potvrdil přesný payload.
|
||||
První ostré podání: **ref. 179774883** (17.06.2026).
|
||||
|
||||
## Srovnání se ZPŠ
|
||||
|
||||
| | ZPŠ (209) | OZP (207) |
|
||||
|--|-----------|-----------|
|
||||
| Schránka URL | `schranka-vypis-…` (jedn.) | `schranky-vypis-…` (množ.) |
|
||||
| Formulář | `29-vypis-registrov-pojistencu` | `108-vypis-pojistencu-v-registraci` |
|
||||
| NazevSchranky / NazevFiltru | `VypisPojKap` / `ZZ_VYP_REG` | `SEZNAM_KAP` / `SEZNAM_KAP` |
|
||||
| Položka IČZ | `icz` = 25520 | `nicoz` = 13074913 (interní ID) |
|
||||
| Pole datum | ano (za měsíc) | **ne** (aktuální snímek) |
|
||||
| Stav | `stav.json` (měsíc) | jen `log_podani.json` |
|
||||
|
||||
## Soubory
|
||||
|
||||
| Soubor | Popis |
|
||||
|--------|-------|
|
||||
| `StahniSeznamPojistencuOZP.py` | Hlavní skript — stažení výpisů + podání žádosti |
|
||||
| `log_podani.json` | Historie podání s referenčními čísly |
|
||||
|
||||
## Parametry
|
||||
|
||||
- **IČZ**: 09305000 (IČP: 09305001, MUDr. Michaela Buzalková), interní ID `13074913`
|
||||
- **Certifikát**: `Insurance/Certificates/MBQualifiedCert.pfx`
|
||||
|
||||
## Stav
|
||||
|
||||
Hotovo a otestováno (17.06.2026): login ✓, stažení ✓ (3 výpisy), podání ✓ (ref. 179774883).
|
||||
Výpis z prvního podání dorazí do schránky do příštího dne.
|
||||
Reference in New Issue
Block a user