shinkan-jinkendo/.claude/docs/library/FEATURES_DELIVERED_2026-Q2.md
Lars f5895b6637
Some checks failed
Deploy Development / deploy (push) Successful in 35s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 6s
Test Suite / playwright-tests (push) Failing after 41s
chore: update documentation and enhance exercise progression graph details
- Updated CLAUDE.md to reflect the addition of exercise_progression_graphs in the backend routers.
- Revised PROJECT_STATUS.md to document the current project status and recent milestones, including the implementation of the exercise progression graph feature.
- Incremented versioning in DOMAIN_MODEL.md and DATABASE_SCHEMA.md to align with the latest migration updates.
- Enhanced technical specifications in TRAINING_FRAMEWORK_SPEC.md to clarify the implementation details of the exercise progression graph and its integration with the training framework.
2026-05-05 08:30:48 +02:00

6.2 KiB
Raw Blame History

Gelieferte Features & technische Basis (April 2026)

Stand: 2026-04-30
Referenz: backend/version.pyAPP_VERSION 0.8.7, DB_SCHEMA_VERSION 20260430034

Dieses Dokument bündelt die in der Entwicklungsphase erreichten lieferbaren Funktionen und die zugehörigen technischen Artefakte. Progressionsgraph zwischen Übungen (Zwischenstand, Grenzen): technical/TRAINING_FRAMEWORK_SPEC.md §3§4. Detail-Spezifikationen bleiben in den verlinkten Pfaden unter .claude/docs/technical/ und .claude/docs/functional/.


1. Datenbank-Migrationen (Auswahl)

Migration Inhalt
032034 Progressionsgraph Übung→Übung: Container exercise_progression_graphs, Kanten exercise_progression_edges; notes (033); optionale Varianten-Endpunkte + Constraints (034)
028 exercise_media erweitert (Embed/Metadaten), exercise_skills Level-Felder (VARCHAR); Medien-API
029 Kanonische Fähigkeitsstufen (basisoptimierung), model_levels-Namen
030 training_unit_exercises.exercise_variant_id → FK exercise_variants(id) ON DELETE SET NULL

2. Backend Progressionsgraphen (routers/exercise_progression_graphs.py)

  • REST unter /api/exercise-progression-graphs inkl. Kanten-CRUD, POST …/edges/sequence (Reihe auf einmal), POST …/edges/delete-batch.
  • AuthZ wie Trainingsvorlagen: Admin/Superadmin oder GraphErsteller; Anlegen mit Trainings-/Planungsrolle (_has_planning_role).
  • Listenresponses mit Übungstiteln und Variantennamen (JOIN).

3. Backend Übungen (routers/exercises.py)

3.1 Liste & Suche

  • GET /api/exercises mit Filtern u. a.: Fokus, Stilrichtung, Trainingsstil, Zielgruppe, Fähigkeiten, Skill-Stufe min/max, visibility_any, status_any, search, ai_search (Platzhalter, derzeit gleiche Volltextlogik wie search).
  • Optional: include_variants=true — liefert pro Übung ein kompaktes variants-JSON (id, variant_name, sequence_order) für Planung/UI.

3.2 Übungsvarianten (CRUD)

Implementiert gemäß EXERCISES_API_SPEC.md (Varianten-Abschnitt):

  • POST /api/exercises/{id}/variants
  • PUT /api/exercises/{id}/variants/{variant_id}
  • DELETE /api/exercises/{id}/variants/{variant_id} (409, wenn andere Varianten diese als Voraussetzung nutzen)
  • PUT /api/exercises/{id}/variants/reordersequence_order 1…n

Sortierung der Varianten im Detail: sequence_order, dann progression_level, dann id.

3.3 Medien-Upload Größenlimits

  • Standard: 50 MB pro Datei (EXERCISE_MEDIA_MAX_UPLOAD_MB, Default 50).
  • admin / superadmin: 1024 MB Default (EXERCISE_MEDIA_ADMIN_MAX_UPLOAD_MB), nie unter dem Nutzer-Limit (in MB verglichen).

Logik: _upload_limit_bytes(session) vor read()-Prüfung.


