Commit Graph

62 Commits

Author SHA1 Message Date
d5fbc2cd5c refactor: update loading state management and enhance search functionality in ExercisesListPage
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 1m55s
- Replaced loading state with listFetching for clearer intent in managing exercise list fetching.
- Introduced search title suggestions for improved user experience during exercise searches.
- Updated UI elements to reflect changes in loading states and added datalist for search inputs, enhancing usability.
- Adjusted text for loading indicators to provide a more localized experience.
2026-04-28 15:24:05 +02:00
91b3fec5cc feat: enhance RichTextEditor and exercise variant management
Some checks failed
Deploy Development / deploy (push) Successful in 33s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 6s
Test Suite / playwright-tests (push) Failing after 1m55s
- Added support for saving and restoring text selection in the RichTextEditor, improving user experience during formatting.
- Updated CSS styles for the RichTextEditor to enhance list formatting and overall appearance.
- Introduced new ExerciseVariantFields component to streamline the editing of exercise variants, including fields for variant name, description, execution changes, and more.
- Enhanced ExerciseFormPage to manage exercise variants more effectively, including improved state handling and UI updates for variant selection.
2026-04-28 13:09:42 +02:00
1ee1a2f2d9 feat: update version to 0.7.9 and enhance exercise variant management
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 2m0s
- Incremented application version to 0.7.9 and updated changelog to reflect new features.
- Added support for creating, updating, and deleting exercise variants via new API endpoints.
- Implemented functionality for reordering exercise variants, improving user experience in managing exercise options.
- Enhanced frontend components to display and manage exercise variants, including detailed information and editing capabilities.
2026-04-28 10:59:09 +02:00
cf9f95377c feat: update version to 0.7.8 and enhance exercise variant handling
Some checks failed
Deploy Development / deploy (push) Successful in 34s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 5s
Test Suite / playwright-tests (push) Failing after 1m57s
- Incremented application version to 0.7.8 and updated database schema version to 20260427030.
- Added support for including exercise variants in the exercise listing API, improving training planning capabilities.
- Enhanced training unit creation and update logic to validate exercise variant IDs, ensuring proper associations.
- Updated frontend components to support exercise variant selection, improving user experience in training planning.
2026-04-28 09:30:33 +02:00
2c831d6cea refactor: enhance filtering logic and UI for ExercisesListPage
Some checks failed
Deploy Development / deploy (push) Successful in 34s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 5s
Test Suite / playwright-tests (push) Failing after 2m1s
- Removed the countActiveFilterGroups function and replaced it with a more comprehensive filterChips implementation to manage active filters.
- Improved the rendering of active filters with dynamic chips that allow users to remove individual filters.
- Updated the UI to reflect the new filtering logic, enhancing user experience and interaction with the filter options.
- Adjusted the layout and styling for better visibility and usability of the filter components.
2026-04-28 08:58:17 +02:00
0d4ad9a2c8 feat: implement exercise filter modal and enhance filtering logic
Some checks failed
Deploy Development / deploy (push) Successful in 34s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 5s
Test Suite / playwright-tests (push) Failing after 2m3s
- Added a new exercise filter modal with improved layout and styling for better user experience.
- Introduced initial filter state and logic to count active filter groups, enhancing the filtering capabilities on the ExercisesListPage.
- Updated CSS styles to support the new modal and improve overall UI consistency.
- Implemented keyboard accessibility for closing the filter modal, enhancing usability.
2026-04-28 08:21:55 +02:00
fd2009294b feat: enhance exercise filtering and UI components
Some checks failed
Deploy Development / deploy (push) Successful in 32s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 5s
Test Suite / playwright-tests (push) Failing after 1m54s
- Introduced multi-select functionality for filtering exercises by focus areas, style directions, training types, target groups, and skills, allowing users to select multiple options.
- Updated the ExercisesListPage to utilize the new multi-select component, improving the user experience for filtering exercises.
- Enhanced backend filtering logic to support new array-based query parameters, ensuring efficient handling of multiple filter criteria.
- Adjusted CSS styles for better layout and usability of the exercise filters.
2026-04-28 08:02:08 +02:00
025b161d2f feat: enhance exercise mapping and filtering capabilities
Some checks failed
Deploy Development / deploy (push) Successful in 36s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 6s
Test Suite / playwright-tests (push) Failing after 1m56s
- Added support for style direction mappings in the backend, allowing for improved categorization of exercises.
- Introduced a new function to normalize property synonyms, enhancing the mapping of exercise properties.
- Updated the exercise catalog assignment logic to include style directions, ensuring proper database entries.
- Enhanced the ExercisesListPage with new filtering options for style directions, improving user experience and search capabilities.
2026-04-28 07:25:33 +02:00
76098f5244 feat: update capability levels and enhance exercise filtering
Some checks failed
Deploy Development / deploy (push) Successful in 36s
Test Suite / lint-backend (push) Successful in 1s
Test Suite / build-frontend (push) Successful in 5s
Test Suite / playwright-tests (push) Failing after 1m55s
- Updated capability level mappings in the backend to reflect new terminology (e.g., "einsteiger" to "basis" and "experte" to "optimierung").
- Refactored the exercise management logic to normalize skill levels using canonical slugs, improving consistency across the application.
- Enhanced the ExercisesListPage with additional filtering options for style direction, training type, and target group, along with AI search capabilities.
- Incremented application version to 0.7.7 and updated changelog to document these changes.
2026-04-27 18:25:23 +02:00
c6d20e4dec feat: add listTrainingStyles to API utility functions
Some checks failed
Deploy Development / deploy (push) Successful in 36s
Test Suite / lint-backend (push) Successful in 1s
Test Suite / build-frontend (push) Successful in 6s
Test Suite / playwright-tests (push) Failing after 1m55s
- Introduced listTrainingStyles function to the API utility, enhancing the capabilities for managing training styles.
- This addition supports improved data retrieval for training-related features in the application.
2026-04-27 15:03:48 +02:00
0ad096e483 feat: enhance SQL query handling and UI components for exercise management
Some checks failed
Deploy Development / deploy (push) Successful in 36s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 5s
Test Suite / playwright-tests (push) Has been cancelled
- Introduced a new utility function to streamline SQL query construction for active status filtering, improving code reusability across multiple endpoints.
- Updated existing query logic in the catalogs and skills routers to utilize the new utility function, ensuring consistent handling of active status.
- Refactored the ExerciseFormPage to remove deprecated age group handling, simplifying the form structure.
- Enhanced the RichTextEditor component with improved link handling and formatting options for better user experience.
- Updated API utility functions to support new AI features for exercise suggestions and regeneration, expanding the capabilities of the exercise management system.
2026-04-27 15:01:47 +02:00
d8f439a3e5 feat: enhance exercise management with training types and rich text support
Some checks failed
Deploy Development / deploy (push) Successful in 36s
Test Suite / lint-backend (push) Successful in 1s
Test Suite / build-frontend (push) Successful in 6s
Test Suite / playwright-tests (push) Failing after 1m58s
- Added support for training types in exercise creation and updates, allowing for better categorization of exercises.
- Implemented a rich text editor for exercise descriptions, improving content formatting capabilities.
- Updated the ExerciseDetailPage to display training types and enhanced the layout for better user experience.
- Refactored ExerciseFormPage to accommodate new multi-association fields for training styles, types, and target groups.
- Improved API payload handling to include training types and ensure proper data structure for exercise management.
- Enhanced the ExercisesListPage with improved loading and filtering functionalities for better performance.
2026-04-27 14:48:46 +02:00
cb11e39201 feat: enhance exercise management and media handling
Some checks failed
Deploy Development / deploy (push) Successful in 36s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 5s
Test Suite / playwright-tests (push) Failing after 1m54s
- Introduced new API endpoints for managing exercise media, including upload, update, delete, and reorder functionalities.
- Updated the exercise creation and update logic to ensure goal and execution fields are validated and normalized.
- Refactored frontend components to support the new exercise media features, including a dedicated import section for complete stack files.
- Removed the deprecated ExercisesPage component and replaced it with a more modular structure for exercise management.
- Incremented database schema version to 20260427028 and updated changelog to reflect these changes.
2026-04-27 14:27:25 +02:00
2452b5e2e8 feat: update version to 0.7.6 and add matrix stack bundle functionality
Some checks failed
Deploy Development / deploy (push) Successful in 34s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 5s
Test Suite / playwright-tests (push) Failing after 1m54s
- Incremented application version to 0.7.6 and updated maturity models version to 1.4.0.
- Introduced new API endpoints for exporting and importing matrix stack bundles, enhancing the capabilities for managing maturity models and context bindings.
- Updated frontend components to support the new matrix stack export and import features, including UI elements for stack management.
- Documented changes in the changelog for version 0.7.6, detailing the new matrix stack functionality and its usage.
2026-04-27 13:13:36 +02:00
863535aa26 feat: update version to 0.7.5 and enhance maturity model binding logic
Some checks failed
Deploy Development / deploy (push) Successful in 36s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 5s
Test Suite / playwright-tests (push) Failing after 1m55s
- Incremented application version to 0.7.5 and updated maturity model version to 1.3.1.
- Improved binding logic to ensure that only relevant entries are considered based on the presence of context bindings.
- Updated documentation to clarify the behavior of binding resolution and its impact on legacy model resolution.
- Documented changes in the changelog for version 0.7.5, detailing the new binding resolution rules.
2026-04-27 13:05:18 +02:00
f2c007cc68 feat: update version to 0.7.4 and enhance maturity model functionality
Some checks failed
Deploy Development / deploy (push) Successful in 36s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 5s
Test Suite / playwright-tests (push) Failing after 1m59s
- Incremented application version to 0.7.4 and updated database schema version to 20260427027.
- Enhanced maturity model context bindings to support new filtering options for training styles.
- Introduced new API endpoints for importing and exporting maturity model bundles.
- Updated frontend components to include a matrix view and improved admin UI for managing maturity models.
- Documented changes in the changelog for version 0.7.4, detailing new features and improvements.
2026-04-27 12:48:22 +02:00
3397b2094d feat: update version to 0.7.3 and enhance maturity model context bindings
Some checks failed
Deploy Development / deploy (push) Successful in 38s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 5s
Test Suite / playwright-tests (push) Failing after 1m55s
- Incremented application version to 0.7.3 and updated database schema version to 20260427026.
- Enhanced maturity model context bindings with new hierarchical resolution logic for focus areas, style directions, and training types.
- Added new API endpoints for managing maturity model context bindings.
- Updated frontend components to support the new context binding functionality and improved admin UI for better user experience.
- Documented changes in the changelog for version 0.7.3, including new features and improvements.
2026-04-27 12:35:48 +02:00
469ec93074 feat: enhance admin UI for maturity models and skills catalog
Some checks failed
Deploy Development / deploy (push) Successful in 36s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 6s
Test Suite / playwright-tests (push) Failing after 1m55s
- Added new styles and layout for the maturity models admin panel, improving user experience.
- Removed unused multi-selection component for focus areas, style directions, and target groups.
- Updated skills catalog functionality to support editing and sorting of main categories and skills.
- Introduced a modal for editing main categories, categories, and skills with improved accessibility.
- Enhanced responsiveness and visual consistency across admin components.
2026-04-27 12:19:22 +02:00
e8b7e62832 feat: add skill main categories and enhance skills catalog functionality
Some checks failed
Deploy Development / deploy (push) Successful in 48s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 5s
Test Suite / playwright-tests (push) Failing after 1m57s
- Introduced endpoints for managing skill main categories, including CRUD operations.
- Enhanced skills catalog endpoint to support hierarchical sorting by main category and category.
- Updated frontend API utility functions to include new skill main category operations.
- Improved admin interface for skills management with new layout and styles.
- Documented changes in the changelog for better tracking of new features and updates.
2026-04-27 11:53:25 +02:00
f1ee1eec7e feat: update maturity models and version to 0.7.2
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 5s
Test Suite / playwright-tests (push) Failing after 1m55s
- Incremented application version to 0.7.2 and updated database schema version to 20260427025.
- Enhanced maturity models functionality to support M:N relationships for focus areas, style directions, and target groups.
- Updated frontend to allow multi-selection for focus areas, style directions, and target groups.
- Documented changes in the changelog for version 0.7.2, including new migration details and UI improvements.
2026-04-27 11:42:03 +02:00
5277f4f4cf feat: add maturity models functionality and update version
Some checks failed
Deploy Development / deploy (push) Successful in 34s
Test Suite / lint-backend (push) Successful in 1s
Test Suite / build-frontend (push) Successful in 5s
Test Suite / playwright-tests (push) Failing after 1m55s
- Introduced new maturity models feature with CRUD operations in the API.
- Added routes and frontend components for managing maturity models.
- Updated version to 0.7.1 with corresponding build date and schema version.
- Enhanced admin navigation to include maturity models section.
- Documented changes in the changelog for version 0.7.1.
2026-04-27 11:32:30 +02:00
c738f1234b fix: MediaWiki import - increase limit to 500 and add validation
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 1m54s
Error: 422 Unprocessable Entity when limit > 100
Root cause: Backend enforced max=100, frontend allowed any value

