3.3 KiB
WP-17 – Retriever & Composer (Kern ohne LLM)
Projektkontext
Wir entwickeln eine deterministische Planerstellung aus bestehenden plan_templates und exercises.
WP-15 hat die Collections, Indizes und CRUD-APIs für plan_templates und plans produktiv geliefert.
WP-02 stellt die exercises-Collection mit Capabilities und Qdrant-Anbindung bereit.
Technologie-Stack: Python 3.12, FastAPI, Qdrant
Ziele
Implementierung eines /plan/generate-Endpoints, der:
- Filter- und Vektor-Suche in Qdrant kombiniert
- Scoring nach Coverage, Diversity und Novelty durchführt
- Pläne deterministisch und ohne LLM generiert
- Zeitbudgets einhält und Wiederholungen (Novelty-Penalty) vermeidet
Deliverables
-
API: POST
/plan/generate- Parameter:
discipline,age_group,target_group,goals,time_budget_minutes,novelty_horizon(5),coverage_threshold(0.8),strict_mode - Rückgabe: Plan-JSON mit Exercises-Referenzen und Metadaten
- Parameter:
-
Retriever
- Filter-Layer (Payload)
- Vector-Layer (Ranking)
- Kombinierte Gewichtung
-
Composer
- Sections aufbauen (aus Template oder Default)
- Zeitbudget pro Section und Gesamt einhalten
- Strict-Mode: nur gültige
external_id
-
Scoring-Funktionen
- Coverage (Capabilites-Abdeckung)
- Diversity (Variabilität)
- Novelty (Neuheit gegenüber Historie)
-
Tests
- Unit-Tests (Scoring, Filter)
- E2E: Template → Retriever → Composer → Persistenz
-
Dokumentation
- OpenAPI-Beispiele, Parametrierung, Konfigurationsoptionen
Akzeptanzkriterien
- Identische Eingaben → identischer Plan (Determinismus)
- Keine doppelten Übungen im Plan
- Budget- und Coverage-Ziele in ≥95 % der Testfälle erreicht
- Novelty-Penalty wirkt wie konfiguriert
Risiken
- Konflikte zwischen Budget, Coverage, Novelty (Priorisierung erforderlich)
- Geringe Übungsvielfalt → eingeschränkte Ergebnisse
- Performance-Einbußen bei großen Collections
Technische Vorgaben
Voreinstellungen:
novelty_horizon: 5coverage_threshold: 0.8- Priorität bei Konflikt: 1. Budget, 2. Coverage, 3. Novelty
Benötigte Dateien:
llm-api/plan_router.py(v0.13.4)llm-api/exercise_router.py(aus WP-02)scripts/bootstrap_qdrant_plans.py(v1.3.x)- Schema-Definitionen für
plan_templatesundplans - Beispiel-Datensätze (Golden-Cases)
.env(ohne Secrets, mit API-URLs)
Prompt für das Entwicklerteam (direkt nutzbar)
Rolle: Entwicklerteam WP-17 – Retriever & Composer (Kern ohne LLM)
Aufgabe: Implementiere/plan/generate, der deterministisch aus plan_templates und exercises Pläne generiert.
Nutze Filter- und Vektor-Suche in Qdrant, Scoring-Funktionen (Coverage, Diversity, Novelty) und eine Composer-Logik, die Zeitbudgets einhält.
Parameter: discipline, age_group, target_group, goals, time_budget_minutes, novelty_horizon=5, coverage_threshold=0.8, strict_mode.
Anforderungen: Deterministische Ergebnisse, keine Duplikate, ≥95 % Zielerreichung bei Budget/Coverage, funktionierender Novelty-Penalty.
Rahmen: Python 3.12, FastAPI, Qdrant, vorhandene plan_templates/plans/exercises-Collections.
Liefere: Code, Unit- und E2E-Tests, OpenAPI-Doku mit Beispielen.
Dateien: siehe Liste oben.