# Architecture Snapshot v2.2.1 **Stand:** Nach Abschluss von WP-04c **Kontext:** Wichtig für WP-05 Entwicklung. ## 1. Neue Komponenten (Seit v2.2.0) ### A. Feedback Service (`app/services/feedback_service.py`) - **Zweck:** Logging von Trainingsdaten für späteres Self-Tuning (WP-08). - **Storage:** Lokale JSONL-Dateien in `data/logs/` (Append-Only). - `search_history.jsonl`: Query + Snapshot der Ergebnisse (Scores). - `feedback.jsonl`: User-Rating zu spezifischer `node_id`. ### B. Explanation Layer (`app/core/retriever.py`) - **Logik:** Der Retriever berechnet nicht nur Scores, sondern generiert `Explanation`-Objekte. - **Graph:** `Subgraph` (in `graph_adapter.py`) führt jetzt auch `reverse_adj` (Incoming Edges), um zu erklären, warum ein Knoten wichtig ist ("Referenziert von..."). ### C. DTOs (`app/models/dto.py`) Das Datenmodell wurde massiv erweitert. Wichtige Klassen für WP-05: - `QueryResponse`: Enthält jetzt `query_id` (UUID). - `QueryHit`: Enthält optional `explanation` (Typ `Explanation`). - `FeedbackRequest`: Für den Feedback-Loop. ## 2. Implikationen für WP-05 (Chat) 1. **Logging:** Auch der neue `/chat` Endpoint sollte idealerweise die `query_id` loggen oder nutzen, um Konsistenz zu wahren. 2. **DTO-Nutzung:** Der Chat-Service wird intern den Retriever aufrufen. Er muss mit den `QueryHit`-Objekten arbeiten, um den Kontext für das LLM zu bauen. 3. **Config:** Die Persönlichkeit wird in `config/prompts.yaml` definiert (Late Binding), nicht im Python-Code hardcodiert.