Backend fix:
- Increased preview limit from 100 to 500 (consistent with execute)
- import_wiki.py line 64: le=100 → le=500

Frontend fix:
- Added Math.min/max validation to both limit inputs
- Preview limit: max 500 with auto-clamp
- Execute limit: max 500 with auto-clamp
- Updated placeholder: 'Kein Limit (max 500)'

Prevents 422 errors from invalid limit values
2026-04-24 17:15:17 +02:00
89055ddbc4 feat: Admin page navigation with MediaWiki Import link
Some checks failed
Deploy Development / deploy (push) Successful in 36s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 5s
Test Suite / playwright-tests (push) Failing after 1m55s
- New AdminPageNav component with horizontal navigation
- Links to Hierarchie / Kataloge / Wiki-Import
- Integrated in all 3 admin pages
- Uses lucide-react icons (TreePine, FolderTree, Download)
- Active state tracking via useLocation
- Mobile-friendly with flexbox layout

Navigation flow:
/admin/hierarchy → /admin/catalogs → /admin/mediawiki-import
2026-04-24 17:03:13 +02:00
46d000d6b3 feat: SMW-Importer Frontend (Phase 2 complete)
Some checks failed
Test Suite / lint-backend (push) Waiting to run
Test Suite / build-frontend (push) Waiting to run
Test Suite / playwright-tests (push) Blocked by required conditions
Deploy Development / deploy (push) Has been cancelled
Phase 2A: API Functions
- 5 MediaWiki import functions in api.js
- previewMediaWikiImport, executeMediaWikiImport
- getMediaWikiImportStatus, listMediaWikiImportLogs
- deleteMediaWikiImportReference

