Centurio System- & Moduldokumentation
🏛️ Plattform-Architektur 🔑 Login
🏠 Alle Module / Plattform-Architektur

🏛️ Plattform-Architektur & Sicherheitsmodell

Centurio (centurioerp.com) ist als europäische B2B-Operations- und Compliance-Plattform konzipiert. Die Architektur basiert auf einem modularen Monolithen (Modular Monolith) mit strikter physischer Mandantentrennung auf Datenbankebene, asynchronem Event-Streaming und semantischer Erweiterbarkeit.

Gesamtarchitektur & Datenfluss

graph TD Client["Browser / Portal / REST Clients"] --> Gateway["FastAPI ASGI Gateway (:8100)"] Gateway --> AuthCtx["ExecutionContext (Tenant, Actor, Language)"] subgraph AppLayers["Anwendungsarchitektur (Modular Monolith)"] AuthCtx --> WebUI["Jinja2 + HTMX Web UI"] AuthCtx --> REST["REST API v1 (1000+ Endpunkte)"] WebUI --> Services["Domain Services (app/modules/*)"] REST --> Services Services --> Outbox["Transactional Outbox (domain_events)"] end subgraph DataStorage["Sicherheit & Datenhaltung"] Services --> Postgres["PostgreSQL 17 mit pgvector"] Postgres -.-> RLS["Row-Level Security (app.current_tenant_id)"] Services --> S3["MinIO / S3 Encrypted Storage"] end subgraph AsyncWorker["Asynchrone Hintergrundverarbeitung"] Outbox --> Worker["Background Worker & Job Queues"] Worker --> OCR["OCR / Belegextraktion (Gemini / AI)"] Worker --> DATEV["DATEV / PEPPOL Schnittstellen"] Worker --> AuditLog["Append-only Audit Log"] end

Die 5 Architektur-Säulen

🛡️ 1. Strikte Mandantenisolation (RLS)

Die Mandantentrennung beruht nicht nur auf Anwendungslogik, sondern wird durch PostgreSQL Row-Level-Security (RLS) auf über 80 Tabellen erzwungen. Jede Session setzt SET LOCAL app.current_tenant_id = '...'. Selbst bei Programmierfehlern können fremde Mandantendaten niemals abgefragt oder manipuliert werden.

◇ 2. Semantischer Core & Veröffentlichung

Produkt- und Auftragskategorien besitzen versionierte Attribut-Fieldsets. Entwürfe werden von aktiven Ständen isoliert. Änderungen durchlaufen eine Regel-Simulation gegen Altbestände und werden erst nach Auditierung und menschlicher Freigabe mit unveränderlichem SHA-Hash aktiviert.

🤖 3. KI ist Assistenz, keine Autorität

Agenten unterstützen bei OCR, Matching und Vorbelegung. Alle KI-Ergebnisse tragen Confidence-Scores. Kritische Mutationen (z.B. Fakturierung, Zahlungen, Buchungen) dürfen niemals ohne menschliche Bestätigung (Review-Task) ausgeführt werden (EU AI Act & GoBD-Primat).

⚡ 4. Transaktionale Outbox & Provenienz

Geschäftsvorfälle erzeugen atomar in derselben Datenbanktransaktion ein Domain Event. Der Outbox-Worker stellt die Ereignisse idempotent an Empfänger und Schnittstellen zu. Jedes Event enthält Metadaten zur lückenlosen Nachvollziehbarkeit (Provenance).

🌐 5. Europäische Multi-Jurisdiktion

Entkopplung von Unternehmenssitz und Meldeort: Ein Mandant in Deutschland kann Meldepflichten in Frankreich, Österreich oder den Niederlanden bedienen. Das System unterstützt 8 Kernsprachen und dynamische Meldeschwellen ohne hardcodierte Länderbedingungen.

🖥️ 6. Server-Rendered UI (No Bloated SPA)

Jinja2-Templates in Kombination mit HTMX und minimalistischem Alpine.js sorgen für blitzschnelle Ladezeiten, robuste Session-Sicherheit, geringen Ressourcenverbrauch und barrierefreie Benutzeroberflächen.