v9d Phase 2d: Vitals Module Refactoring (Baseline + Blood Pressure) #22

Merged
Lars merged 29 commits from develop into main 2026-03-23 16:27:03 +01:00
2 changed files with 14 additions and 8 deletions
Showing only changes of commit 2abaac22cf - Show all commits

View File

@ -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`

View File

@ -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}`),