ia_dev/.cursor/agents/change-to-all-branches.md
2026-03-17 01:30:56 +01:00

7.3 KiB
Raw Blame History

name model description
change-to-all-branches inherit Uniquement en test, lance /push-by-script puis deploy/change-to-all-branches.sh (alignement + déploiement test).

Contexte projet : La configuration et la documentation du projet sont dans projects/<id>/. L'identifiant <id> est résolu par paramètre (optionnel : ./deploy/change-to-all-branches.sh [project_id]), MAIL_TO ou AI_AGENT_TOKEN. Voir projects/README.md. Rappeler ce chemin en début d'exécution.

Documentation : La doc des projets gérés est dans projects/<id>/docs ; la doc ia_dev est dans projects/ia_dev/docs.

Rôle de lagent : vérifier que la branche locale est test (sinon retour 1), fournir le message de commit (via /push-by-script), lancer le script, contrôler la sortie et le code de retour. Rôle du script : exécution déterministe (vérif branche test, branch-align.sh test, deploy.sh test --import-v1 --skipSetupHost --no-sync-origin ; log dans logs/ par défaut).

Focus qualité et résolution de problèmes :

  • Qualité : Ne lancer le script qu'après un push-by-script réussi (message structuré, CHANGELOG à jour, build OK). En cas d'échec de push-by-script, traiter la cause (message manquant, build en échec, etc.) avant de continuer.

  • Résolution de problèmes : Si change-to-all-branches.sh échoue (alignement ou déploiement), analyser la sortie pour identifier la cause ; appliquer la correction puis relancer sans demander validation (boucle corriger → pousser → relancer). Ne s'arrêter que si la correction n'est pas possible sans instruction utilisateur.

  • Boucle corriger-et-retenter (obligatoire) : En cas d'échec du script (code de sortie non nul), 1) identifier la cause dans la sortie et/ou logs/deploy_*.log (ex. erreur TypeScript, lint, migration, SSH) ; 2) appliquer la correction dans le code du projet cible (dépôt indiqué par projects//conf.json) ; 3) committer et pousser via /push-by-script (ou ./deploy/pousse.sh [project_id]) avec un message décrivant le correctif ; 4) relancer ./deploy/change-to-all-branches.sh [project_id]. Répéter jusqu'à succès ou jusqu'à un blocage nécessitant instruction utilisateur (ex. erreur infra non corrigeable par l'agent). Ne pas se contenter de rapporter l'échec sans corriger et retenter.

  • Échec du build (TypeScript, lint, frontend/backend) : Si le déploiement échoue au build (ex. code de sortie 2 pour erreurs TypeScript, module introuvable, paramètres any implicites, erreurs de lint), l'agent doit obligatoirement : 1) localiser les fichiers concernés dans le dépôt du projet (build_dirs dans conf.json) ; 2) corriger les erreurs (imports, types explicites, chemins de modules) et si besoin lancer /fix-lint pour le projet ; 3) exécuter /push-by-script (ou ./deploy/pousse.sh [project_id]) pour committer et pousser dans le dépôt du projet ; 4) relancer immédiatement ./deploy/change-to-all-branches.sh [project_id] sans demander validation. Aucune demande de validation entre correction et relance.

  • Logs et corrections : Vérifier la sortie du script et le fichier logs/deploy_*.log produit par deploy.sh. En cas d'échec, identifier la cause à partir de ces logs, appliquer les corrections (code, config, doc), committer et pousser les changements via push-by-script si nécessaire, puis relancer le script jusqu'à succès ou blocage nécessitant instruction utilisateur.

Avant d'exécuter un script du projet :

  1. Lire le fichier du script avec l'outil de lecture (ex. deploy/change-to-all-branches.sh).
  2. Présenter à l'utilisateur un résumé de ce que le script va faire : étapes principales, options utilisées, effets attendus.
  3. Lancer le script uniquement après cette présentation.

Si la branche locale actuelle n'est pas test, retourner 1.

Uniquement en test (branche git), exécuter dans l'ordre :

  1. /push-by-script — pousse directement sur la branche test distante (pas de pull request). Message de commit fourni par l'agent.
  2. Exécuter depuis la racine de ia_dev : ./deploy/change-to-all-branches.sh [project_id] — aligne origin/test, origin/pprod, origin/prod sur le SHA de test, puis déploie l'environnement test (deploy.sh avec --import-v1 --skipSetupHost --no-sync-origin ; log dans logs/ par défaut). project_id optionnel pour cibler le projet. Push direct uniquement ; aucun script ni agent ne crée de pull request.
    • Paramètres : Le script n'accepte qu'un seul argument optionnel : le project_id (ex. lecoffreio). La branche est toujours test (imposée par le script, pas un paramètre). Si l'utilisateur fournit deux tokens (ex. « test lecoffreio » ou « lecoffreio test »), extraire celui qui correspond à un projet (existence de projects/<id>/conf.json) et appeler le script avec uniquement ce project_id : ./deploy/change-to-all-branches.sh lecoffreio.
    • Pas de timeout : Ne pas lancer la commande avec un timeout court (ex. 5 min). Le déploiement (build, migrations, import-v1, redémarrage services, vérifications) peut durer 10 à 30 min ; utiliser un timeout long ou aucun timeout pour laisser le script aller au bout.

Retourner 0 en cas de succès. En cas d'échec d'une étape : consulter les logs (sortie du script, logs/deploy_*.log), identifier la cause, appliquer les corrections dans le dépôt du projet, mettre à jour git (push-by-script) si des fichiers ont été modifiés, puis relancer immédiatement change-to-all-branches.sh (sans demander à l'utilisateur). Répéter jusqu'à succès. S'arrêter uniquement si la correction n'est pas possible sans instruction utilisateur (ex. erreur serveur, secret manquant, décision métier).

Clôture complète obligatoire (tous les cas, sans exception)

En fin d'exécution de cet agent, toujours appliquer intégralement .cursor/rules/cloture-evolution.mdc : points 1 à 19 (horodatage, 5 sub-agents par projet, questions 3-13, docupdate, reste à faire, push-by-script si pas déjà fait, affichage du texte du commit). Aucune exception : même si le script a échoué ou si l'agent n'a pas modifié de code, la clôture complète est obligatoire. Lister les actions réalisées et non réalisées pour chaque point.

Exhaustivité obligatoire de la clôture :

  • Traiter tous les points 1 à 16 (ou 19 selon la référence en vigueur) sans en omettre aucun.
  • Point 1 : Horodatage au début et à la fin ; projet (id), branche, répertoire de travail ; au lancement et au retour de chaque sub-agent.
  • Point 2 : Lancer ou exécuter intégralement un sub-agent (ou une passée de checklist) pour chaque périmètre du projet cible : global/commun, frontend, backend, ressources partagées, scripts shell — et pour chaque périmètre répondre aux points 3 à 11 (Réalisées / Non réalisées encore).
  • Points 3 à 11 : Pour chaque point, indiquer explicitement « Réalisées » et « Non réalisées encore » (éventuellement par périmètre si pertinent).
  • Points 12 à 14 : Lister le reste à faire (12), réaliser le « Non réalisées encore » (13), réaliser le reste à faire (14).
  • Point 15 : Lancer /push-by-script si pas déjà fait (message structuré selon le format obligatoire).
  • Point 16 : Afficher le texte du commit. Si un point est non applicable (ex. aucun fichier modifié), le mentionner explicitement plutôt que de lomettre.