Master's Thesis

Notifikační nástroj pro systém analýzy hlasování samospráv

Final Thesis 888.89 kB

Author of thesis: Bc. Samuel Hríbik

Acad. year: 2025/2026

Supervisor: Ing. Jiří Hynek, Ph.D.

Reviewer: Ing. Radek Hranický, Ph.D.

Abstract:

The aim of this semester project was to examine the methods used by local governments
to publish records of council votes and to propose a way to detect new records and changes
in existing records and then integrate them into the existing system for visualizing council
voting results. The solution will be implemented in Python as an external tool called by
the original system at regular intervals. The solution will also include an extension for
web browsers that will simplify the creation of configuration files for new record sources.
Thanks to the results of this semester project, it will be easier to implement a tool that
will allow the existing system to be updated with new data more easily, thereby improving
its maintainability, timeliness, and overall efficiency of information processing.

Keywords:

council, council voting, web scraping, notification tool

Date of defence

24.06.2026

Result of the defence

Defended (thesis was successfully defended)

znamkaAznamka

Grading

A

Process of defence

Student nejprve prezentoval výsledky, kterých dosáhl v rámci své práce. Komise se poté seznámila s hodnocením vedoucího a posudkem oponenta práce. Student následně odpověděl na otázky oponenta a na další otázky přítomných. Komise se na základě posudku oponenta, hodnocení vedoucího, přednesené prezentace a odpovědí studenta na položené otázky rozhodla práci hodnotit stupněm A.

Topics for thesis defence

  1. V požadavcích zmiňujete různé notifikační kanály. Proč jste nakonec implementoval právě e-mail a Slack, ale ne například Discord nebo RSS, které jsou také zmíněny? Vycházela volba z požadavků na cílové prostředí nasazení?
  2. Bylo by podle vás možné automaticky rozpoznat, že konfigurace zdroje je neaktuální a vyžaduje zásah člověka?
  3. Jak byste rozšířil notifikační část řešení, pokud by mělo být nasazeno pro větší počet uživatelů s různými datovými preferencemi?

Language of thesis

Slovak

Faculty

Department

Study programme

Information Technology and Artificial Intelligence (MITAI)

Specialization

Information Systems and Databases (NISD)

Composition of Committee

prof. RNDr. Alexandr Meduna, CSc. (předseda)
doc. Ing. Radek Burget, Ph.D. (místopředseda)
RNDr. Marek Rychlý, Ph.D. (člen)
Ing. Šárka Květoňová, Ph.D. (člen)
Ing. Vladimír Veselý, Ph.D. (člen)
Ing. Jiří Hynek, Ph.D. (člen)

Supervisor’s report
Ing. Jiří Hynek, Ph.D.

Student ke své práci přistupoval svědomitě, dokázal pracovat samostatně a vytvořil použitelné řešení, díky kterému je stávající mechanismus zpracování dat lépe udržovatelný. Navrhuji hodnocení stupněm A.

Evaluation criteria Verbal classification
Information about assignment

Práce vznikla v rámci výzkumu zpracování otevřených dat. Cílem bylo prozkoumat způsoby zveřejňování zápisů z hlasování zastupitelstev českými samosprávami, navrhnout metodu pro detekci nových a změněných záznamů a implementovat notifikační nástroj, který o těchto změnách automaticky informuje. Součástí řešení je také rozšíření pro webové prohlížeče zjednodušující konfiguraci sledování nových municipalit. Student se musel seznámit s technikami web scrapingu, legislativou v oblasti samospráv, jazykem Python a jeho knihovnami (Flask, SQLAlchemy, BeautifulSoup, Playwright, requests, pytest), tvorbou rozšíření pro webových prohlížeč v JavaScriptu (Manifest V3), kontejnerizací Docker a databází SQLite. Zadání hodnotím jako průměrně obtížné a považuji ho za splněné.

Activity during solution, consultations, communication

Práce byla dokončena včas a obsah mohl být řádně konzultován.

Publication activity, awards

Výsledný nástroj je potenciálně využitelný pro projekt Zastupko.cz.

Work with literature

Student prostudoval doporučenou literaturu a aktivně si vyhledával další zdroje týkající se zpracování webových dat a legislativy v oblasti samospráv.

Activity during solution, consultations, communication

Student byl aktivní během celého akademického roku a dokázal pracovat samostatně.

Points proposed by supervisor: 90

Grade proposed by supervisor: A

Reviewer’s report
Ing. Radek Hranický, Ph.D.

Student splnil zadání v celém rozsahu a nad jeho rámec vytvořil také prohlížečové rozšíření pro tvorbu konfigurací a skript pro stahování záznamů. Oceňuji zejména velmi pěkně zpracovanou technickou zprávu, kvalitní a dobře zdokumentovaný realizační výstup a jeho ověření na reálných zdrojích dat. Jisté rezervy vidím v práci s literaturou.


S ohledem na kvalitní zpracování diplomové práce a rozšíření nad rámec zadání, doporučuji, i přes drobné nedostatky, hodnocení stupněm "A". 

Evaluation criteria Verbal classification Points
The extent to which the requirements of the assignment have been met

Evaluation level: assignment fulfilled, and the work contains significant extensions

Zadání považuji za splněné v celém rozsahu. Požadované notifikační řešení je plně funkční a student jej dobře otestoval a zdokumentoval. Nad rámec zadání pan Hríbik vypracoval také netriviální užitečné rozšíření pro webové prohlížeče, díky kterému je možné automaticky vytvářet konfigurace pro nové zdroje dat. Dále student vytvořil skript pro stahování souborů (zápisů zastupitelstev) dle konfigurace.

