This is an old revision of the document!
Puteti folosi ca si exemplu pentru inregistrarea si procesare urmatoarele imagini. Obiectul este cel de a extrage textul din imaginile sau PDF-ul atasat.
Din imaginea atasata putem extrage informatie despre persoana, profesia, locul de munca, avizul medical si tipul controlului de medicina muncii.
Pentru a simplifica partea de procesare pe partea de web se pot extrage aceste informatii din fisierul PDF atasat ca alternativa.
| Componentă | Tehnologie |
|---|---|
| Frontend | React + TypeScript + Vite + TailwindCSS |
| Backend | Go (Golang) |
| Bază de date | MongoDB |
| Broker MQTT | Eclipse Mosquitto |
| Containerizare | Docker Compose |
git clone https://github.com/ResearchYou/ss-web cd ss-web
.env în directorul rădăcină:
UID=501 # User ID local (obține cu `id -u`) GID=20 # Group ID local (obține cu `id -g`) MONGO_INITDB_ROOT_USERNAME=admin # Username MongoDB MONGO_INITDB_ROOT_PASSWORD=supersecret # Parolă MongoDB JWT_SECRET=dev-secret # Secret pentru JWT AWS_ACCESS_KEY=local-aws-access # Opțional: pentru S3 AWS_SECRET_KEY=local-aws-secret # Opțional: pentru S3 AWS_REGION=us-east-1 # Opțional: pentru S3 S3_BUCKET_NAME=local-bucket # Opțional: pentru S3 MQTT_HOST_IP=192.168.1.95 # IP-ul host-ului pentru MQTT
Metoda 1: Script automat (recomandat)
./start.sh
Acest script va:
Metoda 2: Manual
# Terminal 1 - Pornește containerele Docker docker compose up -d # Terminal 2 - Pornește frontend-ul cd client yarn install yarn dev:poll
După pornire, aplicația va fi disponibilă la:
| Serviciu | URL/Port |
|---|---|
| Frontend (Vite) | http://localhost:5173 |
| Backend API | http://localhost:8080 |
| MongoDB | localhost:27019 |
| MQTT Broker | localhost:1883 |
# Oprește toate serviciile ./scripts/dev-stop.sh # Sau manual docker compose down
| Script | Descriere |
|---|---|
./start.sh | Pornește întregul stack |
./scripts/dev-start.sh | Script complet de pornire |
./scripts/dev-stop.sh | Oprește toate serviciile |
./scripts/send_image.py | Trimite imagini test prin MQTT |
./scripts/seed_data.py | Populează baza de date cu date test |
docker ps
docker logs go-api
docker logs broker
docker logs mongo-db
python scripts/send_image.py
cat .dev-runtime/client.log
client/src/ ├── components/ # Componente reutilizabile │ ├── devicesCards/ # Card-uri pentru dispozitive │ └── photosCards/ # Card-uri pentru fotografii ├── contexts/ # Context React (Auth) ├── pages/ # Paginile aplicației │ ├── devicesPage/ # Management dispozitive │ ├── homePage/ # Pagina principală │ ├── loginPage/ # Autentificare │ └── photosPage/ # Vizualizare fotografii ├── App.tsx # Componenta principală └── Router.tsx # Configurare rute
server/ ├── main.go # Entry point ├── domain/ # Modele de date ├── repository/ # Acces bază de date ├── routes/ # Endpoint-uri HTTP ├── broker/ # Client MQTT └── utils/ # Utilități
Scriptul care ne permite trimiterea individuală de imagini este: ./scripts/send_image.py
Acest script permite trimiterea unei singure imagini prin MQTT către server.
Utilizare:
# Trimitere imagine generată automat (pentru testare) python3 scripts/send_image.py # Trimitere fișier specificat python3 scripts/send_image.py /cale/catre/imagine.jpg
Configurare Device ID: În fișierul send_image.py, poți modifica:
DEVICE_ID = "python-sender-1" DEVICE_NAME = "Python Test Device"
Topic-uri MQTT utilizate:
register/{DEVICE_ID} - pentru înregistrarea dispozitivuluissproject/images/{DEVICE_ID} - pentru trimiterea imaginilorPagina de Statistics se află în meniul aplicației și afișează grafice despre documentele procesate.
Acces: După autentificare → meniul Statistics
| Grafic | Ce arată |
|---|---|
| Control Type Distribution | Tipurile de controale medicale: Angajare, Periodic, Adaptare, Reluare, Supraveghere, Alte |
| Medical Opinion Results | Rezultatele avizelor medicale: APT, APT Condiționat, Inapt Temporar, Inapt |
1. In pagina devices din aplicatia web (acolo apare si portul):
2. Aflat automat la pornirea serverului:
Când rulezi ./start.sh, scriptul afișează:
Detected HOST_IP: 192.168.1.95
Există două modalități de a șterge imaginile din aplicație:
1. Ștergere Individuală:
2. Ștergere Totală (Resetare):
./start.sh)python3 scripts/send_image.py /cale/catre/o/imagine.jpg
Livrabil: Screenshot cu imaginea încărcată vizibilă în pagina Photos
send_image.py (repetă de mai multe ori):python3 scripts/send_image.py /cale/catre/imagine1.jpg python3 scripts/send_image.py /cale/catre/imagine2.jpg
Livrabil: Screenshot cu pagina Statistics afișând ambele grafice