Phase 2B: UI Component
- MediaWikiImportPage.jsx (3-tab interface)
- Preview Tab: Category selection, preview with accordions
- Execute Tab: Import form with status polling
- History Tab: Import log list with refresh

Phase 2C: Routing
- Added /admin/mediawiki-import route in App.jsx
- Import and ProtectedRoute wrapper

Issue: SMW-Importer Frontend (Option C from handover)
Related: backend/routers/csv_import.py (MediaWiki endpoints)
2026-04-24 16:06:49 +02:00
e80c8e01e1 fix: add listTrainingStyles alias for backward-compatibility (references listStyleDirections)
Some checks failed
Deploy Development / deploy (push) Successful in 33s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 5s
Test Suite / playwright-tests (push) Has been cancelled
2026-04-24 15:20:39 +02:00
0e0b709768 refactor: split AdminHierarchyPage into modular components
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 2m0s
Split 1200+ line file into clean modular architecture:
- FocusAreaNode.jsx - Tree nodes with nested style directions + training types
- HierarchyTab.jsx - Tab 1 with tree view and detail panel
- CatalogsTab.jsx - Tab 2 with global catalogs (Target Groups, Skill Categories, Training Characters)
- AssignmentsTab.jsx - Tab 3 with M:N checkbox matrix (Style Directions ↔ Target Groups)
- DetailPanel.jsx - All edit forms (Focus Area, Style Direction, Training Type) + create forms

