.. | ||
sql | ||
static | ||
.env | ||
bot.py | ||
deployment.yaml | ||
Dockerfile | ||
flask-web.yaml | ||
log.txt | ||
prepare-app.sh | ||
README.md | ||
requirements.txt | ||
service.yaml | ||
start-app.sh | ||
statefulset.yaml | ||
stop-app.sh | ||
web_app.py |
Hate Speech Bot – Dokumentácia
🧠 Opis aplikácie
Hate Speech Bot je kompletný systém na automatickú detekciu nenávistnej reči v prostredí Telegramu. Aplikácia slúži ako monitorovací a analytický nástroj, ktorý umožňuje:
- Automaticky zachytiť a analyzovať správy používateľov v skupinových chatoch.
- V prípade detekcie nenávistného prejavu zaznamená informáciu o používateľovi a správe do databázy.
- Vizualizuje porušovateľov cez webové rozhranie v reálnom čase.
Komponenty systému:
- Telegram Bot: Interceptuje správy v skupine a pomocou trénovaného LLM modelu klasifikuje, či ide o nenávistnú reč.
- MySQL databáza: Ukladá údaje o používateľoch, správach a čase incidentu.
- Webová aplikácia (Flask): Zobrazuje tabuľku s porušeniami, automaticky aktualizovanú každých 5 sekúnd.
🧱 Zoznam použitých Docker kontajnerov
Kontajner | Popis |
---|---|
tetianamohorian/hate-speech-bot |
Obsahuje Telegram bota, klasifikačný model (napr. fine-tuned BERT), a Flask frontend. |
mysql:8 |
Relačný databázový systém pre ukladanie záznamov o porušovateľoch. |
☸️ Zoznam Kubernetes objektov
Objekt | Popis |
---|---|
Namespace: botspace |
Izolovaný priestor pre všetky objekty súvisiace s aplikáciou. |
Deployment: bot-deployment |
Nasadzuje kontajner s botom. |
Deployment: flask-web |
Nasadzuje Flask webserver. |
StatefulSet: mysql |
Zabezpečuje perzistentný a konzistentný chod MySQL databázy. |
PersistentVolume |
Uchováva fyzické dáta databázy mimo podu. |
PersistentVolumeClaim |
Žiadosť o diskový priestor pre databázu. |
Service: mysql |
Vnútorná služba pre prístup k databáze. |
Service: flask-service |
Port-forward pre sprístupnenie webu. |
ConfigMap: init-sql |
Obsahuje SQL skripty na prvotnú inicializáciu schémy. |
Secret: bot-secret |
Bezpečné uloženie citlivých údajov ako je Telegram token. |
🌐 Virtuálne siete a úložiská
- Všetky pody komunikujú cez internú sieť v
botspace
, čím sa znižuje riziko únikov údajov. PersistentVolume
pripojený k MySQL zaručuje zachovanie dát aj po reštarte podu.
⚙️ Konfigurácia kontajnerov
- Flask Web: Beží na porte
5000
, ktorý je dostupný cezflask-service
. Obnovuje sa každých 5 sekúnd pomocou JavaScriptu (AJAXfetch
). - Telegram Bot: Spustený v samostatnom threade, číta správy, klasifikuje ich pomocou PyTorch modelu (alebo HuggingFace Transformers), a zapisuje výsledok do databázy.
- MySQL: Inicializovaná pomocou
initContainer
, ktorý spustí skript uložený vConfigMap
.
🚀 Návod na použitie
1. Príprava aplikácie:
./prepare-app.sh
- Zostaví Docker image s aplikáciou.
- Pushne ho do Docker Hub repozitára.
2. Spustenie aplikácie:
./start-app.sh
- Vytvorí Kubernetes objekty.
- Spustí port-forwarding pre Flask web na
localhost:8888
.
3. Pozastavenie (port-forward):
pkill -f "kubectl port-forward"
- Zastaví dočasný prístup cez port-forward.
4. Odstránenie aplikácie:
./stop-app.sh
- Zmaže celý
botspace
, vrátane databázy a všetkých služieb.
🌍 Prístup k webovej aplikácii
Po úspešnom spustení aplikácie otvorte webový prehliadač:
http://localhost:8888
- Zobrazí sa tabuľka s informáciami o porušovateľoch.
- Dáta sa aktualizujú automaticky každých 5 sekúnd bez potreby obnoviť stránku.
📦 Použité technológie
- Python, Flask, PyTorch / Transformers – analýza a klasifikácia textov
- Docker, Docker Hub – kontajnerizácia
- Kubernetes – orchestrácia, škálovanie a sieťová izolácia
- MySQL – relačné databázové úložisko
- JavaScript (AJAX) – aktualizácia frontendu v reálnom čase