ADI Teleorman

Documentație Tehnică de Arhitectură
Arhitectură Aprobată
Prestator: Lemongraf Amz SRL · Administrator: Andrei-Costin Alexa · CUI 39964931
Specificație Arhitecturală de Sistem

Platforma Digitală Integrată ADI Teleorman

Arhitectura software, componentele infrastructurii de date în timp real și specificațiile modulelor funcționale pentru monitorizarea colectării selective a deșeurilor, trasabilitate prin NFC/GPS și colaborare inter-instituțională.

~4.912
Recipiente & Platforme GPS
6 Vehicule
Flotă Monitorizată Live
< 1 sec
Latență Notificări & Live KPIs
4 Portaluri
ADI · Operator · UAT · Cetățean
01

Arhitectura Aplicației

Modelul general de execuție, fluxul de date și principiile constructive
Diagrama Fluxului Arhitectural End-to-End
1. Nivelul Client / Browser Vue 3 SPA + TypeScript + Tailwind CSS
Pagini Inertia.js Rendere fără refresh
Hărți & GPS Live Tile-uri Leaflet/OSM
Dashboard & KPIs Grafice interactive ECharts
Client WebSocket Laravel Echo (WSS)
▲▼ Protocol Inertia.js (HTTPS) · Conexiune Permanentă WebSocket (WSS) ▲▼
2. Web Server & Backend Logic LiteSpeed (LSAPI) + Laravel 13 (PHP 8.4)
Auth & Roluri Spatie Permission
Module Domeniu Colectări, Recipiente, UAT
Cozi & Jobs Procesare Redis Async
Scheduler Cron Rapoarte & Escaladări 48h
Laravel Reverb Server WebSocket Nativ
▲▼ Tranzacții SQL ACID · Cache Microsecund · Pub/Sub Channels ▲▼
3. Nivelul Bazei de Date & Servicii Externe PostgreSQL 16 + PostGIS + Redis 7 + Cloud Storage
PostgreSQL + PostGIS Date relaționale, JSONB & GPS
Redis 7 Engine Cache, Sesiuni & Job Queues
Redis Pub/Sub Broadcast Evenimente Live
E-mail & SMS Gateway Notificări & Rapoarte PDF

Principii Arhitecturale Fundamentale

1
Aplicație Monolit Modulară

Un singur nucleu de cod Laravel bine structurat pe module de business, eliminând complexitatea și latențele inutile ale microserviciilor.

2
SPA Server-Driven (Inertia.js)

Fără consum redundant de API-uri pentru interfața web: Laravel servește paginile Vue 3, oferind navigare instantă fără reîncărcare de pagină.

3
Real-Time Nativ (Reverb + Redis)

Monitorizarea live a celor 6 vehicule, actualizarea indicatorilor din dashboard și notificările de escaladare se transmit instant prin WebSockets.

4
Operațiuni Asincrone pe Cozi

Rapoartele complexe, trimiterile de campanii de e-mail și recalculările de scoruri sunt procesate în fundal de către job-workers Redis.

02

Tehnologiile din Stack și Rolul Fiecăreia

