# ED-04 – SourceDelivery Aggregate

**Status:** Draft  
**Related:**
- ADR002_SOURCE_DELIVERY_MODEL_V4.md
- DM001_Domain_Model_v0.7_FINAL.md
- DM002_Persistence_Model_v0.6_FINAL.md

---

# 1. Ziel

ED-04 implementiert das in ADR002 und DM001 definierte `SourceDelivery`-Aggregate.

Nach Abschluss von ED-04 besitzt jede eingehende fachliche Lieferung:

- genau einen Tenant,
- genau ein fachliches `SourceSystem`,
- genau einen `DeliveryChannel`,
- einen kontrollierten Bearbeitungsstatus,
- eine stabile Identität,
- sowie die Zuordnung aller enthaltenen `SourceValue`.

Der bestehende Interpretation-and-Reconciliation-Kern bleibt unverändert.

---

# 2. Scope

ED-04 umfasst ausschließlich die Implementierung des `SourceDelivery`-Aggregates einschließlich seiner Persistenz und Integration in den bestehenden Reconciliation-Workflow.

Bestandteil sind:

- Domain Object `SourceDelivery`
- Persistenzmodell
- Repository
- Integration in den Application Service
- End-to-End-Integrationstest

Nicht Bestandteil sind:

- Candidate Discovery
- Interpretation
- Matching
- JobQueue
- Retry-Mechanismen
- Replay
- Versionierung mehrerer Lieferungen

---

# 3. Fachliches Zielmodell

```text
Tenant
    │
    └── SourceSystem
            │
            └── SourceDelivery
                    │
                    ├── DeliveryChannel
                    ├── SourceDeliveryStatus
                    │
                    └── SourceValue [1..*]
                            │
                            └── ContextItem
```

`DeliveryChannel` und `SourceDeliveryStatus` werden als Value Objects beziehungsweise kontrollierte Enumerationen modelliert.

---

# 4. Aggregate-Verantwortung

`SourceDelivery` ist Aggregate Root.

Verantwortung:

- Zuordnung zu genau einem Tenant
- Zuordnung zu genau einem SourceSystem
- genau ein DeliveryChannel
- kontrollierter Bearbeitungsstatus
- stabile Identität einer Lieferung
- Gruppierung der zugehörigen SourceValue

`SourceDelivery` besitzt keine Verantwortung für:

- Interpretation
- Candidate Discovery
- Match Decision
- Lebenszyklus einzelner SourceValue

---

# 5. Arbeitspakete

## ED-04-001

SourceDelivery Domain Object

---

## ED-04-002

SourceDelivery Persistence

---

## ED-04-003

SourceDelivery Repository

---

## ED-04-004

SourceDelivery Application Service

---

## ED-04-005

SourceDelivery Integration Test

---

# 6. Akzeptanzkriterien

Nach Abschluss von ED-04 gilt:

- jede eingehende Lieferung erzeugt genau eine `SourceDelivery`
- jede `SourceDelivery` gehört genau einem Tenant
- jede `SourceDelivery` gehört genau einem `SourceSystem`
- jede `SourceDelivery` besitzt genau einen `DeliveryChannel`
- jede `SourceDelivery` besitzt einen gültigen `SourceDeliveryStatus`
- jeder neue `SourceValue` referenziert genau eine `SourceDelivery`
- bestehende ContextItem-Funktionalität bleibt unverändert
- End-to-End-Test mit OpenRefine erfolgreich

---

# 7. Abgrenzung

ED-04 implementiert ausschließlich die Infrastruktur für eingehende Lieferungen.

Die inhaltliche Nutzung von

- ContextItem,
- Interpretation,
- Candidate Discovery

erfolgt erst in den nachfolgenden Work Packages der ROADMAP_MATCHING.