Files
rorappandClaude Opus 5.5 9442cc49d1
ci / test (push) Successful in 27s
ontology: Ontologie als Quelle im Repo, Abgleich mit n8n/KNOW in der Service-Routine
- ontology/know.yaml: 49 Klassen, 66 Beziehungen, 12 Vokabulare (72 Konzepte);
  erzeugt: know.ttl (OWL + SKOS), Ansicht aus viewer.html.tmpl
- knaster.ontology: Modell + Prüfung, Export, Momentaufnahme der n8n-Workflows
  (nur GET; KNOW-Spezifikation aus dem Workflow-Code, Aufrufe inkl. Laufzeit-
  Operationen, direktes SQL), Abgleich, Übernahme von Entscheidungen
- Service-Routine Schritt 8: Verstöße als Befunde, Ontologie-Änderungen als
  Vorschläge ontology_change (immer Freigabe); „ordne P-x <konzept> zu“;
  Entscheidungen in ontology_decisions, `knaster ontology apply` schreibt sie
  in die YAML (Version +1)
- CLI: knaster ontology validate|export|snapshot|check|apply; knaster validate
  prüft Modell und Aktualität der Turtle-Datei
- Gegen echten n8n-Export geprüft: neue Befunde B31–B33 (verified/confirmed,
  KAN ruft unbekannte Operation, MPA ordnet Projektereignisse nie ein)
- SPEC-ontology, BETRIEB §6, Router-Image enthält die Ontologie

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 02:54:49 +02:00

1293 lines
34 KiB
YAML

