# ADR002_SOURCE_DELIVERY_MODEL

**Status:** Draft

## 1. Ziel

Reconcilix verarbeitet Daten aus unterschiedlichen externen Systemen. Ziel dieses ADR ist die Einführung eines fachlichen Modells zur Beschreibung der Herkunft von Daten sowie zur Gruppierung einzelner `SourceValue` zu einer gemeinsamen `SourceDelivery`.

## 2. Problemstellung

Bisher wird jeder `SourceValue` unabhängig betrachtet.

Im praktischen Einsatz werden `SourceValue` jedoch als Bestandteil einer Datenlieferung verarbeitet. Gleichzeitig stammen diese Datenlieferungen aus unterschiedlichen Fachanwendungen.

Ohne ein entsprechendes Domain Model können insbesondere folgende Fragen nicht beantwortet werden:

- Aus welchem `SourceSystem` stammt eine Datenlieferung?
- Welche `SourceValue` gehören zu derselben `SourceDelivery`?
- Welche Daten wurden gemeinsam verarbeitet?
- Welche Datenlieferungen wurden bereits analysiert?

## 3. Architekturentscheidung

Reconcilix erweitert das Domain Model um die beiden Domain Objects:

- `SourceSystem`
- `SourceDelivery`

Das resultierende Modell lautet:

```text
SourceSystem
    │
    └── SourceDelivery
            │
            └── SourceValue*
```

Dabei gelten folgende Regeln:

- Ein `SourceSystem` beschreibt die fachliche Herkunft einer Datenlieferung.
- Eine `SourceDelivery` gehört genau zu einem `SourceSystem`.
- Eine `SourceDelivery` enthält einen oder mehrere `SourceValue`.
- Jeder `SourceValue` gehört genau einer `SourceDelivery`.

## 4. Bedeutung der Domain Objects

### SourceSystem

`SourceSystem` beschreibt die fachliche Herkunft einer Datenlieferung.

Beispiele:

- OR
- digiCULT.web
- MuseumsPlus
- Adlib

Ein `SourceSystem` beschreibt weder ein Dateiformat noch eine technische Schnittstelle.

### SourceDelivery

`SourceDelivery` repräsentiert eine konkrete Datenlieferung eines `SourceSystem`.

Eine `SourceDelivery` dient der fachlichen und organisatorischen Gruppierung von `SourceValue`.

Welche weiteren Metadaten zukünftig gespeichert werden, ist nicht Bestandteil dieses ADR.

## 5. Auswirkungen auf das Domain Model

Die bestehenden Aggregate aus ADR001 bleiben unverändert.

`SourceSystem` und `SourceDelivery` ergänzen das Domain Model um eine organisatorische Ebene oberhalb von `SourceValue`.

Es werden keine bestehenden Aggregate verändert oder zusammengeführt.

## 6. Out of Scope

Dieses ADR beschreibt ausdrücklich nicht:

- Attribute von `SourceSystem` und `SourceDelivery`
- Importprozesse
- Dateiformate
- REST-Schnittstellen
- Batch-Verarbeitung
- Versionierung
- Löschstrategien
- technische Persistenz

Diese Themen werden bei Bedarf in späteren Domain Models, Persistence Models, Workpackages oder ADRs behandelt.

## 7. Folgearbeiten

Dieses ADR bildet die Grundlage für:

- die Erweiterung von DM001,
- die Erweiterung von DM002,
- das Persistenzmodell für `SourceSystem` und `SourceDelivery`,
- die Repository-Unterstützung,
- zukünftige Import- und Batchprozesse.
