Files
TechradarDev/docs/app/guide-page-equipe.md
syoul 66fe78f86e fix: migration des scripts de 'core' vers 'adopt' et mise à jour documentation
- scripts/generate-team-visualization-data.js : remplacement de 'core' par 'adopt' dans generateCongestionMatrix() et generateGenesisTeam()
- scripts/analyze-business-metrics.js : remplacement de 'core' par 'adopt' dans 3 endroits
- docs/app/guide-page-equipe.md : précisions sur l'utilisation de 'adopt' pour les technologies critiques
- docs/app/architecture.md : précisions sur les technologies utilisées dans les visualisations

Tous les scripts utilisent maintenant les rings standards (adopt|trial|assess|hold) conformément à la migration effectuée.
2025-12-09 11:05:43 +01:00

12 KiB

Guide de la Page Équipe & Technologies

Introduction

La page Équipe & Technologies (/team) est une interface de visualisation interactive qui permet d'analyser les compétences de l'équipe, d'identifier les congestions (technologies avec peu de personnes) et de composer une équipe de genèse pour un MVP.

Cette page est accessible depuis le radar via le lien "👥 Équipe" dans le header de navigation.

Architecture Technique

La page utilise une architecture hybride :

  • Page Next.js : /team (route Next.js générée automatiquement par Dockerfile.business)
  • Contenu HTML : Chargé via iframe depuis /team.html (fichier statique)
  • Navigation : Lien intégré directement dans le composant React Navigation.tsx (modifié par script Python)

Cette approche combine les avantages de Next.js (routing, intégration native) avec la flexibilité d'un HTML statique autonome.

Fichiers impliqués

  • Page Next.js : .techradar/src/pages/team.tsx (créée par Dockerfile.business)
  • Page HTML : public/team.html (fichier statique avec visualisations)
  • Données JSON : public/team-visualization-data.json (généré par scripts/generate-team-visualization-data.js)
  • Navigation : .techradar/src/components/Navigation/Navigation.tsx (modifiée par script Python)

Accès

  • URL : /team (route Next.js)
  • Fichier HTML source : /team.html (servi statiquement)
  • Lien de navigation : Disponible dans le header du radar (bouton "👥 Équipe")
  • Authentification : Même protection que le radar (mot de passe laplank-radar)

Fonctionnalités

La page propose trois visualisations complémentaires :

1. Graphe Réseau

Objectif : Visualiser les connexions entre technologies et membres de l'équipe.

Fonctionnalités :

  • Nœuds technologies :
    • Couleur selon le ring (Adopt=vert, Trial=bleu, Assess=orange, Hold=rouge)
    • Taille proportionnelle au nombre de personnes maîtrisant la technologie
    • Label avec le nom de la technologie
  • Nœuds membres :
    • Couleur verte
    • Taille proportionnelle à la disponibilité
    • Label avec le nom du membre
  • Liens :
    • Connectent les technologies aux membres qui les maîtrisent
    • Épaisseur selon le niveau de compétence

Utilisation :

  • Zoom : Molette de la souris ou pincement sur mobile
  • Pan : Clic gauche + glisser
  • Tooltip : Survol d'un nœud pour voir les détails

Technologie : Cytoscape.js avec le layout CoSE-Bilkent

2. Matrice de Congestion

Objectif : Identifier les technologies avec faible couverture d'équipe (congestions).

Fonctionnalités :

  • Axe X : Membres de l'équipe
  • Axe Y : Technologies (uniquement les technologies "adopt" - anciennement "core")
  • Couleurs :
    • Vert : Technologie maîtrisée par le membre
    • Rouge : Technologie non maîtrisée
    • Intensité selon le niveau de compétence

Utilisation :

  • Cliquer sur une cellule pour voir les détails
  • Filtrer par technologie ou membre
  • Identifier visuellement les technologies avec peu de personnes

Note : Seules les technologies avec ring: adopt sont affichées dans la matrice, car ce sont les technologies fondamentales en production (anciennement classées comme "core").

Technologie : ECharts (heatmap)

3. Équipe de Genèse MVP

Objectif : Composer automatiquement une équipe minimale pour un MVP en 2 mois avec mobilisation quotidienne.

