Centurio System & Module Documentation
🏛️ Platform Architecture 🔑 Login
All Modules / crm_office / Kommunikation & Postfächer
📘

Kommunikation & Postfächer

communications crm_office 🛡️ RLS Protected

Kommunikation & Postfächer — aus Code abgeleitete Prozess- und API-Dokumentation.

Fachliche Bestimmung: Posteingang, OCR & KI-Kaskadierung bildet die intelligente Eingangspforte für alle unstrukturierten Belege und Nachrichten: Multi-Channel-Ingestion per IMAP/POP3, Web-Upload und Scanner, optische Texterkennung (OCR), semantische Dokumentenklassifikation, automatisches Kunden- und Lieferantenmatching sowie regel- und KI-basierte Folgekaskaden (z.B. Neukundenanfrage ➔ CRM-Lead, Mail-Bestellung eines Bestandskunden ➔ Verkaufsangebotsentwurf, Lieferantenrechnung ➔ Rechnungsprüfung).

⚡ Workflows & Lifecycles

Benutzerbefehl: mail triage agent plan:command_mail_triage_agent

Geprüfter Durable-Plan (durable_plan), Start: manual_command.

1. mail_triage_agent
mail_triage_agent
{"key": "execute_command", "label": "Befehl prüfen, ausführen oder zur Freigabe vorlegen", "adapter": "agent.execute", "agent": "mail_triage_agent", "condition_fact": null}
Aktionen: mail_triage_agent

Benutzerbefehl: reply agent plan:command_reply_agent

Geprüfter Durable-Plan (durable_plan), Start: manual_command.

1. reply_agent
reply_agent
{"key": "execute_command", "label": "Befehl prüfen, ausführen oder zur Freigabe vorlegen", "adapter": "agent.execute", "agent": "reply_agent", "condition_fact": null}
Aktionen: reply_agent

⚙️ Fachprozesse & Capabilities (System-Fachlogik)

Registrierte Fachoperationen und System-Capabilities dieses Moduls zur Steuerung von Workflows, Kaskaden und KI-Agenten.

Gesamt: 19 manual_entry: 1 engine: 15 operator_surface: 1 durable_plan: 2
Capability & Schlüssel Fachliche Bezeichnung Ausführung / Coverage Risikostufe & Freigabe Effekte & Kaskaden
Agent-Einstieg inbox_agent agent_entry:inbox_agent
Agent-Einstieg inbox_agent
Quelle: code:module_agent_map
manual_entry
✓ Auto
Keine Seiteneffekte deklariert
E-Mail senden capability:communication.compose
Op: communication.compose
Intent: send_mail
Quelle: code:capability_registry
⚙️ Engine
🔒 Freigabe nötig Risiko: external_effect
  • communication.sent
Termin aus E-Mail capability:communication.create_calendar_event
Op: communication.create_calendar_event
Intent: create_event_from_mail
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • calendar_event.created
Aufgabe aus E-Mail capability:communication.create_task
Op: communication.create_task
Intent: create_task_from_mail
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • task.created
E-Mail-Entwurf speichern capability:communication.draft
Op: communication.draft
Intent: draft_mail
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • communication.drafted
E-Mail markieren capability:communication.flag
Op: communication.flag
Intent: flag_mail
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • communication.flagged
E-Mail weiterleiten capability:communication.forward
Op: communication.forward
Intent: forward_mail
Quelle: code:capability_registry
⚙️ Engine
🔒 Freigabe nötig Risiko: external_effect
  • communication.forwarded
E-Mail zuordnen capability:communication.link_customer
Op: communication.link_customer
Intent: link_mail
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • communication.linked
E-Mail verschieben capability:communication.move_folder
Op: communication.move_folder
Intent: move_mail
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • communication.moved
Kommunikation verzeichnen capability:communication.record
Op: communication.record
Intent: record_communication
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: metadata
  • communication.recorded
Auf E-Mail antworten capability:communication.reply
Op: communication.reply
Intent: reply_mail
Quelle: code:capability_registry
⚙️ Engine
🔒 Freigabe nötig Risiko: external_effect
  • communication.replied