Fixes ESBuild parser error from large file size.
Implements full CRUD: create, edit, delete, reassign focus areas.
Responsive design with mobile/desktop layouts.
2026-04-24 09:08:12 +02:00
9ec1cf7781 fix: temporarily use simple admin hierarchy to fix build
Some checks failed
Deploy Development / deploy (push) Successful in 36s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 6s
Test Suite / playwright-tests (push) Failing after 2m2s
Large AdminHierarchyPage.jsx (1200+ lines) causes ESBuild parser error.
Using simplified version temporarily while investigating the issue.

Broken version saved as AdminHierarchyPage.broken.jsx for debugging.
Will split into modules and restore full functionality.
2026-04-24 08:57:13 +02:00
af2fc31f70 fix: build error - remove dynamic template from style tag
Some checks failed
Deploy Development / deploy (push) Failing after 31s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Failing after 2s
Test Suite / playwright-tests (push) Has been skipped
2026-04-24 08:52:12 +02:00
3fda149049 feat: complete admin system - global catalogs + M:N assignments
Some checks failed
Deploy Development / deploy (push) Failing after 10s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Failing after 2s
Test Suite / playwright-tests (push) Has been skipped
Tab System:
- Tab 1: Hierarchie (Fokusbereich → Stilrichtung/Trainingstyp)
- Tab 2: Kataloge (Zielgruppen, Fähigkeiten, Trainingscharakter)
- Tab 3: Zuordnungen (Matrix Stilrichtungen ↔ Zielgruppen)

Global Catalogs (Tab 2):
- Zielgruppen: CRUD mit Altersangaben (zentral verwaltet)
- Fähigkeitskategorien: CRUD (global)
- Trainingscharakter: CRUD (global)
- Reusable CatalogSection component with dynamic fields
- Create/Edit/Delete für alle Kataloge
- Inline editing + validation

M:N Assignments Matrix (Tab 3):
- Checkbox-Grid: Stilrichtungen (Zeilen) × Zielgruppen (Spalten)
- Grouped by Focus Area for clarity
- Toggle assignments with immediate save
- Shows empty states with helpful messages
- Fully responsive table with horizontal scroll

Architecture:
- Trainingstypen: Context-specific per focus area (create new)
- Zielgruppen: Global catalog (assign via matrix)
- Clean separation of concerns
- Proper loading states + error handling

Mobile responsive across all tabs.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-24 08:46:32 +02:00
80986735b5 feat: complete admin hierarchy - create + reassign functions
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 5s
Test Suite / playwright-tests (push) Failing after 1m54s
Create Functions:
- '+ Neu' buttons for Style Directions and Training Types
- Create forms with focus area context
- Auto-assigns to parent focus area
- Loading states + validation

Reassignment:
- Focus area dropdown in edit forms
- Move style directions between focus areas
- Move training types between focus areas
- Updates hierarchy immediately after save

Full CRUD now complete:
- Create: new elements under focus area
- Read: tree view with nested elements
- Update: edit + reassign to different focus area
- Delete: with confirmation dialogs

Mobile + Desktop responsive design maintained.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-24 08:39:48 +02:00
af89546022 feat: complete admin hierarchy - edit/delete + responsive design
Some checks failed
Deploy Development / deploy (push) Successful in 36s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 5s
Test Suite / playwright-tests (push) Failing after 1m54s
Features:
- Edit forms for Style Directions and Training Types (working)
- Delete functions with confirmation dialogs
- Responsive layout: mobile (stacked), tablet/desktop (side-by-side)
- Back button on mobile to return to tree view
- Full CRUD except create (can use old catalogs page for now)

Mobile UX:
- Tree view fills screen
- Click item → detail panel replaces tree
- Back button → return to tree
- Safe bottom padding for navigation

