Data & More är en multi-tenant-plattform för GDPR och datastyrning. Den ansluter till en organisations e-post, fillagring och chattsystem, skannar det den hittar, profilerar varje dokument avseende personuppgifter samt tillämpar regler för lagring och radering. Så här passar delarna ihop: ett polyglott mikrotjänstlandskap med en enda källa till sanning i centrum.
Man kan inte styra det man inte först har läst, klassificerat och förstått.
~42mikrotjänster
2kärnspråk (Python, Java)
7pipeline-steg, från källa till rapport
1gemensamt datalager: Elasticsearch
Avsnitt 01Arkitektur
Plattformen i korthet
Varje förfrågan går in via en TLS-terminerande NGINX-proxy och dirigeras till applikationsnivån: Vue-klienten, huvud-API:et i Flask samt IAM-, analys- och LLM-tjänsterna. API:et lämnar över tidskrävande arbete till en asynkron kärna av Celery-workers via RabbitMQ, som också hanterar skanning-, inmatnings- och tillämpningshändelser för Java-nivån. Det tunga arbetet (att kräla igenom källor, extrahera text och tillämpa policyer) körs på den Java-nivån. Under allt detta finns datalagret, med Elasticsearch som det dokumentlager samtliga tjänster delar.
Förfrågnings- och datasökvägBeständigt lager / utdataUnderkomponent inom ett lager
Avsnitt 02Dataflöde
Från en råkälla till ett tillämpatpolicybeslut
Ett dokument genomgår alltid samma process. En källa konfigureras en gång; därefter genomsöker plattformen den automatiskt, extraherar dess text, analyserar den för personuppgifter, kontrollerar den mot klientens policyer, verkställer utfallet och rapporterar resultatet. Kostnadseffektiva, deterministiska steg körs först; de resurskrävande AI- och verkställighetsstegen körs enbart på det som når dem.
Huvudsaklig processvägGemensamt lager, används i varje stegUtdata till användaren
Avsnitt 03Frontend
Vue 3-ensidesapplikationen
Klienten är en skräddarsydd ensidesapplikation utan färdiga komponentbibliotek, utformad med ett eget SCSS-designsystem. Det är här administratörer ansluter källor, skapar klassificeringsregler, hanterar policyer, läser rapporter och kommunicerar med dokument via RAG-chattmodulen. Rollbaserade vyer anpassar gränssnittet efter varje användarroll.
Vad som ingår
Instrumentpanel för flera klienter med rollbaserade vyer för Admin, Adminlite, AD, PM och DPO.
Dokumentbläddrare med träd- och rutnätslayouter samt förhandsgranskning av PDF, Word och JSON.
Klassificeringsbyggare för taggar, ordlistor, algoritmer och dokumentklasser.
Policyhantering för GDPR-regler om lagring och radering.
Chatt / LLM-modul, en RAG-assistent för indexerade dokument med strömmande svar.
Källguider för Exchange, SharePoint, Google, IMAP och filresurser.
Frontend-stack
Ramverk
Vue 3.5
Bygge
Vite 6 · TS 5.9
Tillstånd
Vuex 4.1
Router
Vue Router 4.6
i18n
24+ språk
Diagram
Chart.js
HTTP
Axios + JWT
~400 rutter · 281 komponenter · 35+ API-moduler
Avsnitt 04Python-nivå
Applikationen och AI-tjänsterna
Python-nivån innehåller plattformens kärna: det centrala API:et, identitetshantering, analys, LLM- och chattlagret, OCR, skydd mot dataförlust samt den spaCy-baserade AI-profileringen som beskrivs på annan plats. De flesta körs med Flask bakom Gunicorn; notifieringar körs på FastAPI.
RAG-pipeline, inbäddningar, LLM med stöd för flera leverantörer
llm-management
Flask (async)
8000
LLM-orkestrering, pgvector, OpenAI/Ollama/Claude
ocr
Flask · Gunicorn
8080
EasyOCR, Tesseract, YOLO, PyMuPDF, MRZ
dlp
Flask · Gunicorn
8000
Skydd mot dataförlust, webhook- och regexskanning
py-dm-notify
FastAPI · Uvicorn
8002
Realtidsnotifieringar och e-post, asynkron pub/sub
ai-profiler
Flask · Gunicorn
n/a
spaCy NER och ordlisteprofilering, 11+ språk
alerts
Celery-arbetare
n/a
Bakgrundsbearbetning av aviseringar via RabbitMQ
Hub
Huvud-API
Python 3.12, Flask 3, Celery 5.4, SQLAlchemy 2. Hanterar CRUD för dokument och källor, policyer, användare, fakturering (Stripe, HubSpot), externa integrationer samt Celery-arbetare för omindexering och bulkjobb.
Identitet
IAM
JWT-autentisering med RSA-nyckelpar, LDAP och Active Directory för SSO i företagsmiljö, rollbaserad åtkomstkontroll samt Alembic-hanterade migreringar. Klientavgränsning hanteras här.
Insikt
Analys
Statistisk och ML-baserad rapportering av skannad data, Plotly-diagram exporterade till statiska bilder, PDF-rapporter via WeasyPrint samt ett lokalt Ollama-alternativ för AI-assisterad analys.
Avsnitt 05Java-nivå
Den tunga bearbetning motorn
java_core
Skanna, importera, tillämpa
Java 11, körs som meddelandekonsumenter i distinkta lägen. Det är arbetshästen som hanterar den faktiska datan.
SCAN genomsöker postlådor, webbplatser och fildelningar.
INGEST extraherar text med Apache Tika till Elasticsearch.
DELTA hanterar inkrementella uppdateringar.
CLEANUP tar bort inaktuell data.
Tillämpningen sker även här: PolicyValidator kontrollerar dokument mot regler, PolicyEnforcer utför radering, flytt, taggning, återställning eller ingen åtgärd.
Tjänst
Ramverk
Java
Syfte
java_core
meddelandekonsument
11
Skanning, inmatning, policytillämpning
java_profiler
Spring Boot 2.7
17
Regex- och NER-entitetsextrahering, språkdetektering (FastText)
Enforcer
Spring Boot
17
Utför policyåtgärder: radering, flytt, taggning, ingen åtgärd
graph-ingestion
Spring Boot
17
Microsoft Graph-inmatning, hantering och tillämpning
ews
Spring Boot
25
Integration med Exchange Web Services
google
Spring Boot
n/a
Integration med Google Workspace
Data Subject Manager
Spring Boot
17
Person- och entitetsdatabas med uppslagsfunktion
java_profiler exponerar /profile-text, /profile/{fileId} och /language (FastText lid.176, 176 språk). Dess pipeline utför tokenisering, förtokeniseringsmatchning, entitetsmatchning, validering, poängsättning och taggning.
Avsnitt 06Data & infrastruktur
Där allt förvaras
Elasticsearch 9.3
Det centrala datalagret och det gemensamma datalager som samtliga tjänster delar: skannade dokument, profiler, taggar, policyer, granskningsloggar och ordlistor. Dagliga S3-säkerhetskopior med 180 dagars lagring samt månatliga SLM-ögonblicksbilder.
PostgreSQL 17.6
Den relationsdatabas som används för IAM (användare, roller, klienter), prenumerationer och DLP-granskningsdata, med tillägget pgvector för lagring av LLM-inbäddningar.
RabbitMQ 4.2
Meddelandeförmedlaren för Celery-uppgiftsköer inom API:et, aviseringar och notifieringar, samt bärare av de skanning-, inmatnings- och tillämpningshändelser som Java-skiktet konsumerar.
Avsnitt 07Nätverk & säkerhet
En ingång, avgränsad per klient
NGINX-routing
Enbart HTTPS, TLS 1.2/1.3 med HSTS, OCSP-häftning och moderna krypteringssviter. Administrationsverktyg är endast åtkomliga via VPN-intervall.
/
client:9000
/api/
api:8000
/api/auth/
iam:5000
/api/dashboard/
analytics:6000
/api/llm-management/
llm:8000
/api/dlp/
dlp:8000
/kibana/ · /flower/
Endast VPN
Autentiseringsflöde
Huvuden tillämparX-Frame-Options: DENY, X-Content-Type-Options: nosniff och XSS-skydd, med en uppladdningsgräns på 10 MB och Microsoft Graph webhook-intervall allowlistade för DLP.
Avsnitt 08Driftsättning
Miljöer och leverans
Miljö
Compose-fil
Syfte
dev01/02/03
docker-compose.dev.yml
Fullständigt stack, ~30 tjänster
local
docker-compose.local.yml
Lättviktig, fjärrinfrastruktur
L2 till L7
docker-compose.l{n}.yml
Produktionskund-nivåer
stage
docker-compose.stage.yml
Förproduktionsvalidering
on-prem
docker-compose.bosch.yml
Kundspecifik on-premises
Pipeline och bevakning
GitHub Actions kör arbetsflöden per tjänst; PR:er öppnas per repository.
Ansible provisionerar och konfigurerar servrarna.
Uppgraderingsskript innehåller versionshanterade migreringar.
Synkron HTTP hanterar trafik från klient till API. RabbitMQ och Celery hanterar asynkrona uppgifter, och RabbitMQ fungerar även som mäklare för skanning-, inmatnings- och tillämpningshändelser för Java-nivån. Elasticsearch är det gemensamma substrat som varje tjänst läser från och skriver till, och Dockers interna DNS tillhandahåller tjänsteupptäckt i ett gemensamt nätverk.
En plattform, många hyresgäster
Varje organisation är en hyresgäst identifierad av company_id. JWT-tokens bär med sig det sammanhanget, Elasticsearch-index är avgränsade per hyresgäst, IAM hanterar varje hyresgästs användare och roller, och Stripe spårar fakturering per hyresgäst. En superadmin kan efterlikna vilken hyresgäst som helst för supportändamål, via en separat tokenmekanism.
Från en konfigurerad postlåda till en tillämpad arkiveringsregel följer varje dokument en och samma väg genom en mångspråkig miljö som hålls samman av ett enda gemensamt datalager. Arkitekturen är medvetet plural; källan till sanning är det inte.
~42 tjänster · Python + Java kärna · Elasticsearch i centrum