Communication: forward to inbox capability:communications.communication.forward_to_inbox
Op: communications.communication.forward_to_inbox
Objekt: communication
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • communication.forward_to_inbox
Communication: link context capability:communications.communication.link_context
Op: communications.communication.link_context
Objekt: communication
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • communication.link_context
Communication: record capability:communications.communication.record
Op: communications.communication.record
Objekt: communication
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • communication.record
Posteingangs-Regel anlegen capability:mail_rule.create
Op: mail_rule.create
Intent: create_mail_rule
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • mail_rule.created
Postfach synchronisieren capability:mailbox.sync
Op: mailbox.sync
Intent: sync_mailbox
Quelle: code:capability_registry
⚙️ Engine
✓ Auto Risiko: business_record
  • mailbox.synced
communication: edit form form_surface_anchor:communication.edit
Objekt: communication
Quelle: code:erp_form_surface
operator_surface
✓ Auto
Keine Seiteneffekte deklariert
Benutzerbefehl: mail triage agent plan:command_mail_triage_agent
Benutzerbefehl: mail triage agent
Quelle: code:reviewed_execution_plan
durable_plan
✓ Auto
Keine Seiteneffekte deklariert
Benutzerbefehl: reply agent plan:command_reply_agent
Benutzerbefehl: reply agent
Quelle: code:reviewed_execution_plan
durable_plan
✓ Auto
Keine Seiteneffekte deklariert

🧠 Fachprozess-Erzählung & Dual Knowledge Architektur

Synthese aus der ideologischen Blaupause (Meta-Fachlogik / Soll), der faktischen System-Implementierung (System-Fachlogik / Ist) und No-Code Customizing für KI-Consultants.

Dual Knowledge Layer
📖

Der durchgängige Businessprozess im Detail (End-to-End Fließtext-Erzählung)

Der durchgängige Posteingangs- und Belegverarbeitungsprozess in der Praxis

In jedem modernen Unternehmen treffen täglich hunderte Dokumente und E-Mails unstrukturiert ein: Angebote, Bestellungen, Rechnungen, Reklamationen und allgemeine Anfragen. Centurio ERP überführt diese Informationsflut durch intelligente Vorverarbeitung und automatisierte Kaskaden in strukturierte Geschäftsprozesse.

1. Multi-Channel-Posteingang & Dokumentenaufnahme

Das Modul inbox aggregiert alle Eingangskanäle an einem zentralen Ort:

  • E-Mail-Postfächer (communications): Über angebundene IMAP- oder Exchange-Postfächer (z.B. info@, einkauf@, vertrieb@, rechnung@) werden E-Mails inklusive aller Dateianhänge (PDF, TIFF, JPEG) automatisch im 60-Sekunden-Takt abgeholt.
  • Scanner & Digitalkopierer: Multifunktionsdrucker scannen Papierdokumente direkt in das ERP-Eingangspostfach (cap:inbox.item.create_from_scan).
  • Web-Upload & Mobile App: Mitarbeiter oder Kunden laden Belege per Drag & Drop oder Smartphone-Kamera hoch.

2. Optische Texterkennung (OCR) & Layout-Analyse

Sobald ein Dokument eintrifft, durchläuft es die OCR-Pipeline:

  • Volltext-Extraktion: Das System wandelt Bilddaten und gescannte PDFs in durchsuchbaren Reintext um.
  • Layout-Segmentierung: Die Engine erkennt Kopfdaten, Tabellenzeilen (z.B. Positionstabellen mit Artikel, Menge, Einzelpreis) und Fußzeilen (Steuerbeträge, IBAN, USt-IdNr.).

3. Semantische Klassifikation & Absender-Matching

Nun greift die integrierte KI- und Regel-Engine:

  • Absender-Identifikation: Die E-Mail-Adresse oder die im Beleg gefundene Firmierung/USt-IdNr. wird gegen den Datenbestand abgeglichen:
    • Ist es ein Bestandskunde (customers)?
    • Ist es ein Lieferant (suppliers)?
    • Handelt es sich um einen bisher unbekannten Dritten (Erstkontakt)?
  • Dokumenten-Klassifikation: Der Textinhalt wird semantisch kategorisiert:
    • Neukunden-Anfrage (Lead Inquiry)
    • Bestellung / Bestellanforderung (Purchase Order)
    • Eingangsrechnung / Gutschrift (Invoice)
    • Lieferanten-Auftragsbestätigung (Order Ack)
    • Reklamation / Mängelrüge (Complaint)
    • Allgemeine Korrespondenz / Spam

