From be5b64475fdad7ddce9474e94165889ae9a0fc25 Mon Sep 17 00:00:00 2001 From: LeCoffre Deployment Date: Mon, 22 Sep 2025 11:53:28 +0000 Subject: [PATCH] align for IA agents + grafana --- IA_agents/prompts/prompt-CI_all.md | 36 +++++++++++---------- IA_agents/prompts/prompt-deploy.md | 49 +++++++++++++++++----------- IA_agents/prompts/repo_clean.sh | 51 ++++++++++++++++++++++++++++++ lecoffre_node | 2 +- 4 files changed, 102 insertions(+), 36 deletions(-) create mode 100644 IA_agents/prompts/repo_clean.sh diff --git a/IA_agents/prompts/prompt-CI_all.md b/IA_agents/prompts/prompt-CI_all.md index 8833521..597e95e 100644 --- a/IA_agents/prompts/prompt-CI_all.md +++ b/IA_agents/prompts/prompt-CI_all.md @@ -5,23 +5,25 @@ ## Todo * [ ] Soit très explicite dans tes commandes pour ne pas entrainer de confusions entre **tag** et **branche** de même nom. -* [ ] Vérifie qu'il n'y a pas de `.github/` -* [ ] Vérifie qu'il y a un `.gitea/` -* [ ] Vérifie que le repos **git** est sur `git.4nkweb.com` -* [ ] Vérifie que le repos **docker** est sur `git.4nkweb.com` -* [ ] Vérifie l'exhaustivité de .dockerignore -* [ ] Vérifie l'exhaustivité de .gitignore -* [ ] Vérifie l'exhaustivité de .cursorignore -* [ ] Vérifie que l'auth se fait par `secrets.USER` et `secrets.TOKEN` -* [ ] Vérifie que tous les projets sont sur la **branche** **git** `ext` (branche actuelle) -* [ ] Vérifie que toutes les CI sont similaires -* [ ] Vérifie que toutes les CI pointent vers le **tag** **git** `ext` -* [ ] Vérifie que toutes les CI pointent vers le **tag** du **registry docker** `ext` -* [ ] Vérifie qu'il n'y a qu'un workflow -* [ ] Vérifie qu'il s'agit des mêmes format de messages de commit pour déclancher la CI -* [ ] Déploie toutes les CI -* [ ] Vérifie toutes les CI -* [ ] Supprime du repos distant tous les fichiers non suivis de tout l'historique des commit de la branche +* [ ] Vérifie qu'il n'y a pas de `.github/`. +* [ ] Vérifie qu'il y a un `.gitea/`. +* [ ] Vérifie que le repos **git** est sur `git.4nkweb.com`. +* [ ] Vérifie que le repos **docker** est sur `git.4nkweb.com`. +* [ ] Vérifie l'exhaustivité de .dockerignore. +* [ ] Vérifie l'exhaustivité de .gitignore. +* [ ] Vérifie l'exhaustivité de .cursorignore. +* [ ] Vérifie que l'auth se fait par `secrets.USER` et `secrets.TOKEN`. +* [ ] Vérifie que tous les projets sont sur la **branche** **git** `ext` (branche actuelle). +* [ ] Vérifie que toutes les CI sont similaires. +* [ ] Vérifie que toutes les CI pointent vers le **tag** **git** `ext`. +* [ ] Vérifie que toutes les CI pointent vers le **tag** du **registry .docker** `ext`. +* [ ] Vérifie qu'il n'y a qu'un workflow. +* [ ] Vérifie qu'il s'agit des mêmes format de messages de commit pour déclancher la CI. +* [ ] Déploie toutes les CI. +* [ ] Vérifie toutes les CI. +* [ ] Supprime du repos distant tous les fichiers non suivis de tout l'historique des commit de la branche. +* [ ] Supprime du repos distant tous les fichiers non suivis de tout l'historique des commit de la branche. Soit très prudent vérifie avant. +* [ ] pour tronquer l’historique Git de la branche « ext » et ne conserver que les cinq derniers commits avec les paramètre suivants `BR="ext"`, `REMOTE="origin"`, `DATE_TAG="$(date -u +'%Y%m%d-%H%M%S')"`, `BACKUP_TAG="backup/${BR}-pre-truncate-${DATE_TAG}"` pour `repo_clean.sh`. Soit très prudent vérifie avant. --- diff --git a/IA_agents/prompts/prompt-deploy.md b/IA_agents/prompts/prompt-deploy.md index ec74824..824f7cc 100644 --- a/IA_agents/prompts/prompt-deploy.md +++ b/IA_agents/prompts/prompt-deploy.md @@ -1,8 +1,9 @@ # Prompt de Déploiement LeCoffre Node +--- + ## 🎯 Prompt pour l'Agent IA -``` Déploie l'architecture LeCoffre Node complète en respectant strictement les consignes de déploiement. Arrete et nettoie tous les services, images, tests, commandes, éditions... encore actives avant de relancer proprement. Toujours veiller à supprimer les fichiers distants non suivis @@ -12,23 +13,31 @@ Important : ne simplifie jamais face à un problème mais résout le sans altern Fait des corrections sans contourement et durables pour fluididier les prochains déploiements c'est plus important que d'avancer dans la toto. Ne modifie pas les valeurs des conf, demande toujours avant. +--- + ## Contexte obligatoire - Consulte attentivement et chacun des documents de `IA_agents/` - Reste TOUJOURS sur la branche git "ext" -- Déclenche TOUJOURS les builds via CI avec des images docker tagées "ext" +- Déclenche TOUJOURS les builds via CI via `IA_agents/prompts/prompt-CI_all.md` - Corrige aussi les problèmes de code +--- + ## Objectifs de déploiement 1. Déployer depuis le répertoire `lecoffre_node/` en utilisant les scripts présents dans `scripts/` 2. Assurer que tous les services écoutent sur 0.0.0.0 et soient accessibles depuis l'extérieur via le nom de domaine 3. Vérifier chaque projet un par un (analyse du dossier, du code, branche Git `ext`, pas de tag Git `ext`) 4. Corriger toutes les erreurs sans désactivation, simplification ou contournement +--- + ## Procédure de déploiement A mettre dans ta TODO (vérifie que tout est fait à la fin): -- [ ] Vérifie que /home/debian/4NK_env/lecoffre_node && ./scripts/sync-configs.sh | cat est utile et que ce n'est pas les configuration déjà copiée par lecoffre_node/docker-compose.yml depuis les même fichiers qui sont recopiées +- [ ] Vérifie que `lecoffre_node/` && `./scripts/sync-configs.sh | cat` est utile et que ce n'est pas les configuration déjà copiée par `lecoffre_node/docker-compose.yml` depuis les même fichiers qui sont recopiées + +Fait tout ce qui suit pour tous les dossiers. ### Phase 1: Vérifications initiales - [ ] Vérifier que le dépôt distant est public (si possible) @@ -42,20 +51,20 @@ A mettre dans ta TODO (vérifie que tout est fait à la fin): - [ ] Mettre à jour la documentation - [ ] Mettre à jour les tests - [ ] Mettre à jour les scripts -- [ ] Vérifier les fichiers .gitignore, .dockerignore, .cursorignore +- [ ] Vérifier les fichiers `.gitignore`, `.dockerignore`, `.cursorignore` ### Phase 3: Synchronisation -- [ ] Synchroniser les configurations dans `lecoffre_node/conf` +- [ ] Synchroniser les configurations dans `lecoffre_node/conf` (si utile) - [ ] Synchroniser les logs dans `lecoffre_node/logs` -- [ ] Brancher Grafana pour un dashboard par projet +- [ ] Vérifie qu'il y a dashboard Grafana par projet et vérifier la remontée des logs ### Phase 4: Sécurité et conformité - [ ] Vérifier que le code ne fournit pas de données personnelles ou sensibles - [ ] Vérifier qu'il n'y a pas de failles de sécurité ### Phase 5: Gestion Git -- [ ] Pousser toutes les modifications sur la branche Git `ext` -- [ ] Supprimer les fichiers distants non suivis par Git +- [ ] Pousser toutes les modifications sur la branche Git `ext`. +- [ ] Suit les consignes de `IA_agents/prompts/prompt-CI_all.md`. ### Phase 6: Tests et corrections - [ ] Analyser les logs @@ -102,6 +111,8 @@ A mettre dans ta TODO (vérifie que tout est fait à la fin): - [ ] Vérifier que tous les imports sont présents - [ ] **Utiliser les outils de monitoring** pour suivre la progression et diagnostiquer les problèmes +--- + ## Variables d'environnement centralisées (2024-09-21) Utilise TOUJOURS le fichier `.env.master` centralisé : ```bash @@ -117,13 +128,15 @@ Variables disponibles : - MAILCHIMP_* : Configuration des emails - OVH_* : Configuration des SMS +--- + ## Architecture Docker optimisée - Base standardisée : `debian:bookworm-slim` pour tous les services - Packages minimaux : ca-certificates, curl, jq, git - Utilisateurs non-root : appuser (UID 1000) - Images optimisées : 120-300MB selon le service - Tag Docker : `ext` pour tous les déploiements - +--- ## Tests fonctionnels obligatoires 1. **Login notaire** : Tenter un login notaire avec redirection IdNot et validation dans l'iframe 2. **Connexion Stripe** : Arriver connecté après vérification du compte Stripe @@ -131,13 +144,13 @@ Variables disponibles : 4. **Email Mailchimp** : Vérifier l'envoi du lien par email 5. **Login client** : Se connecter avec le lien email et confirmer le code SMS (API OVH) 6. **Accès dossier** : Accéder au dossier en tant que client - +--- ## Tests techniques obligatoires 1. **Page de statut** : https://dev4.4nkweb.com/status/ 2. **Dashboard Grafana** : https://dev4.4nkweb.com/grafana/ 3. **Connectivité WebSocket** : Test spécifique des WebSockets 4. **Services HTTP(S)** : Test spécifique des services HTTP(S) - +--- ## Commandes essentielles ### 🚫 INTERDIT - Ne jamais utiliser ces commandes @@ -174,7 +187,7 @@ docker compose start # Synchronisation config ./scripts/sync-monitoring-config.sh ``` - +--- ## Points d'attention critiques - N'attends pas infiniment le résultat des curls - Si le terminal est interrompu, analyse la sortie @@ -191,7 +204,7 @@ docker compose start - **Surveille la progression Bitcoin IBD** : Le processus peut prendre du temps - **Attends la synchronisation Bitcoin** avant de démarrer SDK Relay - **Vérifie les dépendances** avant de démarrer les services LeCoffre - +--- ## Architecture de déploiement (CRITIQUE) ### 🏗️ Ordre de démarrage par phases @@ -224,7 +237,7 @@ docker compose start - **Services de monitoring** : Observent sans impacter les applications - **Dépendances** : Seules les dépendances métier sont respectées - **Scripts spécialisés** : Chaque phase utilise le script approprié - +--- ## Validation finale - [ ] Tous les services démarrés et fonctionnels - [ ] Toutes les URLs publiques accessibles depuis l'extérieur @@ -240,7 +253,7 @@ docker compose start - [ ] Progression BlindBit visible - [ ] Progression SDK Relay visible - [ ] Tous les services démarrés et fonctionnels sur leurs addresses externes - +--- ## En cas de problème 1. Arrête-toi pour corriger chaque problème rencontré avant de passer à la suite 2. Analyse les logs en détail @@ -258,20 +271,20 @@ Déploie maintenant l'architecture LeCoffre Node complète en suivant cette proc 1. Copie le prompt ci-dessus 2. Colle-le dans votre conversation avec l'agent IA 3. L'agent suivra automatiquement la procédure de déploiement - +--- ### Pour l'utilisateur 1. Assure-toi que tous les prérequis sont remplis 2. Vérifie que la branche `ext` est active 3. Lance le prompt de déploiement 4. Suis l'exécution étape par étape - +--- ## 🔧 Personnalisation Ce prompt peut être adapté selon les besoins : - Modifier les phases selon l'environnement - Ajouter des tests spécifiques - Personnaliser les commandes selon l'infrastructure - +--- ## 📊 Suivi Le prompt inclut des cases à cocher pour suivre l'avancement : diff --git a/IA_agents/prompts/repo_clean.sh b/IA_agents/prompts/repo_clean.sh new file mode 100644 index 0000000..0eab18f --- /dev/null +++ b/IA_agents/prompts/repo_clean.sh @@ -0,0 +1,51 @@ +set -euo pipefail + +BR="ext" +REMOTE="origin" +DATE_TAG="$(date -u +'%Y%m%d-%H%M%S')" +BACKUP_TAG="backup/${BR}-pre-truncate-${DATE_TAG}" + +# 1) Pré-vol +git fetch --prune "${REMOTE}" +test -z "$(git status --porcelain)" # fail si index sale +git rev-parse --verify "${BR}" >/dev/null +git ls-remote --exit-code "${REMOTE}" "refs/heads/${BR}" >/dev/null + +# 2) Mémos de contrôle +echo "[INFO] Avant: 5 derniers SHAs sur ${BR}" +git rev-list --max-count=5 "${BR}" | tee /tmp/pre_last5.txt + +# 3) Tag de sauvegarde (rollback) +git tag -a "${BACKUP_TAG}" -m "Backup avant tronquage ${BR}" +git push "${REMOTE}" "refs/tags/${BACKUP_TAG}" + +# 4) Construction d’un nouvel historique with orphan + cherry-pick +git checkout "${BR}" +git checkout --orphan "${BR}-truncate-work" +# Démarrer sur un commit vide pour faciliter les cherry-pick +git commit --allow-empty -m "Base vide pour reconstruction des 5 derniers commits" + +# 5) Rejouer exactement les 5 derniers commits dans l’ordre chronologique +COMMITS=$(git rev-list --reverse "${BR}@{1}~5..${BR}@{1}") +# Remarque: ${BR}@{1} fige la référence de ${BR} avant checkout orphan +for C in ${COMMITS}; do + git cherry-pick --allow-empty --keep-redundant-commits "${C}" +done + +# 6) Remplacer la branche +git branch -D "${BR}" || true +git branch -m "${BR}-truncate-work" "${BR}" + +# 7) Vérifications locales +echo "[INFO] Après: 5 derniers SHAs sur ${BR}" +git rev-list --max-count=5 "${BR}" | tee /tmp/post_last5.txt +diff -u /tmp/pre_last5.txt /tmp/post_last5.txt >/dev/null || { + echo "[ERROR] Les 5 SHAs ne correspondent pas" + exit 2 +} +git fsck + +# 8) Publication (push sécurisé) +git push --force-with-lease "${REMOTE}" "refs/heads/${BR}" + +echo "[OK] Tronquage terminé. Tag de secours: ${BACKUP_TAG}" \ No newline at end of file diff --git a/lecoffre_node b/lecoffre_node index 1dba7ca..3ea0c10 160000 --- a/lecoffre_node +++ b/lecoffre_node @@ -1 +1 @@ -Subproject commit 1dba7ca91c649a3bfd74627f2e1277ba85a56b98 +Subproject commit 3ea0c10bba5e67dcd1c057d08b60ee97660adc9c