# 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) ---