Matricea completă a componentelor tehnice și justificarea utilizării lor
Tehnologie & Versiune Rol în Aplicație Beneficii Tehnice Cheie
Laravel 13
PHP 8.4 Engine
Backend complet: rutare, ORM (Eloquent), migrări, autentificare, cozi, cron scheduling, politici de acces, evenimente și securitate. Performanță maximă cu PHP 8.4, ORM robust, securitate integrată nativ (CSRF, SQL Injection, XSS) și ecosistem matur.
Inertia.js v2
SPA Bridge
Punte de legătură între Laravel și Vue 3: navigare SPA fără router client separat, partajare props, lazy loading și formulare reactive. Elimină nevoia construirii unui API REST dublu; randare rapidă a componentelor, suport pentru prefetching și deferred props.
Vue 3
Composition API + TS
Toată interfața cu utilizatorul: dashboard-uri interactive, tabele de date, hărți GPS, grafice de KPIs și componente reutilizabile. Sistem de tipizare strict cu TypeScript, modularitate ridicată, mentenanță facilă și viteză optimă de randare DOM.
PostgreSQL 16
PostGIS + JSONB
Baza de date relațională principală: date structurate, date geografice (PostGIS), atribute flexibile (JSONB) și căutare full-text. Conformitate ACID strictă pentru date de raportare oficială, interogări geografice ultrarapide pentru vehicule și recipiente.
Redis 7
Cache & Queues
Cache de înaltă performanță, stocare rapidă de sesiuni, cozi de job-uri asincrone, rate limiting și canal Pub/Sub pentru WebSockets. Timp de răspuns în microsecunde, descărcarea bazei de date relaționale și procesare paralelă fiabilă cu politică de retry.
Laravel Reverb
WebSocket Server
Server WebSocket nativ Laravel: transmiterea în timp real a pozițiilor GPS ale mașinilor, notificări instant și actualizări KPIs. Compatibilitate 100% cu ecosistemul Laravel, latență sub-secundă, consum redus de resurse și scalabilitate orizontală prin Redis.
LiteSpeed (LSWS)
Web Server & LSAPI
Server web de producție: servire rapidă de fișiere statice, protocoale HTTP/2 și HTTP/3 (QUIC), TLS automat și execuție PHP prin LSAPI. Randament semnificativ superior față de Nginx/Apache la încărcări concurente, integrare perfectă cu infrastructura cPanel existentă.
⚙️ Laravel & Arhitectura Backend
Core
  • Eloquent ORM & Migrări: Relații de date stricte (Localitate → Recipiente → Colectări) cu istoric versionat.
  • Queues (Cozi de Job-uri): Procesare asincronă pentru rapoarte, importuri mobile și campanii de informare.
  • Scheduler (Cron): Raport zilnic automat la 23:59, escaladare omisiuni peste 48h, recalculare săptămânală clasamente.
  • Politici & Permisiuni: Control granular prin Spatie Permission (izolare totală per localitate / rol).
🖥️ Vue 3 & Experiența Inertia
Frontend
  • Navigare Instantă (SPA): Încărcare o singură dată; tranzițiile între ecrane se fac instantaneu fără refresh.
  • Deferred Props & Lazy Load: Datele voluminoase (harta live, istoricul extins) se încarcă asincron după primul frame.
  • Prefetch pe Hover: Paginile probabile sunt preîncărcate în fundal când utilizatorul atinge linkurile din listă.
  • Design System Tailwind: Interfață modernă, conformă cu brandul ADI, complet optimizată mobil/desktop.
🗄️ PostgreSQL & Extensii Geografice
Data Layer
  • Extensia PostGIS: Coordonate GPS pentru ~4.912 recipiente și calculul geometric al rutelor direct în baza de date.
  • JSONB Semistructurat: Stocarea flexibilă a metadatelor de la scanările NFC de teren și a configurărilor de campanii.
  • Full-Text Search (tsvector): Căutare instantă în localități, sesizări, rapoarte oficiale și documente.
  • Partiționare Tabele: Tabelul colectărilor este pregătit pentru sute de mii de înregistrări anuale fără pierderi de viteză.
03

Module Funcționale pe Portaluri

Prezentarea capacităților fiecărui portal dedicat pentru ADI, Operator, Primării și Cetățeni
Rolul Principal al Portalului ADI
Oferă conducerii asociației și auditorilor o vedere panoramică la nivel de județ, cu posibilitatea de a comuta oricând în perspectiva operatorului, a inspecta în timp real conformitatea colectărilor și de a genera rapoarte oficiale.
📊
Dashboard Central Județ

Indicatori cheie (KPIs) în timp real: vehicule active pe traseu, număr colectări confirmate azi, rute în desfășurare, colectări omise raportate pe UAT-uri.

Monitorizare Live
🗺️
Hartă Vehicule Live

Urmărirea pe hartă prin coordonate GPS trimise de echipaje în timp real pentru cele 6 vehicule, cu starea motorului, viteza de deplasare și rutele urmate.

Geolocație GPS
📍
Platforme & Recipiente

Inventarul complet al celor ~4.912 recipiente și platforme georeferențiate, cu filtrare pe localitate, tip de fracție (plastic, hârtie, rezidual) și stare de uzură.

Inventar GIS
⚠️
Colectări & Escaladare 48h

Liste filtrate pe confirmate complet (scanare NFC + poză dovadă + coordonate GPS), în curs sau omise, cu alertare automată dacă o colectare întârzie peste 48 de ore.

Trasabilitate 100%
🏷️
Gestionare Tag-uri NFC