Extent of the technical report

Evaluation level: is within the usual extent

Dle https://app.fit.vut.cz/theses-checker práce čítá 77.86 normostran.

Presentation level of the technical report

Práce má logickou strukturu a jednotlivé kapitoly na sebe přirozeně navazují. Kvalitně zpracována je zejména kapitola o hlasování samospráv, která obsahuje nejen teoretické principy, ale také prakticky hodnotí dostupnost a použité formáty dat u krajských zastupitelstev v ČR. Zejména oceňuji přehledovou tabulku 2.1.

Část věnovaná zpracování webových dat je relevantní řešenému tématu a dobře vysvětluje nezbytné principy a technologie. S ohledem na řešené téma mi zde však chybí popis existujících nástrojů pro sledování změn na webu a detailnější rozbor možností pro notifikace.

Analýza požadavků dobře vysvětluje nedostatky stávajícího procesu zpracování dat a jasně definuje návrhové cíle. Návrh i implementace jsou popsány srozumitelně, tudíž čtenář dobře chápe, z jakých komponent se výsledné řešení skládá a jaká je jejich role. Kapitola o testování dokládá, že autor řešení ověřoval průběžně během vývoje, pomocí automatizovaných testů i při integraci do celého procesu zpracování dat. Oceňuji zde především práci s reálnými zdroji a praktické ověření na datech Jihomoravského kraje.

Drobnou výtku po prezentační stránce mám k častému používání zobecňujících pojmů jako "niektoré", "väčšina", nebo "spravidla" i v situacích, kdy není zcela zřejmé, zda závěry vycházejí z legislativních požadavků, vlastního studentova průzkumu, nebo jiné existující studie.

90
Formal preparation of a technical report

Po typografické stránce je práce v pořádku. Textový i vizuální obsah je dobře čitelný a klíčové pojmy jsou písmem vhodně odlišeny. Obrázky a tabulky jsou korektně odkazovány z textu. Drobnou nekonzistencí je pouze střídání označení "obrázok", "obr." a "diagram".

Práce je psána ve slovenštině a vhodně používá odbornou terminologii. Text je po obsahové i stylistické stránce dobře srozumitelný. Během čtení jsem ale objevil několik překlepů, např.: "súšasťou", "programovné rozhranie", "relevantné informácia".

93
Work with literature

Bibliografie čítá 24 pramenů. Tyto se týkají zejména oblastí veřejné správy, samospráv a technologií pro zpracování a extrakci dat z webu. Zdroje jsou relevantní tématu, ale mohlo by jich být více. S ohledem na zadání bych uvítal zejména prameny, které diskutují problematiku detekce změn na webu a notifikačních technologií. Prohřešky vůči citační etice jsem neobjevil.

Některé položky v bibliografii jsou nekompletní, např. u zdroje 4 je "In:. 2022", zdroj 11 místo názvu konference/sborníku obsahuje "In:. Január 2021" a u zdroje 23 chybí údaje o vydání časopisu. Zdroj 7 pak obsahuje podezřelý odkaz na Google Drive.

78
Realisation output

Realizační výstup tvoří tři programátorská díla: 1) Docker image s monitorovací komponentou v jazyce Python, 2) skript v jazyce Python pro stahování záznamů hlasování zastupitelstev a 3) rozšíření pro webové prohlížeče v jazyce JavaScript k tvorbě konfiguračních souborů. Oceňuji, že každému z nich je kromě dokumentace v README.md přiložen také soubor QUICKREF.md, který popisuje použití na praktických příkladech.

Výstup je plně funkční, student mi jej demonstroval a vyzkoušel jsem jej také osobně. Zadání přímo požadavalo jen monitorovací nástroj, další dvě díla lze tedy chápat jako rozšíření nad jeho rámec.

Celkový rozsah studentovy programátorské práce tvoří přes 10 tisíc řádků kódu. Ten je vesměs přehledný, přiměřeně komentovaný a jednotlivé funkce jsou pojmenovány srozumitelně. Pozitivně hodnotím zejména mechanismus opakování neúspěšných požadavků, řešení dynamických stránek přes headless browser, nebo verzování a deduplikaci stahovaných souborů. Další silnou stránkou výstupu jsou rozsáhlé automatizované testy.

99
Usability of results

Výstupy práce hodnotím jako prakticky přínosné. Zatímco primárním cílem je získávání dat o hlasování zastupitelstev pro systém Zastupko.cz, řešení nabízí i širší potenciální využití pro jiné typy opakovaně publikovaných dokumentů (např. zápisů z jednání, rozpočtových dokumentů apod.). Obecně tedy přínos práce není jen v samotné notifikaci, ale též v návrhu obecnějšího mechanismu pro udržování aktuálnosti dat v prostředích, kde neexistuje jednotné API ani standardizovaný způsob publikace těchto dat.

The difficulty of the assignment

Evaluation level: moderately difficult assignment

Topics for thesis defence:
  1. Jak byste rozšířil notifikační část řešení, pokud by mělo být nasazeno pro větší počet uživatelů s různými datovými preferencemi?
  2. V požadavcích zmiňujete různé notifikační kanály. Proč jste nakonec implementoval právě e-mail a Slack, ale ne například Discord nebo RSS, které jsou také zmíněny? Vycházela volba z požadavků na cílové prostředí nasazení?
  3. Bylo by podle vás možné automaticky rozpoznat, že konfigurace zdroje je neaktuální a vyžaduje zásah člověka?
Points proposed by reviewer: 91

Grade proposed by reviewer: A

Responsibility: Mgr. et Mgr. Hana Odstrčilová