# Trainingsplan-Backend Dieses Plugin ist nur noch das Eintragebackend fuer Trainingsplaene. Es verwaltet: - Plaene - Uebungen in einer zentralen Uebungsbibliothek - einfache Progressionsvarianten pro Uebung - Trainingstage - Warm-up und Cool-down pro Trainingstag - Uebungen, die an Trainingstagen hinterlegt sind Nicht mehr enthalten sind PDF-Erzeugung, Rezeptsammlungen, Progressionsregeln, Wochenlogik, Tracking, Pruefungen, Planvorschlaege, Analyse-/ChatGPT-Anbindungen und Farbdefinitionen fuer eine Ausgabeoberflaeche. ## Datenvertrag Trainingsplaene verwenden: ```text schema_version: 5 contract_version: 4 ``` Eine Plan-Config ist bewusst flach: ```json { "schema_version": 5, "contract_version": 4, "plan_id": "basis-plan", "meta": { "title": "Basis-Plan" }, "exercises": [ { "id": "exercise-squat", "name": "Squat", "progressions": [ { "id": "progression-deep-squat-hold", "name": "Deep Squat Hold" }, { "id": "progression-negative-squat", "name": "Negative Squat" }, { "id": "progression-full-squat", "name": "Full Squat" } ], "current_progression_id": "progression-deep-squat-hold" } ], "days": [ { "id": "day-1", "num": 1, "name": "Tag 1", "warmup": { "items": ["Gelenke mobilisieren"] }, "cooldown": { "items": ["Locker auslaufen"] }, "exercises": [ { "id": "day-exercise-1", "exercise_id": "exercise-squat" } ] } ] } ``` ## API - `GET /api/plans` - `POST /api/plans` - `GET /api/plans/` - `POST /api/plans/` - `POST /api/plans//publish` - `POST /api/plans//rename` - `DELETE /api/plans/` - `GET /api/plans//exercises` - `POST /api/plans//exercises` - `PATCH /api/plans//exercises/` - `DELETE /api/plans//exercises/` - `GET /api/plans//days` - `POST /api/plans//days` - `PATCH /api/plans//days/` - `DELETE /api/plans//days/` - `POST /api/plans//days//exercises` - `PATCH /api/plans//days//exercises/` - `DELETE /api/plans//days//exercises/` Der alte aktive Config-Zugriff bleibt fuer einfache Clients erhalten: - `GET /api/config` - `POST /api/config` - `GET /api/default` - `POST /api/reset` ## Migration Aeltere Trainingsplaene werden beim Laden auf den flachen Vertrag reduziert. Uebungen aus alten Rotationen werden in die Uebungsbibliothek uebernommen und als Tagesuebungen referenziert. Alte `stages.steps` oder `variants` werden dedupliziert als einfache Progressionsvarianten an die Uebung gehaengt; die erste Variante wird als aktuelle Wahrheit gesetzt, wenn noch keine aktuelle Progression gespeichert ist. Warm-up und Cool-down werden aus den bisherigen Tages- oder `prepost`-Feldern uebernommen.