Chybová hláška a změna oznamování informace o úspěšném přijetí automatizovaného výstupu
Aktualizované znění naleznete zde: Aktualizovaný Seznam vstupních kontrol (validací) automatizovaných výstupů a chybových kódů Analytického modulu a obsahu potvrzovacího balíčku
Chybová hláška „ERR_FIELD_CANNOT_CHANGE“ a změna oznamování informace o úspěšném přijetí automatizovaného výstupu
Ministerstvo financí, odbor 73 – Procesní agendy a regulace hazardu, na základě zkušeností z pilotního a ostrého provozu na produkčním prostředí pro poskytování automatizovaného výstupu podle reportingové vyhlášky oznamuje informace k chybové hlášce „ERR_FIELD_CANNOT_CHANGE“ a oznamuje, že bude upravena logika oznamování informace o úspěšném přijetí automatizovaného výstupu.
Příčina: časté chyby provozovatelů ERR_FIELD_CANNOT_CHANGE
Reportingová vyhláška obecně povoluje opakované zaslání záznamů se stejnými identifikátory (primárními klíči), ale až na konkrétní výjimky nepovoluje obecně změny v opakovaně zaslaných záznamech. Nepovolená změna položek v opakovaně zaslaných záznamech je jednou z nejčastějších chyb provozovatelů - chyba ERR_FIELD_CANNOT_CHANGE.
Příklad povolené změny v datovém souboru prilezitost.csv
Původní záznam:
IDPrilezitost;PrilezitostNazev;ZahajeniPrijmuSazekCas;UkonceniPrijmuSazekCas;Vyherni;IDUdalost;Live
00000000-2e09983444; NHL - Boston Bruins - ST. Louis Blues - 1 - 1/1;2019-06-06T11:25:14.1Z;2019-06-06T16:12:04.8Z;0;00000000-50fhrjyd11;1
Opětovně poskytnutý záznam (povolená změna po přehodnocení výsledku zápasu):
IDPrilezitost;PrilezitostNazev;ZahajeniPrijmuSazekCas;UkonceniPrijmuSazekCas;Vyherni;IDUdalost;Live
00000000-2e09983444; NHL - Boston Bruins - ST. Louis Blues - 1 - 1/1;2019-06-06T11:25:14.1Z;2019-06-06T16:12:04.8Z;1;00000000-50fhrjyd11;1
Příklad nepovolené změny: soubor hra_toky.csv
Původní záznam:
IDHraToky;HraDruh;HraKategorie;IDUzivKonto;SazkaVysePuvodni;
SazkaPrijetiCas;DoprovodnePlneniVysePuvodni;DoprovodnePlneniCas;SazkaHerniKombinace;VyhraVyseNarok;
VyhraVysePuvodni;VyhraVyplaceniCas;MenaKod;IDMisto;IDHerniPozice
00000000-2e008695;T;h;00000000-656574;100,00;2019-06-06T12:06:22.5Z;;;;;0,00;2019-06-06T12:36:14.8Z;CZK;00000000-10098VB;00000000-GH-IO-11
Opětovně poskytnutý záznam s nepovolenou změnou:
DHraToky;HraDruh;HraKategorie;IDUzivKonto;SazkaVysePuvodni;
SazkaPrijetiCas;DoprovodnePlneniVysePuvodni;DoprovodnePlneniCas;SazkaHerniKombinace;
VyhraVyseNarok;VyhraVysePuvodni;VyhraVyplaceniCas;MenaKod;IDMisto;IDHerniPozice
00000000-2e008695;T;h;00000000-656574;01,00;2019-06-06T12:06:22.5Z;;;;;1000,00;2019-06-06T12:36:14.8Z;CZK;00000000-10098VB;00000000-GH-IO-11
Pro vyjasnění problematiky změn v opakovaně zaslaných záznamech jsme připravili přehled pravidel v připojeném Excel souboru, kde jsou jednotlivá pole klasifikována do čtyř skupin:
- NOT CHANGEABLE: pole se nesmí měnit po prvním poskytnutí záznamu
- NULL -> NOT NULL: pole se může změnit z hodnoty NULL na hodnotu NOT NULL pouze jednou (v případě, že dojde ke změně hodnoty NULL položky záznamu z důvodu, že položka v okamžiku prvního poskytnutí záznamu nebyla známa, poskytne se celý záznam s aktuálními hodnotami znovu v automatizovaném výstupu pro vzdálený přístup za období, kdy ke změně hodnoty položky záznamu došlo)
- NULL/NOT NULL -> NOT NULL: pole se může změnit z hodnoty NULL/NOT NULL na hodnotu NOT NULL (v případě, že dojde ke změně hodnoty NULL položky záznamu z důvodu, že položka v okamžiku prvního poskytnutí záznamu nebyla známa, poskytne se celý záznam s aktuálními hodnotami znovu v automatizovaném výstupu pro vzdálený přístup za období, kdy ke změně hodnoty položky záznamu došlo. Pokud by nastala situace, kdy by došlo ke změně hodnoty NOT NULL položky, za účelem zajištění správnosti dat poskytne se celý záznam se změněnou (opravenou) hodnotou v položce)
- NULL/NOT NULL -> NULL/NOT NULL: pole se může změnit z hodnoty NULL/NOT NULL na hodnotu NOT NULL/NULL
V oblasti pravidel změn v opakovaně zaslaných záznamech došlo od spuštění pilotního provozu na produkčním prostředí pro poskytování automatizovaného výstupu k jediné změně (na základě odůvodněné argumentace provozovatelů), kterou je povolení změn hodnoty u položky Vyherni v tabulce prilezitost.csv a položky UdalostVysledek v tabulce udalost.csv. Ke změně došlo od 24.6.2019.
Souvislost: Potvrzování automatizovaných výstupů mimo pořadí
Mezi automatizovanými výstupy jedné balíčkové řady (pro jednoho provozovatele a jeden druh hry) může docházet k řadě závislostí, typicky např. postupné doplňování hodnot do záznamů v datovém souboru hra_toky.csv, odkazy v tabulce hra_toky_oprava na záznamy z hra_toky zaslané v předchozích automatizovaných výstupech apod.
Příklady závislosti mezi automatizovanými výstupy jedné balíčkové řady:
Automatizovaný výstup 00000000-V-2019060608-K-05:
soubor hra_toky.csv:
IDHraToky;HraDruh;HraKategorie;IDUzivKonto;SazkaVysePuvodni;SazkaPrijetiCas;
DoprovodnePlneniVysePuvodni;DoprovodnePlneniCas;SazkaHerniKombinace;
VyhraVyseNarok;VyhraVysePuvodni;VyhraVyplaceniCas;MenaKod;IDMisto;IDHerniPozice
00000000-98tu5775;K;e;00000000-12342234;100,00;2019-06-06T12:06:22.5Z;;;;;;;CZK;00000000-10098VB;
soubor udalost.csv:
IDUdalost;UdalostNazev;HraDruh;ZahajeniCas;UdalostVysledek;IDHlavniUdalost;IDProvozovatel
00000000-124hfjry34;Kvalifikace Euro Cup, Skupina - Iceland - Albania – Základna nabídka;K;2019-06-09T13:00:00.0Z;;;00000000
Automatizovaný výstup 00000000-V-2019060708-K-05:
1) soubor hra_toky.csv (postupné doplňování hodnot do záznamů):
IDHraToky;HraDruh;HraKategorie;IDUzivKonto;SazkaVysePuvodni;
SazkaPrijetiCas;DoprovodnePlneniVysePuvodni;DoprovodnePlneniCas;
SazkaHerniKombinace;VyhraVyseNarok;VyhraVysePuvodni;VyhraVyplaceniCas;MenaKod;IDMisto;IDHerniPozice
00000000-98tu5775;K;e;00000000-12342234;100,00;2019-06-06T12:06:22.5Z;;;;
230,00;230,00;2019-06-07T10:00:00.3Z;CZK;00000000-10098VB;
2) soubor hra_toky_oprava.csv navazuje se na FK IDHraToky (záznam v souboru hra_toky.csv):
IDHraTokyOprava;IDHraToky;TypTokyOprava;TokyOpravaVyse;TokyOpravaCas;MenaKod
00000000-correction_98tu5775_1;00000000-98tu5775;B;70,00;2019-06-07T15:18:52.4Z;CZK
3) soubor prilezitost.csv navazuje se na FK IDUdalost (záznam v souboru udalost.csv):
IDPrilezitost;PrilezitostNazev;ZahajeniPrijmuSazekCas;UkonceniPrijmuSazekCas;Vyherni;IDUdalost;Live
00000000-124hfjry34_1; Kvalifikace Euro Cup, Skupina - Iceland - Albania – Základna nabídka – X;
2019-06-07T12:00:12.8Z;;;00000000-124hfjry34;0
Tyto závislosti jsou rovněž předmětem vstupních validací a mohou být důvodem odmítnutí automatizovaného výstupu. Bez znalosti všech předchozích automatizovaných výstupů může být tedy rozhodnutí o přijetí automatizovaného výstupu nejisté.
Ministerstvo financí se pro zajištění rychlejší odezvy provozovatelům a pro podporu ladění jejich implementace v počátečním období provozu rozhodlo ke strategii poskytování potvrzovacího balíčku (.ok; .err) co nejrychleji, včetně potvrzení přijetí automatizovaného výstupu, pro který nejsou dosud přijaty všechny předchozí automatizované výstupy. Pro zachování logických vazeb mezi automatizovanými výstupy, ale interně dochází při přijetí opravy určitého automatizovaného výstupu k obnovení stavu databáze k časovému slotu tohoto automatizovaného výstupu a opakovanému zpracování všech následujících automatizovaných výstupů (tzv. roll-back).
Důsledek: Netransparentní změny v databázi a chyby
ERR_FIELD_INVALID_INTEGRITY_WITHIN_PKG
Důsledek častých chyb ERR_FIELD_CANNOT_CHANGE a potvrzování automatizovaného výstupu mimo pořadí můžeme ilustrovat na následujícím příkladu tří následujících časových slotů:
- automatizovaný výstup 00000000-V-2019060100-T-01 je odmítnut kvůli libovolné chybě
- automatizovaný výstup 00000000-V-2019060108-T-01 obsahuje v datovém souboru hra_toky.csv oproti automatizovanému výstupu 00000000-V-2019060100-T-01 záznamy se stejným klíčem, ale odlišnou hodnotou položky, jejíž obsah nelze měnit, což by v případě předchozího přijetí automatizovaného výstupu 00000000-V-2019060100-T-01 způsobilo v tomto momentě chybu ERR_FIELD_CANNOT_CHANGE. V tomto případě ale data automatizovaného výstupu 00000000-V-2019060100-T-01 v databázi nejsou a automatizovaný výstup 00000000-V-2019060108-T-01 je přijat.
- opravný automatizovaný výstup 00000000-V-2019060100-T-02 s opravou chyby, kvůli které byla předchozí verze odmítnuta, způsobí obnovu databáze do stavu před zpracováním 00000000-V-2019060100-T-01 a 00000000-V-2019060108-T-01 a je přijat
- při pakovaném zpracování automatizovaný výstup 00000000-V-2019060108-T-01 se již projeví konflikt záznamů v souboru hra_toky.csv a je interně odmítnut s chybou ERR_FIELD_CANNOT_CHANGE. O tomto stavu ale již není možné informovat provozovatele, který už dříve dostal informaci o přijetí automatizovaného výstupu.
- automatizovaný výstup 00000000-V-2019060116-T-01 obsahuje v souboru hra_toky_oprava.csv referenci na záznamy z souboru hra_toky.csv automatizovaném výstupu 00000000-V-2019060108-T-01, které ovšem v databázi chybí, a je odmítnut s chybou ERR_FIELD_INVALID_INTEGRITY_WITHIN_PKG. Pro provozovatele je tato chyba nesrozumitelná, neboť podle jeho přijatých potvrzení je automatizovaný výstup 00000000-V-2019060108-T-01 přijatý.
Situaci mohou vyvolat i jakékoliv jiné konflikty a vazby mezi tabulkami stanovené vyhláškou, např. reference záznamů v datovém souboru vazba_hra_sazka.csv na záznamy z datového souboru jedna_hra.csv; reference záznamů v datovém souboru ostatni_plneni_oprava.csv na záznamy z datového souboru ostatni_plneni.csv; reference záznamů v datovém souboru prilezitost.csv na záznamy z datového souboru udalost.csv; reference záznamů v datovém souboru prilezitost_kurs.csv, kursova_toto_rozpad.csv a preruseni_omezeni_kursova_toto.csv na záznamy z datového souboru prilezitost.csv; reference záznamů v datovém souboru sdileni_oprava.csv na záznamy z datového souboru sdileni.csv.
Změna: oznamování o úspěšném přijetí automatizovaného výstupu (ok. potvrzovací balíček)
Ministerstvo financí se s ohledem na výše uvedené rozhodlo upravit logiku oznamování informace o úspěšném přijetí automatizovaného výstupu následujícím způsobem:
Pokud určitý automatizovaný výstup (označme jej X) projde všemi vstupními validacemi, ale ne všechny předchozí automatizované výstupy v rámci stejné balíčkové řady (řad dříve poskytnutých automatizovaných výstupů) jsou ve stavu "Přijato", dostane se do nového stavu "Předběžně přijato". Stav "Předběžně přijato" není oznamován potvrzovacím "OK" balíčkem podle reportingové vyhlášky. Informace o tomto stavu je pouze zobrazena ve webové aplikaci na adrese https://reporting-hazard.celnisprava.cz/apps/reg-db/processing za účelem zajištění dostatečné informovanosti provozovatele.
Následně přichází v úvahu dva scénáře:
1) Při opravách formálních chyb předchozích automatizovaných výstupů (zpracování dalších verzí předchozích balíčků) dojde ke stavu, že všechny předchozí automatizované výstupy ve stejné balíčkové řadě jsou ve stavu "Přijato", bude automatizovaný výstup X znovu předmětem validací (roll-back automatizovaného výstupu a validace v kontextu nových přijatých dat předchozích automatizovaných výstupů) a znovu vyhoví validačním kritériím, posune se automatizovaný výstup X rovněž do stavu "Přijato" a je odeslán finální "OK" potvrzovací balíček.
2) Při opravě formálních chyb některého z předchozích automatizovaných výstupů (zpracování další verze předchozího automatizovaného výstupu) dojde při opakovaném zpracování validací automatizovaného výstupu X k chybě vstupních validací, je automatizovaný výstup X odmítnut a je odeslán "ERR" potvrzovací balíček.
Finální informace o úspěšném přijetí automatizovaného výstupu ve formě "OK" potvrzovacího balíčku tedy nemusí být odeslána ihned po zpracování, ale až po přijetí všech předchozích automatizovaných výstupů v tzv. balíčkové řadě (řada automatizovaných výstupů). Místo odeslání potvrzovacího balíčku je v takovém případě ve web aplikaci zobrazen stav "Předběžně přijato". Tento stav se v závislosti na dalším zpracování oprav předchozích automatizovaných výstupů v tzv. balíčkové řadě může změnit buď na "Přijato", nebo na "Odmítnuto" (resp. na čekání na další verzi automatizovaného výstupu).
Tuto změnu plánuje Ministerstvo financí implementovat 10. 7. 2019 před 16:00, tedy bude aktivní pro všechny automatizované výstupy stažené po tomto čase, mj. všechny automatizované výstupy pro obsahující v názvu 2019071016 a dále i všechny automatizované výstupy dřívější stažené po tomto čase (opravy, pozdě vystavené automatizované výstupy,…)
Jako dočasné a mimořádné řešení situace s automatizovanými výstupy, jejichž přijetí již bylo provozovatelům oznámeno, budou tyto konkrétní automatizované výstupy přijaty do databáze s nastavením zvýšené tolerance k chybám ERR_FIELD_CANNOT_CHANGE, aby nedocházelo k následným chybám ERR_FIELD_INVALID_INTEGRITY_WITHIN_PKG a pro provozovatele obtížně řešitelným situacím.
Dokumenty ke stažení