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,66 @@
|
||||
#!/usr/bin/env node
|
||||
/**
|
||||
* Claude Flow Agent Router
|
||||
* Routes tasks to optimal agents based on learned patterns
|
||||
*/
|
||||
|
||||
const AGENT_CAPABILITIES = {
|
||||
coder: ['code-generation', 'refactoring', 'debugging', 'implementation'],
|
||||
tester: ['unit-testing', 'integration-testing', 'coverage', 'test-generation'],
|
||||
reviewer: ['code-review', 'security-audit', 'quality-check', 'best-practices'],
|
||||
researcher: ['web-search', 'documentation', 'analysis', 'summarization'],
|
||||
architect: ['system-design', 'architecture', 'patterns', 'scalability'],
|
||||
'backend-dev': ['api', 'database', 'server', 'authentication'],
|
||||
'frontend-dev': ['ui', 'react', 'css', 'components'],
|
||||
devops: ['ci-cd', 'docker', 'deployment', 'infrastructure'],
|
||||
};
|
||||
|
||||
const TASK_PATTERNS = {
|
||||
// Code patterns
|
||||
'implement|create|build|add|write code': 'coder',
|
||||
'test|spec|coverage|unit test|integration': 'tester',
|
||||
'review|audit|check|validate|security': 'reviewer',
|
||||
'research|find|search|documentation|explore': 'researcher',
|
||||
'design|architect|structure|plan': 'architect',
|
||||
|
||||
// Domain patterns
|
||||
'api|endpoint|server|backend|database': 'backend-dev',
|
||||
'ui|frontend|component|react|css|style': 'frontend-dev',
|
||||
'deploy|docker|ci|cd|pipeline|infrastructure': 'devops',
|
||||
};
|
||||
|
||||
function routeTask(task) {
|
||||
const taskLower = task.toLowerCase();
|
||||
|
||||
// Check patterns
|
||||
for (const [pattern, agent] of Object.entries(TASK_PATTERNS)) {
|
||||
const regex = new RegExp(pattern, 'i');
|
||||
if (regex.test(taskLower)) {
|
||||
return {
|
||||
agent,
|
||||
confidence: 0.8,
|
||||
reason: `Matched pattern: ${pattern}`,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
// Default to coder for unknown tasks
|
||||
return {
|
||||
agent: 'coder',
|
||||
confidence: 0.5,
|
||||
reason: 'Default routing - no specific pattern matched',
|
||||
};
|
||||
}
|
||||
|
||||
// CLI
|
||||
const task = process.argv.slice(2).join(' ');
|
||||
|
||||
if (task) {
|
||||
const result = routeTask(task);
|
||||
console.log(JSON.stringify(result, null, 2));
|
||||
} else {
|
||||
console.log('Usage: router.js <task description>');
|
||||
console.log('\nAvailable agents:', Object.keys(AGENT_CAPABILITIES).join(', '));
|
||||
}
|
||||
|
||||
module.exports = { routeTask, AGENT_CAPABILITIES, TASK_PATTERNS };
|
||||
Reference in New Issue
Block a user