- 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.
12 KiB
Architecture du projet
Vue d'ensemble
Le projet AJR Technology Radar est une application web statique construite avec le framework aoe_technology_radar (basé sur Next.js). L'application génère un site web interactif à partir de fichiers Markdown organisés par dates de release.
Structure des répertoires
TechradarDev/
├── radar/ # Contenu du radar principal organisé par dates (déprécié)
│ └── 2025-01-15/ # Release de janvier 2025
├── radar-business/ # Contenu du radar business (actif)
│ ├── 2025-01-15/ # Release business de janvier 2025
│ ├── config-business.json # Configuration du radar business
│ ├── FORMAT-BLIP.md # Format des blips business
│ └── README.md # Documentation du radar business
├── public/ # Fichiers statiques publics
│ ├── images/ # Images utilisées dans les descriptions
│ ├── logo.svg # Logo AJR
│ ├── favicon.ico # Icône du site
│ ├── robots.txt # Configuration pour les robots
│ ├── strategie-script.js # Script pour les pages de stratégie dynamiques
│ ├── strategie-link.js # Script alternatif pour les liens stratégie
│ ├── team.html # Page HTML statique pour la visualisation équipe
│ └── team-visualization-data.json # Données JSON pour les visualisations
├── scripts/ # Scripts utilitaires
│ ├── serve-business.sh # Script pour servir le radar business en local
│ ├── start-business.sh # Script de démarrage pour Docker
│ ├── extract-technologies.js # Extraction des technologies depuis la doc
│ ├── analyze-business-metrics.js # Analyse des métriques business
│ ├── generate-team-visualization-data.js # Génération des données équipe
│ ├── create-team-page.sh # Script pour créer la page équipe
│ └── patch-navigation.sh # Script pour patcher Navigation.tsx
├── docker/ # Configuration Docker pour le déploiement
│ ├── Dockerfile # Image Docker de production
│ ├── docker-compose.yml # Configuration Docker Compose
│ ├── docker-compose.labels.yml # Labels pour le déploiement
│ └── docker-compose.local.yml # Configuration locale
├── docs/ # Documentation du projet
│ ├── app/ # Documentation technique de l'application
│ └── data/ # Données métier et contenu
│ └── team/ # Profils individuels des membres de l'équipe
├── .techradar/ # Framework aoe_technology_radar (généré pendant le build)
│ ├── src/ # Code source Next.js du framework
│ │ ├── pages/ # Pages Next.js (routes)
│ │ │ └── team.tsx # Page /team générée par Dockerfile
│ │ └── components/ # Composants React
│ │ └── Navigation/ # Composant de navigation
│ │ └── Navigation.tsx # Modifié par Dockerfile pour ajouter le lien Équipe
│ ├── data/ # Données du radar
│ │ ├── config.json # Configuration (copiée depuis config-business.json)
│ │ └── radar/ # Blips organisés par release
│ │ └── 2025-01-15/ # Blips de la release actuelle
│ └── public/ # Fichiers statiques servis
│ ├── team.html # Page équipe (copiée depuis public/)
│ └── team-visualization-data.json # Données équipe (copiée depuis public/)
├── config.json # Configuration principale du radar (déprécié)
├── custom.css # Styles personnalisés
├── about.md # Page "À propos" du radar
├── package.json # Dépendances Node.js
├── Dockerfile # Dockerfile alternatif (racine)
├── Dockerfile.business # Dockerfile pour le radar business
├── docker-compose.yml # Docker Compose alternatif (racine)
├── docker-compose.business.yml # Docker Compose pour le radar business
├── docker-entrypoint.sh # Script d'entrée Docker
└── .drone.yml # Configuration CI/CD Drone
Architecture technique
Framework de base
Le projet utilise le framework aoe_technology_radar qui est basé sur :
- Next.js : Framework React pour le rendu côté serveur et la génération statique
- React : Bibliothèque JavaScript pour l'interface utilisateur
- TypeScript : Typage statique pour JavaScript
Processus de build
- Installation des dépendances :
npm installinstalleaoe_technology_radardepuis GitHub - Préparation du framework : Copie de
node_modules/aoe_technology_radarvers.techradar/ - Configuration : Copie de
radar-business/config-business.jsonvers.techradar/data/config.json - Données : Copie des blips depuis
radar-business/2025-01-15/vers.techradar/data/radar/2025-01-15/ - Modifications personnalisées :
- Création de
.techradar/src/pages/team.tsx(page Next.js pour/team) - Modification de
.techradar/src/components/Navigation/Navigation.tsx(ajout du lien Équipe)
- Création de
- Build Next.js :
npm run build:datapuisnpm run buildgénère les fichiers statiques - Output : Fichiers statiques dans
.techradar/out/servis par un serveur statique
Modifications personnalisées
Le projet apporte plusieurs modifications au framework de base :
1. Page Équipe (/team)
- Fichier source :
public/team.html(HTML statique avec Cytoscape.js et ECharts) - Route Next.js :
.techradar/src/pages/team.tsx(générée parDockerfile.business) - Intégration : La page Next.js charge
team.htmlvia un iframe - Données :
public/team-visualization-data.jsongénéré parscripts/generate-team-visualization-data.js
2. Navigation modifiée
- Fichier modifié :
.techradar/src/components/Navigation/Navigation.tsx - Modification : Ajout du lien "👥 Équipe" vers
/team - Méthode : Script Python dans
Dockerfile.businessqui :- Supprime tous les liens Équipe existants (évite les doublons)
- Ajoute un seul lien Équipe après le lien "Vue d'ensemble"
3. Scripts JavaScript désactivés
Les scripts suivants ont été désactivés pour éviter les doublons de liens :
public/strategie-script.js:addLinksToHeader()désactivéepublic/strategie-link.js:addStrategyLinkToHeader()désactivée
Tous les liens de navigation sont maintenant gérés uniquement par Navigation.tsx.
Format des fichiers radar
Chaque technologie (blip) est définie dans un fichier Markdown avec un en-tête YAML front matter :
---
title: "Nom de la technologie"
ring: adopt|trial|assess|hold
quadrant: technologies-differentiantes|technologies-commodite|technologies-risque|technologies-emergentes
tags: [tag1, tag2]
businessImpact: high|medium|low
costToReplace: 0
revenueImpact: indirect
riskLevel: medium
competencyLevel: beginner
maintenanceCost: 0
differentiation: high
teamCoverage: 1
skillGap: high
---
Description de la technologie en Markdown.
Métadonnées
- title : Nom de la technologie
- ring : Anneau du radar (adopt, trial, assess, hold)
- quadrant : Quadrant du radar (business)
- tags : Tags pour le filtrage (optionnel)
- Métadonnées business : Voir guide-radar-business.md
Flux de traitement
- Lecture des fichiers : Le framework lit tous les fichiers
.mddansradar-business/2025-01-15/ - Parsing : Extraction des métadonnées YAML et du contenu Markdown
- Génération : Création d'une application React statique
- Build : Compilation en fichiers HTML/CSS/JS statiques
- Serve : Service via un serveur web statique (
servepackage)
Dépendances principales
- aoe_technology_radar : Framework principal (dépendance GitHub)
- Node.js : Runtime JavaScript (version 20+)
- npm : Gestionnaire de paquets
- gray-matter : Parsing YAML front matter
- postcss : Traitement CSS
Configuration
La configuration principale se trouve dans radar-business/config-business.json et définit :
- Les quadrants et leurs descriptions
- Les anneaux (rings) et leurs significations
- Les couleurs et le style
- Les options d'affichage
- Les métadonnées du site
Voir configuration.md pour plus de détails.
Radar Technologique Laplank
Le Radar Technologique Laplank est un tech radar classique avec :
- Configuration spécifique :
radar-business/config-business.json - Quadrants business : Technologies Différenciantes, Commodité, Risque, Émergentes
- Anneaux classiques : Hold, Assess, Trial, Adopt
- Historique par release : Organisation des technologies par date (radar-business/YYYY-MM-DD/)
- Pages de stratégie : Pages dynamiques générées via
public/strategie-script.js - Protection par mot de passe : Authentification client-side (mot de passe :
laplank-radar) - Base path :
/(racine, pas de sous-chemin) - Page Équipe :
/teamavec visualisations interactives
Scripts de stratégie
Le fichier public/strategie-script.js contient :
- La logique de protection par mot de passe
- La conversion Markdown vers HTML pour les pages de stratégie
- Le contenu des trois pages de stratégie :
- Stratégie d'Évolution Technique
- Stratégie Business
- Opportunités DataViz Expert
Note : Les fonctions d'ajout de liens dans le header ont été désactivées pour éviter les doublons. Tous les liens sont maintenant gérés par Navigation.tsx.
Build et déploiement
Le projet utilise plusieurs commandes :
npm run build: Génère les fichiers statiques du radar principalnpm run serve: Lance un serveur de développement du radar principal (port 3000)npm run serve-business: Lance un serveur de développement du radar business (port 3006)npm run extract-tech: Extrait les technologies depuis la documentationnpm run analyze-business: Analyse les métriques business
Le déploiement se fait via Docker avec plusieurs configurations selon l'environnement :
- Radar principal : Via
docker/DockerfileouDockerfile - Radar Technologique Laplank : Via
Dockerfile.businessetdocker-compose.business.yml(Portainer)
Voir deploiement.md pour plus de détails.
Génération des données équipe
Le script scripts/generate-team-visualization-data.js :
- Lit les profils d'équipe depuis
docs/data/team/*.md - Lit les technologies depuis
radar-business/2025-01-15/*.md - Génère
public/team-visualization-data.jsonavec :- Données réseau (nodes/edges) pour Cytoscape.js
- Matrice de congestion pour ECharts (technologies
adoptuniquement - anciennement "core") - Équipe de genèse MVP avec statistiques (basée sur les technologies
adopt)
Ce fichier est utilisé par public/team.html pour les visualisations interactives.
Structure des profils équipe
Les profils d'équipe 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"
softSkills:
- "Autonomie"
projects:
- "Projet1"
---
Voir guide-page-equipe.md pour plus de détails.