Desktop UX:
- 400px tree + fluid detail panel
- Both always visible
- No back button (not needed)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-24 08:33:11 +02:00
599d696321 fix: add getAdminHierarchy to api export object
Some checks failed
Deploy Development / deploy (push) Successful in 37s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 6s
Test Suite / playwright-tests (push) Failing after 2m0s
2026-04-24 08:25:03 +02:00
7314ae1436 feat: Hierarchical Admin UI - Tree View for Catalogs
Some checks failed
Deploy Development / deploy (push) Successful in 1m2s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 7s
Test Suite / playwright-tests (push) Failing after 1m56s
Backend:
- New endpoint: GET /api/admin/hierarchy
- Returns hierarchical structure: Focus Areas with nested Style Directions + Training Types
- Style Directions include target_groups assignments (M:N)
- JSON aggregation for efficient data loading

Frontend:
- New page: AdminHierarchyPage.jsx with Tree + Detail Panel layout
- Tree View: Expandable/collapsible nodes (Focus Areas → Stilrichtungen/Trainingstypen)
- Detail Panel: Shows selected item details, inline editing
- Visual hierarchy: Icons, indentation, color coding
- Responsive layout: Fixed 400px tree, fluid detail panel

Routes:
- /admin now redirects to /admin/hierarchy (new default)
- /admin/hierarchy: Tree-based catalog management
- /admin/catalogs: Legacy flat UI (still available)

UX Improvements:
- Visual hierarchy instead of flat tabs
- M:N relationships visible (target groups per style)
- Better navigation: Click to select, expand/collapse sections
- Cleaner layout: Two-column design

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-24 07:51:40 +02:00
fe5d29e40e feat: Training Types → Focus Area Hierarchie
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 5s
Test Suite / playwright-tests (push) Failing after 1m55s
Migration 013:
- Adds focus_area_id to training_types (context-specific types)
- Migrates existing data to Karate focus area
- Seeds focus-area-specific training types:
  * Karate: Dan-Vorbereitung
  * Gewaltschutz: Präventivkurse, Intensivtraining, Spezialkurse
  * Fitness: Gesundheitssport, Funktionelles Training
- Updates unique constraint to (name, focus_area_id)

Backend (catalogs.py):
- list_training_types: Added focus_area_id filter, LEFT JOIN focus_areas
- create_training_type: Added focus_area_id parameter
- update_training_type: Added focus_area_id parameter
- Enriched responses with focus_area_name and focus_area_icon

Frontend (AdminCatalogsPage):
- Added Fokusbereich dropdown to create form
- Added Fokusbereich dropdown to edit form
- Display shows focus_area_icon and focus_area_name
- Training types now context-specific to focus areas

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-23 15:29:23 +02:00
9f44cff77b fix: Stilrichtungen → Fokusbereich Zuordnung (focus_area_id)
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 5s
Test Suite / playwright-tests (push) Failing after 1m54s
Problem: Stilrichtungen-Tab zeigte falsches Feld 'Übergeordneter Stil' (parent_style_id)
Lösung: Fokusbereich-Dropdown (focus_area_id) für Hierarchie

Backend (catalogs.py):
- INSERT: focus_area_id Parameter hinzugefügt
- UPDATE: focus_area_id Parameter hinzugefügt
- SELECT: LEFT JOIN focus_areas für focus_area_name + icon
- Response enriched mit focus_area_name/icon

Frontend (AdminCatalogsPage.jsx):
- newTS State: parent_style_id → focus_area_id
- Create Form: Fokusbereich-Dropdown statt 'Übergeordneter Stil'
- Edit Form: Fokusbereich-Dropdown mit focusAreas
- Display: Zeigt Fokusbereich-Icon + Name (accent color)
- parent_style_id bleibt für optionale Stil-Hierarchien

Jetzt kann Hierarchie korrekt angelegt werden:
 Karate → Goju-Ryu
 Karate → Shotokan
 Gewaltschutz → (eigene Stilrichtungen)

version: 0.5.0
module: catalogs 1.5.0, AdminCatalogsPage 2.2.0

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-23 14:36:02 +02:00
377f365473 feat: Add TrainerContextsPage to navigation
Some checks failed
Deploy Development / deploy (push) Successful in 34s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 5s
Test Suite / playwright-tests (push) Failing after 1m54s
- Import TrainerContextsPage in App.jsx
- Add route /trainer-contexts
- Add 'Meine Bereiche' to main navigation (appNav.js)
- Icon: Target (Zielscheibe) für Trainer-Bereiche
- Visible in both desktop sidebar and mobile bottom nav

version: 0.5.0
module: TrainerContextsPage 1.0.0

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-23 14:26:10 +02:00
5e2820c63c feat: Trainer-Kontext-System & Exercise Training Characters (v0.5.0)
Some checks failed
Deploy Development / deploy (push) Successful in 33s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 5s
Test Suite / playwright-tests (push) Failing after 1m55s
Migration 012:
- exercise_training_characters (M:N junction table)
- trainer_contexts (Fokussierte Trainer-Ansichten)
- Indizes für Performance
- Example seed data

Backend (catalogs.py):
- GET /api/trainer-contexts (list own contexts)
- POST /api/trainer-contexts (create context)
- PUT /api/trainer-contexts/{id} (update own context)
- DELETE /api/trainer-contexts/{id} (delete own context)
- Enriched responses mit focus_area_name, style_direction_name, training_type_name
- Ownership-Validation (nur eigene Kontexte)

