# WP3-001-004 – Candidate Discovery Router

- **Status:** Draft
- **Version:** 0.1
- **Scope:** WP3 – Discovery Framework Foundation
- **Owner:** ED
- **Review:** PL, LA

## Referenzen

- WP3-001 – Discovery Framework Foundation
- WP3-001-001 – Discovery Route Model
- WP3-001-002 – Discovery Configuration Registry
- WP3-001-003 – Candidate Discovery Adapter Contract
- PRE_WP3-001 – Architekturübersicht Discovery Framework
- DM001 – Domain Model

---

# 1. Ziel

Dieses Work Package führt den `CandidateDiscoveryRouter` als zentralen Einstiegspunkt des Discovery Frameworks ein.

Der Router verbindet

- DiscoveryConfigurationRegistry
- DiscoveryRoute
- CandidateDiscoveryAdapter

zu einem einheitlichen Discovery-Ablauf.

Der Router enthält keine technische Discovery-Implementierung.

---

# 2. Scope

Dieses Work Package umfasst ausschließlich

- Einführung der Klasse `CandidateDiscoveryRouter`
- Verwendung der DiscoveryConfigurationRegistry
- Auswahl einer DiscoveryRoute
- Delegation an einen CandidateDiscoveryAdapter
- Unit Tests

Nicht Bestandteil sind

- Runtime Integration
- produktive Adapter
- HTTP
- REST
- SPARQL
- Candidate Discovery Implementierungen

---

# 3. Architekturbezug

Gemäß PRE_WP3 bildet der CandidateDiscoveryRouter den zentralen Einstiegspunkt des Discovery Frameworks.

Der Router

- kennt Discovery Routes,
- verwendet Candidate Discovery Adapter,
- führt jedoch selbst keine Discovery durch.

---

# 4. Klassenübersicht

| Klasse | Typ | Status | Verantwortung |
|---------|-----|--------|----------------|
| CandidateDiscoveryRouter | Class | Neu | Zentraler Einstiegspunkt des Discovery Frameworks |
| DiscoveryConfigurationRegistry | Class | Bestehend | Liefert verfügbare Discovery Routes |
| CandidateDiscoveryAdapter | Interface | Bestehend | Führt technische Discovery aus |

---

# 5. Verantwortlichkeiten

Der CandidateDiscoveryRouter ist verantwortlich für

- Entgegennahme einer Discovery-Anfrage
- Abfrage der DiscoveryConfigurationRegistry
- Auswahl einer geeigneten DiscoveryRoute
- Delegation an den referenzierten CandidateDiscoveryAdapter
- Rückgabe der Candidate Items

Der CandidateDiscoveryRouter ist nicht verantwortlich für

- Discovery Configuration
- technische Discovery
- HTTP-Kommunikation
- Match Decisions
- Persistenz

---

# 6. Ablauf

Der Router verarbeitet eine Discovery-Anfrage in folgenden Schritten:

1. Discovery-Anfrage entgegennehmen
2. Discovery Routes über die Registry ermitteln
3. geeignete Discovery Route bestimmen
4. referenzierten CandidateDiscoveryAdapter auflösen
5. Discovery delegieren
6. Candidate Items zurückgeben

---

# 7. Laufzeitmodell

```text
CandidateDiscoveryGateway
        │
        ▼
CandidateDiscoveryRouter
        │
        ▼
DiscoveryConfigurationRegistry
        │
        ▼
DiscoveryRoute
        │
        ▼
CandidateDiscoveryAdapter
        │
        ▼
CandidateItem[]
```

---

# 8. Invarianten

Der Router

- besitzt keine Kenntnis technischer Protokolle,
- erzeugt keine Candidate Items,
- kennt keine Adapterimplementierungen,
- kennt keine HTTP-Endpunkte,
- verändert Discovery Routes nicht.

---

# 9. Implementierungsreihenfolge

1. CandidateDiscoveryRouter erstellen
2. Registry injizieren
3. Adapter Contract verwenden
4. DiscoveryRoute integrieren
5. Unit Tests ergänzen

---

# 10. Deliverables

Neue Klasse

- CandidateDiscoveryRouter

Neue Tests

- CandidateDiscoveryRouterTest

---

# 11. Akzeptanzkriterien

Das Work Package ist abgeschlossen wenn

- Discovery-Anfragen über den Router laufen
- Discovery Routes verwendet werden
- CandidateDiscoveryAdapter aufgerufen werden
- Candidate Items unverändert zurückgegeben werden
- bestehende Tests weiterhin erfolgreich sind
- neue Unit Tests erfolgreich sind

---

# 12. Out of Scope

Nicht Bestandteil sind

- Runtime Integration
- Composition Root
- produktive Adapter
- HTTP
- REST
- xTree
- Local Reconciliation Store
- parallele Discovery
- Ranking
- Result Fusion

---

# 13. Auswirkungen auf Folgepakete

WP3-001-005 integriert den CandidateDiscoveryRouter in den produktiven Runtime-Pfad.

WP3-002 bindet den ersten produktiven CandidateDiscoveryAdapter für den Local Reconciliation Store an.

WP3-003 bindet den xTree Candidate Discovery Adapter an.