refactor: projet stand-alone sans dépendance aoe_technology_radar

- Intégration du code source du framework dans radar-app/ (vendoring)
- Suppression de la dépendance npm aoe_technology_radar
- Création de scripts build-radar.js et serve-radar.js pour remplacer le CLI techradar
- Adaptation de tous les scripts et Docker pour utiliser radar-app/ au lieu de .techradar
- Refactorisation complète de Dockerfile.business
- Mise à jour de la documentation (architecture, déploiement, développement)
- Mise à jour de .gitignore pour ignorer les artefacts de build de radar-app/
- Ajout de postcss dans les dépendances Docker pour le build Next.js

Le projet est maintenant complètement indépendant du package externe.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
syoul
2026-02-25 18:11:40 +01:00
parent cc8df1a4af
commit 9d8ae3d32a
125 changed files with 15583 additions and 123 deletions

View File

@@ -4,7 +4,7 @@ Bienvenue dans la documentation du projet AJR Technology Radar (CoeurBox).
## Vue d'ensemble
Le Technology Radar AJR est une application web interactive qui présente les technologies, outils, méthodes et plateformes utilisées et évaluées par AJR. Il est basé sur le framework [aoe_technology_radar](https://github.com/AOEpeople/aoe_technology_radar).
Le Technology Radar AJR est une application web interactive qui présente les technologies, outils, méthodes et plateformes utilisées et évaluées par AJR. Il est basé sur le framework [aoe_technology_radar](https://github.com/AOEpeople/aoe_technology_radar), dont le code source est vendu dans le répertoire `radar-app/`.
Le radar est organisé en quatre quadrants et quatre anneaux (rings) pour classifier chaque technologie selon son niveau d'adoption et sa catégorie.
@@ -38,7 +38,7 @@ Les données utilisées par l'application sont dans le dossier [`../data/`](../d
- **Radar en ligne** : https://www.coeurbox.syoul.fr
- **Radar Technologique Laplank** : http://laplank.techradar.syoul.fr:3006
- **Dépôt Git** : https://git.open.us.org/AJR/TechradarDev
- **Framework source** : https://github.com/AOEpeople/aoe_technology_radar
- **Framework source** : https://github.com/AOEpeople/aoe_technology_radar (code vendu dans `radar-app/`)
## Démarrage rapide

View File

@@ -2,7 +2,7 @@
## 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.
Le projet AJR Technology Radar est une application web statique construite avec le framework `aoe_technology_radar` (basé sur Next.js), dont le code source est vendu dans le répertoire `radar-app/`. L'application génère un site web interactif à partir de fichiers Markdown organisés par dates de release.
## Structure des répertoires
@@ -42,7 +42,7 @@ TechradarDev/
│ ├── 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)
├── radar-app/ # Framework aoe_technology_radar (code vendu dans le repo)
│ ├── src/ # Code source Next.js du framework
│ │ ├── pages/ # Pages Next.js (routes)
│ │ │ └── team.tsx # Page /team générée par Dockerfile
@@ -79,15 +79,17 @@ Le projet utilise le framework **aoe_technology_radar** qui est basé sur :
### Processus de build
1. **Installation des dépendances** : `npm install` installe `aoe_technology_radar` depuis GitHub
2. **Préparation du framework** : Copie de `node_modules/aoe_technology_radar` vers `.techradar/`
3. **Configuration** : Copie de `radar-business/config-business.json` vers `.techradar/data/config.json`
4. **Données** : Copie des blips depuis `radar-business/2025-01-15/` vers `.techradar/data/radar/2025-01-15/`
5. **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)
6. **Build Next.js** : `npm run build:data` puis `npm run build` génère les fichiers statiques
7. **Output** : Fichiers statiques dans `.techradar/out/` servis par un serveur statique
1. **Injection des données** : Le script `scripts/build-radar.js` copie :
- `radar-business/config-business.json``radar-app/data/config.json`
- `radar-business/2025-01-15/``radar-app/data/radar/2025-01-15/`
- `public/*``radar-app/public/`
- Génère `team-visualization-data.json` et le copie dans `radar-app/public/`
2. **Modifications personnalisées** :
- Création de `radar-app/src/pages/team.tsx` (page Next.js pour `/team`)
- Modification de `radar-app/src/components/Navigation/Navigation.tsx` (ajout du lien Équipe)
- Modification de `radar-app/src/pages/_document.tsx` (chargement du script team-block-script.js)
3. **Build Next.js** : `cd radar-app && npm run build:data && npm run build` génère les fichiers statiques
4. **Output** : Fichiers statiques dans `radar-app/out/` copiés vers `build/` à la racine
### Modifications personnalisées
@@ -96,7 +98,7 @@ Le projet apporte plusieurs modifications au framework de base :
#### 1. Page Equipe (`/team`)
- **Script principal** : `public/team-block-script.js` (injection du contenu et visualisations)
- **Route Next.js** : `.techradar/src/pages/team.tsx` (page vide, le script remplace le contenu)
- **Route Next.js** : `radar-app/src/pages/team.tsx` (page vide, le script remplace le contenu)
- **Chargement** : Le script est charge via `_document.tsx` avec `strategy="beforeInteractive"`
- **Bibliotheques** : Cytoscape.js et ECharts charges depuis CDN
- **Donnees** : `public/team-visualization-data.json` genere par `scripts/generate-team-visualization-data.js`
@@ -104,7 +106,7 @@ Le projet apporte plusieurs modifications au framework de base :
#### 2. Navigation modifiée
- **Fichier modifié** : `.techradar/src/components/Navigation/Navigation.tsx`
- **Fichier modifié** : `radar-app/src/components/Navigation/Navigation.tsx`
- **Modification** : Ajout du lien "👥 Équipe" vers `/team`
- **Méthode** : Script Python dans `Dockerfile.business` qui :
- Supprime tous les liens Équipe existants (évite les doublons)
@@ -160,7 +162,7 @@ Description de la technologie en Markdown.
## Dépendances principales
- **aoe_technology_radar** : Framework principal (dépendance GitHub)
- **radar-app/** : Framework principal (code vendu dans le repo, basé sur aoe_technology_radar)
- **Node.js** : Runtime JavaScript (version 20+)
- **npm** : Gestionnaire de paquets
- **gray-matter** : Parsing YAML front matter

View File

@@ -101,30 +101,32 @@ Le `Dockerfile.business` effectue les opérations suivantes :
- Git et Python3 pour les scripts
- Variables d'environnement pour désactiver Husky
2. **Préparation du framework** :
- Copie de `node_modules/aoe_technology_radar` vers `.techradar/`
- Patch du package pour inclure `gray-matter` et `postcss`
2. **Installation des dépendances** :
- Installation des dépendances racine (pour scripts: generate-team-visualization-data, etc.)
- Installation des dépendances dans `radar-app/` (Next.js et dépendances du framework)
- Désactivation du script `prepare` (husky) dans `radar-app/package.json`
3. **Configuration des données** :
- Purge des données de démo : `rm -rf .techradar/data/radar/*`
- Copie des blips business : `radar-business/2025-01-15/*``.techradar/data/radar/2025-01-15/`
- Copie de la config : `radar-business/config-business.json``.techradar/data/config.json`
- Purge des données de démo : `rm -rf radar-app/data/radar/*`
- Copie des blips business : `radar-business/2025-01-15/*``radar-app/data/radar/2025-01-15/`
- Copie de la config : `radar-business/config-business.json``radar-app/data/config.json`
- Copie des fichiers publics : `public/*``radar-app/public/`
- Génération et copie de `team-visualization-data.json` dans `radar-app/public/`
4. **Modifications personnalisees** :
- Creation de `.techradar/src/pages/team.tsx` (page Next.js vide pour `/team`)
- Modification de `.techradar/src/pages/_document.tsx` via script Python :
- Creation de `radar-app/src/pages/team.tsx` (page Next.js vide pour `/team`)
- Modification de `radar-app/src/pages/_document.tsx` via script Python :
- Ajout du chargement de `team-block-script.js` avec `strategy="beforeInteractive"`
- Modification de `.techradar/src/components/Navigation/Navigation.tsx` via script Python :
- Modification de `radar-app/src/components/Navigation/Navigation.tsx` via script Python :
- Suppression de tous les liens Equipe existants (evite les doublons)
- Ajout d'un seul lien "Equipe" apres le lien "Vue d'ensemble"
5. **Build Next.js** :
- `npm run build:data` : Génère les données du radar
- `npm run build` : Build de l'application Next.js
- `cd radar-app && npm run build:data` : Génère les données du radar
- `cd radar-app && npm run build` : Build de l'application Next.js
6. **Copie des fichiers publics** :
- Copie de `public/team-block-script.js` et `public/team-visualization-data.json` vers `.techradar/public/`
- Les fichiers sont ensuite copies dans `out/` apres le build
6. **Post-build** :
- Copie des fichiers additionnels (`_team-content`, `team-visualization-data.json`, `team/`) depuis `radar-app/public/` vers `radar-app/out/`
7. **Demarrage** :
- Execution de `scripts/start-business.sh` qui :
@@ -138,7 +140,7 @@ Le `Dockerfile.business` effectue les opérations suivantes :
Le script `docker/add_team_link.py` :
1. **Verifie l'existence du fichier** : `.techradar/src/components/Navigation/Navigation.tsx`
1. **Verifie l'existence du fichier** : `radar-app/src/components/Navigation/Navigation.tsx`
2. **Supprime tous les liens Equipe existants** : Evite les doublons meme si le script s'execute plusieurs fois
3. **Ajoute un seul lien Equipe** : Apres le lien "Vue d'ensemble"
4. **Verifie le resultat** : S'assure qu'il n'y a qu'un seul lien apres l'operation

View File

@@ -22,7 +22,7 @@ cd TechradarDev
npm install
```
Cette commande installe le framework `aoe_technology_radar` depuis GitHub.
Cette commande installe les dépendances racine (pour les scripts utilitaires). Le framework Next.js est déjà présent dans `radar-app/` (code vendu dans le repo).
## Développement local
@@ -58,7 +58,7 @@ Pour générer les fichiers statiques :
npm run build
```
Les fichiers générés sont créés dans le répertoire `build/` (généré par le framework).
Les fichiers générés sont créés dans le répertoire `build/` (copiés depuis `radar-app/out/`).
## Structure des fichiers radar

View File

@@ -21,10 +21,10 @@ Cette approche evite les conflits SSR tout en permettant des visualisations inte
### Fichiers impliques
- **Script principal** : `public/team-block-script.js` (injection du contenu et visualisations)
- **Page Next.js** : `.techradar/src/pages/team.tsx` (page vide, le script remplace le contenu)
- **Page Next.js** : `radar-app/src/pages/team.tsx` (page vide, le script remplace le contenu)
- **Donnees JSON** : `public/team-visualization-data.json` (genere par `scripts/generate-team-visualization-data.js`)
- **Navigation** : `.techradar/src/components/Navigation/Navigation.tsx` (modifiee par script Python)
- **Document modifie** : `.techradar/src/pages/_document.tsx` (modifie pour charger le script)
- **Navigation** : `radar-app/src/components/Navigation/Navigation.tsx` (modifiee par script Python)
- **Document modifie** : `radar-app/src/pages/_document.tsx` (modifie pour charger le script)
## Acces
@@ -184,8 +184,8 @@ Description du membre de l'equipe.
### Dans le Dockerfile
1. **Copie des fichiers publics** : `public/team-block-script.js` et `public/team-visualization-data.json` vers `.techradar/public/`
2. **Creation de la page Next.js** : Genere `.techradar/src/pages/team.tsx` (page vide)
1. **Copie des fichiers publics** : `public/team-block-script.js` et `public/team-visualization-data.json` vers `radar-app/public/`
2. **Creation de la page Next.js** : Genere `radar-app/src/pages/team.tsx` (page vide)
3. **Modification de _document.tsx** : Ajoute le chargement de `team-block-script.js` avec `strategy="beforeInteractive"`
4. **Modification de Navigation** : Ajoute le lien "Equipe" dans `Navigation.tsx` via script Python
5. **Build Next.js** : Genere les fichiers statiques dans `out/`
@@ -332,7 +332,7 @@ Parametres disponibles :
**Solutions** :
1. Verifier les logs Docker lors du build
2. Verifier que le fichier `.techradar/src/components/Navigation/Navigation.tsx` existe
2. Verifier que le fichier `radar-app/src/components/Navigation/Navigation.tsx` existe
3. Rebuild avec `--no-cache` pour forcer l'execution du script
### La page `/team` affiche le radar au lieu des visualisations
@@ -386,7 +386,7 @@ docker compose -f docker-compose.business.yml up -d
## Fichiers associes
- **Script principal** : `public/team-block-script.js` (injection et visualisations)
- **Page Next.js** : `docker/team-page.tsx` (page vide copiee vers `.techradar/src/pages/team.tsx`)
- **Page Next.js** : `docker/team-page.tsx` (page vide copiee vers `radar-app/src/pages/team.tsx`)
- **Donnees JSON** : `public/team-visualization-data.json` (genere)
- **Script de generation** : `scripts/generate-team-visualization-data.js`
- **Profils equipe** : `docs/data/team/*.md` (fichiers Markdown avec metadonnees YAML)

View File

@@ -23,7 +23,7 @@
**Vérification** :
```bash
# Dans le conteneur
grep -c 'href="/team"' .techradar/src/components/Navigation/Navigation.tsx
grep -c 'href="/team"' radar-app/src/components/Navigation/Navigation.tsx
# Doit retourner 1 (un seul lien)
```
@@ -38,14 +38,14 @@ grep -c 'href="/team"' .techradar/src/components/Navigation/Navigation.tsx
**Solutions** :
1. Vérifier les logs Docker lors du build pour voir si le script Python s'est exécuté
2. Vérifier que le fichier `.techradar/src/components/Navigation/Navigation.tsx` existe
2. Vérifier que le fichier `radar-app/src/components/Navigation/Navigation.tsx` existe
3. Vérifier que le script Python a bien trouvé l'emplacement pour insérer le lien
4. Rebuild avec `--no-cache` pour forcer l'exécution
**Vérification** :
```bash
# Dans le conteneur
grep 'href="/team"' .techradar/src/components/Navigation/Navigation.tsx
grep 'href="/team"' radar-app/src/components/Navigation/Navigation.tsx
# Doit retourner le lien
```
@@ -66,10 +66,10 @@ grep 'href="/team"' .techradar/src/components/Navigation/Navigation.tsx
3. Vérifier dans les logs Docker que les données ont été copiées :
```bash
# Dans le conteneur
find .techradar/data/radar -name "*.md" | wc -l
find radar-app/data/radar -name "*.md" | wc -l
# Doit retourner ~38 fichiers
```
4. Vérifier que `config-business.json` a été copié vers `.techradar/data/config.json`
4. Vérifier que `config-business.json` a été copié vers `radar-app/data/config.json`
**Migration des rings** :
```bash
@@ -110,8 +110,8 @@ find . -name "*.md" -exec sed -i 's/^ring: support$/ring: adopt/' {} \;
**Verification** :
```bash
# Dans le conteneur
ls -l .techradar/public/team-block-script.js
grep "team-block-script" .techradar/src/pages/_document.tsx
ls -l radar-app/public/team-block-script.js
grep "team-block-script" radar-app/src/pages/_document.tsx
```
#### Page `/team` retourne 404
@@ -123,14 +123,14 @@ grep "team-block-script" .techradar/src/pages/_document.tsx
- Le serveur utilise `--single` qui redirige vers index.html
**Solutions** :
1. Verifier que le Dockerfile a bien cree `.techradar/src/pages/team.tsx`
1. Verifier que le Dockerfile a bien cree `radar-app/src/pages/team.tsx`
2. Verifier que `scripts/start-business.sh` ne contient pas l'option `--single`
3. Verifier les logs du build Docker
**Verification** :
```bash
# Dans le conteneur
ls -l .techradar/src/pages/team.tsx
ls -l radar-app/src/pages/team.tsx
ls -l out/team/index.html
```
@@ -244,20 +244,20 @@ Dans Portainer, cocher l'option "No cache" lors du rebuild de la stack.
docker exec -it <container-name> /bin/sh
# Verifier les fichiers de la page equipe
ls -la .techradar/src/pages/team.tsx
ls -la .techradar/public/team-block-script.js
ls -la radar-app/src/pages/team.tsx
ls -la radar-app/public/team-block-script.js
ls -la out/team-block-script.js
ls -la out/team-visualization-data.json
# Verifier les modifications
grep "team-block-script" .techradar/src/pages/_document.tsx
ls -la .techradar/src/components/Navigation/Navigation.tsx
grep "team-block-script" radar-app/src/pages/_document.tsx
ls -la radar-app/src/components/Navigation/Navigation.tsx
# Compter les blips
find .techradar/data/radar -name "*.md" | wc -l
find radar-app/data/radar -name "*.md" | wc -l
# Verifier la config
head -60 .techradar/data/config.json
head -60 radar-app/data/config.json
```
### Vérifier les logs
@@ -287,10 +287,10 @@ grep -h "^ring:" *.md | sort | uniq -c
```bash
# Compter les liens Équipe
grep -c 'href="/team"' .techradar/src/components/Navigation/Navigation.tsx
grep -c 'href="/team"' radar-app/src/components/Navigation/Navigation.tsx
# Voir le contexte autour du lien
grep -A 3 -B 3 'href="/team"' .techradar/src/components/Navigation/Navigation.tsx
grep -A 3 -B 3 'href="/team"' radar-app/src/components/Navigation/Navigation.tsx
```
## Obtenir de l'aide