Registru de administrare a cipurilor NFC montate pe recipiente: mapare ID tag, alocare la pubele, istoric de scanare, operațiuni de înlocuire la deteriorare.

NTAG 213 Hardware
🏆
Scoring & Clasament Primării

Calculul automat al scorului de conformitate pe bază de reguli ponderate (semafor: Verde / Portocaliu / Roșu), generând o competiție pozitivă între comune.

Conformitate UAT
📈
Rapoarte & Exporturi Oficiale

Generare automată de rapoarte zilnice și lunare pentru autoritățile de mediu (APM/Garda de Mediu), descărcabile în format PDF/Excel și trimise pe e-mail.

PDF / Excel Export
🤖
Analiză Asistată AI (Opțional)

Modul avansat bazat pe modele de învățare automată pentru analiza fotografiilor încărcate (grad de umplere, contaminare fracții) și optimizarea rutelor de colectare.

AI Vision & LLM
📣
Campanii de Informare & Mesagerie

Modul de construire și transmitere a notificărilor țintite pe UAT-uri sau la nivel județean, combinând e-mailuri automate, SMS și alerte în aplicația publică.

Comunicare ADI
Rolul Dispeceratului de Salubritate
Interfață operațională orientată către eficiența echipajelor pe teren, monitorizarea îndeplinirii sarcinilor zilnice de colectare, rezolvarea operativă a sesizărilor și mentenanța tag-urilor NFC.
🚛
Dashboard Flotă & Echipaje

Vedere concentrată pe starea celor 6 utilaje, echipajele asignate pe trasee, orele de plecare/sosire și procentul de realizare a sarcinilor zilei curente.

Management Flotă
Validare Colectări & Teren

Recepționarea și verificarea pachetelor de date trimise de aplicația mobilă: codul unic al recipientului scanat, fotografia de confirmare și timpul de execuție.

Validare Scanări
🛠️
Centru de Sesizări Asignate

Primirea directă a incidentelor semnalate de primării sau cetățeni (ex: recipiente deteriorate, acces blocat), schimbarea stării și atașarea dovezilor de remediere.

Ticketing Operativ
🔄
Mentenanță NFC & Recipiente

Procedură simplificată pentru tehnicienii de teren de a înlocui un tag defect cu unul nou direct din aplicație, păstrând continuitatea istoricului pubelei.

Sincronizare Teren
Rolul Portalului pentru Administrația Publică Locală (UAT)
Fiecare primărie din județ are acces exclusiv și securizat la datele propriei localități, având la dispoziție instrumente de auditare a serviciilor de salubrizare prestate pe teritoriul său administrativ.
🏛️
Dashboard Specific Localitate

Starea semaforului de conformitate (Verde/Galben/Roșu), grafice privind frecvența colectărilor, numărul de recipiente golite și colectările restante din comună.

Izolare per UAT
📩
Solicitări Oficiale către Operator

Transmiterea cererilor formale pentru suplimentarea recipientelor, goliri speciale sau igienizarea punctelor de colectare, cu urmărirea termenului de răspuns.

Flux Solicitări
📊
Statistici & Raportare Proprie

Indicatori de reciclare ai comunității, comparație anonimizată cu media județeană și descărcarea rapoartelor pentru consiliul local.

Rapoarte Locale
👥
Gestiune Utilizatori Primărie

Administrarea conturilor funcționarilor din primărie (primar, viceprimar, inspector mediu) cu permisiuni ajustabile de vizualizare sau inițiere sesizări.

Control Intern
Rolul Portalului Public și al Implicării Civice
Interfață publică și conturi de utilizator menite să stimuleze colectarea separată în rândul cetățenilor prin transparență, ghiduri interactive, raportare facilă a neregulilor și mecanisme de gamificare.
🏆
Gamificare & Insigne Eco

Sistem de puncte, niveluri și ecusoane (Eco Starter, Colector Activ, Oraș Curat, Quiz Master) care recompensează cunoștințele și reciclarea responsabilă.

Educație & Recompense
📖
Ghid Interactiv de Reciclare

Informații clare, căutare pe tipuri de deșeuri (ce se pune și ce NU se pune în fiecare pubelă), tutoriale video și calendar de colectare pe străzi.

Ghid Fracții
📸
Sesizări Cetățenești cu Foto & GPS

Orice cetățean poate raporta o problemă (depozit ilegal, container plin, deșeuri abandonate) direct din telefon, atașând poza și poziția GPS exactă.