4. Die Kaskadierungs-Engine (Automatisierte Folgeprozesse)

Anhand des Absenders und der Absichtsklassifikation löst das System determinierte Fachkaskaden aus:

Fall A: Neukundenanfrage ➔ CRM-Lead-Kaskade
  • Kontext: E-Mail eines unbekannten Absenders mit Anforderung von Produktinformationen oder Beratung.
  • Ablauf: Das System legt automatisch einen neuen CrmLead im Status Neu an (cap:crm.lead.create_from_inbox). Die KI extrahiert Ansprechpartner, Firma, Telefonnummer und das Kernanliegen in strukturierte Felder und weist den Lead dem diensthabenden Vertriebsmitarbeiter zu.
Fall B: Mail-Bestellung eines bekannten Kunden ➔ Angebots-/Auftragsentwurf
  • Kontext: Ein bekannter Kunde schreibt: "Hallo, bitte liefert uns wie gewohnt 50x Artikel A und 20x Artikel B bis nächste Woche Dienstag."
  • Ablauf:
    1. Das System matcht die E-Mail auf das bestehende Kundenkonto (Customer).
    2. Die KI extrahiert die Artikelbezeichnungen und gleicht sie gegen den Artikelstamm (products) ab.
    3. Es wird automatisch ein Angebots- oder Auftragsentwurf (quotes, sales) angelegt (cap:quotes.quote.create_from_inbox).
    4. Dem zuständigen Sachbearbeiter wird ein fertiger Vorschlag zur Bestätigung vorgelegt: Er sieht das Originaldokument links und den vorbefüllten Beleg rechts, muss nur noch die Plausibilität prüfen und mit einem Klick freigeben.
Fall C: Lieferantenrechnung ➔ Eingangsrechnungsprüfung
  • Kontext: Eingehende Rechnung eines Lieferanten per PDF oder ZUGFeRD-XML.
  • Ablauf: Das System erzeugt den Beleg in der Rechnungsprüfung (invoices), liest Rechnungsnummer, IBAN und Rechnungsbetrag aus und startet sofort den 3-Wege-Abgleich gegen die offene Einkaufsbestellung (purchasing).

5. Revisionssichere Archivierung im Dokumentenmanagementsystem (DMS)

Nach erfolgreicher Verarbeitung oder manueller Zuordnung wird die Originaldatei nicht gelöscht:

  • Das Dokument wird mit einem unveränderbaren SHA-256 Prüfzeitstempel versehen und GoBD-konform im revisionssicheren DMS (documents) archiviert.
  • Der Beleg bleibt für die gesetzliche Aufbewahrungsfrist von 10 Jahren schreibgeschützt mit dem erzeugten ERP-Vorgang (Auftrag, Rechnung, Lead) verknüpft.
🏛️

Meta-Fachlogik: Ideologische Blaupause, Soll-Weltbild & Normen

Meta-Fachlogik: Die ideologische Blaupause & das normative Weltbild

Die Meta-Fachlogik des Posteingangs stützt sich auf die GoBD (Grundsätze zur ordnungsmäßigen Führung digitaler Unterlagen), das Handelsgesetzbuch (§ 257 HGB) und die Abgabenordnung (§ 147 AO).

1. GoBD-Vorschriften für den Belegeingang

  • Zeitgerechte Erfassung & Schutz vor Verlust (GoBD Rz. 45–52):
    • Jeder geschäftsrelevante Beleg muss unverzüglich nach Eintreffen protokolliert und gegen Verlust gesichert werden.
    • Das Soll-Modell verlangt ein zentrales Eingangsprotokoll, das jedes Dokument erfasst, bevor Fachbereiche Manipulationen oder Löschungen vornehmen können.
  • Originalgetreue Aufbewahrung:
    • Elektronisch eingegangene Belege (z.B. E-Mail-Anhänge) müssen zwingend in dem Format aufbewahrt werden, in dem sie eingegangen sind (keine bloße Papierablage nach Ausdruck!).
    • Einbettung von Prüfsummen und revisionssicheren Zeitstempeln.

