bakalarka_praca/telegram_bot/README.md

121 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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:
1. **Telegram Bot**: Interceptuje správy v skupine a pomocou trénovaného LLM modelu klasifikuje, či ide o nenávistnú reč.
2. **MySQL databáza**: Ukladá údaje o používateľoch, správach a čase incidentu.
3. **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ý cez flask-service. Obnovuje sa každých 5 sekúnd pomocou JavaScriptu (AJAX fetch).
- **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ý v ConfigMap.
---
## 🚀 Návod na použitie
### 1. Príprava aplikácie:
bash
./prepare-app.sh
- Zostaví Docker image s aplikáciou.
- Pushne ho do Docker Hub repozitára.
---
### 2. Spustenie aplikácie:
bash
./start-app.sh
- Vytvorí Kubernetes objekty.
- Spustí port-forwarding pre Flask web na localhost:8888.
---
### 3. Pozastavenie (port-forward):
bash
pkill -f "kubectl port-forward"
- Zastaví dočasný prístup cez port-forward.
---
### 4. Odstránenie aplikácie:
bash
./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 тоже самое сделай