ELi Piiririski Profiiler on spetsialiseeritud luuresüsteem, mis jälgib ja prognoosib varjupaigataotluste survet ELi välispiiridel. Süsteem kasutab Eurostati ajaloolisi andmeid, et arvutada reaalajas „riskiskoorid“ ning prognoosida tulevasi trende masinõppe abil.
🌐 Live demo — risk-profiler.super-h.fr
-
Arenenud riskihindamine: Kasutab logaritmilist globaalse normaliseerimise valemit, et tuvastada kõrge riskiga tsoonid ilma ajalooliste äärmusjuhtumite (nt 2015. aasta kriis) moonutava mõjuta.
Risk = (log(Volume) / log(Global_Max)) * (1 + Trend_Variation)
-
Tark andmetöötlus: Käsitleb automaatselt andmeviivitusi, tagades, et soojuskaart kajastab alati uusimaid kehtivaid riiklikke andmeid ning väldib eksitavaid „nullriski“ alasid raportite hilinemise tõttu.
-
Prognoosimudelid: Treenib iga ELi 27 liikmesriigi jaoks kergekaalulised Random Forest’i regressioonimudelid, et prognoosida survet 3 kuud ette. Iga prognoos sisaldab ka P10/P90 usaldusvahemikku, mis tuletatakse mudeli sisemiste otsustuspuude jaotusest.
-
Detailvaade kodakondsuste lõikes: Iga riigi vaatel kuvatakse N enim taotlejate päritoluriiki ajateljel (N on valitav vahemikus 3-10).
-
Mitmekeelne kasutajaliides: Saadaval inglise, eesti ja prantsuse keeles, riikide nimed on lokaliseeritud. Keelevalija on lehe paremas ülaosas või URL-i parameetris
?lang=. -
Moodne juhtimisdashboard: Streamliti baasil loodud „Situation Room“ stiilis liides, mille funktsioonide hulka kuuluvad dünaamilised soojuskaardid, riskihinnangute edetabelid ja riigipõhised detailvaated.
Lahendus järgib Docker Compose’i abil orkestreeritud mikroteenuste arhitektuuri:
-
Data Harvester (
data_harvester):- Roll: Autonoomne agent, mis küsib Eurostati Bulk API-t (
migr_asyappctzm) iga päev kell 02:00. - Töömehhanism: Laadib uusi andmeid ainult siis, kui Eurostati
Last-Modifiedon muutunud, töötleb TSV-vooge tükkidena ja kasutab atomaarset staging-tabeli vahetust, etasylum_dataei jääks kunagi pooleli.
- Roll: Autonoomne agent, mis küsib Eurostati Bulk API-t (
-
Risk Predictor (
risk_predictor):- Roll: Luuremootor, mis käivitatakse iga päev kell 03:00.
- Loogika:
- Laadib puhastatud andmed PostgreSQL-ist.
- Arvutab „riskiskoori“ (maht × trend).
- Automaatne ümberõpe: Iga riigi kohta arvutatakse andmete SHA-256 allkiri; mudel treenitakse uuesti ainult siis, kui allkiri on muutunud.
- Aus hindamine: Kasutab kronoloogilist train/test-jaotust ja annab MAE viimase ~20% andmete põhjal, mida mudel ei ole näinud.
- Genereerib prognoosid +1, +2 ja +3 kuu jaoks.
-
API Service (
api_service): FastAPI-põhine backend, mis jagab koos dashboard’iga sama image’it jaapi_servicepaketti. -
Dashboard: Streamliti põhine visualisatsioonikiht, mis küsib kõik andmed API kaudu.
-
PostgreSQL (
db): Keskne andmepüsivuse kiht, mille port on hostis seotud ainult127.0.0.1-iga.
Projekt on optimeeritud efektiivsuseks ega vaja tugevat riistvara ega GPU-sid.
- CPU: 1 vCPU (soovitatav 2)
- RAM: vähemalt 1 GB (soovitatav 2 GB)
- GPU: Pole vajalik (Scikit-learn töötab CPU-l)
- Kettaruum: 5 GB (Docker image’id + andmebaasi maht)
- Eeldused: Docker & Docker Compose
- Konfiguratsioon: Kopeeri
.env.examplefailiks.envja seadista andmebaasi mandaadid - Käivitus:
docker-compose up --build -d
- Ligipääs:
- Dashboard:
http://localhost:8501 - API dokumentatsioon:
http://localhost:8000/docs
- Dashboard:
Riskiskoor (0–100) põhineb:
- Mahukomponendil – logaritmiliselt normaliseeritud kogu ELi ajaloo maksimumi suhtes (1,3 mln taotlust 2015. aastal). See tagab, et praegune kriis (nt 100k taotlust) registreeritakse „kõrge riskiga“ kategoorias (~85/100), mitte „madala riskiga“ võrreldes lineaarselt minevikuga.
- Trendikomponendil – kuust-kuusse muutuse kiirenemine või aeglustumine.
- Mudelitüüp: Random Forest Regressor (Scikit-learn).
- Üks mudel iga ELi liikmesriigi kohta, treenitud kuni 60 kuu ajaloolise andmestiku peal.
- Treenimisstrateegia: Süsteem proovib esmalt laadida olemasoleva mudeli (
model_registrytabelist). Kui igapäevase käivituse ajal tuvastatakse uusi andmeid, käivitatakse ümberõpe automaatselt, et prognoosid püsiksid täpsed.
eu-border-risk-profiler/
├── api_service/ # FastAPI backend + Streamlit dashboard
├── data_harvester/ # Eurostat parser ja laadija (atomaarne staging-vahetus)
├── risk_predictor/ # Mudelite treenimine ja skoorimine (RandomForest, hold-out hindamine)
├── db_init/ # PostgreSQL skeemi initsialiseerimine
├── docs/ # Vormistatud dokumentatsioon (ADR-id, model card, ohumudel)
├── docker-compose.yml
├── DEPLOYMENT_GUIDE.md
├── DOKPLOY_GUIDE.md
└── OPERATIONS_GUIDE.md
Käitamise ja juurutamise juhendid:
- DEPLOYMENT_GUIDE.md — juurutus Docker Compose’iga.
- DOKPLOY_GUIDE.md — märkused Dokploy-spetsiifiliste seadete kohta.
- OPERATIONS_GUIDE.md — käitamisjuhend.
Tehniline ja juhtimisalane dokumentatsioon kataloogis docs/:
- Architecture Decision Records — peamised tehnilised valikud, Michael Nygardi ADR-vormingus.
- Model Card — prognoosimudeli ulatus, hindamismetoodika, kasutusotstarbed ja keelatud kasutused.
- Data Card — lähteandmestiku kirjeldus, viivitused ja revisjonid, mida andmestik ei ole.
- Security posture — STRIDE-ohumudel ja kontrollid.
MIT License © 2025
