Zum Inhalt springen

Code-Struktur

Der Code des Systems ist in vier Schichten organisiert, die sich an den im vorherigen Kapitel beschriebenen Architektur-Prinzipien orientieren. Jede Schicht hat eine eigene Verantwortung, und die Abhängigkeiten zeigen immer nach innen: die Presentation-Schicht kennt die Application-Schicht, die Application-Schicht kennt die Domain-Schicht, aber die Domain-Schicht kennt nichts unterhalb von sich. Daneben steht ein kleiner Python-Nebenpfad für das Embedding-Modell und den Graph-Upsert. Insgesamt ergeben sich knapp neunzig Dateien, die im Folgenden nach Schicht und Rolle gruppiert sind.

Das Modell der Fachlichkeit: Domain-Schicht

In der Domain-Schicht lebt die Sprache des Systems. Hier liegen die Wertobjekte wie EmailAddress, MessageId und Category, die einen reinen Wert kapseln, sowie die Ports als Schnittstellen-Definitionen, die beschreiben, was der Kern von der Außenwelt erwartet. Dieser Code kennt weder Datenbank noch HTTP-Client und ist von keinem Framework abhängig; er beschreibt ausschließlich die Regeln der Email-Verarbeitung.

Insgesamt sind acht Ports und sieben Wertobjekte vorhanden. Die Ports lauten EmailRepositoryPort, EmbeddingPort, GraphPort, LlmPort, OcrPort, QueuePort, SearchPort und SmtpPort. Die Ports werden im Infrastructure Layer mit konkreten Adaptern hinterlegt, während die Wertobjekte unveränderlich bleiben und in jeder Schicht ohne Reibung weitergereicht werden können.