Seznam vstupních kontrol (validací) automatizovaných výstupů a chybových kódů Analytického modulu
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
Ministerstvo financí, odbor 73 – Procesní agendy a regulace hazardu, za účelem snadnější implementace vyhlášky č. 10/2019 Sb., zveřejňuje aktualizovaný seznam vstupních kontrol (validací) automatizovaných výstupů chybových kódů Analytického modulu AISG.
V souvislosti se spuštěním pilotního provozu produkčního (ostrého) prostředí pro poskytování automatizovaného výstupu upřesňujeme obsah potvrzovacích balíčků.
V případě neúspěchu vstupních kontrol na úrovni komunikačního rozhraní obsahuje potvrzovací balíček jeden nebo více z následujících souborů:
- validation-report.csv - přehled validace jednotlivých CSV souborů balíčku
- validation-errors.csv - seznam nalezených jednotlivých chyb
- validation-processing.txt - detailní výpis zpracování balíčku
Dále v případě vyhodnocení databázových validací obsahuje potvrzovací balíček databázových validací jeden nebo více z následujících souborů:
- db-validation-report.csv - přehled validace jednotlivých CSV souborů balíčku
- db-validation-errors.csv - seznam nalezených jednotlivých chyb
Výstupní soubory z jednotlivých vrstev validací jsou pojmenovány odlišně a mají částečně odlišnou strukturu (ve výstupech komunikačního rozhraní jsou odkazovány čísla řádků vstupních souborů, ve výstupech databázových validací primární klíče).
Databázové validace podporují přijetí balíčku s určitou mírou nekonzistencí a chyb. V takovém případě je součástí OK potvrzovacího balíčku neprázdný soubor db-validation-errors.csv
V počátečním nasazení na veřejném testovacím prostředí (Playground) byla pro usnadnění rozjezdu testování nastavena vyšší míra tolerance k chybám (s výjimkou implicitních validací, tj. zejména validací referenční integrity dat). V tomto období bylo třeba sledovat nejen návratový status potvrzovacího balíčku (OK/ERR), ale i obsah souboru db-validation-errors.csv a opravovat chyby uvedené v tomto souboru i pro potvrzovací balíčky se statusem OK.
K momentu spuštění pilotního provozu produkčního (ostrého) prostředí, tj. ke dni 25.5.2019, bude na produkčním (ostrém) prostředí i na Playgroundu nastavena minimální míra tolerance k chybám v rámci databázových kontrol. Tato změna by neměla významně ovlivnit testování systémů provozvatelů, podle zkušeností z předchozího provozu Playground byly doposud v datových balíčcích buď velké množství stejných chyb (a proto byly odmítány) nebo byly balíčky víceméně bez chyb.
Soubor (.xls) uvádí přehled validací (vstupních kontrol) a chybových kódů Analytického modulu AISG (implementace reportingové vyhlášky na straně orgánu vykonávajícího dozor) jako informaci pro provozovatele hazardních her upřesňující význam chyb v souboru validation-errors.csv potvrzovacího balíčku.
Záložka Typy validací
Záložka uvádí všechny typy validací a příslušné chybové kódy.
Ve sloupci Kategorie validace je uvedena skupina validací - validace ve skupině "Komunikační rozhraní" jsou vykonávány co nejdříve po stažení datového balíčku, validace ve skupině "Aplikace DWH" jsou vykonávány v druhém kroku, pokud jsou všechny validace Komunikačního rozhraní úspěšné.
Ve sloupci Kód chybového hlášení je uveden příslušný chybový kód.
Záložka Instance DB validaci
Záložka uvádí detailní seznam explicitně definovaných DB validací (ve skupině „Aplikace DWH“), vázaných na jednotlivá pole tabulek. Definice jsou uvedeny formou pseudojazyka využívající operace popsané na záložce Operace a dodatečné podmínky uvedené ve sloupci Where clause.
Ve skupině „Aplikace DWH“ jsou kromě těchto explicitně definovaných validací prováděny i implicitní validace vycházející z datové struktury datového modelu.
Kromě těchto zveřejněných explicitních instancí validací, jsou dále prováděny validace:
- ERR_FIELD_INVALID_INTEGRITY_WITHIN_FILE - Hodnota pole musí být unikátní v rámci celého souboru.
- ERR_FIELD_INVALID_INTEGRITY_WITHIN_PKG - Hodnota pole musí existovat jako ID (klíč) v jiném souboru balíčku.
- ERR_FIELD_CANNOT_CHANGE - Pole v daném řádku již bylo dříve vykázáno za některý předchozí časový slot a nesmí měnit svoji hodnotu.
Pro tyto typy validací jsou definovány instance (tj. výčty sloupců v tabulkách, na které se validace daného typu vztahuje) implicitně odvozením z logiky Velkého nebo Malého datového modelu. Například, se vybere všechny sloupce typu ID a aplikuje se na ně kontrola ERR_FIELD_INVALID_INTEGRITY_WITHIN_FILE.
Některé z výše uvedených typů validací mají jak implicitní instance, tak i další explicitně definované instance.
Validace ve skupině „Komunikační rozhraní“ nejsou explicitně uvedeny, jejich význam považujeme za zjevný.
Materiály jsou poskytovány pro volné použití provozovatelů hazardních her jako pomocný nástroj pro usnadnění přípravy automatizovaných výstupů, jsou poskytovány bez záruky funkčnosti a nenahrazují normativní znění vyhlášky. Případné chyby a odlišnosti od normativního znění vyhlášky mohou být opraveny a publikovány stejným způsobem.
- Seznam typu validací - k 24.5.2019 (.XLSX, 41 kB)- seznam typu validací spolu s chybovými kódy
Od předchozího znění byly provedeny v Seznamu vstupních kontrol (validací) automatizovaných výstupů následující změny:
- Odstranění validace:
- Tiket_4 (Kontrola, že pro každý tiket existuje právě jeden záznam v tabulce Hra_Toky_Kursova),
- Prilezitost_Kurs_3 (Pole KursCas musí být vyšší nebo rovno hodnotě pole ZahajeniPrijmuSazekCas tabulky Prilezitost),
- Preruseni_Omezeni_Kursova_Toto_3 (Pole UkonceniCas musí být v časovém rozsahu balíčku),
- JednaHra_3 (Pole HraZahajeniCas musí byt vyšší než začátek časového úseku balíčku),
- Hra_Turnaj_Bingo_8 (Pole UkonceniCas musí být menší než konec časového úseku balíčku)
- Přidání do seznamu operací:
- exist_at_most_one
- exist_one_and_only_one
- exist_at_least_one
- Realizace validace:
- HraToky_34 (Kontrola, že pro každý záznam v Hra_Toky existuje právě jedna záznam v tabulce Hra_Toky_Kursova pokud je druh hry K)
- Dodaní validací:
- JednaHra_12 (Kontrola, že pro každý záznam v Jedna_Hra existuje právě jeden záznam v tabulce Turnaj_Detaily, pokud je kategorie hry j),
- JednaHra_13 (Kontrola, že pro každý záznam v Jedna_Hra existuje maximálně jeden záznam v tabulce Sdileni, pokud je druh hry L),
- JednaHra_14 (Kontrola, že pro každý záznam v Jedna_Hra existuje minimálně eden záznam v tabulce Toto_Udalost, pokud druh hry je R),
- HraToky_35 (Kontrola, že pro každý záznam v Hra_Toky existuje minimálně jeden záznam v tabulce Vazba_Hra_Sazka, pokud druh hry je L),
- HraToky_36 (Kontrola, že pro každý záznam v Hra_Toky existuje právě jeden záznam v tabulce Vazba_Hra_Sazka, pokud druh hry je K,R,T,Z,B)
- HraToky_37 (Kontrola, že pro každý záznam v Hra_Toky existuje minimálně jeden záznam v tabulce Kursova_Toto_Rozpad, pokud druh hry je K a nárok na výhru je podmíněn uhodnutím výsledku další sázkové příležitosti (AKO = '1'))
- HraToky_38 (Kontrola, že pro každý záznam v Hra_Toky prave existuje jeden záznam v tabulce Kursova_Toto_Rozpad, pokud druh hry je K a nárok na výhru není podmíněn uhodnutím výsledku další sázkové příležitosti (AKO = '0'))
- Sebeomezeni_18 (Kontrola, že pro každý záznam v Sebeomezeni existuje právě jeden záznam v tabulce Sebeomezeni_Hra_Druh)
- Prilezitost_Kurs_5 (Pole KursCas musí být menší než konec časového úseku balíčku)
- Hra_Turnaj_Bingo_20 (Pole ZahajeniCas musí se rovnat hodnotě pole ProvozOd tabulky Pokladna_Stul_Turnaj_Bingo, pokud pole PokladnaStulTurnajBingo tabulky Pokladna_Stul_Turnaj_Bingo je T nebo B)
- Dodaní validace Hra_Turnaj_Bingo_21 (Pole UkonceniCas musí se rovnat hodnotě pole ProvozOd tabulky Pokladna_Stul_Turnaj_Bingo)
- Upřesnění validací:
- Hra_Turnaj_Bingo_5 (Pole ZahajeniCas musí být menší než konec časového úseku balíčku --> Pole ZahajeniCas musí být menší než konec časového úseku balíčku, pokud je pole PokladnaStulTurnajBingo tabulky Pokladna_Stul_Turnaj_Bingo S)
- Prilezitost_Kurs_2 (Pole KursCas musí být v časovém rozsahu balíčku --> Pole KursCas musí být v časovém rozsahu balíčku, pokud je pole ZahajeniPrijmuSazekCas tabulky Prilezitost menší než začátek časového úseku balíčku)