diff --git a/frontend/src/pages/AdminTrainingProfiles.jsx b/frontend/src/pages/AdminTrainingProfiles.jsx index 0173a06..b94e9b0 100644 --- a/frontend/src/pages/AdminTrainingProfiles.jsx +++ b/frontend/src/pages/AdminTrainingProfiles.jsx @@ -21,9 +21,9 @@ export default function AdminTrainingProfiles() { try { setLoading(true) const [typesData, statsData, templatesData] = await Promise.all([ - api.get('/admin/training-types'), - api.get('/admin/training-types/profiles/stats'), - api.get('/admin/training-types/profiles/templates') + api.adminListTrainingTypes(), + api.getProfileStats(), + api.getProfileTemplates() ]) setTrainingTypes(typesData) setStats(statsData) @@ -55,7 +55,7 @@ export default function AdminTrainingProfiles() { const profile = JSON.parse(profileJson) // Update training type - await api.put(`/admin/training-types/${selectedType.id}`, { profile }) + await api.adminUpdateTrainingType(selectedType.id, { profile }) setSuccess(`Profil für "${selectedType.name_de}" gespeichert`) closeEditor() @@ -69,9 +69,7 @@ export default function AdminTrainingProfiles() { if (!confirm(`Template "${templateKey}" auf diesen Trainingstyp anwenden?`)) return try { - await api.post(`/admin/training-types/${typeId}/profile/apply-template`, { - template_key: templateKey - }) + await api.applyProfileTemplate(typeId, templateKey) setSuccess('Template erfolgreich angewendet') load() } catch (e) { @@ -83,7 +81,7 @@ export default function AdminTrainingProfiles() { if (!confirm('Alle Aktivitäten neu evaluieren? Das kann einige Sekunden dauern.')) return try { - const result = await api.post('/evaluation/batch') + const result = await api.batchEvaluateActivities() setSuccess( `Batch-Evaluation abgeschlossen: ${result.stats.evaluated} evaluiert, ` + `${result.stats.skipped} übersprungen, ${result.stats.errors} Fehler` diff --git a/frontend/src/utils/api.js b/frontend/src/utils/api.js index cf1deb1..c840cd1 100644 --- a/frontend/src/utils/api.js +++ b/frontend/src/utils/api.js @@ -214,6 +214,14 @@ export const api = { adminDeleteTrainingType: (id) => req(`/admin/training-types/${id}`, {method:'DELETE'}), getAbilitiesTaxonomy: () => req('/admin/training-types/taxonomy/abilities'), + // Admin: Training Type Profiles (Phase 2 #15) + getProfileStats: () => req('/admin/training-types/profiles/stats'), + getProfileTemplates: () => req('/admin/training-types/profiles/templates'), + getProfileTemplate: (key) => req(`/admin/training-types/profiles/templates/${key}`), + applyProfileTemplate: (id,templateKey) => req(`/admin/training-types/${id}/profile/apply-template`, json({template_key: templateKey})), + getTrainingParameters: () => req('/evaluation/parameters'), + batchEvaluateActivities: () => req('/evaluation/batch', {method:'POST'}), + // Admin: Activity Type Mappings (v9d Phase 1b - Learnable System) adminListActivityMappings: (profileId, globalOnly) => req(`/admin/activity-mappings${profileId?'?profile_id='+profileId:''}${globalOnly?'?global_only=true':''}`), adminGetActivityMapping: (id) => req(`/admin/activity-mappings/${id}`),