Fonctionnalités :

  • Sélection automatique : Algorithme qui sélectionne les membres selon :
    • Disponibilité >= 50%
    • Couverture maximale des technologies critiques (technologies avec ring: adopt - anciennement "core")
    • Équilibre des compétences
  • Statistiques :
    • Nombre de membres sélectionnés
    • Pourcentage de technologies couvertes
    • Technologies critiques non couvertes
  • Recommandations :
    • Technologies à former
    • Compétences manquantes
    • Risques identifiés

Technologie : Algorithme JavaScript avec affichage HTML/CSS

Données

Sources de données

  1. Profils équipe : docs/data/team/*.md (fichiers Markdown avec métadonnées YAML)
  2. Technologies : radar-business/2025-01-15/*.md (blips avec métadonnées)

Génération des données

Le script scripts/generate-team-visualization-data.js :

  1. Lit les profils équipe depuis docs/data/team/*.md
  2. Lit les technologies depuis radar-business/2025-01-15/*.md
  3. Génère public/team-visualization-data.json avec :
    • network : Données réseau (nodes/edges) pour Cytoscape.js
    • congestionMatrix : Matrice de congestion pour ECharts
    • genesisTeam : Équipe de genèse MVP avec statistiques
    • technologies : Liste des technologies avec métadonnées
    • members : Liste des membres avec compétences

Exécuter la génération

node scripts/generate-team-visualization-data.js

Important : Régénérer les données après chaque modification des profils équipe ou des technologies.

Structure des profils équipe

Les profils sont stockés dans docs/data/team/*.md avec le format suivant :

---
name: "pseudo"
fullName: "Nom complet"
role: "Rôle"
availability: 50
seniorityLevel: expert
yearsExperience: 8
joinDate: "2016-01"
interests: ["Mobile", "Infrastructure"]
skills:
  - name: "Flutter"
    level: expert
    years: 4
    lastUsed: "2024-12"
  - name: "Python"
    level: intermediate
    years: 5
    lastUsed: "2024-11"
softSkills:
  - "Autonomie"
  - "Pédagogie"
projects:
  - "Projet1"
  - "Projet2"
---

Description du membre de l'équipe.

Métadonnées

  • name : Pseudo unique (utilisé comme identifiant)
  • fullName : Nom complet
  • role : Rôle dans l'équipe
  • availability : Disponibilité en pourcentage (0-100)
  • seniorityLevel : Niveau de séniorité (junior, intermediate, senior, expert)
  • yearsExperience : Années d'expérience totales
  • joinDate : Date d'arrivée (format YYYY-MM)
  • interests : Centres d'intérêt
  • skills : Liste des compétences techniques avec niveau, années et dernière utilisation
  • softSkills : Compétences comportementales
  • projects : Projets sur lesquels le membre a travaillé

Processus de build

Dans le Dockerfile

  1. Création de la page Next.js : Génère .techradar/src/pages/team.tsx
  2. Modification de Navigation : Ajoute le lien "👥 Équipe" dans .techradar/src/components/Navigation/Navigation.tsx via script Python
  3. Copie des fichiers : Copie public/team.html et public/team-visualization-data.json vers .techradar/public/
  4. Build Next.js : Génère les fichiers statiques dans out/
  5. Vérification : Le script start-business.sh vérifie que les fichiers sont dans out/ et les copie si nécessaire

Script Python pour Navigation.tsx

Le script /tmp/add_team_link.py dans le Dockerfile :

  1. Supprime tous les liens Équipe existants : Évite les doublons
  2. Ajoute un seul lien Équipe : Après le lien "Vue d'ensemble"
  3. Vérifie le résultat : S'assure qu'il n'y a qu'un seul lien

Important : Les scripts JavaScript (strategie-script.js, strategie-link.js) qui ajoutaient des liens dans le header ont été désactivés pour éviter les doublons.

Technologies utilisées

Bibliothèques JavaScript

  • Cytoscape.js : Graphique réseau interactif
  • Cytoscape CoSE-Bilkent : Layout algorithm pour le graphique
  • ECharts : Matrice de congestion (heatmap)
  • Vanilla JavaScript : Logique de l'équipe de genèse MVP

Chargement des données

Les données sont chargées depuis /team-visualization-data.json via fetch() au chargement de la page.

Utilisation

Visualiser les compétences

  1. Ouvrir l'onglet "Graphe Réseau"
  2. Explorer les connexions entre technologies et membres
  3. Identifier les technologies avec beaucoup de personnes (gros nœuds)
  4. Identifier les technologies avec peu de personnes (petits nœuds = congestions)

Identifier les congestions

  1. Ouvrir l'onglet "Matrice Congestion"
  2. Repérer les colonnes (technologies) avec beaucoup de cases rouges
  3. Ces technologies ont une faible couverture d'équipe
  4. Actions recommandées :
    • Former l'équipe
    • Recruter
    • Documenter

Composer une Équipe pour un Projet

  1. Ouvrir l'onglet "Équipe Genèse MVP"
  2. L'équipe est automatiquement sélectionnée selon :
    • Disponibilité >= 50%
    • Couverture maximale des technologies
  3. Consulter les statistiques :
    • Technologies couvertes
    • Technologies manquantes
    • Recommandations

Personnalisation

Modifier le seuil de disponibilité

Pour l'équipe de genèse MVP, le seuil est fixé à 50%. Pour le modifier :

  1. Ouvrir scripts/generate-team-visualization-data.js
  2. Modifier le filtre m.availability >= 50 dans les fonctions generateCongestionMatrix() et generateGenesisTeam()
  3. Régénérer les données : node scripts/generate-team-visualization-data.js

Note : Les technologies critiques utilisées pour la sélection sont celles avec ring: adopt (anciennement "core"). Pour modifier ce critère, changer le filtre t.ring === 'adopt' dans generateGenesisTeam().

Ajouter de nouvelles visualisations

  1. Modifier public/team.html
  2. Ajouter un nouvel onglet dans la section .tabs
  3. Ajouter le contenu dans une nouvelle section .tab-content
  4. Implémenter la logique JavaScript pour charger et afficher les données

Maintenance

Mettre à jour les profils équipe

  1. Modifier les fichiers dans docs/data/team/*.md
  2. Régénérer les données : node scripts/generate-team-visualization-data.js
  3. Commiter les deux fichiers (profils + données JSON)

Ajouter un nouveau membre

  1. Créer un fichier docs/data/team/pseudo.md
  2. Remplir toutes les métadonnées
  3. Régénérer les données
  4. Vérifier que le membre apparaît dans les visualisations

Mettre à jour les compétences

  1. Modifier la section skills dans le profil équipe
  2. Régénérer les données
  3. Vérifier que les connexions sont mises à jour dans le graphe

Troubleshooting

Le lien "👥 Équipe" n'apparaît pas dans le header

Causes possibles :

  • Le script Python n'a pas été exécuté
  • Le fichier Navigation.tsx n'a pas été trouvé
  • Erreur dans le script Python

Solutions :

  1. Vérifier les logs Docker lors du build
  2. Vérifier que le fichier .techradar/src/components/Navigation/Navigation.tsx existe
  3. Rebuild avec --no-cache pour forcer l'exécution du script

La page /team retourne 404

Causes possibles :

  • Le fichier team.html n'est pas dans out/
  • La page Next.js team.tsx n'a pas été créée

Solutions :

  1. Vérifier que public/team.html existe
  2. Vérifier que le Dockerfile a bien créé .techradar/src/pages/team.tsx
  3. Vérifier que team.html a été copié dans out/

Les visualisations sont vides

Causes possibles :

  • Le fichier team-visualization-data.json n'a pas été généré
  • Le fichier n'est pas accessible depuis /team.html

Solutions :

  1. Générer les données : node scripts/generate-team-visualization-data.js
  2. Vérifier que le fichier existe dans public/team-visualization-data.json
  3. Vérifier que le fichier a été copié dans out/
  4. Vérifier la console du navigateur pour les erreurs JavaScript

Les données ne sont pas à jour

Solution : Régénérer les données après chaque modification :

node scripts/generate-team-visualization-data.js

Fichiers associés

  • Page HTML : public/team.html (interface utilisateur)
  • Données JSON : public/team-visualization-data.json (généré)
  • Script de génération : scripts/generate-team-visualization-data.js
  • Profils équipe : docs/data/team/*.md (fichiers Markdown avec métadonnées YAML)
  • Technologies : radar-business/2025-01-15/*.md (blips avec métadonnées)
  • Page Next.js : .techradar/src/pages/team.tsx (générée par le Dockerfile)
  • Navigation modifiée : .techradar/src/components/Navigation/Navigation.tsx (modifiée par le Dockerfile)

Ressources