Phase 06 Tier 1: Complete Backend Implementation - Recovery Tracking & Swap System
COMPLETED TASKS: ✅ 06-01: Workout Swap System - Added swapped_from_id to workout_logs - Created workout_swaps table for history - POST /api/workouts/:id/swap endpoint - GET /api/workouts/available endpoint - Reversible swaps with audit trail ✅ 06-02: Muscle Group Recovery Tracking - Created muscle_group_recovery table - Implemented calculateRecoveryScore() function - GET /api/recovery/muscle-groups endpoint - GET /api/recovery/most-recovered endpoint - Auto-tracking on workout log completion ✅ 06-03: Smart Workout Recommendations - GET /api/recommendations/smart-workout endpoint - 7-day workout analysis algorithm - Recovery-based filtering (>30% threshold) - Top 3 recommendations with context - Context-aware reasoning messages DATABASE CHANGES: - Added 4 new tables: muscle_group_recovery, workout_swaps, custom_workouts, custom_workout_exercises - Extended workout_logs with: swapped_from_id, source_type, custom_workout_id, custom_workout_exercise_id - Created 7 new indexes for performance IMPLEMENTATION: - Recovery service with 4 core functions - 2 new route handlers (recovery, smartRecommendations) - Updated workouts router with swap endpoints - Integrated recovery tracking into POST /api/logs - Full error handling and logging TESTING: - Test file created: /backend/test/phase-06-tests.js - Ready for E2E and staging validation STATUS: Ready for frontend integration and production review Branch: feature/06-phase-06
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
{
|
||||
"id": "strength_5x5",
|
||||
"name": "Styrkeprogram 5x5",
|
||||
"goal": "strength",
|
||||
"description": "Klassiskt 5x5-upplägg för maximal styrkeökning. Fokus på de stora lyftena med progressiv överbelastning.",
|
||||
"experience_level": ["intermediate", "advanced"],
|
||||
"duration_weeks": 8,
|
||||
"workouts_per_week": [3, 4],
|
||||
"principles": [
|
||||
"5 sets x 5 reps på basövningar (85% av 1RM)",
|
||||
"Öka vikten med 2.5kg varje vecka om alla reps klaras",
|
||||
"3-5 min vila mellan tunga set",
|
||||
"Deload vecka 4 och 8"
|
||||
],
|
||||
"split": {
|
||||
"3_days": {
|
||||
"name": "A/B/A - B/A/B",
|
||||
"rotation": ["A", "B", "A"],
|
||||
"days": {
|
||||
"A": {
|
||||
"name": "Knäböj & Bänk",
|
||||
"exercises": [
|
||||
{ "id": "squat", "sets": 5, "reps": 5, "intensity": "85%", "rest": "3-5 min" },
|
||||
{ "id": "bench_press", "sets": 5, "reps": 5, "intensity": "85%", "rest": "3-5 min" },
|
||||
{ "id": "barbell_row", "sets": 5, "reps": 5, "intensity": "80%", "rest": "2-3 min" }
|
||||
]
|
||||
},
|
||||
"B": {
|
||||
"name": "Knäböj & Press",
|
||||
"exercises": [
|
||||
{ "id": "squat", "sets": 5, "reps": 5, "intensity": "85%", "rest": "3-5 min" },
|
||||
{ "id": "overhead_press", "sets": 5, "reps": 5, "intensity": "85%", "rest": "3-5 min" },
|
||||
{ "id": "deadlift", "sets": 1, "reps": 5, "intensity": "90%", "rest": "5 min" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"4_days": {
|
||||
"name": "Upper/Lower",
|
||||
"rotation": ["upper", "lower", "rest", "upper", "lower"],
|
||||
"days": {
|
||||
"upper": {
|
||||
"name": "Överkropp",
|
||||
"exercises": [
|
||||
{ "id": "bench_press", "sets": 5, "reps": 5, "intensity": "85%", "rest": "3-5 min" },
|
||||
{ "id": "barbell_row", "sets": 5, "reps": 5, "intensity": "80%", "rest": "3 min" },
|
||||
{ "id": "overhead_press", "sets": 4, "reps": 6, "intensity": "80%", "rest": "2-3 min" },
|
||||
{ "id": "pull_ups", "sets": 3, "reps": "max", "rest": "2 min" }
|
||||
]
|
||||
},
|
||||
"lower": {
|
||||
"name": "Underkropp",
|
||||
"exercises": [
|
||||
{ "id": "squat", "sets": 5, "reps": 5, "intensity": "85%", "rest": "3-5 min" },
|
||||
{ "id": "deadlift", "sets": 3, "reps": 5, "intensity": "85%", "rest": "4 min" },
|
||||
{ "id": "leg_press", "sets": 3, "reps": 8, "intensity": "75%", "rest": "2 min" },
|
||||
{ "id": "leg_curl", "sets": 3, "reps": 10, "rest": "90 sek" }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"progression": {
|
||||
"rule": "Om alla reps klaras, öka vikten nästa pass",
|
||||
"increment": {
|
||||
"upper_body": 2.5,
|
||||
"lower_body": 5.0
|
||||
},
|
||||
"deload": {
|
||||
"when": "2 missade pass i rad eller vecka 4/8",
|
||||
"reduction": "10%"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user