- Implemented a new SQL migration for wiki import tracking tables. - Created an import router for handling MediaWiki imports of exercises, skills, and methods. - Developed a Semantic MediaWiki API client for direct API interactions. - Added a mapper to convert SMW properties to local database fields. - Introduced background tasks for asynchronous import processing. - Implemented logging and error handling for import operations. - Added endpoints for previewing imports, checking import status, and managing import references.
21 KiB
Review Prompt: Exercises System Specifications
Zweck: Vollständiger Review der erstellten Spezifikationen gegen ursprüngliche Anforderungen und User-Ergänzungen
Reviewer: Plan Agent (oder anderer spezialisierter Agent)
Status: ✅ Review abgeschlossen + Fixes implementiert
Datum: 2026-04-24 Review-Datum: 2026-04-24 Ergebnis: APPROVED WITH CHANGES – alle BLOCKER und MAJOR Issues behoben
1. Kontext & Auftrag
Du bist ein Plan Agent, der die erstellten Spezifikationen für das Exercise System in Shinkan Jinkendo reviewt. Deine Aufgabe ist es, die 7 Core-Specs gegen die ursprünglichen Anforderungen und User-Ergänzungen zu prüfen und sicherzustellen, dass keine Anforderungen vergessen wurden und keine architektonischen Drifts entstanden sind.
2. Zu reviewende Spezifikationen
2.1 Core Specs (Phase 0 Foundation)
Lokation: c:/Dev/shinkan-jinkendo/.claude/docs/technical/
-
EXERCISES_ARCHITECTURE.md (ca. 800 Zeilen)
- Architektur-Entscheidungen
- Exercise/Variant/Block/Series Definitionen
- Media-Strategie
- API-Konventionen
- DB-Konventionen
- Decision Log
-
UI_COMPONENTS_SPEC.md (ca. 600 Zeilen)
- Base Components (Chip, MultiSelect, Accordion, DragDropList)
- Exercise Components (Card, QuickInfo, VariantCard, MediaGallery, MediaUploader)
- Layout Patterns
- Responsive Breakpoints
- Accessibility
-
EXERCISES_API_SPEC.md (ca. 574 Zeilen)
- Alle Endpoints (Exercises, Variants, Media)
- Request/Response Beispiele
- Validierung Rules
- Error Format
- HTTP Status Codes
-
EXERCISES_FRONTEND_ROUTING.md (ca. 400 Zeilen)
- Route-Struktur
- Navigation Patterns
- State Management (URL, Local, Context)
- Deep Linking
- Navigation Guards
- Performance (Lazy Loading, Prefetching)
-
MEDIA_UPLOAD_SPEC.md (ca. 500 Zeilen)
- Hybrid Upload-Strategie (Lokal + Embeds)
- Upload-Flow (Client + Server)
- Embed-Parsing (YouTube, Vimeo, Instagram, TikTok)
- Media-Galerie
- Drag & Drop Reordering
- Security & Performance
-
SEARCH_FILTER_SPEC.md (ca. 450 Zeilen)
- Multi-Layer Search (Keyword, Katalog, Meta)
- Volltext-Suche (tsvector)
- Frontend Filter-UI
- Erweiterte Filter (Multi-Select, Range, Equipment)
- Faceted Search
- Saved Searches
- Sortierung
-
EXERCISES_DATABASE_FINAL.md (ca. 600 Zeilen)
- Migration 014 (Variant Progression + Search Vector)
- Migration 015 (Semantic Matching - Optional)
- Migration 016 (Saved Searches)
- Vollständige Tabellenstruktur
- Indizes
- Constraints & Business Rules
- Trigger-Funktionen
3. Ursprüngliche Anforderungen
3.1 User-Anforderungen (Initial Message)
Quelle: Erste User-Message in Session
Kern-Anforderungen:
- Formatierte Ausgabe: Übungen mit Embedded Videos, Zeichnungen, optimiert für verschiedene Use Cases
- Varianten: Mehrere Varianten mit progressiven Schwierigkeitsstufen
- Exercise Series: Progression durch Varianten derselben Übung
- Exercise Blocks: Sammlungen verschiedener Übungen
- Multi-dimensionale Kategorisierung: Stil, Fokus, Zielgruppe, Fähigkeiten-Matrix mit Levels
- Trainingsplan-Integration: Muss mit Trainingsplan-System integrieren
- MediaWiki-Import: Direct API Integration (NICHT export-basiert)
- Robustheit: Kein ständiger Drift, skalierbar, umfassend
Spec-First Approach gewählt: Alle Specs VOR Implementation
3.2 User-Ergänzungen (Follow-up)
Quelle: Zweite User-Message mit 5 Klarstellungen
Präzisierungen:
- Priorisierung OK: Spec-First Ansatz bestätigt
- Web + Mobile Priorität (NICHT Print/PDF):
- Kurze vs. detaillierte Beschreibungen für Trainingspläne
- Media-Strategie: Lokaler Upload + YouTube/Instagram Embeds
- Exercise Series vs. Blocks Klarstellung:
- Series: Progressive Varianten derselben Übung (via Variant-Metadata)
- Blocks: Gruppierung VERSCHIEDENER Übungen (neue Entity)
- Template Blocks: Blocks mit Platzhaltern (gefüllt beim Planen)
- MediaWiki Import: Via Direct API (NICHT Export)
3.3 Referenz-Dokumente
Quelle: Zu lesende Dokumente vor Spec-Erstellung
-
shinkan_anforderungsdokument_entwurf.md (1425 Zeilen)
- Fachliche Anforderungen
- Reifegradmodelle
- Übungen & Methoden
- Trainingsplanung
- MVP Scope: Trainer-fokussiert
-
DOMAIN_MODEL.md (Version 0.3.4)
- Hierarchische Struktur: Fokusbereich → Stil → Zielgruppen (M:N)
- Primary/Secondary Pattern für M:N
- Migration 009 deployed (Zielgruppen M:N Refactoring)
-
DATABASE_SCHEMA.md (Version 0.3.4)
- Existierende M:N Tabellen
- Migrations 001-013 deployed
-
backend/routers/exercises.py (454 Zeilen)
- Existierendes CRUD
- Enrichment-Pattern für M:N Relations
- Filter-Support
-
backend/migrations/005_exercises.sql
- Base exercises table
- exercise_skills, exercise_variants, exercise_media
-
backend/migrations/008_mn_exercise_relations.sql
- M:N Migration (focus_areas, styles, target_groups, age_groups)
-
frontend/src/pages/ExercisesPage.jsx (609 Zeilen)
- Existierende UI (Grid, Filters, Modal)
- Limitation: Nutzt M:N Backend-Daten NICHT
4. Review-Kriterien
4.1 Vollständigkeit (Completeness)
Prüfe gegen ursprüngliche Anforderungen:
- Formatierte Ausgabe: Sind Embedded Videos, Zeichnungen, verschiedene Use Cases abgedeckt?
- Varianten mit Progression: Sind progressive Schwierigkeitsstufen spezifiziert?
- Exercise Series: Ist Progression durch Varianten klar definiert (OHNE separate Entity)?
- Exercise Blocks: Ist Gruppierung verschiedener Übungen spezifiziert?
- Template Blocks: Sind Platzhalter-Blocks für Planung definiert?
- Multi-dimensionale Kategorisierung: Sind Stil, Fokus, Zielgruppe, Skills mit Levels abgedeckt?
- Trainingsplan-Integration: Ist Integration mit Training Plan System spezifiziert?
- MediaWiki-Import: Ist Direct API Integration (NICHT Export) spezifiziert?
- Kurz vs. Detail: Sind verschiedene Beschreibungslängen für Trainingspläne definiert?
4.2 Konsistenz (Consistency)
Prüfe gegen Referenz-Dokumente:
- DOMAIN_MODEL.md: Folgen Specs der hierarchischen Struktur (Fokusbereich → Stil → Zielgruppen)?
- M:N Pattern: Wird
is_primaryFlag korrekt genutzt? - DATABASE_SCHEMA.md: Bauen Migrationen 014-016 auf 001-013 auf?
- Existierender Code: Sind Specs kompatibel mit
backend/routers/exercises.py? - Migration-Pattern: Folgen neue Migrationen dem idempotenten DO
Pattern?
4.3 Architektonische Korrektheit (No Drift)
Prüfe gegen User-Ergänzungen:
- Series vs. Blocks: Ist die Unterscheidung klar und korrekt umgesetzt?
- Series = Progression durch Varianten (Metadata in
exercise_variants) - Blocks = Neue Entity für Gruppierung verschiedener Übungen
- Series = Progression durch Varianten (Metadata in
- Media-Strategie: Hybrid (Lokal + Embeds) korrekt spezifiziert?
- Keine Cloud-Only Annahme: Lokaler Upload vorhanden?
- Direct API statt Export: MediaWiki-Import via API spezifiziert?
4.4 Technische Machbarkeit (Feasibility)
- Performance: Sind Performance-Targets realistisch (<50ms List, <150ms Search)?
- Skalierbarkeit: DB-Schema skaliert auf 5.000+ Übungen?
- Security: File-Upload-Validierung mit python-magic (nicht nur Extension)?
- UX: Mobile-Optimierung (Filter-Drawer, Sticky Search, Bottom-Nav) vorhanden?
4.5 Gaps & Fehlende Features
Prüfe auf vergessene Features:
- Trainingscharakter (M:N): Ist
exercise_training_charactersspezifiziert? - Fähigkeiten-Levels: Sind
required_levelundtarget_levelinexercise_skillsdefiniert? - Visibility-Workflow: Ist
private → club → officialStatus-Flow spezifiziert? - Permissions: Sind Owner-Checks (nur Ersteller darf bearbeiten) definiert?
- Pagination: Ist Pagination in List-Endpoints spezifiziert?
- Reordering: Ist Drag & Drop Reordering für Variants + Media definiert?
5. Review-Prozess
5.1 Schritt-für-Schritt Anleitung
Schritt 1: Dokumente lesen
- Lies alle 7 Core-Specs vollständig durch
- Mache dir Notizen zu Auffälligkeiten
- Markiere unklare oder widersprüchliche Stellen
Schritt 2: Checkliste durchgehen
- Gehe durch Abschnitt 4.1 (Vollständigkeit) - jede Anforderung einzeln prüfen
- Gehe durch Abschnitt 4.2 (Konsistenz) - gegen Referenz-Docs prüfen
- Gehe durch Abschnitt 4.3 (Architektur) - gegen User-Ergänzungen prüfen
- Gehe durch Abschnitt 4.4 (Machbarkeit) - technische Risiken bewerten
- Gehe durch Abschnitt 4.5 (Gaps) - fehlende Features identifizieren
Schritt 3: Cross-Check zwischen Specs
- ARCHITECTURE.md ↔ API_SPEC.md: Sind Decisions in API umgesetzt?
- API_SPEC.md ↔ DATABASE_FINAL.md: Matchen Endpoints zur DB-Struktur?
- UI_COMPONENTS_SPEC.md ↔ FRONTEND_ROUTING.md: Passen Komponenten zu Routes?
- MEDIA_UPLOAD_SPEC.md ↔ DATABASE_FINAL.md: Passt
exercise_mediaTabelle? - SEARCH_FILTER_SPEC.md ↔ DATABASE_FINAL.md: Ist
search_vectordefiniert?
Schritt 4: Gap-Analyse
- Erstelle Liste aller fehlenden Anforderungen
- Erstelle Liste aller widersprüchlichen Definitionen
- Erstelle Liste aller unklaren Spezifikationen
- Erstelle Liste aller technischen Risiken
Schritt 5: Review-Report erstellen
- Folge Template in Abschnitt 6
- Fülle alle Abschnitte vollständig aus
- Sei konkret: Datei + Zeile + Problem + Lösungsvorschlag
6. Review-Report Template
Nutze dieses Template für deinen Review-Report:
# Exercise System Specs - Review Report
**Reviewer:** [Dein Agent-Name]
**Review-Datum:** [Datum]
**Review-Dauer:** [ca. X Minuten]
**Gesamtbewertung:** [APPROVED / APPROVED WITH CHANGES / REJECTED]
---
## 1. Executive Summary
[2-3 Sätze: Sind die Specs bereit für Implementation? Größte Probleme?]
---
## 2. Vollständigkeit (Completeness)
### 2.1 Erfüllte Anforderungen ✅
- [x] Formatierte Ausgabe: Abgedeckt in MEDIA_UPLOAD_SPEC.md (Abschnitt 4)
- [x] Varianten mit Progression: Abgedeckt in EXERCISES_DATABASE_FINAL.md (Migration 014)
- [... weitere ...]
### 2.2 Fehlende Anforderungen ❌
| Anforderung | Wo fehlt es? | Kritikalität | Lösungsvorschlag |
|-------------|--------------|--------------|------------------|
| Exercise Blocks Entity | EXERCISES_ARCHITECTURE.md erwähnt, aber nicht in DATABASE_FINAL.md | HIGH | Migration 017 für `exercise_blocks` Tabelle hinzufügen |
| Template Blocks Platzhalter | Nirgendwo spezifiziert | MEDIUM | Erweitere `exercise_blocks` um `is_template` + `placeholders` JSONB |
| ... | ... | ... | ... |
---
## 3. Konsistenz (Consistency)
### 3.1 Inkonsistenzen zwischen Specs
| Problem | Betroffene Dateien | Impact | Fix |
|---------|-------------------|--------|-----|
| API_SPEC.md definiert `age_groups_catalog` als JSONB, aber DOMAIN_MODEL.md sagt M:N | API_SPEC.md Zeile 104, DOMAIN_MODEL.md Abschnitt 3 | MEDIUM | Entscheide: JSONB ODER M:N (empfohlen: M:N für Konsistenz) |
| ... | ... | ... | ... |
### 3.2 Inkonsistenzen mit Referenz-Dokumenten
| Problem | Spec-Datei | Referenz-Dokument | Fix |
|---------|-----------|-------------------|-----|
| DOMAIN_MODEL.md sagt Zielgruppen sind global (M:N), aber API_SPEC.md zeigt `target_group_id` als FK | API_SPEC.md Zeile 267 | DOMAIN_MODEL.md Abschnitt 3.3 | Korrigiere API_SPEC zu M:N Array |
| ... | ... | ... | ... |
---
## 4. Architektur-Drift
### 4.1 Abweichungen von User-Ergänzungen
| User-Anforderung | Spec-Umsetzung | Konform? | Problem / Fix |
|-----------------|----------------|----------|---------------|
| "Series = Varianten-Progression OHNE separate Entity" | EXERCISES_ARCHITECTURE.md Abschnitt 2.2 definiert Series korrekt als Metadata | ✅ JA | - |
| "Blocks = neue Entity für verschiedene Übungen" | EXERCISES_ARCHITECTURE.md erwähnt, DATABASE_FINAL.md fehlt Migration | ❌ NEIN | Migration 017 fehlt |
| "Direct API statt Export" | Nirgendwo spezifiziert | ❌ NEIN | Neue Spec MEDIAWIKI_IMPORT_SPEC.md nötig |
| ... | ... | ... | ... |
---
## 5. Technische Risiken
| Risiko | Betroffene Spec | Wahrscheinlichkeit | Impact | Mitigation |
|--------|----------------|-------------------|--------|------------|
| tsvector auf großen Texten langsam | SEARCH_FILTER_SPEC.md | MEDIUM | HIGH | Teste Performance mit 10.000 Zeichen Execution-Text |
| 50MB File-Upload blockiert Server | MEDIA_UPLOAD_SPEC.md | HIGH | MEDIUM | Chunk-Upload oder separater Upload-Worker |
| pgvector Extension nicht verfügbar | DATABASE_FINAL.md Migration 015 | LOW | LOW | Migration 015 ist optional (Phase 2) |
| ... | ... | ... | ... | ... |
---
## 6. Gap-Analyse
### 6.1 Komplett fehlende Features
1. **Exercise Blocks Implementation**
- Wo benötigt: DATABASE_FINAL.md, API_SPEC.md, UI_COMPONENTS_SPEC.md
- Kritikalität: HIGH (User-Anforderung #4)
- Aufwand: 1 Migration + 3 Endpoints + 2 Komponenten
2. **Template Blocks mit Platzhaltern**
- Wo benötigt: DATABASE_FINAL.md, API_SPEC.md
- Kritikalität: MEDIUM (User-Anforderung #4 Teil 2)
- Aufwand: Erweitere Blocks-Tabelle + 1 Endpoint
3. **MediaWiki Direct API Import**
- Wo benötigt: Neue Spec MEDIAWIKI_IMPORT_SPEC.md
- Kritikalität: HIGH (User-Anforderung #7)
- Aufwand: Neue Spec + Backend-Integration
4. [... weitere ...]
### 6.2 Unvollständig spezifizierte Features
1. **Trainingsplan-Integration**
- Status: Erwähnt in ARCHITECTURE.md, aber keine konkreten Endpoints
- Fehlende Details: Wie werden Übungen in Pläne eingefügt? API-Struktur?
- Fix: Erweitere API_SPEC.md um `/training-plans/{id}/exercises` Endpoints
2. [... weitere ...]
---
## 7. Kritische Findings (Must-Fix vor Implementation)
### 🔴 BLOCKER (Implementation NICHT starten ohne Fix)
1. **Exercise Blocks fehlen komplett**
- Impact: Kern-Anforderung #4 nicht erfüllt
- Fix: Migration 017 + API-Endpoints + UI-Komponenten spezifizieren
2. **MediaWiki-Import nicht spezifiziert**
- Impact: Kern-Anforderung #7 nicht erfüllt
- Fix: Neue Spec MEDIAWIKI_IMPORT_SPEC.md erstellen
### 🟠 MAJOR (Fix vor Phase 1 Abschluss)
1. **age_groups: JSONB vs. M:N Inkonsistenz**
- Impact: Daten-Modell unklar, spätere Migration schwierig
- Fix: Entscheide für M:N (Konsistenz) oder JSONB (Einfachheit)
2. [... weitere ...]
### 🟡 MINOR (Fix in Phase 2 akzeptabel)
1. **Semantic Matching (Migration 015) optional**
- Impact: Nice-to-have Feature, kein MVP-Blocker
- Fix: Kein Fix nötig, als Phase 2 markieren
2. [... weitere ...]
---
## 8. Empfehlungen
### 8.1 Vor Implementation starten
1. **Fixe alle BLOCKER:** Exercise Blocks + MediaWiki-Import spezifizieren
2. **Kläre MAJOR Issues:** age_groups Inkonsistenz auflösen
3. **Ergänze Extended Specs:** VARIANTS_PROGRESSION_SPEC.md, EXERCISE_BLOCKS_SPEC.md, PERMISSIONS_VISIBILITY_SPEC.md
4. **User-Review:** Zeige Specs dem User, hole Feedback zu Blocks/Template-Blocks
### 8.2 Implementation-Reihenfolge (falls APPROVED)
**Phase 1A - Foundation:**
1. Migration 014 (Search Vector + Variant Progression)
2. Migration 016 (Saved Searches)
3. Backend: GET/POST/PUT/DELETE `/exercises` + `/exercises/{id}/variants`
4. Frontend: ExercisesListPage + ExerciseDetailPage (ohne Blocks)
**Phase 1B - Media:**
1. Backend: `/exercises/{id}/media` Endpoints
2. Frontend: MediaUploader + MediaGallery Komponenten
**Phase 1C - Search:**
1. Backend: Search + Filter in GET `/exercises`
2. Frontend: SearchFilterBar Komponente
**Phase 2 - Blocks (nach BLOCKER-Fix):**
1. Migration 017 (Exercise Blocks)
2. Backend: `/exercise-blocks` Endpoints
3. Frontend: BlockEditor Komponente
**Phase 3 - Import:**
1. MEDIAWIKI_IMPORT_SPEC.md erstellen
2. Backend: MediaWiki API Connector
3. Frontend: Import-UI
---
## 9. Positive Findings ✅
[Was ist gut gelaufen? Was ist besonders gut spezifiziert?]
1. **Sehr detaillierte API-Spec:** Alle Request/Response-Beispiele vorhanden
2. **Konsistentes M:N Pattern:** is_primary Flag durchgängig genutzt
3. **Performance-bewusst:** Indizes, Caching, Lazy Loading spezifiziert
4. **Accessibility:** ARIA, Keyboard-Nav, Skip-Links definiert
5. [... weitere ...]
---
## 10. Nächste Schritte
### Für Spec-Autor (Original Agent):
1. [ ] Fixe BLOCKER #1: Exercise Blocks spezifizieren
2. [ ] Fixe BLOCKER #2: MediaWiki-Import spezifizieren
3. [ ] Kläre MAJOR Issue: age_groups JSONB vs. M:N
4. [ ] Aktualisiere betroffene Specs (siehe Abschnitt 7)
### Für User:
1. [ ] Lese Executive Summary + Kritische Findings
2. [ ] Entscheide über Blocks/Template-Blocks Umsetzung
3. [ ] Priorisiere MediaWiki-Import (jetzt oder später?)
4. [ ] Gib Feedback zu age_groups Entscheidung
### Für Implementation:
- **WARTE** bis alle BLOCKER gefixt sind
- **DANACH:** Starte mit Phase 1A (Foundation)
---
**Review abgeschlossen:** [Datum/Uhrzeit]
**Nächster Review:** [Nach BLOCKER-Fixes]
7. Wichtige Hinweise für Reviewer
7.1 Sei konkret
❌ SCHLECHT: "Die API-Spec ist inkonsistent"
✅ GUT: "API_SPEC.md Zeile 267 zeigt target_group_id als FK, aber DOMAIN_MODEL.md Abschnitt 3.3 definiert Zielgruppen als M:N"
7.2 Priorisiere nach Impact
- BLOCKER: Verhindert Implementation-Start
- MAJOR: Muss vor Phase 1 Abschluss gefixt werden
- MINOR: Kann in Phase 2 gefixt werden
7.3 Schlage Lösungen vor
Nicht nur Probleme nennen, sondern auch:
- Konkrete Fix-Vorschläge
- Alternative Ansätze
- Trade-offs aufzeigen
7.4 Sei fair
- Lobe gute Spezifikationen
- Erkenne schwierige Trade-offs an
- Berücksichtige MVP-Scope (nicht alles muss perfekt sein)
8. Erfolgs-Kriterien für APPROVED
Specs sind APPROVED, wenn:
- ✅ Alle User-Anforderungen (1-8) spezifiziert sind
- ✅ Alle User-Ergänzungen (1-5) korrekt umgesetzt sind
- ✅ Keine architektonischen Widersprüche existieren
- ✅ Specs konsistent mit Referenz-Dokumenten sind
- ✅ Keine BLOCKER-Issues offen sind
- ✅ Technische Machbarkeit gegeben ist
- ✅ Implementation-Reihenfolge klar definiert ist
Specs sind APPROVED WITH CHANGES, wenn:
- 1-2 MAJOR Issues existieren (aber klar, wie zu fixen)
- Mehrere MINOR Issues existieren
- Implementation kann starten, während Fixes parallel gemacht werden
Specs sind REJECTED, wenn:
- 3+ BLOCKER Issues existieren
- Fundamentale architektonische Probleme vorhanden
- Große Teile der Anforderungen fehlen
9. Beispiel-Review-Snippet
So sollte ein gutes Review-Finding aussehen:
### 🔴 BLOCKER #1: Exercise Blocks fehlen in DB-Schema
**Problem:**
- EXERCISES_ARCHITECTURE.md Abschnitt 2.3 definiert Exercise Blocks als "Gruppierung verschiedener Übungen"
- EXERCISES_DATABASE_FINAL.md (Migration 014-016) enthält KEINE `exercise_blocks` Tabelle
- API_SPEC.md spezifiziert KEINE `/exercise-blocks` Endpoints
**Impact:**
- User-Anforderung #4 ("Exercise Blocks: Sammlungen verschiedener Übungen") NICHT erfüllt
- Trainingsplan-Integration (Anforderung #6) ohne Blocks schwierig
**Betroffene Dateien:**
- EXERCISES_DATABASE_FINAL.md (fehlt Migration 017)
- EXERCISES_API_SPEC.md (fehlt Abschnitt "Exercise Blocks")
- UI_COMPONENTS_SPEC.md (fehlt "BlockEditor" Komponente)
**Lösungsvorschlag:**
1. **Migration 017: Exercise Blocks**
```sql
CREATE TABLE exercise_blocks (
id SERIAL PRIMARY KEY,
name VARCHAR(200) NOT NULL,
description TEXT,
is_template BOOLEAN DEFAULT FALSE,
placeholders JSONB, -- für Template-Blocks
created_by INT REFERENCES profiles(id),
created_at TIMESTAMP DEFAULT NOW()
);
CREATE TABLE exercise_block_items (
id SERIAL PRIMARY KEY,
block_id INT REFERENCES exercise_blocks(id) ON DELETE CASCADE,
exercise_id INT REFERENCES exercises(id) ON DELETE CASCADE,
sequence_order INT NOT NULL,
notes TEXT,
UNIQUE(block_id, sequence_order)
);
- API-Endpoints ergänzen:
GET /exercise-blocks- List blocksPOST /exercise-blocks- Create blockPUT /exercise-blocks/{id}- Update blockPOST /exercise-blocks/{id}/items- Add exercise to blockPUT /exercise-blocks/{id}/items/reorder- Reorder exercises
- UI-Komponente spezifizieren:
- BlockEditor mit Drag & Drop für Exercise-Reihenfolge
- Template-Modus mit Platzhalter-UI
Aufwand: ~4-6h (1 Migration + 5 Endpoints + 1 Komponente spezifizieren)
Kritikalität: BLOCKER - Implementation kann ohne Blocks NICHT User-Anforderungen erfüllen
---
## 10. Review starten
**Bereit? Dann:**
1. Lies alle 7 Spec-Dokumente gründlich
2. Gehe die Checkliste durch (Abschnitt 4)
3. Erstelle deinen Review-Report (Template Abschnitt 6)
4. Sei konkret, fair und konstruktiv
5. Priorisiere nach Impact (BLOCKER > MAJOR > MINOR)
**Viel Erfolg beim Review! 🚀**
---
**Letzte Aktualisierung:** 2026-04-24
**Version:** 1.0
**Autor:** Claude Code (Spec-Ersteller)