798 Commits

Author SHA1 Message Date
syoul
9fb80ef59f fix: sbom-generate - inclure node_modules pour SBOM complet
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Retirer l'exclusion des node_modules permet a Syft de scanner
les paquets reellement installes (transitifs inclus).
Seuls les artefacts de build sont exclus (build/, .next/, out/).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 20:42:49 +01:00
syoul
53ceb29bbe fix: sbom-generate - scanner le repertoire source au lieu de l'image Docker
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Les vars CI (CI_REPO_OWNER etc.) ne sont pas injectees dans les steps
avec volumes: sans environment: (bug Woodpecker next). Supprimer le
docker socket et scanner dir:. evite le probleme et donne un SBOM
complet des dependances npm declarees.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 19:20:47 +01:00
syoul
7862bb11b7 fix: sbom-generate - calculer le nom image depuis les vars CI
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Remplace la lecture de .env.deploy par un recalcul direct
depuis CI_REPO_OWNER/CI_REPO_NAME/CI_COMMIT_BRANCH (meme
logique que write-env), evitant la dependance sur le fichier.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 19:13:00 +01:00
syoul
42b3d28505 feat: integrer SBOM dans la pipeline CI
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
- sbom-generate: Syft scanne l'image Docker buildee (radar-business)
- sbom-scan: Trivy CVE depuis le SBOM (cache /home/syoul/trivy-cache)
- sbom-publish: envoi vers Dependency-Track (dtrack.syoul.fr)
Nouveau secret requis: dependency_track_token

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 19:04:20 +01:00
syoul
658be24b7c fix: corriger les deux erreurs de build CI
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
- scripts/build-radar.js: bash → sh (Alpine n'a pas bash)
- radar-app/package.json: ajouter postcss comme dépendance directe
- radar-app/package-lock.json: régénéré avec postcss ^8.5.3

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 18:51:49 +01:00
syoul
a2fbbe5d44 fix: restaurer cd .. après radar-app (shell partagé dans Woodpecker)
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Les commandes d'un step partagent le même shell dans Woodpecker.
cd radar-app persiste aux commandes suivantes — cd .. est nécessaire.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 18:43:50 +01:00
syoul
e1447aca28 fix: resynchroniser radar-app/package-lock.json + sous-shell Woodpecker
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
- radar-app/package-lock.json : lock file désynchronisé (Next.js 15 -> 16), ajout au suivi git
- .woodpecker.yml : supprimer && cd .. inutile (chaque commande = sous-shell séparé dans Woodpecker next)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 18:41:04 +01:00
syoul
4755b392a3 fix: resynchroniser package-lock.json avec package.json
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
npm ci échouait en CI : lock file désynchronisé après renommage du package.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 18:38:14 +01:00
syoul
445a540d54 ci: trigger pipeline Woodpecker
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 18:37:08 +01:00
syoul
1dd4b4d1d1 ci: trigger pipeline Woodpecker
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 18:35:08 +01:00
syoul
7bb7484ec8 ci: corrections conformité prestashop
- Ajout step validate (docker compose config avec placeholder)
- Remplacement export \$(cat .env.deploy | xargs) → --env-file .env.deploy
- SERVICE_3000_TAGS : urlprefix-DOMAIN/ → urlprefix-DOMAIN/* (match tous les paths)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 18:33:40 +01:00
syoul
940834d993 refactor: COMPOSE_PROJECT_NAME dynamique depuis les vars CI
docker-compose.business.yml:
- Ajout name: ${COMPOSE_PROJECT_NAME:-ajr-techradardev-main}
- container_name et SERVICE_3000_NAME utilisent COMPOSE_PROJECT_NAME

.woodpecker.yml:
- write-env génère COMPOSE_PROJECT_NAME=owner-repo-branch (même convention que prestashop)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 18:31:05 +01:00
syoul
fa0aa808ac feat: intégration Fabio/Consul/Registrator + TLS acme.sh
docker-compose.business.yml:
- Suppression version: obsolete et ports: (Fabio gère le routing)
- Ajout labels SERVICE_3000_* pour Registrator/Consul/Fabio
- Ajout LETSENCRYPT_HOST pour sonic-acme-1
- Ajout réseau sonic (externe, partagé avec la stack)

.woodpecker.yml:
- Ajout write-env (RADAR_DOMAIN depuis secret, séparé car from_secret + volumes incompatibles)
- Ajout TLS acme.sh dans deploy (idempotent, exit 2 = skip)
- Healthcheck sur https://RADAR_DOMAIN (100s max)

Secret Woodpecker à créer : radar_domain

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 18:29:39 +01:00
syoul
002764ea9a ci: aligner pipeline sur le modèle de référence (fabio/consul/registrator)
- Suppression de deploy-rsync (hors stack)
- Renommage deploy-docker → deploy
- Ajout healthcheck (curl localhost:3006, max 100s)
- Remplacement notify Telegram/vars Drone → notify-failure avec vars CI
  ($CI_BUILD_NUMBER, $CI_COMMIT_SHA, $CI_COMMIT_BRANCH)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 18:26:52 +01:00
syoul
b4d7f7e10f docs: ajouter section "Où éditer le contenu" dans le README
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 18:21:03 +01:00
syoul
029fbe5d26 docs: clarifier structure du projet dans le README
- Distinguer clairement radar-business/ (source) vs radar/ (temporaire)
- Indiquer data/ comme dossier de build versionné (suite déplacement docs/data/)
- Corriger branche principale (stand-alone → main)
- Simplifier section Documentation (docs/ non versionnée)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 18:18:41 +01:00
syoul
fe16d01be7 refactor: déplacer docs/data/ → data/ pour séparer données de build et docs
docs/ est entièrement ignoré par .gitignore, mais docs/data/team/*.md
est nécessaire au build (generate-team-visualization-data.js).
Déplacement vers data/ à la racine pour que ces fichiers soient
versionnés et disponibles lors du déploiement depuis le dépôt.

- Nouveau dossier data/ versionné (profils équipe, technologies)
- docs/ entièrement ignoré (documentation humaine uniquement)
- Mise à jour des 4 références dans les scripts

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 18:14:56 +01:00
syoul
7c4204c689 ci: correction syntaxe Woodpecker (.woodpecker.yml)
- Suppression des headers Drone CI (kind/type/name)
- Déplacement du trigger when: au niveau global
- Volumes inline (host:container) au lieu des named volumes
- Suppression de la section volumes: Drone en bas de fichier
- Correction $$ → $ pour les variables dans les commandes
- Chaînage des cd avec && pour les commandes radar-app
- Image docker:27-cli cohérente avec le modèle de référence

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 18:03:33 +01:00
syoul
27685ee250 docs: mise à jour du README et ajout de la configuration CI Woodpecker
- Réécriture complète du README pour le projet stand-alone Techradar Laplank
- Ajout de .woodpecker.yml pour la pipeline CI/CD
- Mise à jour du .gitignore pour exclure les dossiers docs/

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 17:34:12 +01:00
syoul
236b8fe037 refactor: renommer le package de 'aoe-techradar' à 'techradar-laplank'
- Mise à jour du nom dans package.json
- Mise à jour du nom dans package-lock.json
- Le nom reflète mieux l'identité du projet Laplank

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 18:52:59 +01:00
syoul
e9fd40f27d fix: résolution des marqueurs de conflit dans radar-app/package.json
- Conservation de Next.js 16.1.6 et eslint-config-next 16.1.6

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 18:37:40 +01:00
syoul
6c304d461c merge: synchroniser stand-alone avec main (refactorisation stand-alone + migration Next.js 16)
- Merge de main dans stand-alone
- Résolution du conflit dans radar-app/package.json (conservation de Next.js 16.1.6)
- Intégration de la refactorisation stand-alone complète
- Migration Next.js 15.2.4 -> 16.1.6

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 18:36:03 +01:00
syoul
acb475d5d0 feat: migration Next.js 15.2.4 -> 16.1.6
- Mise à jour de Next.js vers 16.1.6 (dernière version stable)
- Mise à jour de eslint-config-next vers 16.1.6
- Ajout documentation migration-nextjs-16.md

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 18:35:55 +01:00
syoul
9d8ae3d32a 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>
2026-02-25 18:11:40 +01:00
syoul
cc8df1a4af Doc: roadmap basee sur l'analyse du code source 2025-12-10 11:48:15 +01:00
syoul
b69850a23b Doc: plan d'implementation NetlifyCMS + Gitea pour edition des profils 2025-12-09 20:06:47 +01:00
syoul
b8ec3f2828 Ajout carte de profil cliquable pour les membres (graphe, matrice, equipe) 2025-12-09 19:45:00 +01:00
syoul
cdd6e1c573 Fix: detection navigation SPA pour page team 2025-12-09 19:26:54 +01:00
syoul
89c24b9cd8 Mise a jour du graphe reseau equipe et ajout page team 2025-12-09 19:20:13 +01:00
syoul
5c47f1f7c6 feat: Ajout Syoul aux blips Docker, Linux, ProxMox
- Docker: 1000i100, syoul (2 personnes)
- Linux: aya, boris, syoul (3 personnes)
- ProxMox: poka, syoul (2 personnes)
- Equipe genese passe de 2 a 4 membres
- Donnees regenerees
2025-12-09 18:30:32 +01:00
syoul
bc2cfdb1c3 feat: Mise a jour profil Syoul
- Nouveau role: Etudiant IPSSI - Alternance Admin Infrastructure Securisee chez AJR
- Competences: Proxmox, Docker, Linux, autohebergement
- Projets: Autohebergement personnel, Alternance AJR
- Donnees team-visualization-data.json regenerees
2025-12-09 18:11:27 +01:00
syoul
5d7d158436 docs: Mise a jour finale docs/app
- README.md: Structure fichiers mise a jour
- configuration.md: Ajout section script page equipe
- troubleshooting.md: Mise a jour diagnostic page equipe
2025-12-09 17:53:22 +01:00
syoul
240988ed61 docs: Mise a jour documentation page equipe
- guide-page-equipe.md: Architecture basee sur team-block-script.js
- architecture.md: Mise a jour structure et fonctionnement
- deploiement.md: Scripts Python pour Navigation et _document
- team-block-script.js: Utilise layout cose integre (pas cose-bilkent)
2025-12-09 17:50:23 +01:00
syoul
3553f1d839 fix: Script team-block-script.js avec remplacement DOM
- Nouvelle approche: remplace le DOM apres chargement (defer-compatible)
- Charge Cytoscape, ECharts dynamiquement
- Initialise les 3 visualisations: graphe reseau, matrice congestion, equipe genese
- Ajout de patch_document.py pour inclure le script dans _document.tsx
2025-12-09 17:03:20 +01:00
syoul
d326f24f8d fix: Retirer --single du serveur serve pour pages statiques Next.js
- Le flag --single redirigeait toutes les routes vers index.html
- Maintenant /team/ est correctement servi via /team/index.html
- Le script team-block-script.js sera chargé côté client
2025-12-09 16:47:32 +01:00
syoul
a5a71bcd8b fix: HTML complet intégré dans team-block-script.js
- Plus de dépendance aux fichiers externes HTML
- Utilise sessionStorage pour éviter les boucles
- document.write() pour remplacer complètement la page
2025-12-09 16:27:50 +01:00
syoul
16a346e8fe fix: supprimer meta refresh de team.tsx qui causait la boucle
La page team.tsx avait un meta refresh vers /team.html
Le reverse proxy redirige /team.html vers /team = boucle infinie

Solution: team.tsx retourne null, le contenu est géré par
team-block-script.js via iframe avec data URL
2025-12-09 16:15:27 +01:00
syoul
59acaf46cb fix: utiliser iframe avec data URL au lieu de document.write
document.write() après chargement cause un rechargement de page.
Solution: créer un iframe plein écran avec data:text/html;base64
L'iframe est un contexte isolé, pas de boucle possible.
2025-12-09 16:10:10 +01:00
syoul
c69b917f94 fix: intégrer le HTML en base64 dans le script (pas de requête HTTP)
Le reverse proxy intercepte toutes les requêtes.
Solution: encoder le HTML en base64 et le décoder avec atob()
Plus aucune requête HTTP pour le contenu de la page équipe.
2025-12-09 16:07:07 +01:00
syoul
484f0313b2 fix: renommer fichier sans extension pour éviter redirection reverse proxy
Le reverse proxy redirige tout *.html vers le chemin sans extension.
Solution: utiliser _team-content (sans .html)
2025-12-09 16:01:56 +01:00
syoul
c38ea72928 fix: renommer team.html en _team-content.html
Le reverse proxy redirige aussi les fetch vers /team.html.
Nouveau nom avec underscore pour éviter la règle de redirection.
2025-12-09 15:56:15 +01:00
syoul
95ab0b68ae fix: charger team.html via fetch au lieu de redirection
Le reverse proxy redirige /team.html vers /team, créant une boucle.
Solution: fetch le contenu de team.html et l'injecter dans le DOM
avec document.write() pour remplacer complètement la page.
2025-12-09 15:50:33 +01:00
syoul
e29b7401d6 fix: ajouter .techradar et build au .dockerignore
Les anciens fichiers dans .techradar/ local étaient copiés
dans le conteneur Docker, écrasant les nouveaux fichiers.
Cela causait le bug où team-block-script.js restait ancien.
2025-12-09 15:38:59 +01:00
syoul
45fc4c56d9 fix: team-block-script.js redirige directement vers team.html
- Supprime la logique de blocage complexe
- Redirige simplement /team vers /team.html
- Ne bloque plus si on est déjà sur team.html
2025-12-09 15:26:44 +01:00
syoul
be86854c7e fix: toujours régénérer les données équipe au build
- Ne plus vérifier si le fichier existe (les rings pourraient être obsolètes)
- Régénérer systématiquement avec les bons rings adopt/trial/assess/hold
- Mise à jour des données de visualisation avec les nouveaux rings
2025-12-09 15:22:19 +01:00
syoul
7b236f6770 fix: redirection immédiate vers team.html via meta refresh et script inline
- Utilise meta http-equiv=refresh pour rediriger même sans JS
- Ajoute script inline dans Head pour redirection JS immédiate
- Fonctionne avec l'export statique Next.js
2025-12-09 15:18:10 +01:00
syoul
f149571673 fix: ne pas écraser config.default.json
- Garder le config.default.json original du package
- Ne copier que vers config.json (pas config.default.json)
- Évite erreur TypeScript 'Property icon does not exist on type never'

Le type de social est inféré depuis config.default.json
2025-12-09 15:12:46 +01:00
syoul
2dd08c0d46 fix: simplifier team-page.tsx pour éviter erreurs modules
- Page team.tsx redirige maintenant vers team.html
- Évite les imports cytoscape/echarts qui causent MODULE_NOT_FOUND
- team.html contient les vraies visualisations avec chargement CDN

Corrige l'erreur npm run build dans Docker
2025-12-09 15:00:54 +01:00
syoul
982d45994d fix: synchroniser config.json et radar/ avec radar-business/
- config.json avec rings adopt/trial/assess/hold
- radar/2025-01-15/* synchronisé depuis radar-business/
- Corrige 'invalid ring' pendant build:data
2025-12-09 14:56:11 +01:00
syoul
c008d38d10 fix: ajouter config.default.json pour build techradar
- Copie de config-business.json vers .techradar/data/config.default.json
- Évite l'erreur MODULE_NOT_FOUND sur config.default.json pendant build:data
2025-12-09 14:50:39 +01:00