ai-team-orchestrator
Version:
🧠 AI Team Advanced - Maximum Quality Agent System avec 9 agents ultra-spécialisés et collaboration intelligente
316 lines (261 loc) • 12 kB
JavaScript
/**
* Enhanced Templates Helper - Méthodes utilitaires pour les templates
* Support pour AI Team Orchestrator v2.5.0
*/
import fs from 'fs';
export class EnhancedTemplatesHelper {
/**
* Collecte le contexte du projet pour enrichir les prompts
*/
static async gatherProjectContext() {
const context = {};
try {
// Analyser package.json s'il existe
if (fs.existsSync('package.json')) {
const packageJson = JSON.parse(fs.readFileSync('package.json', 'utf8'));
context.projectName = packageJson.name;
context.dependencies = Object.keys(packageJson.dependencies || {});
context.devDependencies = Object.keys(packageJson.devDependencies || {});
context.scripts = Object.keys(packageJson.scripts || {});
// Détecter le type de projet
if (context.dependencies.includes('react') || context.dependencies.includes('vue') || context.dependencies.includes('angular')) {
context.projectType = 'frontend';
} else if (context.dependencies.includes('express') || context.dependencies.includes('fastify') || context.dependencies.includes('koa')) {
context.projectType = 'backend';
}
}
// Analyser la structure des dossiers
const commonDirs = ['src', 'lib', 'components', 'pages', 'api', 'services', 'utils', 'tests', '__tests__'];
context.projectStructure = commonDirs.filter(dir => fs.existsSync(dir));
// Analyser les fichiers de configuration
const configFiles = ['.eslintrc', 'tsconfig.json', 'tailwind.config.js', 'next.config.js', 'vite.config.js', 'webpack.config.js'];
context.configFiles = configFiles.filter(file =>
fs.existsSync(file) || fs.existsSync(file + '.js') || fs.existsSync(file + '.json')
);
// Détecter TypeScript
if (fs.existsSync('tsconfig.json') || context.dependencies?.includes('typescript')) {
context.hasTypeScript = true;
}
// Détecter les frameworks de test
const testFrameworks = ['jest', 'vitest', 'mocha', 'cypress', 'playwright'];
context.testFrameworks = testFrameworks.filter(framework =>
context.dependencies?.includes(framework) || context.devDependencies?.includes(framework)
);
} catch (error) {
console.log('📝 Contexte projet non détecté, utilisation des defaults');
}
return context;
}
/**
* Génère des suggestions de stack technique selon le contexte
*/
static generateTechStackSuggestions(type, context) {
const hasReact = context.dependencies?.includes('react');
const hasVue = context.dependencies?.includes('vue');
const hasNext = context.dependencies?.includes('next');
const hasExpress = context.dependencies?.includes('express');
const hasTypeScript = context.hasTypeScript;
const suggestions = {
frontend: `- **Framework:** ${hasReact ? 'React' : hasVue ? 'Vue.js' : hasNext ? 'Next.js' : 'React (recommandé)'}
- **Styling:** ${context.dependencies?.includes('tailwindcss') ? 'Tailwind CSS' : 'CSS Modules / Styled Components'}
- **State Management:** ${hasReact ? 'React Query + Zustand' : 'Pinia / Vuex'}
- **Testing:** ${context.testFrameworks?.includes('jest') ? 'Jest + Testing Library' : 'Vitest + Testing Library'}
- **Build:** ${hasNext ? 'Next.js' : 'Vite / Webpack'}`,
backend: `- **Runtime:** ${context.dependencies?.includes('express') ? 'Node.js + Express' : 'Node.js + Fastify'}
- **Base de données:** PostgreSQL + Prisma ORM
- **Authentification:** JWT + bcrypt
- **Validation:** Zod / Joi
- **Testing:** ${context.testFrameworks?.includes('jest') ? 'Jest + Supertest' : 'Vitest + Supertest'}`,
testing: `- **Unit Testing:** ${context.testFrameworks?.includes('jest') ? 'Jest' : 'Vitest'} + Testing Library
- **E2E Testing:** ${context.testFrameworks?.includes('cypress') ? 'Cypress' : 'Playwright'}
- **Performance:** K6 / Artillery
- **Visual Testing:** Percy / Chromatic
- **Coverage:** NYC / C8`,
bug_fix: `- **Debugging:** Chrome DevTools / Node.js Inspector
- **Logging:** Winston / Pino
- **Monitoring:** Sentry / DataDog
- **Profiling:** Clinic.js / 0x
- **Testing:** Framework existant + tests de régression`,
refactor: `- **Linting:** ESLint + Prettier
- **Type Checking:** ${hasTypeScript ? 'TypeScript strict mode' : 'TypeScript (migration recommandée)'}
- **Code Analysis:** SonarQube / CodeClimate
- **Testing:** Maintien de la couverture existante
- **Documentation:** JSDoc / TSDoc`
};
return suggestions[type] || suggestions.feature || `- Technologies adaptées au projet existant
- TypeScript pour la robustesse${hasTypeScript ? ' (déjà configuré)' : ''}
- Framework de test moderne
- Outils de qualité de code (ESLint, Prettier)`;
}
/**
* Description enrichie par défaut avec templates avancés
*/
static getEnhancedDefaultDescription(title, type, context) {
const techStack = this.generateTechStackSuggestions(type, context);
const complexity = context.complexity || 'medium';
return `## 🎯 Objectif
${title}
## 📋 Description Technique
Tâche de développement **${type}** avec une complexité estimée à **${complexity}**.
${this.getTypeSpecificSection(type)}
## 🔧 Stack Technique Suggérée
${techStack}
## ⚡ Critères de Performance
${this.getPerformanceCriteria(type)}
## ✅ Critères d'Acceptation
${this.getAcceptanceCriteria(type)}
## 🧪 Tests Requis
${this.getTestingRequirements(type)}
## 📚 Documentation
- Documentation technique complète
- Commentaires de code explicatifs
- Guide d'utilisation si applicable
- Diagrammes d'architecture si nécessaire
---
## 🤖 Métadonnées AI Team
- **Template utilisé:** ${type} (fallback enrichi)
- **Complexité détectée:** ${complexity}
- **Contexte projet:** ${context.projectType || 'détection automatique'}
- **TypeScript:** ${context.hasTypeScript ? '✅ Détecté' : '❌ Non détecté'}
- **Frameworks de test:** ${context.testFrameworks?.join(', ') || 'À définir'}
*Généré par AI Team Orchestrator v2.5.0 avec système de templates avancés*`;
}
static getTypeSpecificSection(type) {
const sections = {
frontend: `### 🎨 Spécifications Frontend
- Interface utilisateur moderne et responsive
- Composants réutilisables et maintenables
- Gestion d'état appropriée (local/global)
- Optimisations de performance (lazy loading, code splitting)
- Accessibilité (WCAG 2.1)`,
backend: `### ⚙️ Spécifications Backend
- Architecture REST ou GraphQL selon le besoin
- Modélisation de données robuste
- Authentification et autorisation sécurisées
- Gestion d'erreurs et logging appropriés
- Optimisations de performance (cache, queries)`,
testing: `### 🧪 Stratégie de Test
- Tests unitaires avec haute couverture
- Tests d'intégration pour les APIs
- Tests end-to-end pour les parcours critiques
- Tests de performance et de charge
- Validation de sécurité`,
bug_fix: `### 🐛 Analyse et Correction
- Investigation approfondie de la cause racine
- Reproduction du bug en environnement de test
- Correction minimale et sûre
- Tests de régression pour éviter la récurrence
- Documentation de la solution`,
refactor: `### 🏗️ Refactoring Structuré
- Analyse du code existant et identification des améliorations
- Refactoring incrémental avec validation continue
- Amélioration de la lisibilité et de la maintenabilité
- Réduction de la complexité cyclomatique
- Préservation des fonctionnalités existantes`,
feature: `### 🚀 Nouvelle Fonctionnalité
- Spécifications fonctionnelles détaillées
- Conception technique adaptée à l'architecture existante
- Implémentation par étapes avec validation
- Tests complets de la fonctionnalité
- Documentation utilisateur et technique`
};
return sections[type] || sections.feature;
}
static getPerformanceCriteria(type) {
const criteria = {
frontend: `- First Contentful Paint (FCP) < 1.5s
- Largest Contentful Paint (LCP) < 2.5s
- Time to Interactive (TTI) < 3.5s
- Cumulative Layout Shift (CLS) < 0.1
- Bundle size optimisé avec code splitting`,
backend: `- Response time API < 100ms (95th percentile)
- Throughput > 1000 req/sec
- Memory usage stable (pas de leaks)
- Database query time < 50ms
- Error rate < 0.1%`,
testing: `- Test execution time < 5min (suite complète)
- Tests unitaires < 10s
- Tests E2E < 2min par parcours
- Coverage report génération < 30s
- Parallel execution optimisée`,
bug_fix: `- Correction sans dégradation performance
- Temps de résolution < 24h pour bugs critiques
- Impact minimal sur l'existant
- Validation en staging avant production`,
refactor: `- Performance égale ou améliorée
- Temps de build inchangé ou réduit
- Memory footprint maintenu
- Aucune régression fonctionnelle`
};
return criteria[type] || criteria.feature || `- Performance adaptée au type de tâche
- Monitoring des métriques clés
- Optimisation selon les besoins
- Validation avant déploiement`;
}
static getAcceptanceCriteria(type) {
const criteria = {
frontend: `- [ ] Interface responsive (mobile, tablet, desktop)
- [ ] Accessibilité WCAG 2.1 AA validée
- [ ] Cross-browser compatibility (Chrome, Firefox, Safari, Edge)
- [ ] Performance Web Vitals dans les seuils
- [ ] Tests E2E des parcours principaux`,
backend: `- [ ] API complètement documentée (OpenAPI/Swagger)
- [ ] Authentification et autorisation implémentées
- [ ] Validation des données d'entrée robuste
- [ ] Gestion d'erreurs appropriée
- [ ] Logs structurés et monitoring`,
testing: `- [ ] Couverture de code > 85%
- [ ] Tests stables et fiables (pas de flaky tests)
- [ ] Rapports de test détaillés et exploitables
- [ ] Intégration CI/CD fonctionnelle
- [ ] Documentation des scénarios de test`,
bug_fix: `- [ ] Bug reproduit et corrigé
- [ ] Tests de régression ajoutés
- [ ] Validation en environnement de staging
- [ ] Aucune régression introduite
- [ ] Post-mortem documenté si critique`,
refactor: `- [ ] Fonctionnalités existantes préservées
- [ ] Tests existants passent toujours
- [ ] Code plus lisible et maintenable
- [ ] Complexité réduite (métriques améliorées)
- [ ] Documentation technique mise à jour`
};
return criteria[type] || criteria.feature || `- [ ] Fonctionnalité implémentée selon les spécifications
- [ ] Tests complets (unitaires, intégration, E2E)
- [ ] Code review validé par l'équipe
- [ ] Documentation technique et utilisateur
- [ ] Déploiement validé en staging`;
}
static getTestingRequirements(type) {
const requirements = {
frontend: `- Tests unitaires des composants React/Vue
- Tests d'intégration des hooks et stores
- Tests E2E des parcours utilisateur
- Tests de régression visuelle
- Tests d'accessibilité automatisés`,
backend: `- Tests unitaires des services et utilitaires
- Tests d'intégration des APIs
- Tests de base de données avec fixtures
- Tests de sécurité (authentification, validation)
- Tests de performance et de charge`,
testing: `- Stratégie de test complète définie
- Suites de tests automatisées
- Tests de performance intégrés
- Monitoring de la qualité des tests
- Formation équipe sur les outils`,
bug_fix: `- Tests reproduisant le bug avant correction
- Tests de régression spécifiques
- Validation manuelle du fix
- Tests d'impact sur les fonctionnalités connexes`,
refactor: `- Conservation des tests existants
- Tests additionnels pour le code refactorisé
- Validation de non-régression complète
- Tests de performance avant/après`
};
return requirements[type] || requirements.feature || `- Tests unitaires avec couverture > 80%
- Tests d'intégration des points d'entrée
- Tests E2E des fonctionnalités principales
- Tests de régression automatisés`;
}
}
export default EnhancedTemplatesHelper;