Sesizări Directe
💡
Quiz & Provocări Periodice

Chestionare interactive cu întrebări despre protecția mediului și clasamente în timp real între cetățenii aceleiași comune sau din județ.

Quiz Master
04

Funcționalități în Timp Real

Mecanismul de sincronizare pe WebSockets folosind Laravel Reverb și Redis Pub/Sub

Platforma elimină necesitatea reîncărcării paginilor (F5) pentru recepționarea evenimentelor critice. Folosind serverul WebSocket oficial Laravel Reverb în tandem cu magistrala de mesaje Redis Pub/Sub, toate modificările din teren sunt proiectate în câteva milisecunde în interfața dispeceratului și a primăriilor.

Harta Live a Vehiculelor GPS Stream

Aplicația mobilă a echipajului transmite periodic coordonatele GPS.

Mobile App → API REST → VehiclePositionUpdated Event → Redis Pub/Sub → Reverb WS → Browser Marker Move
Actualizare Live KPIs Live Counter

Fiecare confirmare de colectare crește contorul central fără refresh.

NFC Scan → DB Record → CollectionConfirmed Event → Reverb Broadcast → Dashboard KPI ++ Instant
Notificări Push & Alerte 48h Instant Alerts

Sesizările noi sau escaladările automate apar instant în bara de stare.

Scheduler / Trigger → Dispatch Notification → Private Channel (User/Role) → Audio / Toast Alert in <1s
Canale Private per UAT Isolated Streams

Primăriile ascultă doar pe canalul dedicat localității lor.

Auth Channel: locality.{id} → Verificare Policy Spatie → Transmitere evenimente exclusive către UAT
05

Securitate & Controlul Accesului

Politici de protecție a datelor, criptare modernă și separare strictă a drepturilor

Autentificare Sigură & 2FA

Sesiuni securizate, parole criptate prin algoritmi moderni (Argon2id/Bcrypt) și opțiune integrată de autentificare în doi factori (2FA).

Roluri Spatie & Izolare UAT

Ierarhie bine definită: SuperAdmin, ADI, Operator, Primărie, Cetățean. Un cont de primărie este constrâns strict la UAT-ul său.

API Mobil cu Token Sanctum

Aplicația echipajelor comunică exclusiv prin token-uri Sanctum revocate ușor, având capabilități strict limitate la operațiunile de colectare.

Protecție Nativă la Nivel de Framework

Filtrare automată anti-CSRF, sanitizare XSS în Vue/Inertia, interogări ORM complet parametrizate (anti-SQL Injection) și Rate Limiting Redis.

Jurnal de Audit Imutabil

Fiecare acțiune critică (modificări manuale de scor, ștergeri, descărcări masive de date, trimitere campanii) este înregistrată complet cu autor și IP.

Stocare Privată a Fișierelor

Dovezile foto de colectare și documentele oficiale sunt stocate în discuri private și servite doar prin linkuri securizate cu semnătură temporară (signed URLs).

06

Performanță & Scalabilitate

Optimizări la nivel de cache, baze de date și randare pe client
Zona de Optimizare Strategia Implementată Efect Direct asupra Utilizatorului
Memorie Cache (Redis) Păstrarea în RAM a configurațiilor de sistem, listelor de localități, scorurilor agregate și KPIs de județ cu invalidare automată la update. Timp de răspuns sub 15ms la afișarea dashboard-ului și navigarea în tabele.
Cozi Asincrone (Job Queues) Delegarea generării PDF-urilor masive, procesării imaginilor și trimiterii campaniilor de e-mail către procese secundare (workers). Interfața nu se blochează niciodată; salvarea formularelor este instantanee.
Partiționare & Indexare SQL Tabelul masiv de colectări este indexat compozit (pe UAT, dată și fracție) și partiționat lunar pentru a gestiona milioane de rânduri. Interogările istorice și rapoartele anuale rulează la fel de rapid ca în prima zi.
Deferred Props (Inertia) Componentele grele (hartă cu 5000 de puncte) își descarcă datele asincron, după ce scheletul paginii este deja vizibil. First Contentful Paint aproape instantaneu, fără senzația de pagină „înghețată”.
07

Infrastructură & Implementare (Deploy)

