5.3 Stahování smluv
5.3.2 Kontrola NACE dodavatele
Poté, co je vytvořen seznam identifikátorů, může script začít stahovat smlouvy. Ještě před tím, než je smlouva stažena, je však potřeba určit, zdali se jedná o smlouvu z oblasti ICT, a to z důvodu, aby nebyl index smluv zahlcen irelevantními smlouvami. Určení, zdali je smlouva z oblasti ICT, probíhá na základě ekonomické klasifikace NACE dodavatele. Na smlouvě je typicky uveden 1 až n dodavatelů. Pokud je jeden z těchto dodavatelů klasifikován jako ICT dodavatel, je smlouva postoupena ke stažení. Tento mechanismus je v procesu Stahování smluv zachycen krokem Kontrola NACE dodavatele, který je zároveň podprocesem a označený symbolem smyčky, jelikož je opakován pro každého z 1 až n dodavatelů na smlouvě. Podproces Kontrola NACE dodavatele je zachycen na obrázku (viz Obrázek 19) níže.
Obrázek 19: Pohled na podproces Kontrola NACE dodavatele popsaný jazykem BPMN (zdroj: autor)
Prvním krokem kontroly NACE dodavatele je vyhledání dodavatele v číselníku dodavatelů.
Detailní informace o číselníku dodavatelů jsou obsaženy v podkapitole Číselník dodavatelů níže. Pokud byl dodavatel nalezen v číselníku, kde je obsažena informace o tom, zdali působí v ICT sektoru, je podproces Kontroly NACE dodavatele dokončen. V opačném případě je
však potřeba informaci o ekonomických činnostech dodavatele zjistit. Tedy dalším krokem kontroly je stažení údajů NACE ze systému ARES. Nejprve je odeslán požadavek do systému ARES s parametrem IČO dodavatele. Odpověď pak obsahuje údaje ve formátu XML. XML data jsou parsována a následně je sestaven seznam všech NACE daného dodavatele.
Dalším krokem je již samotná kontrola NACE dodavatele vůči vypsaným NACE klasifikacím spadajícím do sektoru ICT viz kapitola 2.3.2. Během této kontroly však bylo vypozorováno, že velké množství dodavatelů má zaregistrovanou ICT činnost pouze okrajově mimo řadu jiných dalších činností. To má za následek, že stahované smlouvy často nesouvisejí s dodávkou ICT. Proto byla kontrola implementována takovým způsobem, že je vypočten podíl ICT NACE kódů. Následně je nastavena hranice podílu, která určuje, zdali je dodavatel ze sektoru ICT. Aby však bylo možné určit optimální hranici podílu, je třeba prozkoumat podíly u některých dodavatelů. Za tímto účelem byli prozkoumáni dodavatelé uvedeni na webu SystemOnLine (2021) jako dodavatelé specializovaných IT řešení pro zdravotnictví, veřejný a státní sektor. Data viz Tabulka 7 níže naznačují, že většina dodavatelů dosahuje podílu v hodnotě vyšší nebo rovno 0,2. Proto bude tato hodnota použita jako hraniční při klasifikaci ICT dodavatelů.
Tabulka 7: Přehled vybraných dodavatelů a jejich podílů ICT NACE činností na všech ekonomických činnostech (zdroj: autor)
Dodavatel Podíl ICT NACE / všechny NACE
ALVAO s.r.o. 0,5
ARBES Technologies, a.s. 0,33
Asseco Solutions, a.s. 0,33
AUTOCONT A.S. 0,09
Daktela 0,29
ESDATA Family s.r.o. 0
EXON s.r.o. 0,33
Flux, spol. s r.o. 0,29
GEOVAP, spol. s r.o. 0,07
GORDIC spol. s r.o. 0,2
ICONTIO 0,33
Magion system,a.s. 0,2
OR-CZ spol. s r.o. 0,1
Softec s.r.o. 0,14
TRIADA, spol. s r. o. 0,14
Implementace kontroly je zachycena v ukázce zdrojového kódu níže. Posledním krokem kontroly NACE dodavatele je uložení záznamu do číselníku dodavatelů.
Výpis 5: Python kód pro kontrolu NACE kódů dodavatele (zdroj: autor)
# ICT NACE kódy:
allowed_nace_codes = [261, 2611, 26110, # Výroba elektronických součástek a desek
2612, 26120, 262, 2620, 26200, # Výroba počítačů a periferních zař…
263, 2630, 26300, # Výroba komunikačních zařízení; skupina 264, 2640, 26400, # Výroba spotřební elektroniky
268, 2680, 26800, # Výroba magnetických a optických médií.
465, 4651, 46510, 4652, 46520, # Velkoobchod s počítačovým a komun…
611, 6110, 61101, 61102, 61103, 61104, 61109, # Činnosti souvisej…
612, 6120, 61201, 61202, 61203, 61204, 61209, # Činnosti souvisej…
613, 6130, 61300, # Činnosti související se satelitní telekomunika…
619, 6190, 61900, # Ostatní telekomunikační činnosti 582, 5821, 58210, 5829, 58290, # Vydávání softwaru 620, 6201, 62010, # Programování
6202, 62020, # Poradenství v oblasti informačních technologií 6203, 62030, # Správa počítačového vybavení
6209, 62090, # Ostatní činnosti v oblasti informačních technologií 631, 6311, 63110, 6312, 63120, # Činnosti související se zpracov…
951, 9511, 95110, 9512, 95120] # Opravy počítačů a komunikačních z…
subject_nace_codes = get_nace_list(ico)
if len(subject_nace_codes) > 0:
ict_nace_ratio = len([x for x in allowed_nace_codes if x in subject_nace_codes]) / len(subject_nace_codes)
else:
ict_nace_ratio = 0
if ict_nace_ratio >= 0.2:
ict_supplier = True else:
ict_supplier = False
db.insert_supplier(ico, ', '.join(map(str, subject_nace_codes)), ict_supplier)
Číselník dodavatelů
Účelem číselníku dodavatelů je zrychlení procesu Stahování smluv, respektive podprocesu Kontrola NACE dodavatele. Při každé kontrole NACE dodavatele je potřeba dotazovat systém ARES a parsovat XML odpověď, což je v řádech desetitisíců iterací časově náročné.
Proto jsou při každé kontrole dodavatelé ukládáni do číselníku v relační databázi MySQL a pokud se stejný dodavatel následně objeví i na některé jiné smlouvě, kontrola proběhne výrazně rychleji. Jelikož ARES limituje uživatele počtem dotazů za den, tak další výhodou může být, že číselník dodavatelů pomůže k dosažení většího počtu stažených smluv za den.
Velice dobré alternativní řešení při sestavování číselníku dodavatelů navrhli autoři Bruckner a Vencovský (2020b), kteří sestavují kompletní číselník dodavatelů z oblasti ICT ještě před tím, než jsou stahovány smlouvy. Výhodou tohoto přístupu oproti výše navrženému řešení je bezesporu rychlost. Řešení navržené v této diplomové práci je naopak více vhodné pro případ, že bude systém v budoucnu využit pro zpracování smluv ze všech či jiných dalších vybraných sektorů a nebude se soustředit pouze na zpracování ICT smluv.
Uživatel může mimo jiné pružně měnit ekonomické sektory vzhledem k tomu, že číselník obsahuje u každého dodavatele jeho registrované NACE kódy.
Mimo výše navržená řešení se též skýtala možnost sestavit kompletní číselník dodavatelů ještě před zahájením procesu Stahování smluv. Tato možnost je však problematická, jak popisuje Kokeš (2018): „Právnických osob ve veřejném rejstříku je necelý milion.
I kdybychom se dotazovali přes „hromadný“ endpoint, který vrací až 100 záznamů naráz, musíme API zavolat 10000×. Jenže API bylo významně limitované (o důvodu minulého času níže), takže bylo možné požádat o pouze 6000 záznamů denně (záznamů, nikoliv dotazů). Člověk by tak stahoval celý ARES půl roku.“
Pro představu, jak může zde implementovaný číselník zrychlit proces Stahování smluv, je uvedeno měření. Měření bylo provedeno na denním dumpu z 5.3.2017, který čítá 171 záznamů. První průchod s prázdným číselníkem dodavatelů trval 22 sekund. Druhý průchod s naplněným číselníkem dodavatelů trval necelé dvě sekundy, což je více jak desetinásobné zrychlení. Je však třeba říci, že toto je ideální případ, kdy se v číselníku nachází každý z dotazovaných dodavatelů. V praxi budou dodavatelé na počátku v číselníku chybět, což se postupně bude zlepšovat s počtem iterací stahovaných smluv. Tedy s každým dalším zpracovaným měsíčním dumpem přibývá počet záznamů v číselníku dodavatelů a průchod procesem Stahování smluv se tak postupně zrychluje.