Frontend:
- TrainerContextsPage.jsx (vollständige CRUD-UI)
- Kaskadierende Dropdowns (Fokusbereich → Stilrichtung)
- is_style_independent Flag für stilunabhängige Kontexte
- api.js erweitert (listTrainerContexts, create, update, delete)

Architektur:
- Flat Catalogs mit M:N überall
- NULL = 'für alles geeignet'
- Trainer-Kontexte für fokussierte Ansichten
- Vorbereitung für 1000+ Übungen mit flexibler KI-Filterung

version: 0.5.0 (backend + frontend)
module: exercises 0.5.0, catalogs 1.5.0
page: TrainerContextsPage 1.0.0

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-23 14:22:17 +02:00
9ab2bd31fa fix: Update onClick handlers to use renamed functions
Some checks failed
Deploy Development / deploy (push) Successful in 37s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 5s
Test Suite / playwright-tests (push) Failing after 1m55s
- createTrainingStyle → createStyleDirection
- updateTrainingStyle → updateStyleDirection
- deleteTrainingStyle → deleteStyleDirection

Fixes: Stilrichtungen tab showed blank screen due to undefined function calls

version: 0.4.0 (frontend)
module: AdminCatalogsPage 2.2.0

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-23 12:57:23 +02:00
426efd4b83 fix: Frontend API Calls & Field Names für renamed tables
Some checks failed
Deploy Development / deploy (push) Successful in 36s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 6s
Test Suite / playwright-tests (push) Failing after 1m55s
- Updated api.js function names:
  - listTrainingStyles → listStyleDirections
  - createTrainingStyle → createStyleDirection
  - updateTrainingStyle → updateStyleDirection
  - deleteTrainingStyle → deleteStyleDirection
  - listTrainingStyleTargetGroups → listStyleDirectionTargetGroups
  - createTrainingStyleTargetGroup → createStyleDirectionTargetGroup
  - updateTrainingStyleTargetGroup → updateStyleDirectionTargetGroup
  - deleteTrainingStyleTargetGroup → deleteStyleDirectionTargetGroup
  - getTrainingStylesHierarchy → getStyleDirectionsHierarchy
- Updated AdminCatalogsPage.jsx:
  - loadData() uses renamed API functions
  - CRUD functions renamed (createStyleDirection, etc.)
  - Matrix uses style_direction_id parameter
  - Hierarchy renders style_directions array
- Fixes data binding between frontend and backend after table rename

version: 0.4.0 (frontend)
module: AdminCatalogsPage 2.2.0

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-23 12:27:09 +02:00
a9a4c78a0e feat: Admin-UI Trainingsstil-Dimension + Umbenennung
Some checks failed
Deploy Development / deploy (push) Successful in 33s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 5s
Test Suite / playwright-tests (push) Failing after 1m54s
Admin-UI Erweiterung:

1. Tab "Trainingsstile" → "Stilrichtungen" umbenannt
   - Überschrift: "Neue Stilrichtung" (statt Trainingsstil)
   - Tab-Label: "Stilrichtungen"

2. Neuer Tab "Trainingsstil" (Breitensport/Leistungssport)
   - CRUD-UI: Create/Update/Delete
   - Felder: Name, Kürzel (abbreviation), Beschreibung
   - State: trainingTypes, editingTT, newTT
   - Funktionen: createTrainingType, updateTrainingType, deleteTrainingType
   - Load-Logik: activeTab === 'training-types'

Tab-Reihenfolge:
- Fokusbereiche → Stilrichtungen → Trainingsstil → Hierarchie → Zielgruppen → Zuordnungen

Pattern: Konsistent mit anderen Katalog-Tabs
Version: AdminCatalogsPage 2.1.0
2026-04-23 12:17:31 +02:00
72c927e69e feat: Backend API für training_types + Frontend api.js
Some checks failed
Deploy Development / deploy (push) Successful in 37s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 6s
Test Suite / playwright-tests (push) Failing after 1m55s
Backend (catalogs.py):
- GET /api/training-types (Liste)
- POST /api/training-types (Erstellen)
- PUT /api/training-types/{id} (Bearbeiten)
- DELETE /api/training-types/{id} (Löschen mit CASCADE-Check)
- Cascade-Protection: Fehler wenn Übungen zugeordnet

Frontend (api.js):
- listTrainingTypes(filters)
- createTrainingType(data)
- updateTrainingType(id, data)
- deleteTrainingType(id)
- Export zum api-Objekt hinzugefügt

Pattern: Konsistent mit anderen Katalog-Endpoints
CRUD: Volle Admin-Verwaltung

Version: 0.4.0
2026-04-23 12:12:48 +02:00
f243b236be feat: Phase C - Admin-UI M:N Hierarchie & Matrix
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 5s
Test Suite / playwright-tests (push) Failing after 2m1s
Frontend Admin-UI Refactoring (komplett):

1. Target Groups Tab überarbeitet (Global):
   - training_style_id Dropdown entfernt (Create + Edit)
   - Hierarchie-Anzeige entfernt (jetzt global unabhängig)
   - Nur noch Name, Beschreibung, Altersbereich