Configurația recomandată pentru mediul de producție și mentenanță continuă
Componentă Server Configurație Tehnică de Producție Mod de Rulare / Supraveghere
Web Server LiteSpeed Web Server (LSWS) + PHP 8.4 via LSAPI, suport complet HTTP/2 + HTTP/3 (QUIC), TLS automat Let's Encrypt. Proces nativ cPanel / Server Dedicat, performanță înaltă la concurență mare.
Bază de Date PostgreSQL 16 cu extensia PostGIS activată, backup automat zilnic și conexiuni persistente. Instanță optimizată cu setări de memorie ajustate pentru operațiuni GIS.
Cache & Cozi Redis 7 cu persistență AOF activată pentru a preveni pierderea job-urilor aflate în coadă la restart. Serviciu local securizat, accesibil doar de către procesele interne Laravel.
WebSocket Server Laravel Reverb pornit ca demon de sistem, reverse-proxy securizat prin LiteSpeed (wss://). Supervizat automat via systemd / supervisor cu restart la crash.
Job Workers 2–4 instanțe de php artisan queue:work --queue=high,default,low pentru procesare asincronă continuă. Supervizate continuu cu politică de repornire automată și canal de dead-letter jobs.
Scheduler Cron Comandă sistem * * * * * php /cale/artisan schedule:run >> /dev/null 2>&1. Cron standard cPanel ce orchestrează rapoartele nocturne și verificările de escaladare.
08

Integrări Externe & Aplicația de Teren

Conexiunile platformei cu hardware-ul de teren, hărțile și serviciile terțe
📱
Aplicația Mobilă a Echipajelor

Sursa esențială de date de teren: citire NFC prin cipul telefonului, captură foto cu geolocație automată și funcționare în mod offline cu sincronizare automată la recăpătarea semnalului.

Android / iOS REST API
🏷️
Tag-uri NFC Standard NTAG 213

Cipuri robuste, rezistente la intemperii și spălare sub presiune, montate pe fiecare recipient din cele ~4.912 unități pentru garantarea prezenței fizice a utilajului la locație.

Hardware Teren
🗺️
Servicii de Hărți & Geocoding

Integrare cu OpenStreetMap (OpenLayers/Leaflet) pentru vizualizarea vehiculelor și a platformelor fără costuri de licențiere, cu posibilitate de comutare pe Google Maps API.

GIS & Map Tiles
🧠
Modul AI / LLM (Optimizare & Vision)

Analiză vizuală automată pentru stabilirea procentului de umplere a containerelor și detecția contaminării materialelor reciclabile (ex: deșeu menajer aruncat la plastic/hârtie).

Computer Vision
09

Sinteză — De ce acest Stack Tehnologic?

Cum răspunde fiecare decizie tehnică unei cerințe reale de business și operare

Matricea Deciziilor Arhitecturale

Alegerea componentelor a fost ghidată de trei principii cardinale: viteza de operare în dispecerat, fiabilitatea raportării oficiale către autorități și costul optim de găzduire pe infrastructura existentă.

Nevoia Proiectului
Aplicație web rapidă, modernă, o singură bază de cod
Soluția: Laravel 13 + Inertia.js + Vue 3 oferă confortul unui SPA nativ fără overhead-ul de a dezvolta și menține un API separat pentru browser.
Nevoia Proiectului
Date geografice & raportare sigură, scalabilă
Soluția: PostgreSQL + PostGIS garantează integritatea tranzacțiilor financiare/cantitative și calculează rutele GPS direct la nivel de bază de date.
Nevoia Proiectului
Viteză instantă & procesare fără blocaje
Soluția: Redis 7 descarcă baza de date de citirile repetitive și preia sarcinile grele (rapoarte, e-mailuri, recalculări de scor) pe cozi asincrone.
Nevoia Proiectului
Harta vehiculelor & alerte live în timp real
Soluția: Laravel Reverb (WebSocket) elimină nevoia de polling/F5 și aduce poziția GPS a celor 6 mașini în dispecerat în mai puțin de o secundă.
Nevoia Proiectului
Performanță pe server clasic (cPanel/LiteSpeed)
Soluția: LiteSpeed Web Server + LSAPI + HTTP/3 asigură timpi de încărcare extrem de rapizi și o instalare fără bătăi de cap pe serverul curent.
Nevoia Proiectului
Securitate sporită & criptare modernă
Soluția: Spatie Permission + Signed URLs + Sanctum asigură izolarea strictă a datelor primăriilor și confidențialitatea dovezilor din teren.