name: ecocode-back
description: Use when analyzing the ecological impact of back-end code: database queries, API payloads, server-side cache, background jobs, data transfers, N+1 queries, missing indexes, or server energy consumption from a green IT perspective.
EcoCode Back — Analyse éco-conception côté serveur
Vue d'ensemble
Sous-skill spécialisé dans l'audit éco-conception back-end. Mappe chaque problème détecté aux bonnes pratiques Green IT correspondantes via le MCP mcp-greenit.
REQUIRED PARENT SKILL: audits — ce sous-skill est délégué par le skill parent.
Collecte précise (obligatoire pendant l'analyse)
Pendant toute l'analyse, pour chaque problème détecté, noter immédiatement dans le contexte :
- Localisation exacte :
orders/controller.py:45, api/products.js:23-31
- Pattern problématique : le code ou la requête exacte qui pose problème
- Valeurs mesurées : nombre de requêtes dans une boucle, taille du payload, absence de TTL
- Contexte : taille estimée de la table, fréquence d'appel, données chaudes ou froides
Ces données ne sont pas affichées dans le rapport light mais servent à générer le guide de correction complet si l'utilisateur le demande — sans relire les fichiers.
Axes d'analyse
1. Requêtes BDD — efficacité et sur-sélection
Consulter : mcp-greenit : greenit_chercher_fiche avec "base de données", "requêtes SQL", "SGBD"
Vérifier :
2. Cache serveur
Consulter : mcp-greenit : greenit_chercher_fiche avec "cache", "mémoire", "Redis"
Vérifier :
3. Transferts de données
Consulter : mcp-greenit : greenit_chercher_fiche avec "données", "transfert", "API", "payload"
Vérifier :
4. Traitements redondants
Consulter : mcp-greenit : greenit_chercher_fiche avec "traitement", "calcul", "redondant"
Vérifier :
5. Tâches de fond et workers
Consulter : mcp-greenit : greenit_chercher_fiche avec "tâche", "worker", "background", "asynchrone"
Vérifier :
6. Architecture et résilience
Consulter : mcp-greenit : greenit_chercher_fiche avec "architecture", "technologie", "circuit breaker", "élastique"
Vérifier :
7. Gestion des ressources
Consulter : mcp-greenit : greenit_chercher_fiche avec "ressources", "connexions", "sessions"
Vérifier :
8. Infrastructure et hébergement
Consulter : mcp-greenit : greenit_chercher_fiche avec "serveur", "hébergement", "infrastructure", "énergie"
Vérifier :
9. Production, logs et maintenance
Consulter : mcp-greenit : greenit_chercher_fiche avec "logs", "maintenance", "production", "sitemap"
Vérifier :
10. Emails et communications
Consulter : mcp-greenit : greenit_chercher_fiche avec "email", "communication"
Vérifier :
Détection des patterns N+1
Chercher dans le code :
1. Boucle for/foreach avec appel ORM/BDD à l'intérieur
2. .map() + await avec query individuelle par élément
3. Relation ORM chargée en lazy dans un loop
Solution type :
- SQL : JOIN ou IN (ids)
- ORM : eager loading, include/preload/with
- GraphQL : DataLoader (batching)
Format de rapport
## Analyse Back-end
### Problèmes détectés
| # | Problème | Localisation | Sévérité | Pratique Green IT |
| --- | ------------------------------ | ----------------------- | -------- | ---------------------------------------------------- |
| 1 | N+1 sur la liste des commandes | orders/controller.py:45 | Haute | RWEB_0066 — Optimiser les requêtes BDD |
| 2 | SELECT \* sans pagination | api/products.js:23 | Haute | RWEB_0017 — Éviter le transfert de grandes quantités |
### Détail par problème
**[Numéro]. [Intitulé du problème]**
- **Pratique Green IT :** RWEB_XXXX — [intitulé officiel]
- **Sévérité :** Haute / Moyenne / Faible
- **Constat :** [Code ou comportement observé]
- **Impact :** [Ressources gaspillées : BDD, CPU, réseau, énergie]
- **Correction proposée :** [Code corrigé ou approche recommandée]
### Bonnes pratiques déjà respectées
- [Liste des points positifs avec RWEB_XXXX correspondant]
Mapping sévérité
| Sévérité | Critères |
|---|
| Haute | Requêtes sans index sur tables > 10K lignes, N+1 en production, absence totale de cache sur données chaudes |
| Moyenne | SELECT * sur tables larges, TTL manquant, payloads non paginés, logs DEBUG en prod |
| Faible | Optimisations marginales, gain < 5% sur les ressources, bonnes pratiques infra/hébergement |
Erreurs fréquentes
- Analyser sans mcp-greenit : toujours mapper au numéro RWEB_XXXX officiel
- Ignorer l'ORM : l'ORM peut générer des requêtes très inefficaces invisibles dans le code applicatif
- Confondre cache applicatif et cache HTTP : les deux sont nécessaires et complémentaires (RWEB_0016 ≠ RWEB_0074)
- Oublier les migrations : vérifier aussi les fichiers de migration pour les index manquants et les types inadaptés
- Négliger l'infrastructure : les axes 8 et 9 ont souvent un fort impact mais sont moins visibles dans le code
Format du guide de correction complet
Généré uniquement si l'utilisateur le demande, depuis les données collectées. Ne pas relire les fichiers.
Pour chaque problème du rapport light, produire une section dans cet ordre :
Problème N — [Titre du problème]
Pratique : RWEB_XXXX — [intitulé officiel de la fiche Green IT]
Sévérité : Haute / Moyenne / Faible
Éléments trouvés dans ton code :
chemin/exact/fichier.py:45 — [description du pattern trouvé]
chemin/exact/autre.js:23 — [idem]
Impact estimé : [ex: N requêtes BDD par page vue au lieu de 1, +X ms latence]
Avant :
[code exact trouvé dans le projet, avec le chemin en commentaire]
Après :
[code corrigé, adapté au framework/ORM utilisé dans le projet]
Étapes :
- [Action précise sur les fichiers et lignes listés]
[commande exacte si applicable]
- [Étape suivante]
- [Vérification : requête EXPLAIN, log de requêtes, test de perf]
Outils recommandés :
[nom-outil] — [description en une ligne] : [commande d'installation ou de config]
Règles impératives :
- Les fichiers et numéros de ligne sont ceux réellement trouvés, jamais des exemples génériques
- Le code "Avant" est extrait du projet, le code "Après" est adapté à son ORM/framework (Prisma, SQLAlchemy, ActiveRecord, etc.)
- Si plusieurs occurrences du même problème existent, les lister toutes