2. Neuer Tab 'Hierarchie' (Tree-View):
   - Fokusbereich → Trainingsstil → Zielgruppen
   - Expandable/Collapsible Nodes (▶/▼)
   - is_primary Kennzeichnung (★)
   - Hierarchische Darstellung mit Einrückung

3. Neuer Tab 'Zuordnungen' (M:N Matrix):
   - Checkbox-Matrix: Stile × Zielgruppen
   - Live-Toggle (Checkbox on/off)
   - Focus Area Kontext bei jedem Stil
   - is_primary Flag Anzeige (★)

UX:
- Tab-Reihenfolge: Fokusbereiche → Stile → Hierarchie → Zielgruppen → Zuordnungen
- Responsive Tabelle mit Overflow-Scroll
- Konsistente Card-basierte Layouts

Version: 0.3.4
Page: AdminCatalogsPage 2.0.0
2026-04-23 10:55:35 +02:00
1891a4ab88 feat: Phase B - Frontend API für M:N Zielgruppen
Some checks failed
Deploy Development / deploy (push) Successful in 33s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 5s
Test Suite / playwright-tests (push) Failing after 2m2s
Frontend API Layer:
- 5 neue api.js Funktionen für M:N Management
- listTrainingStyleTargetGroups(filters) - Liste mit Filtern
- createTrainingStyleTargetGroup(data) - Neue Zuordnung
- updateTrainingStyleTargetGroup(id, data) - is_primary ändern
- deleteTrainingStyleTargetGroup(id) - Zuordnung löschen
- getTrainingStylesHierarchy() - Hierarchische Struktur für Tree-View

Pattern: Konsistent mit bestehenden Catalog-Funktionen
Export: Alle Funktionen zum api-Objekt hinzugefügt

Version: 0.3.4 (Phase B)
2026-04-23 10:45:14 +02:00
1e5e18c0b3 feat: Migration 009 - Zielgruppen M:N Refactoring
Some checks failed
Deploy Development / deploy (push) Successful in 33s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 5s
Test Suite / playwright-tests (push) Failing after 1m57s
Backend Phase A (Database + API):
- Migration 009: target_groups.training_style_id entfernt
- Migration 009: Neue Junction-Tabelle training_style_target_groups
- Migration 009: Datenmigration alte → neue Struktur (idempotent)
- API: 5 neue Endpoints für M:N Management
  * GET /training-style-target-groups (mit Enrichment)
  * POST /training-style-target-groups (Upsert-Logik)
  * PUT /training-style-target-groups/{id} (is_primary)
  * DELETE /training-style-target-groups/{id}
  * GET /training-styles/hierarchy (für Tree-View)
- API: GET/POST/PUT /target-groups jetzt global (ohne training_style_id)
- API: DELETE /target-groups prüft beide Tabellen (CASCADE-Schutz)

Architecture:
- Eine Zielgruppe kann mehreren Stilen zugeordnet werden
- Basis für Admin Tree-View + M:N Matrix UI

Version: 0.3.4
Module: catalogs 1.3.0
2026-04-23 10:37:56 +02:00
2186bb3a69 fix: Admin-Navigation - Redirect /admin → /admin/catalogs
Some checks failed
Deploy Development / deploy (push) Successful in 34s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 5s
Test Suite / playwright-tests (push) Failing after 2m1s
Problem: Navigation-Link zeigte /admin, aber Route war /admin/catalogs
Folge: Klick auf 'Admin' führte zu 404 (Catch-all Redirect zu /)

Fix: Redirect-Route von /admin zu /admin/catalogs hinzugefügt

version: 0.3.3
2026-04-23 09:00:28 +02:00
278d719e84 feat: Zielgruppen-Verwaltung (Target Groups CRUD + Admin UI)
Some checks failed
Deploy Development / deploy (push) Successful in 32s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 5s
Test Suite / playwright-tests (push) Failing after 1m54s
Backend:
- GET /api/target-groups: Liste mit hierarchischem Kontext (focus_area → training_style → target_group)
- POST /api/target-groups: Create (admin only)
- PUT /api/target-groups/{id}: Update (admin only)
- DELETE /api/target-groups/{id}: Delete (superadmin only) mit CASCADE-Schutz
- Filter: by training_style_id, status

Frontend:
- api.js: listTargetGroups, createTargetGroup, updateTargetGroup, deleteTargetGroup
- AdminCatalogsPage: Neuer Tab "Zielgruppen" (6. Tab)
- Create-Form: training_style_id, name, description, min_age, max_age
- List-View: Hierarchie-Anzeige (Fokusbereich → Stil → Zielgruppe + Altersbereich)
- Inline-Editing mit Stil-Auswahl-Dropdown
- Delete mit Confirmation Dialog

Architektur:
- Hierarchische Beziehung: target_groups.training_style_id → training_styles → focus_areas
- CASCADE-Protection: DELETE verweigert wenn exercise_target_groups Einträge existieren
- Backend liefert enriched data mit training_style_name + focus_area_name

