Aktualizovat sk1/README.md
This commit is contained in:
parent
faa936cd2d
commit
1379a10fd5
151
sk1/README.md
151
sk1/README.md
@ -1,119 +1,50 @@
|
||||
# Dokumentácia k nasadeniu webovej aplikácie
|
||||
# 🧠 Detekcia nenávistnej reči
|
||||
|
||||
## Podmienky na nasadenie a spustenie
|
||||
Webová aplikácia na klasifikáciu textov a detekciu nenávistnej alebo toxickej reči. Projekt bol vytvorený ako súčasť zadania na skúšku a spĺňa všetky požiadavky vrátane cloud nasadenia, API rozhrania a perzistentného ukladania výsledkov.
|
||||
|
||||
Na správne nasadenie a spustenie aplikácie je potrebné mať nainštalovaný nasledujúci softvér:
|
||||
---
|
||||
|
||||
- Operačný systém: Linux (testované na Ubuntu, ale môže fungovať aj na iných distribúciách)
|
||||
## Čo aplikácia robí
|
||||
|
||||
- Docker: Nástroj na kontajnerizáciu aplikácií
|
||||
- Umožňuje používateľovi zadať text cez frontend (React)
|
||||
- Text sa odosiela na backend (Flask API), kde je analyzovaný pomocou ML modelu
|
||||
- Výsledok predikcie („Pravdepodobne toxický“ alebo „Neutrálny text“) sa zobrazí používateľovi
|
||||
- Každá požiadavka sa uloží do `history.json` spolu s časovou pečiatkou
|
||||
- Endpoint `/api/history` vracia históriu predikcií vo formáte JSON
|
||||
|
||||
- Docker Compose: Nástroj na orchestráciu viacerých kontajnerov
|
||||
---
|
||||
|
||||
Odporúčam overiť správnu inštaláciu spustením príkazov:
|
||||
## Použité technológie
|
||||
|
||||
```bash
|
||||
docker --version
|
||||
docker-compose --version
|
||||
### Cloud infraštruktúra – [Railway](https://railway.app)
|
||||
- Automatizované nasadenie z GitHub
|
||||
- Predkonfigurovaný HTTPS a verejná doména
|
||||
- Automatická správa buildov, reštartov a logovania
|
||||
|
||||
### Docker
|
||||
- Backend kontajnerizovaný vlastným `Dockerfile` (Flask + model)
|
||||
- Frontend ako samostatná React služba (build cez Nixpacks alebo Docker)
|
||||
- Podpora manuálneho spustenia cez `Docker Compose`
|
||||
|
||||
### Perzistencia
|
||||
- `history.json`: lokálna databáza vo forme JSON
|
||||
- Uchováva: vstupný text, predikciu a čas
|
||||
- Endpoint: `GET /api/history`
|
||||
|
||||
---
|
||||
|
||||
## Štruktúra projektu
|
||||
```
|
||||
.
|
||||
├── backend/
|
||||
│ ├── app.py # Flask API endpointy
|
||||
│ ├── Dockerfile # Konfigurácia kontajnera pre backend
|
||||
│ └── history.json # Perzistencia predikcií
|
||||
├── frontend/
|
||||
│ └── vite.config.js # Railway doménová konfigurácia
|
||||
├── docker-compose.yaml # Definuje služby pre frontend a backend
|
||||
├── prepare-app.sh # Spustenie Docker kontajnerov
|
||||
├── remove-app.sh # Zastavenie a odstránenie kontajnerov
|
||||
└── README.md # Dokumentácia projektu
|
||||
```
|
||||
|
||||
## Opis aplikácie
|
||||
|
||||
|
||||
Táto aplikácia slúži na detekciu nenávistnej reči v textoch. Umožňuje používateľovi zadať ľubovoľný text prostredníctvom webového rozhrania, ktorý je následne odoslaný na spracovanie backendovej časti systému. Backend využíva trénovaný model strojového učenia založený na transformer architektúre (Hugging Face Transformers), ktorý vyhodnotí, či text obsahuje nenávistný obsah.
|
||||
|
||||
Na základe výstupu modelu aplikácia:
|
||||
|
||||
- označí text ako „nenávistný“ alebo „bezpečný“,
|
||||
|
||||
- zobrazí výsledok používateľovi v prehľadnej forme,
|
||||
|
||||
Táto aplikácia je jednoduchý webový systém, ktorý obsahuje frontendovú a backendovú časť:
|
||||
|
||||
- Frontend: React aplikácia, ktorá poskytuje webové rozhranie pre používateľov.
|
||||
|
||||
- Backend: API server napísaný vo Flask, ktorý spracováva textové dáta s pomocou modelu strojového učenia (Hugging Face Transformers).
|
||||
|
||||
|
||||
|
||||
## Používané virtuálne siete a zväzky
|
||||
|
||||
Aplikácia využíva Docker Compose na vytvorenie izolovanej siete a spravovanie dát.
|
||||
|
||||
- Virtuálna sieť: Docker Compose automaticky vytvorí vlastnú sieť, ktorá zabezpečuje komunikáciu medzi frontendom a backendom.
|
||||
|
||||
## Konfigurácia kontajnerov
|
||||
|
||||
Aplikácia sa skladá z dvoch kontajnerov:
|
||||
|
||||
- Frontend:
|
||||
- Port: 5174:5174
|
||||
- Závislosť: backend (musí byť dostupný pre správne fungovanie frontendu)
|
||||
- Automatické reštartovanie: always (zabezpečí opätovné spustenie v prípade výpadku)
|
||||
- Vytvára sa zo súborov v priečinku frontend/
|
||||
|
||||
- Backend:
|
||||
- Port: 5000:5000
|
||||
- Automatické reštartovanie: always
|
||||
- API endpoint:
|
||||
- POST /api/predict - prijíma JSON so vstupným textom a vracia klasifikáciu toxickosti.
|
||||
- Používaná modelová knižnica: Hugging Face Transformers
|
||||
- Obsahuje hlavné API aplikácie a spracováva požiadavky od frontendu
|
||||
- Vytvára sa zo súborov v priečinku backend/
|
||||
|
||||
## Používané kontajnery
|
||||
|
||||
V aplikácii sú použité tieto kontajnery:
|
||||
|
||||
- Frontend:
|
||||
- Technológia: React
|
||||
- Poskytuje webové rozhranie aplikácie
|
||||
- Beží na porte 5174
|
||||
|
||||
- Backend:
|
||||
- Technológia: Python (FastAPI/Flask)
|
||||
- Spracováva požiadavky z frontendu
|
||||
- Beží na porte 5000
|
||||
|
||||
## Príručka pre nasadenie
|
||||
|
||||
Na nasadenie aplikácie postupujte podľa nasledujúcich krokov:
|
||||
|
||||
- Príprava aplikácie:
|
||||
|
||||
```bash
|
||||
./prepare-app.sh
|
||||
```
|
||||
Tento krok vytvorí potrebné Docker obrazy a pripraví aplikáciu na spustenie.
|
||||
|
||||
- Spustenie aplikácie:
|
||||
|
||||
```bash
|
||||
./start-app.sh
|
||||
```
|
||||
Po spustení bude aplikácia dostupná na http://localhost:5174
|
||||
|
||||
Pozastavenie aplikácie:
|
||||
|
||||
```bash
|
||||
./stop-app.sh
|
||||
```
|
||||
Tento príkaz zastaví všetky bežiace kontajnery bez ich odstránenia.
|
||||
|
||||
Odstránenie aplikácie:
|
||||
|
||||
```bash
|
||||
./remove-app.sh
|
||||
```
|
||||
Tento príkaz odstráni všetky vytvorené kontajnery a ich dáta.
|
||||
|
||||
## Príklad použitia
|
||||
|
||||
Po spustení aplikácie otvorte webový prehliadač a prejdite na http://localhost:5174. Na stránke by sa mala zobraziť webová aplikácia, ktorá komunikuje s backendom.
|
||||
|
||||
Ak backend správne funguje, môžete skúsiť odoslať požiadavku cez terminál:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:5000/api/predict -H "Content-Type: application/json" -d '{"text": "Ahoj"}'
|
||||
```
|
||||
Tento príkaz by mal vrátiť odpoveď z backendu, čo znamená, že komunikácia medzi frontendom a backendom je funkčná.
|
||||
|
||||
Loading…
Reference in New Issue
Block a user