2. KI als Assistenz vs. rechtliche Verbindlichkeit

  • Der Grundsatz der menschlichen Kontrollschranke:
    • Eine KI-Klassifikation oder ein OCR-Ergebnis stellt rechtlich lediglich einen Bearbeitungsvorschlag dar.
    • Das Soll-Modell verbietet das vollautomatische Festschreiben haftungs- oder finanzrelevanter Verträge ohne menschliche Verifikation oder explizit konfigurierte Freigabeschranken (Human-in-the-Loop).

3. Invarianten des Soll-Modells

  1. Kein Posteingangsdokument darf vor Ablauf der gesetzlichen Aufbewahrungsfrist gelöscht werden.
  2. Jeder verarbeitete Beleg muss einen permanenten Link zum erzeugten ERP-Geschäftsobjekt tragen.
  3. Eingehende Rechnungen dürfen nicht stillschweigend gebucht werden, ohne den Nachweis des Belegeingangs festzuschreiben.

Normbezug für communications

Prüfkatalog Standards-Registry v2026.10.1. Dieser Abschnitt ordnet Prüfreferenzen zu und stellt nicht fest, dass das Modul eine Norm einhält; keine Kataloganforderung ist als PASS bewertet.

Geführte Prüfreferenzen:

  • eu-gdpr-2016-679, Regulation (EU) 2016/679 (General Data Protection Regulation, GDPR/DSGVO), Ausgabe Regulation (EU) 2016/679, anwendbar ab 2018-05-25. Art: regulatory. Öffentlicher Text. Die Nennung ist keine Klauselprüfung. Keine modulspezifische Kataloganforderung. Die Zuordnung bleibt eine Prüfreferenz.

Im Auditauftrag zusätzlich genannt und nicht im Prüfkatalog v2026.10.1: SMTP, IMAP, MIME. Dafür gibt es hier keine Klausel und keine Aussage, dass eine Vorgabe eingehalten wird.

Plattformweite Katalogwerke mit Geltungsbereich all (unter anderem WCAG 2.2, EN 301 549 V4.1.1, ISO 9241-110:2020, ISO 9241-210:2019, ISO/IEC 25010:2023, ISO 9001:2026, ISO/IEC 27001:2022, APQC PCF 8.0, DSGVO, EU AI Act) umfassen dieses Modul mit. Wo der Volltext fehlt, bleibt der Zugang ohne Quelle, lizenzpflichtig oder nur als öffentliche Zusammenfassung gekennzeichnet. Auch diese Nennung weist keine eingehaltene Vorgabe nach.

⚙️

Systemische Fachlogik: Faktische Umsetzung in Centurio ERP & Capabilities

Systemische Fachlogik: Die faktische Umsetzung in Centurio ERP

Die System-Fachlogik dokumentiert die Realisierung im Modul inbox und der Dokumentenablage documents.

1. Datenmodelle & Semantische Schicht (ORM)

  • InboxItem: Posteingangseintrag (Felder: id, tenant_id, item_type [email, scan, upload, webhook], source_identifier, sender_address, subject, received_at, status [new, parsed, classified, processed, ignored], matched_customer_id, matched_supplier_id, classified_category, confidence_score).
  • InboxAttachment: Angehängte Dokumente (Felder: inbox_item_id, file_name, mime_type, file_size_bytes, storage_path, ocr_text).
  • Document: Revisionssicher archiviertes Dokument im DMS mit SHA-256 Hash.

2. Das Capability-Register

  • cap:inbox.item.create: Empfang und Speicherung einer neuen Eingangsnachricht.
  • cap:inbox.item.run_ocr: Ausführung der optischen Texterkennung und Layoutextraktion.
  • cap:inbox.item.classify: Semantische Klassifikation der Absicht (Lead, Order, Invoice).
  • cap:inbox.item.match_partner: Abgleich des Absenders gegen Kunden- und Lieferantenstamm.
  • cap:inbox.item.trigger_cascade: Ausführung der determinierten Folgekaskade (z.B. Lead-Anlage oder Angebotsentwurf).
  • cap:inbox.item.archive_to_dms: Revisionssichere Festschreibung im DMS.

3. Der Gateway gw:inbox_cascade@v1