4. Backend Trainingsplanung (routers/training_planning.py)

  • training_unit_exercises: Schreiben/Lesen von exercise_variant_id.
  • Validierung: Variante muss zur gewählten exercise_id gehören.
  • JOIN liefert u. a. exercise_variant_name beim Lesen einer Einheit.

5. Frontend Übungsliste (ExercisesListPage.jsx)

  • Tabs Liste · Progressionsgraphen (ExerciseProgressionGraphPanel): Graphen anlegen/bearbeiten, Kanten inkl. Sequenz-Bulk und Tabellenansicht.
  • Filter-Modal (Fokus, Stilrichtung, Trainingsstil, Zielgruppe, Fähigkeit + Stufen von/bis, Sichtbarkeit, Status).
  • Filter-Chips unter der Suchleiste; Klick entfernt einen Filter; Badge am Filter-Button = Anzahl Chips.
  • Kein Vollbild-Spinner bei jeder Suche: nur noch listFetching — Suchfelder bleiben im DOM (Fokus/Cursor bleiben erhalten); Liste zeigt optional „Aktualisiere Treffer…“.
  • <datalist> mit Titeln der aktuellen Treffer; autoComplete="on" für Browser-Vorschläge.
  • api.listExercises: Booleans (z. B. include_variants) werden als Query übergeben.

6. Frontend Übung bearbeiten (ExerciseFormPage.jsx)

  • Varianten-Editor: eingeklappter Bereich (<details>), eine Variante zur Zeit über Dropdown oder „Neue Variante“; Felder über ExerciseVariantFields; Reihenfolge Nach oben/unten; Speichern/Löschen pro Variante.
  • Medien wie zuvor (Formularteil).
  • Block Progressionsgraph (Edit): Kanten mit Bezug zur aktuellen Übung.

Hinweis: Es gibt keine separaten Routen /exercises/:id/variants/... — Bearbeitung erfolgt unter /exercises/:id/edit (Routing-Doku ggf. anpassen).


7. Frontend Übung Detail (ExerciseDetailPage.jsx)

  • Varianten-Abschnitt mit Meta (Dauer, Schwierigkeit, Material, Progressionsstufe) wo vorhanden.

8. Frontend Trainingsplanung (TrainingPlanningPage.jsx)

  • listExercises({ include_variants: true }).
  • Pro Zeile: Übung + Variante (optional), Dauer, Reihenfolge.

9. Rich-Text (RichTextEditor.jsx + CSS)

  • Selection Save/Restore vor Toolbar-Klicks (insertUnorderedList / insertOrderedList zuverlässiger bei Mehrzeilen-Markierung).
  • styleWithCSS false vor Formatbefehlen.
  • Listen-Styling für .rich-text-editor ul/ol/li (Einzüge sichtbar).

10. Admin Matrix / Reifegrad (Kontext)

  • Bereits dokumentiert in CHANGELOG / Module maturity_models: Matrix-Stack-Bundle Export/Import, Kontext-Bindings — siehe version.py und Admin-UI-Pfade.

11. Nächste sinnvolle Schritte (nicht Lieferstand)

  • Trainingsplanungs-/Rahmenmodul (CURR002 (2)) — Progressionsgraph ist unterstützend, siehe TRAINING_FRAMEWORK_SPEC.md §4.
  • Progressions-Serien als Blöcke (angekündigt; Voraussetzung: prerequisite_variant_id / progression_level vorhanden).
  • Serverseitige Suchvorschläge (Autocomplete-Endpoint), falls datalist nicht reicht.
  • Optional: Streaming/chunked Upload für sehr große Videos (RAM-Thema).

12. Verweise

Thema Dokument
Rahmenprogramm / Progressionsgraph technical/TRAINING_FRAMEWORK_SPEC.md
API Übungen technical/EXERCISES_API_SPEC.md
Domänenmodell functional/DOMAIN_MODEL.md
Datenbank Überblick technical/DATABASE_SCHEMA.md
Upload formal technical/MEDIA_UPLOAD_SPEC.md
Projektstatus-Kachel ../PROJECT_STATUS.md