version: 0.3.2
modules: catalogs 1.2.0
pages: AdminCatalogsPage 1.1.0
2026-04-23 08:55:54 +02:00
d67f659e97 feat: Exercises-Router M:N Zuordnungen
Some checks failed
Deploy Development / deploy (push) Successful in 34s
Test Suite / lint-backend (push) Successful in 1s
Test Suite / build-frontend (push) Successful in 4s
Test Suite / playwright-tests (push) Failing after 1m57s
Backend API erweitert um M:N Katalog-Zuordnungen:
- GET /exercises/{id}: Liefert focus_areas[], training_styles[], target_groups[], age_groups_catalog[]
- POST /exercises: Akzeptiert focus_areas_multi[], training_styles_multi[], target_groups_multi[], age_groups_catalog[]
- PUT /exercises/{id}: DELETE+INSERT Pattern für M:N Updates (konsistent mit skills)

Rückwärtskompatibilität:
- Legacy FK-Felder (focus_area_id, training_style_id, training_character_id) bleiben erhalten
- Alte Aufrufe funktionieren unverändert
- Neue M:N Felder sind optional

version: 0.3.1
modules: exercises 0.4.0
2026-04-23 08:51:45 +02:00
63b1c09975 feat: Migration 008 - M:N Exercise Relations + Hierarchical Catalogs
Some checks failed
Deploy Development / deploy (push) Successful in 34s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 5s
Test Suite / playwright-tests (push) Has been cancelled
BREAKING CHANGE: Datenmodell-Umstellung von 1:1 auf M:N Beziehungen

Migration 008:
- Zielgruppen-Tabelle (target_groups) mit training_style_id Hierarchie
- M:N Zuordnungstabellen: exercise_focus_areas, exercise_styles, exercise_target_groups
- Altersgruppen-Dimension (exercise_age_groups) mit CHECK constraint
- Hierarchische Struktur: training_styles.focus_area_id → focus_areas
- Daten-Migration: Bestehende 1:1 Beziehungen zu M:N mit is_primary=true
- Seed-Daten: Beispiel-Zielgruppen für Shotokan

Architektur:
- Smart Cascade-Logik (RESTRICT, Rerouting, Move) vorbereitet
- Legacy-Spalten (focus_area_id, training_style_id) bleiben zur Rückwärtskompatibilität
- Primary/Secondary Assignments via is_primary Flag

Dokumentation:
- .claude/docs/technical/DATABASE_SCHEMA.md (kontinuierlich gepflegt)
- .claude/docs/functional/DOMAIN_MODEL.md (fachliche Anforderungen)
- Migrations-Historie aktualisiert

version: 0.3.0 (backend + frontend)
modules: exercises 0.3.0, catalogs 1.1.0
DB_SCHEMA_VERSION: 20260423

Konzept: shinkan_anforderungsdokument_entwurf.md (§8.1, §8.3, §10.7)
2026-04-23 08:46:56 +02:00
0c7caea847 version: Bump to 0.2.0 + Changelog (Admin-Kataloge)
Some checks failed
Deploy Development / deploy (push) Successful in 33s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 5s
Test Suite / playwright-tests (push) Failing after 1m56s
CRITICAL FIX: Versions-Bump nachgeholt (war Pflicht laut ARCHITECTURE.md §2.5)

Backend:
- APP_VERSION: 0.1.0 → 0.2.0
- BUILD_DATE: 2026-04-21 → 2026-04-23
- DB_SCHEMA_VERSION: 20260421 → 20260422 (Migration 007)
- MODULE_VERSIONS: catalogs 1.0.0 (neu), exercises 0.2.0

Frontend:
- version.js neu erstellt
- PAGE_VERSIONS: ExercisesPage 1.1.0, AdminCatalogsPage 1.0.0

Changelog:
- Admin-Kataloge Feature komplett dokumentiert
- Migration 007, Frontend-Integration, Formular-Standardisierung

Deployment sollte jetzt korrekte Version zeigen + Katalog-Endpoints funktionieren.
2026-04-23 08:05:11 +02:00
c7cda03201 feat: Admin-managed exercise catalogs + frontend integration
Some checks failed
Deploy Development / deploy (push) Successful in 41s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 6s
Test Suite / playwright-tests (push) Failing after 1m57s
Backend (already committed):
- Migration 007: focus_areas, training_styles, training_characters, skill_categories tables
- routers/catalogs.py: 20 CRUD endpoints for all catalogs
- routers/exercises.py: Updated to support new FK fields
- Trainer focus area assignment for role-based filtering

Frontend (new):
- AdminCatalogsPage: Comprehensive admin UI with 5 tabs
  - Focus Areas (with color + icon)
  - Training Styles (hierarchical with parent_style_id)
  - Training Characters
  - Skill Categories (hierarchical)
  - Trainer Assignments (trainer → focus area mapping)
- ExercisesPage: Updated to use catalog dropdowns
  - Focus area dropdown now loads from API
  - Added missing Training Style dropdown
  - Training character dropdown now loads from API
  - Uses IDs instead of hard-coded text values
- App.jsx: Added /admin/catalogs route
- api.js: Added all catalog endpoints

All form fields standardized: labels on top, full width, left-aligned
Ready for testing via /admin/catalogs
2026-04-23 07:52:03 +02:00