Sichert die automatisierte Weiterleitung ab:

  1. Plausibilität: Prüft Klassifikations-Konfidenz (z.B. Score > 0.85).
  2. Kaskaden-Ausführung: Erzeugt transaktional das Folgeobjekt (Lead in crm, Quote-Draft in quotes oder Eingangsrechnung in invoices).
  3. Verknüpfung: Verlinkt die Originaldatei mit dem erzeugten Vorgang.
  4. Signal: Feuert INBOX_CASCADE_EXECUTED.

4. Statusmodelle

new (Eingegangen) ➔ ocr_processed (Text extrahiert) ➔ classified (Kategorie erkannt) ➔ proposal_generated (Vorschlag vorliegend) ➔ processed (In ERP überführt) oder ignored (Spam/Privat).

🤖

KI-Consultant Leitfaden: Customizing- & No-Code-Konzept (Soll-Ist-Synthese)

AI Solution Architect Blueprint

KI-Consultant Blueprint: Customizing & No-Code Architektur

Anleitung für Solution Architects zur Einrichtung automatisierter Posteingangs- und Belegkaskaden.

1. Kundenanforderungsanalyse

  • Welche E-Mail-Postfächer sollen angebunden werden?
  • Sollen eingehende Mail-Bestellungen sofort als verbindlicher Auftrag oder als vorbefülltes Angebot angelegt werden?
  • Welche Schwellenwerte für KI-Konfidenz sollen gelten (z.B. ab 85% automatische Zuordnung, darunter manuelle Prüfung)?

2. No-Code Zusatzfelder (Custom Fields)

Im No-Code Studio (/semantic/customizing):

  • Auf InboxItem:
    • cost_center_hint (Text): Automatisch erkannte Kostenstelle im Rechnungstext.
    • urgency_level (Auswahlliste: Normal, Dringend, Notfall): Steuert die Priorisierung im Postkorb.

3. No-Code Workflow Canvas DAGs

Blueprint A: E-Mail-Bestellung eines Stammkunden ➔ Angebotsentwurf
  • Trigger-Node: Event INBOX_MESSAGE_CLASSIFIED mit Kategorie Customer Order.
  • Condition-Node: inbox_item.matched_customer_id != null AND inbox_item.confidence_score >= 0.80.
  • Action-Node 1: Rufe cap:quotes.quote.create_from_inbox auf und übernehme extrahierte Artikel.
  • Action-Node 2: Erzeuge eine Prüfaufgabe für den Innendienstmitarbeiter: Angebotsentwurf aus Mail bestätigen.
  • Notification-Node: Sende sofortige Eingangsbestätigung an den Kunden: "Vielen Dank, Ihre Anfrage wird bearbeitet."
Blueprint B: Automatische Lead-Generierung bei Neukunden
  • Trigger-Node: Event INBOX_MESSAGE_CLASSIFIED mit Kategorie Lead Inquiry.
  • Condition-Node: inbox_item.matched_customer_id == null.
  • Action-Node: Rufe cap:crm.lead.create_from_inbox auf und setze Lead-Status auf new.

📚 Operative Prozessbegriffe & Transaktionsschnittstellen

Zentrale Fachbegriffe im Prozesszusammenhang (Operatives Modell)
OCR (Optical Character Recognition)
Optische Texterkennung zur Umwandlung von Bilddaten in maschinenlesbaren Volltext.
Semantische Klassifikation
Inhaltliche Erkennung der Absicht eines Dokuments (z.B. Bestellung, Rechnung, Lead).
Kaskadierung
Automatisierter Anstoß nachgelagerter ERP-Vorgänge anhand von Klassifikationsergebnissen.
Absender-Matching
Automatisierter Abgleich von E-Mail-Adresse und Firmenname gegen die Stammdaten.
GoBD-Belegarchivierung
Revisionssichere, unveränderbare Speicherung von Originaldokumenten für 10 Jahre.
Human-in-the-Loop Vorschlag
Vorbefüllter Belegentwurf, der vor Festschreibung durch einen Menschen bestätigt werden muss.
📥 Eingänge & Trigger (Inputs)
  • Eingehende E-Mails über IMAP/Exchange-Postfächer
  • Gescannte Papierdokumente von Netzwerk-Multifunktionsgeräten
  • Web-Uploads von Rechnungen und Lieferscheinen durch Benutzer
  • Digitale Beleg-Zustellungen über API-Connectoren
