zkt25/sk1/README.md
2025-04-11 11:35:39 +00:00

83 lines
4.4 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.

# Health AI Assistant
## Opis aplikácie
Health AI Assistant je webová aplikácia, ktorá umožňuje používateľom registráciu, prihlásenie, interaktívny chat a prezeranie histórie konverzácií. Aplikácia využíva generatívny model (pomocou Mistral) na spracovanie dotazov a poskytovanie odpovedí. Používateľom poskytuje možnosť overenia pomocou Google OAuth a uchováva dáta v databáze PostgreSQL.
## Použité cloudové a kontajnerové technológie
- **Verejný cloud:**
Aplikácia je nasadená na AWS EC2, pričom bol použitý Elastic IP, aby bol verejný IP adresa statická.
- **Docker:**
Nasadenie aplikácie je plne založené na Docker kontajneroch. Použité sú kontajnery pre:
- **Elasticsearch** pre fulltext vyhľadávanie a ukladanie indexov.
- **PostgreSQL** ako databáza s perzistentným zväzkom (volume `pgdata`).
- **Backend** Flask aplikácia, ktorá spracúva API požiadavky.
- **Frontend** klientská časť, ktorá komunikuje s backendom.
- **Nginx:**
Ako reverzný proxy server je nastavený Nginx pre zabezpečený prístup cez HTTPS. Certifikát je získaný pomocou Certbot (Let's Encrypt).
- **Skripty:**
Nasadenie a zrušenie aplikácie sa automatizuje pomocou skriptov `prepare-app.sh`, `stop-app.sh`, `start-app.sh` a `remove-app.sh`.
## Obsah odovzdávaných súborov a konfigurácia
V repozitári su nasledovné súbory a adresáre:
- **docker-compose.yml** Definuje štyri služby (elasticsearch, postgres, backend, frontend) a sieť `app-network`.
- Pre každú službu je definovaný aj parameter `restart: always`, ktorý zabezpečuje automatický reštart v prípade chyby.
- Pre postgres je definovaný persistent volume `pgdata`.
- **Dockerfile** pre jednotlivé komponenty:
- `./elasticsearch/Dockerfile` Konfigurácia Elasticsearch, vrátane nastavení environmentálnych premenných.
- `./Backend/Dockerfile` Konfigurácia backendovej Flask aplikácie.
- `./frontend/Dockerfile` Konfigurácia frontendovej aplikácie.
- **Skripty:**
- **prepare-app.sh** Skript, ktorý zostaví (build) a spustí celú aplikáciu pomocou docker-compose.
- **stop-app.sh** Skript, ktorý zastaví všetky služby.
- **start-app.sh** Skript, ktorý spustí služby, ktoré boli len zastavené.
- **remove-app.sh** Skript, ktorý úplne odstráni všetky kontajnery, siete a volume, čím zabezpečí, že aplikáciu je možné rýchlo zrušiť.
- **Nginx konfigurácia**
Súbor `/etc/nginx/sites-available/healthai-tuke.com` (nasadený na AWS) zabezpečuje:
- Presmerovanie HTTP na HTTPS.
- Reverzný proxy, ktorý smeruje požiadavky:
- `/api/` na backend (Flask, port 5000).
- Ostatné požiadavky na frontend (port 5173).
## Ako pozrieť a použiť aplikáciu
1. Otvorte webový prehliadač a zadajte adresu:
`https://healthai-tuke.com`
2. Používateľské rozhranie vám umožní:
- Registráciu a prihlásenie.
- Spustenie chatu so systémom.
- Prezeranie histórie konverzácií.
3. Pre prístup k API môžu používatelia testovať požiadavky pomocou nástrojov ako Postman, curl alebo priamo cez Frontend, ktorý komunikuje s backendom.
## Podmienky pre spustenie skriptov
- **prepare-app.sh:**
Tento skript zostaví a spustí celú aplikáciu pomocou príkazu `docker-compose up --build -d`. Skript by sa mal spúšťať z koreňového adresára repozitára, kde sa nachádza súbor `docker-compose.yml`.
- **stop-app.sh:**
Skript zastaví všetky bežiace kontajnery pomocou príkazu `docker-compose stop`.
- **start-app.sh:**
Tento skript spustí kontajnery, ktoré boli len zastavené, pomocou príkazu `docker-compose start`.
- **remove-app.sh:**
Skript úplne odstráni vytvorené kontajnery, siete a persistent volume príkazom `docker-compose down --volumes --remove-orphans`.
## Zoznam externých zdrojov
- **Externé zdroje a dokumentácia:**
- [Docker Documentation](https://docs.docker.com)
- [Docker Compose Documentation](https://docs.docker.com/compose/)
- [Nginx Documentation](https://nginx.org/en/docs/)
- [Let's Encrypt Certbot Documentation](https://certbot.eff.org)
- [Google OAuth 2.0](https://developers.google.com/identity/protocols/oauth2)
- [PostgreSQL Documentation](https://www.postgresql.org/docs/)
- [Sentence Transformers Documentation](https://www.sbert.net)
- [Hugging Face Hub Documentation](https://huggingface.co/docs)
---