# KNOW-Ontologie: Quelle der Wahrheit für Begriffe, Beziehungen und Vokabulare der n8n-Wissensdatenbank.
# Pflege: SPEC-ontology.md. Kern (classes, relations) per Commit; Vokabulare wachsen über Vorschläge der
# Service-Routine und `knaster ontology apply`. Erzeugt: Turtle, Graph, Webseite (`knaster ontology export`).
id: know
version: 1
label: KNOW-Ontologie
namespace: urn:mygodel:know#
modules:
mail: Mail & Absender
kanbau: Kontakte & Projekte
docs: Dokumente
kaf: Ankauf (KAF)
finance: Buchhaltung
learning: Lernen
agent: Agent
bsb: Browser-Sessions
llm: LLM-Worker
system: Externe Systeme
classes:
Postfach:
label: Postfach
module: mail
definition: Ein Microsoft-365-Postfach, das die Workflows lesen. Es gibt keine eigene Tabelle, das Postfach steckt in
der Spalte mailbox mehrerer Tabellen.
key: mailbox
Mail:
label: Mail
module: mail
definition: Eine eingegangene und klassifizierte Mail.
table: mail_events
key: message_id
sensitive: Absender und Betreff jeder verarbeiteten Mail
attributes:
id: BIGSERIAL
message_id: TEXT
mailbox: TEXT
sender: TEXT
subject: TEXT
received_at: TIMESTAMPTZ
category: TEXT
assigned_project_key: TEXT
workflow_status: TEXT
raw_signals: JSONB
last_processed_at: TIMESTAMPTZ
Absender:
label: Absender
module: mail
definition: Absenderadresse, beobachtet in einem Postfach über ein Zeitfenster (Profil mit Kategorien, Junk-Anteil, Abmelde-Link).
table: sender_observations
key: observation_key
attributes:
id: BIGSERIAL
observation_key: TEXT
mailbox: TEXT
email: TEXT
registered_domain: TEXT
display_name: TEXT
window_from: TIMESTAMPTZ
window_to: TIMESTAMPTZ
mail_count: INTEGER
junk_count: INTEGER
category_histogram: JSONB
dominant_category: TEXT
dominant_share: NUMERIC
avg_confidence: NUMERIC
absender_typ: TEXT
mail_art: TEXT
unsubscribe_url: TEXT
unsubscribe_mailto: TEXT
unsubscribe_one_click: BOOLEAN
first_mail_at: TIMESTAMPTZ
last_mail_at: TIMESTAMPTZ
subjects_sample: JSONB
source: TEXT
created_at: TIMESTAMPTZ
updated_at: TIMESTAMPTZ
Domain:
label: Domain
module: mail
definition: Registrierte Domain eines Absenders; bekannte Plattformen sind eigens markiert.
table: platform_domains
key: registered_domain
attributes:
id: BIGSERIAL
registered_domain: TEXT
display_name: TEXT
status: TEXT
source: TEXT
evidence_json: JSONB
first_seen_at: TIMESTAMPTZ
last_seen_at: TIMESTAMPTZ
updated_at: TIMESTAMPTZ
Postfachzugriff:
label: Postfachzugriff
module: mail
definition: Delegierter Zugriff auf ein Postfach (OAuth-Token, verschlüsselt gespeichert).
table: mailbox_grants
key: grant_key + provider
sensitive: OAuth-Tokens, verschlüsselt (AES-256-GCM)
attributes:
id: BIGSERIAL
grant_key: TEXT
provider: TEXT
scope: TEXT
token_ciphertext: TEXT
token_iv: TEXT
token_tag: TEXT
token_alg: TEXT
expires_hint: TIMESTAMPTZ
status: TEXT
source_workflow: TEXT
created_at: TIMESTAMPTZ
updated_at: TIMESTAMPTZ
MailKategorie:
label: Mail-Kategorie
module: mail
definition: 'Fachliche Kategorie einer Mail mit Regeln: ab wie vielen Beobachtungen die KI übersprungen wird, Priorität,
Modellwahl, Safety-Floor.'
table: workflow_hint_config
key: config_key
attributes:
config_key: TEXT
min_observations_for_skip_ai: INTEGER
priority_level: TEXT
preferred_model: TEXT
safety_floor: BOOLEAN
relevance_weight: NUMERIC
outlook_category: TEXT
requires_action: BOOLEAN
description: TEXT
updated_at: TIMESTAMPTZ
Projekt:
label: Projekt
module: kanbau
definition: Bauprojekt aus KanBau mit Adresse und Kürzel.
table: projects
key: project_key
attributes:
id: BIGSERIAL
project_key: TEXT
kanbau_project_id: TEXT
project_number: TEXT
project_name: TEXT
short_code: TEXT
company_context: TEXT
street: TEXT
zip: TEXT
city: TEXT
full_address: TEXT
normalized_address: TEXT
status: TEXT
raw_kanbau_json: JSONB
last_synced_at: TIMESTAMPTZ
created_at: TIMESTAMPTZ
updated_at: TIMESTAMPTZ
ProjektAlias:
label: Projekt-Alias
module: kanbau
definition: 'Andere Bezeichnung für ein Projekt: Adresse, Kürzel oder ein aus Mails gelerntes Token.'
table: project_aliases
key: alias_key
attributes:
id: BIGSERIAL
alias_key: TEXT
project_key: TEXT
kanbau_project_id: TEXT
alias_type: TEXT
alias_value: TEXT
normalized_value: TEXT
source_workflow: TEXT
confidence: NUMERIC
evidence_json: JSONB
quality_status: TEXT
verified_at: TIMESTAMPTZ
created_at: TIMESTAMPTZ
Kontakt:
label: Kontakt
module: kanbau
definition: Firma oder Person mit Kontaktdaten, Steuernummern und Relevanz-Score.
table: contacts
key: contact_key
sensitive: 'Personenbezogen: E-Mail, Telefon, Steuer-Nr., USt-IdNr. (IBAN nur als Hash)'
attributes:
id: BIGSERIAL
contact_key: TEXT
contact_type: TEXT
display_name: TEXT
legal_name: TEXT
normalized_name: TEXT
email: TEXT
phone: TEXT
website: TEXT
tax_id: TEXT
vat_id: TEXT
iban_hash: TEXT
address_json: JSONB
source: TEXT
source_confidence: NUMERIC
kanbau_address_id: TEXT
raw_evidence_json: JSONB
quality_status: TEXT
first_seen_at: TIMESTAMPTZ
last_seen_at: TIMESTAMPTZ
verified_at: TIMESTAMPTZ
created_at: TIMESTAMPTZ
updated_at: TIMESTAMPTZ
business_relevance_score: NUMERIC
KontaktAlias:
label: Kontakt-Alias
module: kanbau
definition: Andere Schreibweise eines Kontakts.
table: contact_aliases
key: alias_key
attributes:
id: BIGSERIAL
alias_key: TEXT
contact_key: TEXT
alias_type: TEXT
alias_value: TEXT
normalized_value: TEXT
source_workflow: TEXT
confidence: NUMERIC
evidence_json: JSONB
quality_status: TEXT
created_at: TIMESTAMPTZ
Projektbeteiligung:
label: Projektbeteiligung
module: kanbau
definition: Rolle eines Kontakts in einem Projekt, mit Gültigkeitszeitraum (reifizierte Beziehung).
table: contact_project_relations
key: relation_key
attributes:
id: BIGSERIAL
relation_key: TEXT
contact_key: TEXT
project_key: TEXT
relation_type: TEXT
confidence: NUMERIC
source_workflow: TEXT
evidence_json: JSONB
valid_from: DATE
valid_to: DATE
quality_status: TEXT
created_at: TIMESTAMPTZ
Projektereignis:
label: Projektereignis
module: kanbau
definition: Aus einer Mail erkanntes Ereignis zu einem Projekt (Verzögerung, Mangel, Termin, Kosten, Info) mit Dringlichkeit.
table: project_events
key: message_id
attributes:
id: BIGSERIAL
message_id: TEXT
project_key: TEXT
mailbox: TEXT
sender: TEXT
event_date: TIMESTAMPTZ
category: TEXT
affected_unit: TEXT
urgency: TEXT
summary: TEXT
sharepoint_path: TEXT
quality_status: TEXT
source_workflow: TEXT
created_at: TIMESTAMPTZ
updated_at: TIMESTAMPTZ
Ereignisart:
label: Ereignisart
module: kanbau
definition: Art eines Projektereignisses. Als CHECK-Constraint der Spalte project_events.category festgelegt.
key: category
Projektordner:
label: Projektordner
module: kanbau
definition: SharePoint-Ordner eines Projekts.
table: project_folders
key: project_key + drive_id
attributes:
id: BIGSERIAL
project_key: TEXT
drive_id: TEXT
folder_item_id: TEXT
folder_path: TEXT
folder_name: TEXT
verified_at: TIMESTAMPTZ
source_workflow: TEXT
created_at: TIMESTAMPTZ
updated_at: TIMESTAMPTZ
Projektkuerzel:
label: Projektkürzel
module: kanbau
definition: Kürzel einer Baustelle mit der zuständigen Gesellschaft.
table: project_companies
key: kuerzel
attributes:
kuerzel: TEXT
gesellschaft: TEXT
quelle: TEXT
bestaetigt: BOOLEAN
baustelle: TEXT
evidence_json: JSONB
created_at: TIMESTAMPTZ
updated_at: TIMESTAMPTZ
Gesellschaft:
label: Gesellschaft
module: kanbau
definition: Rechtsträger, dem Projekte und Rechnungen zugeordnet werden. Als CHECK-Constraint festgelegt.
key: gesellschaft
Rechnungsbeobachtung:
label: Rechnungsbeobachtung
module: kanbau
definition: In einer Rechnung (Mail-Anhang) beobachtete Zuordnung Kürzel → Gesellschaft.
table: invoice_company_observations
key: message_id + file_name
attributes:
message_id: TEXT
file_name: TEXT
kuerzel: TEXT
gesellschaft: TEXT
mailbox: TEXT
source_workflow: TEXT
created_at: TIMESTAMPTZ
updated_at: TIMESTAMPTZ
Dokument:
label: Dokument
module: docs
definition: Oberbegriff für alle gespeicherten Dokumente und Extraktionen (abstrakt).
abstract: true
AnhangExtraktion:
label: Anhang-Extraktion
module: docs
definition: Text und strukturierte Felder, die aus einem Mail-Anhang gelesen wurden.
table: document_extractions
key: id
sensitive: Extrahierter Volltext von Anhängen
subclass_of: Dokument
attributes:
id: BIGSERIAL
request_id: TEXT
message_id: TEXT
mailbox: TEXT
attachment_id: TEXT
file_name: TEXT
content_type: TEXT
extraction_source: TEXT
document_type: TEXT
sender_contact_key: TEXT
project_key: TEXT
extracted_text: TEXT
structured_json: JSONB
detected_addresses_json: JSONB
detected_contacts_json: JSONB
confidence: NUMERIC
created_at: TIMESTAMPTZ
Ankaufsfall:
label: Ankaufsfall
module: kaf
definition: 'Grundstück oder Objekt in der Ankaufsprüfung: Pipeline-Status, Ergebnis, Fristen, Angebote, Unterlagen, Risiko.'
table: property_development_cases
key: case_key
sensitive: Kaufpreise, Provisionen und Besprechungsmitschriften
attributes:
id: BIGSERIAL
case_key: TEXT
name: TEXT
normalized_name: TEXT
status: TEXT
pipeline_status: TEXT
outcome_status: TEXT
case_code: TEXT
case_opened_at: DATE
folder_name: TEXT
folder_path: TEXT
folder_status_source: TEXT
source_channel: TEXT
location_city: TEXT
location_district: TEXT
street_address: TEXT
assigned_to: TEXT
asset_type: TEXT
process_type: TEXT
notes: TEXT
property_size_sqm: NUMERIC
original_purchase_price_eur: NUMERIC
average_price_per_sqm_eur: NUMERIC
commission_including_vat: TEXT
apartment_count: INTEGER
development_plan_available: BOOLEAN
godel_internal: BOOLEAN
contact_broker: TEXT
start_date: DATE
offer_deadline: DATE
offer_submitted_at: DATE
last_offer_at: DATE
offer_count: INTEGER
review_status: TEXT
review_result: TEXT
meeting_transcripts: TEXT
just_one_week_more: BOOLEAN
deadline_is_overdue: BOOLEAN
godel_offer: TEXT
project_lead: TEXT
planning: TEXT
nda_present: BOOLEAN
loi_present: BOOLEAN
bplan_document_present: BOOLEAN
wirtschaftlichkeit_present: BOOLEAN
purchase_offer_present: BOOLEAN
building_permit_present: BOOLEAN
risk_summary: TEXT
missing_documents: JSONB
next_action: TEXT
next_action_due_at: DATE
last_document_at: DATE
document_count: INTEGER
case_readiness: TEXT
detected_documents: JSONB
risk_level: TEXT
readiness_json: JSONB
source_system: TEXT
sharepoint_json: JSONB
raw_evidence_json: JSONB
quality_status: TEXT
confidence: NUMERIC
first_seen_at: TIMESTAMPTZ
last_seen_at: TIMESTAMPTZ
created_at: TIMESTAMPTZ
updated_at: TIMESTAMPTZ
confirmation_token_hash: TEXT
confirmation_status: TEXT
confirmation_expires_at: TIMESTAMPTZ
selected_project_id: TEXT
created_saleagr_id: TEXT
created_saleagr_url: TEXT
confirmation_request_id: TEXT
Falldokument:
label: Falldokument
module: kaf
definition: Unterlage zu einem Ankaufsfall aus SharePoint, mit Dokumenttyp und Versionierung.
table: property_development_documents
key: document_key
subclass_of: Dokument
attributes:
id: BIGSERIAL
case_key: TEXT
document_key: TEXT
sharepoint_item_id: TEXT
file_name: TEXT
file_path: TEXT
folder_segment: TEXT
document_type: TEXT
document_date: DATE
received_at: DATE
author_or_sender: TEXT
source_party: TEXT
extracted_summary: TEXT
extracted_fields_json: JSONB
confidence: NUMERIC
is_current_version: BOOLEAN
supersedes_document_key: TEXT
processing_status: TEXT
created_at: TIMESTAMPTZ
updated_at: TIMESTAMPTZ
Dokumenttyp:
label: Dokumenttyp
module: kaf
definition: Typ eines Falldokuments, im KNOW-Code als feste Liste hinterlegt.
key: document_type
Kaufvertragspruefung:
label: Kaufvertragsprüfung
module: kaf
definition: 'Prüfstand eines Kaufvertrags: extrahierte Felder, Einheiten, Freigabe durch eine Mitarbeiterin oder einen
Mitarbeiter.'
table: kaf_review_snapshots
key: case_key
sensitive: Kaufvertragsfelder und Prüfer
attributes:
id: BIGSERIAL
case_key: TEXT
review_schema_version: TEXT
confirmation_token_hash: TEXT
confirmation_expires_at: TIMESTAMPTZ
review_status: TEXT
request_id: TEXT
review_to: TEXT
delivery_mode: TEXT
original_json: JSONB
distribution_json: JSONB
fields_json: JSONB
units_json: JSONB
artifacts_json: JSONB
reviewed_values_json: JSONB
review_comment: TEXT
reviewed_by: TEXT
review_identity_source: TEXT
review_submission_hash: TEXT
reviewed_at: TIMESTAMPTZ
created_at: TIMESTAMPTZ
updated_at: TIMESTAMPTZ
Notarkanzlei:
label: Notarkanzlei
module: kaf
definition: Notarkanzlei mit gelernten Feldmustern für das Auslesen von Kaufverträgen.
table: kanzlei_field_patterns
key: kanzlei_key
attributes:
kanzlei_key: TEXT
kanzlei_display: TEXT
patterns: JSONB
updated_at: TIMESTAMPTZ
Kanzleimandat:
label: Kanzleimandat
module: kaf
definition: Zuordnung Kanzlei ↔ Projekt mit Notarname (reifizierte Beziehung).
table: kanzlei_project_relations
key: relation_key
attributes:
relation_key: TEXT
kanzlei_key: TEXT
project_key: TEXT
project_name: TEXT
notar_name: TEXT
updated_at: TIMESTAMPTZ
Ort:
label: Ort / Flurstück
module: kaf
definition: Geokodierte Adresse mit Flurstück und Bundesland.
table: place_enrichments
key: place_key
attributes:
id: BIGSERIAL
place_key: TEXT
input_address: TEXT
match_address: TEXT
flurstueck: TEXT
lat: DOUBLE PRECISION
lon: DOUBLE PRECISION
bundesland: TEXT
enrichment_json: JSONB
provenance_json: JSONB
quality_status: TEXT
confidence: DOUBLE PRECISION
source_workflow: TEXT
created_at: TIMESTAMPTZ
refreshed_at: TIMESTAMPTZ
KanbauKaufvertrag:
label: KanBau-Kaufvertrag
module: kaf
definition: Kaufvertrag, der nach Bestätigung in KanBau angelegt wird (created_saleagr_id).
key: created_saleagr_id
Beleg:
label: Beleg
module: finance
definition: Verarbeiteter SEPA-Beleg mit Betrag, reserviert und dann hochgeladen.
table: bel_processed_belege
key: beleg_hash
sensitive: Bank, Konto-Referenz und Beträge
attributes:
id: BIGSERIAL
beleg_hash: TEXT
status: TEXT
bank: TEXT
account_ref: TEXT
amount_cents: BIGINT
sharepoint_path: TEXT
export_ref: TEXT
request_id: TEXT
raw_evidence_json: JSONB
reserved_at: TIMESTAMPTZ
uploaded_at: TIMESTAMPTZ
last_seen_at: TIMESTAMPTZ
created_at: TIMESTAMPTZ
updated_at: TIMESTAMPTZ
Bankkonto:
label: Bankkonto
module: finance
definition: Konto, zu dem ein Beleg gehört (bank + account_ref).
key: account_ref
Workflow:
label: n8n-Workflow
module: learning
definition: Ein n8n-Workflow, der entscheidet, lernt oder aufgerufen wird. Steht nur als Name in Spalten.
key: workflow
Entscheidung:
label: Entscheidung
module: learning
definition: Vorschlag eines Workflows und die tatsächliche Entscheidung mit Korrekturgrund.
table: workflow_decisions
key: id
attributes:
id: BIGSERIAL
request_id: TEXT
workflow: TEXT
reference_type: TEXT
reference_id: TEXT
proposed_decision: JSONB
final_decision: JSONB
confidence: NUMERIC
correction_reason: TEXT
quality_status: TEXT
created_at: TIMESTAMPTZ
verified_at: TIMESTAMPTZ
decision_type: TEXT
decided_by: TEXT
updated_at: TIMESTAMPTZ
Referenzobjekt:
label: Referenzobjekt
module: learning
definition: Objekt, auf das sich eine Entscheidung bezieht. Polymorph über reference_type und reference_id, die Typen
legt das Schema nicht fest.
key: reference_type + reference_id
Hinweis:
label: Hinweis (gelerntes Muster)
module: learning
definition: Gelerntes Muster (Schlüssel und Wert → vorgeschlagene Aktion) mit Zähler, Konfidenz und Bestätigung.
table: workflow_hints
key: hint_key
attributes:
hint_key: TEXT
workflow: TEXT
hint_type: TEXT
pattern_key: TEXT
pattern_value: TEXT
suggested_action: JSONB
observation_count: INTEGER
confidence: NUMERIC
quality_status: TEXT
pending_notification: BOOLEAN
notified_at: TIMESTAMPTZ
confirmed_at: TIMESTAMPTZ
confirmed_by: TEXT
created_at: TIMESTAMPTZ
updated_at: TIMESTAMPTZ
KanbauApiMethode:
label: KanBau-API-Methode
module: learning
definition: Validiertes Request/Response-Beispiel einer KanBau-API-Methode.
table: kanbau_method_examples
key: method_key
attributes:
method_key: TEXT
swagger_ref: TEXT
example_request: JSONB
example_response: JSONB
validated_at: TIMESTAMPTZ
created_at: TIMESTAMPTZ
updated_at: TIMESTAMPTZ
Mitarbeiter:
label: Mitarbeiter:in
module: learning
definition: Person im Unternehmen (@mygodel.de), die prüft, bestätigt oder bearbeitet. Steht nur als Name oder Adresse
in Spalten.
key: E-Mail
AgentBereich:
label: Agent-Bereich
module: agent
definition: Einsatzbereich eines Agenten (scope_key).
key: scope_key
Faehigkeit:
label: Fähigkeit
module: agent
definition: 'Was ein Agent tun darf: Beispiel-Intents, Workflow, Risiko, Freigabepflicht.'
table: agent_capabilities
key: scope_key + capability_key
attributes:
id: BIGSERIAL
scope_key: TEXT
capability_key: TEXT
title: TEXT
description: TEXT
intent_examples: JSONB
workflow_name: TEXT
workflow_operation: TEXT
read_or_write: TEXT
risk_level: TEXT
requires_approval: BOOLEAN
enabled: BOOLEAN
created_at: TIMESTAMPTZ
updated_at: TIMESTAMPTZ
Kontextdokument:
label: Kontextdokument
module: agent
definition: Eingelesenes Dokument als Wissen für einen Agenten.
table: agent_context_documents
key: scope_key + source_path + content_hash
sensitive: Volltext eingelesener Dokumente
subclass_of: Dokument
attributes:
id: BIGSERIAL
scope_key: TEXT
source_path: TEXT
document_type: TEXT
title: TEXT
content: TEXT
content_hash: TEXT
last_ingested_at: TIMESTAMPTZ
AgentAusfuehrung:
label: Agent-Ausführung
module: agent
definition: Protokoll einer Agent-Anfrage mit gewählter Fähigkeit und Ergebnis.
table: agent_execution_log
key: id
attributes:
id: BIGSERIAL
request_id: TEXT
agent_scope: TEXT
user_request: TEXT
selected_capability: TEXT
workflow_called: TEXT
inputs_json: JSONB
status: TEXT
errors_json: JSONB
created_at: TIMESTAMPTZ
LoginAnbieter:
label: Login-Anbieter
module: bsb
definition: Webanwendung mit hinterlegtem Login-Ablauf für die Browser-Automation.
table: session_providers
key: provider_id
attributes:
provider_id: TEXT
display_name: TEXT
login_url: TEXT
auth_type: TEXT
steps_json: JSONB
credential_key: TEXT
max_session_age_minutes: INTEGER
notes: TEXT
created_at: TIMESTAMPTZ
updated_at: TIMESTAMPTZ
BrowserSession:
label: Browser-Session
module: bsb
definition: Gespeicherte Sitzung bei einem Login-Anbieter mit Ablaufzeit.
table: browser_sessions
key: provider_id
sensitive: Session-Daten als JSON; am Schema nicht erkennbar, ob verschlüsselt
attributes:
provider_id: TEXT
session_data: JSONB
expires_at: TIMESTAMPTZ
created_at: TIMESTAMPTZ
updated_at: TIMESTAMPTZ
LlmWorker:
label: LLM-Worker
module: llm
definition: Lokaler Rechner mit LLM, der sich per Heartbeat meldet (optional mit OpenAI-Endpoint).
table: llm_workers
key: mac
attributes:
id: BIGSERIAL
mac: TEXT
host: TEXT
model: TEXT
tier: TEXT
tier_rank: SMALLINT
status: TEXT
hardware_json: JSONB
last_seen_at: TIMESTAMPTZ
registered_at: TIMESTAMPTZ
updated_at: TIMESTAMPTZ
endpoint: JSONB
WorkerSperre:
label: Worker-Sperre
module: llm
definition: Gesperrter Worker (unsupported).
table: llm_worker_blocklist
key: mac
attributes:
id: BIGSERIAL
mac: TEXT
host: TEXT
reason: TEXT
hardware_json: JSONB
blocked_at: TIMESTAMPTZ
LlmJob:
label: LLM-Job
module: llm
definition: 'Auftrag im Job-Board: Prompt, Mindest-Tier, Ergebnis, Dauer.'
table: llm_jobs
key: job_id
sensitive: Prompt und Ergebnis im Klartext
attributes:
id: BIGSERIAL
job_id: TEXT
prompt: TEXT
min_tier: TEXT
min_tier_rank: SMALLINT
status: TEXT
assigned_to: TEXT
model: TEXT
tier: TEXT
result: TEXT
duration_ms: INTEGER
error_message: TEXT
created_at: TIMESTAMPTZ
assigned_at: TIMESTAMPTZ
completed_at: TIMESTAMPTZ
updated_at: TIMESTAMPTZ
Tier:
label: Tier
module: llm
definition: Leistungsstufe eines Workers bzw. Mindeststufe eines Jobs.
key: tier
Modell:
label: Modell
module: llm
definition: LLM-Modell, das ein Worker betreibt. Erlaubte Werte stehen in der Worker Registry.
key: model
KanBau:
label: KanBau
module: system
definition: Externes Bau- und Projektverwaltungssystem (Projekte, Adressen, Kaufverträge).
SharePoint:
label: SharePoint
module: system
definition: Ablage für Projekt-, Fall- und Belegdokumente.
Microsoft365:
label: Microsoft 365
module: system
definition: Postfächer und delegierter Zugriff (provider microsoft).
relations:
- source: Mail
name: empfangenIn
target: Postfach
via: mail_events.mailbox
- source: Mail
name: gesendetVon
target: Absender
via: mail_events.sender = sender_observations.email
kind: soft
- source: Mail
name: hatKategorie
target: MailKategorie
via: mail_events.category = workflow_hint_config.config_key
kind: soft
- source: Mail
name: zugeordnetZu
target: Projekt
via: mail_events.assigned_project_key
- source: Absender
name: beobachtetIn
target: Postfach
via: sender_observations.mailbox
- source: Absender
name: gehoertZuDomain
target: Domain
via: sender_observations.registered_domain (JOIN)
- source: Absender
name: entsprichtKontakt
target: Kontakt
via: E-Mail-Adresse (contacts.email)
kind: soft
- source: Postfachzugriff
name: gewaehrtFuer
target: Postfach
via: mailbox_grants.grant_key
kind: soft
- source: Postfach
name: liegtIn
target: Microsoft365
via: mailbox_grants.provider = 'microsoft'
kind: external
- source: AnhangExtraktion
name: ausMail
target: Mail
via: document_extractions.message_id
- source: AnhangExtraktion
name: vonKontakt
target: Kontakt
via: document_extractions.sender_contact_key
- source: AnhangExtraktion
name: betrifftProjekt
target: Projekt
via: document_extractions.project_key
- source: ProjektAlias
name: bezeichnet
target: Projekt
via: project_aliases.project_key (JOIN)
- source: KontaktAlias
name: bezeichnet
target: Kontakt
via: contact_aliases.contact_key
- source: Projektbeteiligung
name: vonKontakt
target: Kontakt
via: contact_project_relations.contact_key
- source: Projektbeteiligung
name: betrifftProjekt
target: Projekt
via: contact_project_relations.project_key
- source: Projekt
name: stammtAus
target: KanBau
via: projects.kanbau_project_id
kind: external
- source: Kontakt
name: stammtAus
target: KanBau
via: contacts.kanbau_address_id
kind: external
- source: Projektereignis
name: ausMail
target: Mail
via: project_events.message_id
- source: Projektereignis
name: betrifftProjekt
target: Projekt
via: project_events.project_key
- source: Projektereignis
name: hatArt
target: Ereignisart
via: project_events.category
- source: Projektereignis
name: abgelegtIn
target: SharePoint
via: project_events.sharepoint_path
kind: external
- source: Projektordner
name: betrifftProjekt
target: Projekt
via: project_folders.project_key
- source: Projektordner
name: liegtIn
target: SharePoint
via: project_folders.drive_id, folder_item_id
kind: external
- source: Projektkuerzel
name: gehoertZu
target: Gesellschaft
via: project_companies.gesellschaft
- source: Rechnungsbeobachtung
name: ausMail
target: Mail
via: invoice_company_observations.message_id
- source: Rechnungsbeobachtung
name: nenntKuerzel
target: Projektkuerzel
via: invoice_company_observations.kuerzel (JOIN)
- source: Rechnungsbeobachtung
name: gehoertZu
target: Gesellschaft
via: invoice_company_observations.gesellschaft
- source: Ankaufsfall
name: hatDokument
target: Falldokument
via: property_development_documents.case_key (JOIN)
- source: Falldokument
name: ersetzt
target: Falldokument
via: supersedes_document_key
- source: Falldokument
name: hatTyp
target: Dokumenttyp
via: property_development_documents.document_type
- source: Falldokument
name: liegtIn
target: SharePoint
via: sharepoint_item_id, file_path
kind: external
- source: Ankaufsfall
name: hatPruefung
target: Kaufvertragspruefung
via: kaf_review_snapshots.case_key
- source: Ankaufsfall
name: wirdZuProjekt
target: Projekt
via: selected_project_id (KanBau-Projekt-ID)
- source: Ankaufsfall
name: erzeugt
target: KanbauKaufvertrag
via: created_saleagr_id, created_saleagr_url
- source: KanbauKaufvertrag
name: liegtIn
target: KanBau
via: created_saleagr_url
kind: external
- source: Ankaufsfall
name: liegtAn
target: Ort
via: street_address, location_city ↔ place_enrichments.input_address
kind: soft
- source: Ankaufsfall
name: liegtIn
target: SharePoint
via: folder_path, sharepoint_json
kind: external
- source: Ankaufsfall
name: bearbeitetVon
target: Mitarbeiter
via: assigned_to, project_lead
kind: soft
- source: Projekt
name: liegtAn
target: Ort
via: full_address ↔ place_enrichments.input_address
kind: soft
- source: Kanzleimandat
name: vonKanzlei
target: Notarkanzlei
via: kanzlei_project_relations.kanzlei_key
- source: Kanzleimandat
name: betrifftProjekt
target: Projekt
via: kanzlei_project_relations.project_key
- source: Kaufvertragspruefung
name: geprueftVon
target: Mitarbeiter
via: reviewed_by, review_to (@mygodel.de)
kind: soft
- source: Beleg
name: gehoertZuKonto
target: Bankkonto
via: bel_processed_belege.bank, account_ref
- source: Beleg
name: abgelegtIn
target: SharePoint
via: bel_processed_belege.sharepoint_path
kind: external
- source: Entscheidung
name: getroffenVon
target: Workflow
via: workflow_decisions.workflow
- source: Entscheidung
name: betrifft
target: Referenzobjekt
via: reference_type + reference_id
kind: soft
- source: Hinweis
name: gelerntIn
target: Workflow
via: workflow_hints.workflow
- source: Hinweis
name: hatKategorie
target: MailKategorie
via: workflow_hints.hint_type = config_key (JOIN)
- source: Hinweis
name: betrifftKontakt
target: Kontakt
via: workflow_hints.pattern_key = contact_key (JOIN)
- source: Hinweis
name: bestaetigtVon
target: Mitarbeiter
via: workflow_hints.confirmed_by
kind: soft
- source: KanbauApiMethode
name: beschreibt
target: KanBau
via: method_key, swagger_ref
kind: external
- source: Faehigkeit
name: gehoertZu
target: AgentBereich
via: agent_capabilities.scope_key
- source: Faehigkeit
name: ruftAuf
target: Workflow
via: agent_capabilities.workflow_name
- source: Kontextdokument
name: gehoertZu
target: AgentBereich
via: agent_context_documents.scope_key
- source: AgentAusfuehrung
name: imBereich
target: AgentBereich
via: agent_execution_log.agent_scope
- source: AgentAusfuehrung
name: waehlt
target: Faehigkeit
via: agent_execution_log.selected_capability
- source: AgentAusfuehrung
name: ruftAuf
target: Workflow
via: agent_execution_log.workflow_called
- source: BrowserSession
name: fuerAnbieter
target: LoginAnbieter
via: browser_sessions.provider_id
- source: LoginAnbieter
name: meldetAnBei
target: KanBau
via: über BSB - Get Session für das KanBau-Gateway
kind: soft
- source: LlmJob
name: bearbeitetVon
target: LlmWorker
via: llm_jobs.assigned_to = llm_workers.host
- source: LlmJob
name: verlangtTier
target: Tier
via: llm_jobs.min_tier
- source: LlmJob
name: nutzteModell
target: Modell
via: llm_jobs.model
- source: LlmWorker
name: hatTier
target: Tier
via: llm_workers.tier
- source: LlmWorker
name: betreibt
target: Modell
via: llm_workers.model
- source: WorkerSperre
name: sperrt
target: LlmWorker
via: llm_worker_blocklist.mac
vocabularies:
MailKategorie:
label: Mail-Kategorie
class: MailKategorie
columns:
- mail_events.category
- workflow_hints.hint_type
- workflow_hint_config.config_key
concepts:
mahnung:
label: Mahnung
zahlungsaufforderung:
label: Zahlungsaufforderung
buchhaltung:
label: Rechnungen
alt:
- Buchhaltung
mangel:
label: Mangel
newsletter_werbung:
label: Newsletter
alt:
- Newsletter und Werbung
plattformen:
label: Plattformen
versand_bestellungen:
label: Versand
alt:
- Versand und Bestellungen
sonstiges:
label: Sonstige
alt:
- Sonstiges
default:
label: Standard
note: technischer Rückfall der Hinweis-Konfiguration, keine fachliche Kategorie
technical: true
Ereignisart:
label: Ereignisart
class: Ereignisart
columns:
- project_events.category
concepts:
verzoegerung:
label: Verzögerung
mangel:
label: Mangel
termin:
label: Termin
kosten:
label: Kosten
info:
label: Info
Dokumenttyp:
label: Dokumenttyp
class: Dokumenttyp
columns:
- property_development_documents.document_type
- document_extractions.document_type
concepts:
expose: {}
bplan: {}
wirtschaftlichkeitsberechnung: {}
kaufangebot: {}
loi: {}
nda: {}
vertraulichkeitserklaerung: {}
telefonnotiz: {}
mail: {}
lageplan: {}
kataster: {}
grundbuch: {}
baugenehmigung: {}
gutachten: {}
pruefplan: {}
fotos: {}
wettbewerbsunterlagen: {}
vertrag_notar: {}
unknown: {}
Tier:
label: Tier
class: Tier
columns:
- llm_workers.tier
- llm_jobs.min_tier
- llm_jobs.tier
concepts:
basic: {}
standard: {}
capable: {}
expert: {}
Gesellschaft:
label: Gesellschaft
class: Gesellschaft
columns:
- project_companies.gesellschaft
- invoice_company_observations.gesellschaft
concepts:
p_gmbh:
label: P-GmbH
p_b_kg:
label: P+B KG
Pipelinestatus:
label: Pipeline-Status (Ankauf)
columns:
- property_development_cases.pipeline_status
concepts:
vorab_check: {}
vorpruefung: {}
in_pruefung: {}
angebot_in_vorbereitung: {}
angebot_abgegeben: {}
verhandlung: {}
wettbewerb_aktuell: {}
projektierung: {}
planung: {}
abgeschlossen: {}
Ergebnisstatus:
label: Ergebnis (Ankauf)
columns:
- property_development_cases.outcome_status
concepts:
offen: {}
negativ_nicht_weiterverfolgt: {}
positiv_angeboten_nicht_zustande: {}
positiv_angeboten_zustande: {}
wettbewerb_erledigt: {}
wettbewerb_nicht_teilgenommen: {}
wettbewerb_nicht_zugelassen: {}
ohne_abschluss_erledigt: {}
Dringlichkeit:
label: Dringlichkeit
columns:
- project_events.urgency
concepts:
low: {}
normal: {}
high: {}
Pruefstatus:
label: Prüfstatus (Kaufvertrag)
columns:
- kaf_review_snapshots.review_status
concepts:
pending: {}
approved: {}
manual_review: {}
Zugriffsstatus:
label: Status Postfachzugriff
columns:
- mailbox_grants.status
concepts:
active: {}
revoked: {}
needs_reconsent: {}
Belegstatus:
label: Belegstatus
columns:
- bel_processed_belege.status
concepts:
reserved: {}
uploaded: {}
Qualitaetsstatus:
label: Qualitätsstatus
columns:
- project_aliases.quality_status
- contacts.quality_status
- contact_aliases.quality_status
- contact_project_relations.quality_status
- workflow_decisions.quality_status
- property_development_cases.quality_status
- workflow_hints.quality_status
- place_enrichments.quality_status
- project_events.quality_status
concepts:
observed:
label: beobachtet
proposed:
label: vorgeschlagen
confirmed:
label: bestätigt
alt:
- verified
note: workflow_decisions schreibt 'verified' statt 'confirmed' (KNOW-Befund B31)
rejected:
label: verworfen