📤 Ausgänge & Arbeitsergebnisse (Outputs)
  • Strukturierte ERP-Vorgänge (CRM-Leads, Angebotsentwürfe, Rechnungen)
  • Revisionssichere PDF/A-Archivdokumente im zentralen DMS
  • Extrahierte Volltexte und Metadaten für die globale Suche
  • Automatische Empfangs- und Eingangsbestätigungen an Absender
⚡ Kaskaden & Folgeprozesse (Cascades)
  • inbox_lead_classified -> create_crm_lead: Automatische Anlage einer Verkaufschance
  • inbox_order_classified -> create_quote_draft: Vorbefüllung eines Angebotsentwurfs
  • inbox_invoice_classified -> trigger_incoming_invoice_match: Start des 3-Wege-Abgleichs
  • inbox_processed -> archive_document_to_dms: GoBD-konforme Festschreibung im Dokumentenarchiv
🛡️ Nebenprozesse & Resilienz
  • Aussortierung von Spam und privaten E-Mails vor Geschäftsarchivierung
  • Manuelle Nachkorrektur bei unleserlichen Scans oder OCR-Fehlern
  • Belegsplit bei mehrseitigen Sammel-PDFs mit mehreren Dokumenten
  • Prüfung auf Schadsoftware und Makroviren vor Verarbeitung von Anhängen
💡 No-Code Checkliste & Praxistipps
  • Postfach-Konnektoren mit TLS-Verschlüsselung und OAuth2/App-Passwörtern konfigurieren
  • Mindest-Konfidenzwerte für vollautomatische Kaskadierung einstellen
  • Standard-Verantwortliche für ungeklärte Posteingänge zuweisen
  • No-Code Zusatzfelder für Kostenstellenhinweise und Dringlichkeit auf InboxItem anlegen

🗄️ Data Models & Fields

Communications communications RLS Aktiv
28 Fields / Columns

Tabelle communications

Feldname Data Type Required Schlüssel Functional Meaning
channel VARCHAR(32) Ja * - Feld channel
direction VARCHAR(16) Ja * - Feld direction
sender VARCHAR(320) Nein - Feld sender
recipients ARRAY Ja * - Feld recipients
subject VARCHAR(512) Nein - Feld subject
body_text TEXT Nein - Feld body_text
body_html TEXT Nein - Feld body_html
sent_at DATETIME Nein - Feld sent_at
customer_id UUID Nein FK ➔ customers.id Feld customer_id
project_id UUID Nein FK ➔ projects.id Feld project_id
mailbox_account_id UUID Nein FK ➔ mailbox_accounts.id Feld mailbox_account_id
folder VARCHAR(32) Ja * - Feld folder
is_read BOOLEAN Ja * - Feld is_read
is_flagged BOOLEAN Ja * - Feld is_flagged
in_reply_to VARCHAR(512) Nein - Feld in_reply_to
references TEXT Nein - Feld references
thread_key VARCHAR(512) Nein - Feld thread_key
message_uid INTEGER Nein - Feld message_uid
external_message_id VARCHAR(512) Nein - Feld external_message_id
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
created_by UUID Nein - Feld created_by
updated_by UUID Nein - Feld updated_by
source_type VARCHAR(32) Nein - Feld source_type
source_id UUID Nein - Feld source_id
metadata JSONB Ja * - Feld metadata
NetworkCapabilities network_capabilities RLS Aktiv
10 Fields / Columns

Tabelle network_capabilities

Feldname Data Type Required Schlüssel Functional Meaning
profile_id UUID Ja * FK ➔ network_profiles.id Feld profile_id
name VARCHAR(128) Ja * - Feld name
level VARCHAR(32) Nein - Feld level
certified BOOLEAN Ja * - Feld certified
notes TEXT Nein - Feld notes
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
metadata JSONB Ja * - Feld metadata
NetworkMatches network_matches RLS Aktiv
15 Fields / Columns

Tabelle network_matches

Feldname Data Type Required Schlüssel Functional Meaning
demand_id UUID Ja * - Feld demand_id
candidate_type VARCHAR(32) Ja * - Feld candidate_type
candidate_id UUID Ja * - Feld candidate_id
candidate_name VARCHAR(255) Ja * - Feld candidate_name
score NUMERIC(5, 4) Ja * - Feld score
status VARCHAR(48) Ja * - Feld status
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
created_by UUID Nein - Feld created_by
updated_by UUID Nein - Feld updated_by
source_type VARCHAR(32) Nein - Feld source_type
source_id UUID Nein - Feld source_id
metadata JSONB Ja * - Feld metadata
NetworkOfferings network_offerings RLS Aktiv
14 Fields / Columns

Tabelle network_offerings

Feldname Data Type Required Schlüssel Functional Meaning
profile_id UUID Ja * FK ➔ network_profiles.id Feld profile_id
title VARCHAR(255) Ja * - Feld title
description TEXT Nein - Feld description
product_id UUID Nein - Feld product_id
price NUMERIC(14, 2) Nein - Feld price
currency VARCHAR(3) Ja * - Feld currency
availability VARCHAR(32) Nein - Feld availability
lead_time_days INTEGER Nein - Feld lead_time_days
active BOOLEAN Ja * - Feld active
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
metadata JSONB Ja * - Feld metadata
NetworkProfiles network_profiles RLS Aktiv
18 Fields / Columns

Tabelle network_profiles

Feldname Data Type Required Schlüssel Functional Meaning
profile_type VARCHAR(48) Ja * - Feld profile_type
linked_entity_type VARCHAR(32) Nein - Feld linked_entity_type
linked_entity_id UUID Nein - Feld linked_entity_id
display_name VARCHAR(255) Ja * - Feld display_name
description TEXT Nein - Feld description
vat_id VARCHAR(32) Nein - Feld vat_id
address_text TEXT Nein - Feld address_text
visibility VARCHAR(16) Ja * - Feld visibility
active BOOLEAN Ja * - Feld active
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
created_by UUID Nein - Feld created_by
updated_by UUID Nein - Feld updated_by
source_type VARCHAR(32) Nein - Feld source_type
source_id UUID Nein - Feld source_id
metadata JSONB Ja * - Feld metadata
Notifications notifications RLS Aktiv
19 Fields / Columns

Tabelle notifications

Feldname Data Type Required Schlüssel Functional Meaning
user_id UUID Ja * FK ➔ users.id Feld user_id
kind VARCHAR(32) Ja * - Feld kind
title VARCHAR(255) Ja * - Feld title
body TEXT Nein - Feld body
link VARCHAR(512) Nein - Feld link
entity_type VARCHAR(64) Nein - Feld entity_type
entity_id UUID Nein - Feld entity_id
actor_user_id UUID Nein FK ➔ users.id Feld actor_user_id
dedupe_key VARCHAR(160) Nein - Feld dedupe_key
read_at DATETIME Nein - Feld read_at
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
created_by UUID Nein - Feld created_by
updated_by UUID Nein - Feld updated_by
source_type VARCHAR(32) Nein - Feld source_type
source_id UUID Nein - Feld source_id
metadata JSONB Ja * - Feld metadata

🔌 Entry Points (UI & APIs)

Art Method Endpoint / Path Titel & Zweck Required Role
⚡ REST API DELETE /api/v1/communications/mailboxes/{account_id}
delete_mailbox
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API DELETE /api/v1/communications/mailboxes/{account_id}/rules/{rule_id}
delete_rule
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API DELETE /api/v1/communications/signatures/{sig_id}
delete_signature
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API DELETE /api/v1/communications/{comm_id}
delete_communication
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API GET /api/v1/communications
list_communications
Semantic binding: inventory_only; mutation=False
communications
⚡ REST API GET /api/v1/communications/addressbook
get_addressbook
Semantic binding: inventory_only; mutation=False
communications
⚡ REST API GET /api/v1/communications/folders/counts
folder_counts
Semantic binding: inventory_only; mutation=False
communications
⚡ REST API GET /api/v1/communications/mailboxes
list_mailboxes
Semantic binding: inventory_only; mutation=False
communications
⚡ REST API GET /api/v1/communications/mailboxes/presets
get_mailbox_presets
Semantic binding: inventory_only; mutation=False
communications
⚡ REST API GET /api/v1/communications/mailboxes/{account_id}
get_mailbox
Semantic binding: inventory_only; mutation=False
communications
⚡ REST API GET /api/v1/communications/mailboxes/{account_id}/rules
list_rules
Semantic binding: inventory_only; mutation=False
communications
⚡ REST API GET /api/v1/communications/settings
get_comm_settings
Semantic binding: inventory_only; mutation=False
communications
⚡ REST API GET /api/v1/communications/signatures
list_signatures
Semantic binding: inventory_only; mutation=False
communications
⚡ REST API GET /api/v1/communications/{comm_id}
get_communication
Semantic binding: inventory_only; mutation=False
communications
⚡ REST API GET /api/v1/communications/{comm_id}/event-suggestion
mail_event_suggestion
Semantic binding: inventory_only; mutation=False
communications
⚡ REST API GET /api/v1/communications/{comm_id}/thread
get_thread
Semantic binding: inventory_only; mutation=False
communications
⚡ REST API GET /api/v1/meetings/{room_key}
meeting_info
Semantic binding: inventory_only; mutation=False
communications
⚡ REST API GET /api/v1/network/demands
list_demands
Semantic binding: inventory_only; mutation=False
communications
⚡ REST API GET /api/v1/network/profiles
list_profiles
Semantic binding: inventory_only; mutation=False
communications
⚡ REST API GET /api/v1/notifications
list_notifications
Semantic binding: inventory_only; mutation=False
communications
⚡ REST API GET /api/v1/notifications/count
unread_count
Semantic binding: inventory_only; mutation=False
communications
⚡ REST API GET /communications
communications_page
Semantic binding: inventory_only; mutation=False
communications
⚡ REST API PATCH /api/v1/network/demands/{demand_id}/status
update_demand_status
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API POST /api/v1/communications/bulk
bulk_action
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API POST /api/v1/communications/compose
compose_message
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API POST /api/v1/communications/drafts
save_draft
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API POST /api/v1/communications/mailboxes
create_mailbox
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API POST /api/v1/communications/mailboxes/autodiscover
autodiscover_mailbox
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API POST /api/v1/communications/mailboxes/sync-all
sync_all_mailboxes
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API POST /api/v1/communications/mailboxes/test-draft
test_draft_mailbox
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API POST /api/v1/communications/mailboxes/{account_id}/rules
create_rule
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API POST /api/v1/communications/mailboxes/{account_id}/sync
sync_mailbox_now
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API POST /api/v1/communications/mailboxes/{account_id}/test
test_mailbox_connection
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API POST /api/v1/communications/signatures
create_signature
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API POST /api/v1/communications/{comm_id}/context
update_communication_context
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API POST /api/v1/communications/{comm_id}/event
create_event_from_communication
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API POST /api/v1/communications/{comm_id}/flags
set_flags
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API POST /api/v1/communications/{comm_id}/forward
forward_message
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API POST /api/v1/communications/{comm_id}/forward-to-inbox
forward_communication_to_inbox
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API POST /api/v1/communications/{comm_id}/move
move_message
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API POST /api/v1/communications/{comm_id}/reply
reply_message
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API POST /api/v1/communications/{comm_id}/task
create_task_from_communication
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API POST /api/v1/meetings
create_meeting
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API POST /api/v1/meetings/{room_key}/end
end_meeting
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API POST /api/v1/meetings/{room_key}/invite
invite
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API POST /api/v1/network/capabilities
create_capability
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API POST /api/v1/network/demands
create_demand
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API POST /api/v1/network/demands/{demand_id}/convert
convert_lead
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API POST /api/v1/network/demands/{demand_id}/match
match_demand
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API POST /api/v1/network/demands/{demand_id}/propose
create_proposal
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API POST /api/v1/network/profiles
create_profile
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API POST /api/v1/notifications/read
mark_read
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API PUT /api/v1/communications/mailboxes/{account_id}
update_mailbox
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API PUT /api/v1/communications/mailboxes/{account_id}/rules/{rule_id}
update_rule
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API PUT /api/v1/communications/settings
put_comm_settings
Semantic binding: operator_surface; mutation=True
communications
⚡ REST API PUT /api/v1/communications/signatures/{sig_id}
update_signature
Semantic binding: operator_surface; mutation=True
communications

🛡️ Regulatory & Compliance

Dieses Modul unterliegt folgenden gesetzlichen, regulatorischen und Revisionsstandards:

  • GoBD Nachvollziehbarkeit
  • Mandanten-Isolation (PostgreSQL RLS)