no bypass

This commit is contained in:
Nicolas Cantu 2026-03-19 14:42:50 +01:00
parent 959d93ac4c
commit 5f30d5435d
16 changed files with 65 additions and 30 deletions

View File

@ -93,4 +93,4 @@ Répéter les étapes 1, 2 et 3 pour les x cycles demandés. Chaque cycle traite
## 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. Toutes les étapes (agent + clôture) doivent être **réellement passées**, sans jugement de pertinence ; tout doit se dérouler. (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 la boucle n'a pas traité d'éléments, la clôture complète est obligatoire. Lister les actions réalisées et non réalisées pour chaque point.
En fin d'exécution de cet agent, **toujours** appliquer intégralement `.cursor/rules/cloture-evolution.mdc` : points 1 à 19. Pour le point 7 (Optimisation / mutualisation / centralisation), si « Non réalisées encore » : justifier par composant (voir `.cursor/agents/closure-point-7-justification.md`). Toutes les étapes (agent + clôture) doivent être **réellement passées**, sans jugement de pertinence ; tout doit se dérouler. (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 la boucle n'a pas traité d'éléments, la clôture complète est obligatoire. Lister les actions réalisées et non réalisées pour chaque point.

View File

@ -65,4 +65,4 @@ Prérequis (imposés par le script) :
## 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. Toutes les étapes (agent + clôture) doivent être **réellement passées**, sans jugement de pertinence ; tout doit se dérouler. (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.
En fin d'exécution de cet agent, **toujours** appliquer intégralement `.cursor/rules/cloture-evolution.mdc` : points 1 à 19. Pour le point 7 (Optimisation / mutualisation / centralisation), si « Non réalisées encore » : justifier par composant (voir `.cursor/agents/closure-point-7-justification.md`). Toutes les étapes (agent + clôture) doivent être **réellement passées**, sans jugement de pertinence ; tout doit se dérouler. (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.

View File

@ -20,7 +20,7 @@ description: Uniquement en test, lance /push-by-script puis deploy/change-to-all
4. Vérifier branche du dépôt projet = **test** (sinon retour 1).
5. Exécuter **/push-by-script** (message fourni par l'agent).
6. Exécuter `./deploy/change-to-all-branches.sh [project_id]` (timeout long).
7. En échec : corriger → push → relancer jusqu'à succès.
7. **En échec du script** : identifier la cause (sortie + logs/deploy_*.log). Si typecheck / lint / build : lancer **intégralement** l'agent **/fix-lint** pour le projet, puis **/push-by-script**, puis relancer `./deploy/change-to-all-branches.sh [project_id]`. Répéter jusqu'à succès ou **maximum 5 tentatives** ; au-delà, documenter les erreurs et s'arrêter.
8. Clôture : points 1 à 16 de cloture-evolution.mdc (horodatage, 5 périmètres 3-11, 12-14, 15, 16).
---
@ -41,7 +41,7 @@ description: Uniquement en test, lance /push-by-script puis deploy/change-to-all
- **Échec npm sur le serveur (ENOENT, ENOTEMPTY, node_modules) :** Si la sortie ou les logs (logs/deploy_*.log) contiennent une erreur npm liée à node_modules (ex. ENOENT, ENOTEMPTY, mkdir node_modules/…, npm error enoent). Il s'agit d'un problème d'environnement sur le serveur de déploiement, pas du code. **Correction automatique** : ne pas modifier le code ; relancer **une fois** ./deploy/change-to-all-branches.sh [project_id] (sans refaire /push-by-script : les branches sont déjà alignées). Le script distant deploy/scripts_v2/remote/deploy-app.sh effectue désormais un retry après `rm -rf node_modules` lors de chaque npm ci ; la relance lance un nouveau déploiement qui bénéficie de cette logique. Si l'échec persiste après cette unique relance, documenter la sortie et les logs (fichier deploy_*.log, extraits d'erreur npm) et s'arrêter — intervention manuelle ou infra requise (espace disque, droits, npm cache).
- **É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.
- **Échec du build (TypeScript, lint, frontend/backend) — boucle autonome obligatoire :** Si le déploiement échoue au build (code de sortie non nul, erreurs TypeScript, typecheck, lint, module introuvable, etc. dans la sortie ou dans logs/deploy_*.log), l'agent doit **obligatoirement** et **sans demander validation** : 1) Extraire de la sortie/log la liste des fichiers et erreurs (ex. fichiers .ts/.tsx listés par tsc ou eslint). 2) **Lancer et exécuter intégralement** l'agent **/fix-lint** (ou `.cursor/agents/fix-lint.md`) pour le projet cible, en lui passant en contexte les fichiers/erreurs identifiés si possible ; fix-lint corrige types, lint et compilation. 3) Exécuter **/push-by-script** (ou `./deploy/pousse.sh [project_id]`) pour committer et pousser les corrections. 4) **Relancer immédiatement** `./deploy/change-to-all-branches.sh [project_id]`. Répéter cette séquence (fix-lint → push-by-script → change-to-all-branches.sh) jusqu'à **succès** ou jusqu'à **5 tentatives** ; après 5 échecs consécutifs, documenter la sortie et les logs (extraits d'erreurs, fichiers concernés) et s'arrêter — intervention utilisateur requise. 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.
@ -60,11 +60,11 @@ Uniquement en test (branche git), exécuter dans l'ordre :
- **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).
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. **Si la cause est typecheck / lint / build** : lancer **intégralement** l'agent **/fix-lint** pour le projet, puis /push-by-script, puis **relancer immédiatement** change-to-all-branches.sh (sans demander à l'utilisateur). Répéter jusqu'à succès ou **5 tentatives** ; au-delà, documenter et s'arrêter. Pour les autres causes (erreur serveur, secret manquant, infra) : s'arrêter si la correction n'est pas possible sans instruction utilisateur.
## 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. Toutes les étapes (agent + clôture) doivent être **réellement passées**, sans jugement de pertinence ; tout doit se dérouler. (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.
En fin d'exécution de cet agent, **toujours** appliquer intégralement `.cursor/rules/cloture-evolution.mdc` : points 1 à 19. Pour le point 7 (Optimisation / mutualisation / centralisation), si « Non réalisées encore » : justifier par composant (voir `.cursor/agents/closure-point-7-justification.md`). Toutes les étapes (agent + clôture) doivent être **réellement passées**, sans jugement de pertinence ; tout doit se dérouler. (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 :**

View File

@ -0,0 +1,22 @@
# Point 7 clôture : Optimisation / mutualisation / centralisation — justification obligatoire
Lorsque la réponse au point 7 (Optimisation / mutualisation / centralisation systématique) est **« Non réalisées encore »**, une **justification par composant sollicité** est obligatoire.
Pour **chaque périmètre** concerné par l'agent (global/commun, frontend, backend, ressources partagées, scripts shell) où **aucune centralisation** n'a été réalisée, indiquer brièvement **pourquoi** aucune centralisation n'était possible, par exemple :
- logique déjà centralisée, pas de doublon identifié ;
- périmètre trop restreint pour mutualiser sans sur-complexifier ;
- composant unique dans le périmètre, pas d'autre cible de centralisation ;
- contrainte architecturale ou de contrat qui empêche la mutualisation.
Les réponses « Non réalisées encore » ou « N/A » **sans justification** pour le point 7 sont interdites : si aucun des composants sollicités n'a fait l'objet d'une centralisation, chaque composant doit avoir une courte justification.
Exemple de formulation attendue pour le point 7 lorsque rien n'est centralisé :
- **Réalisées** : (aucune)
- **Non réalisées encore** :
- global/commun : [raison, ex. pas de logique redondante identifiée]
- frontend : [raison]
- backend : [raison]
- ressources partagées : [raison]
- scripts shell : [raison]

View File

@ -109,4 +109,4 @@ Tu appliques les règles ci-dessous **lorsqu'il y a du code à produire** (évol
## 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. Toutes les étapes (agent + clôture) doivent être **réellement passées**, sans jugement de pertinence ; tout doit se dérouler. (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 code n'a pas été modifié, la clôture complète est obligatoire. Lister les actions réalisées et non réalisées pour chaque point.
En fin d'exécution de cet agent, **toujours** appliquer intégralement `.cursor/rules/cloture-evolution.mdc` : points 1 à 19. Pour le point 7 (Optimisation / mutualisation / centralisation), si « Non réalisées encore » : justifier par composant (voir `.cursor/agents/closure-point-7-justification.md`). Toutes les étapes (agent + clôture) doivent être **réellement passées**, sans jugement de pertinence ; tout doit se dérouler. (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 code n'a pas été modifié, la clôture complète est obligatoire. Lister les actions réalisées et non réalisées pour chaque point.

View File

@ -60,6 +60,6 @@ Le script fait alors automatiquement : suivi des branches origin, sync de la bra
## 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. Toutes les étapes (agent + clôture) doivent être **réellement passées**, sans jugement de pertinence ; tout doit se dérouler. (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.
En fin d'exécution de cet agent, **toujours** appliquer intégralement `.cursor/rules/cloture-evolution.mdc` : points 1 à 19. Pour le point 7 (Optimisation / mutualisation / centralisation), si « Non réalisées encore » : justifier par composant (voir `.cursor/agents/closure-point-7-justification.md`). Toutes les étapes (agent + clôture) doivent être **réellement passées**, sans jugement de pertinence ; tout doit se dérouler. (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) sans en omettre. Point 1 : horodatage début/fin et par sub-agent. Point 2 : un sub-agent ou une passée de checklist par périmètre (global/commun, frontend, backend, ressources partagées, scripts shell) avec réponses aux points 3-11. Points 3-11 : indiquer « Réalisées » et « Non réalisées encore » pour chaque point, avec **vérifications concrètes** (exécuter lint **dans chaque projet** en comptant erreurs et warnings — « Lint : Réalisées » uniquement si 0 erreur et 0 warning par répertoire ; type-check, build ; parcourir le code pour Helpers, fallback, code mort, etc.) — pas de « N/A » de convenance, sauf périmètre inexistant. Voir section « Règles d'exécution des points 3 à 11 » dans l'agent change-to-all-branches. Points 12-14 : reste à faire, réaliser non réalisé, réaliser reste à faire. Point 15 : /push-by-script si pas déjà fait. Point 16 : afficher le texte du commit.

View File

@ -49,4 +49,4 @@ Appliquer intégralement le bloc défini dans `.cursor/rules/cloture-evolution.m
## 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. Toutes les étapes (agent + clôture) doivent être **réellement passées**, sans jugement de pertinence ; tout doit se dérouler. (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 une étape a échoué, la clôture complète est obligatoire. Lister les actions réalisées et non réalisées pour chaque point.
En fin d'exécution de cet agent, **toujours** appliquer intégralement `.cursor/rules/cloture-evolution.mdc` : points 1 à 19. Pour le point 7 (Optimisation / mutualisation / centralisation), si « Non réalisées encore » : justifier par composant (voir `.cursor/agents/closure-point-7-justification.md`). Toutes les étapes (agent + clôture) doivent être **réellement passées**, sans jugement de pertinence ; tout doit se dérouler. (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 une étape a échoué, la clôture complète est obligatoire. Lister les actions réalisées et non réalisées pour chaque point.

View File

@ -90,4 +90,4 @@ Ventiler les infos de fixknowledge dans les pages wiki existantes et ne pas cré
## 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. Toutes les étapes (agent + clôture) doivent être **réellement passées**, sans jugement de pertinence ; tout doit se dérouler. (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 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.
En fin d'exécution de cet agent, **toujours** appliquer intégralement `.cursor/rules/cloture-evolution.mdc` : points 1 à 19. Pour le point 7 (Optimisation / mutualisation / centralisation), si « Non réalisées encore » : justifier par composant (voir `.cursor/agents/closure-point-7-justification.md`). Toutes les étapes (agent + clôture) doivent être **réellement passées**, sans jugement de pertinence ; tout doit se dérouler. (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 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.

View File

@ -35,4 +35,4 @@ Tu es l'agent evol, en charge des **évolutions** (nouvelles fonctionnalités, a
## 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. Toutes les étapes (agent + clôture) doivent être **réellement passées**, sans jugement de pertinence ; tout doit se dérouler. (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 une étape a échoué, la clôture complète est obligatoire. Lister les actions réalisées et non réalisées pour chaque point.
En fin d'exécution de cet agent, **toujours** appliquer intégralement `.cursor/rules/cloture-evolution.mdc` : points 1 à 19. Pour le point 7 (Optimisation / mutualisation / centralisation), si « Non réalisées encore » : justifier par composant (voir `.cursor/agents/closure-point-7-justification.md`). Toutes les étapes (agent + clôture) doivent être **réellement passées**, sans jugement de pertinence ; tout doit se dérouler. (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 une étape a échoué, la clôture complète est obligatoire. Lister les actions réalisées et non réalisées pour chaque point.

View File

@ -52,6 +52,18 @@ Corrige toutes les erreurs et tous les warnings de lint du projet (chaque réper
* **Résolution directe :** En cas de problème (toutes criticités), ne jamais simplifier, contourner, forcer un résultat en dur, ou créer des bouchons. Le problème doit être résolu à sa racine.
## Priorité en amont (règles de qualité et absence de bypass)
**Avant** toute correction de lint par lot :
1. **Vérifier que les règles et exigences de qualité sont paramétrées** dans chaque sous-projet (backend, frontend, ressources) : fichiers de config présents et cohérents (ESLint, TypeScript, Prettier) ; règles attendues activées et non désactivées globalement. Si une règle ou un outil manque ou est désactivé, corriger ou documenter avant d'enchaîner.
2. **Vérifier qu'il n'y a pas de bypass dans le code** : rechercher et traiter tout `eslint-disable`, `eslint-disable-next-line`, `@ts-ignore`, `@ts-expect-error` sans justification valide, `// @ts-nocheck`, désactivation locale de règles. Pour chaque bypass : soit supprimer le bypass en corrigeant le code pour respecter la règle, soit documenter une exception justifiée (référence issue ou décision validée). **Aucun bypass pour « résoudre » une erreur de lint** : toujours corriger le code. Si une règle exige un refactor (max-params, max-lines-per-function, complexity, max-lines), **faire le refactor** (objets d'options, extraction de fonctions, découpage de fichiers) ; ne pas laisser de bypass en invoquant « refactor prévu » ou « exception temporaire ».
## Priorité centralisation / optimisation
À chaque correction de lint, identifier les duplications et patterns répétés ; centraliser la logique dans des helpers ou modules partagés ; réutiliser les helpers existants avant d'en créer de nouveaux. Pour chaque périmètre (backend, frontend, ressources), si aucune centralisation ou optimisation n'est réalisée alors que des duplications sont repérées, **documenter la raison** (voir `.cursor/agents/closure-point-7-justification.md`). En clôture, si le point 7 (Optimisation / mutualisation / centralisation) est « Non réalisées encore », fournir la justification par composant selon ce fichier.
## Première action obligatoire
Exécuter immédiatement `npm run lint` dans **chaque** application du périmètre (backend, frontend, ressources partagées) pour lister **erreurs et warnings**. Ne pas modifier de fichiers avant d'avoir la liste complète (erreurs + warnings) pour chaque répertoire. Ne négliger aucun projet.
@ -153,4 +165,4 @@ Si un déploiement est demandé pendant l'exécution, s'arrêter proprement.
## 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. Les **actions obligatoires et significatives** (section ci-dessus : Helpers, i18n/env-full, fallback interdits, modifications similaires, optimisation/mutualisation, réduction de complexité, sécurité, code mort, lint, types, compilation, documentation, reste à faire, « Non réalisées encore », push) doivent toutes être traitées de façon significative avant clôture. Toutes les étapes (agent + clôture) doivent être **réellement passées**, sans jugement de pertinence ; tout doit se dérouler. (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 lint n'a pas été modifié, la clôture complète est obligatoire. Lister les actions réalisées et non réalisées pour chaque point.
En fin d'exécution de cet agent, **toujours** appliquer intégralement `.cursor/rules/cloture-evolution.mdc` : points 1 à 19. Pour le point 7 (Optimisation / mutualisation / centralisation), si « Non réalisées encore » : justifier par composant sollicité (voir `.cursor/agents/closure-point-7-justification.md`). Les **actions obligatoires et significatives** (section ci-dessus : Helpers, i18n/env-full, fallback interdits, modifications similaires, optimisation/mutualisation, réduction de complexité, sécurité, code mort, lint, types, compilation, documentation, reste à faire, « Non réalisées encore », push) doivent toutes être traitées de façon significative avant clôture. Toutes les étapes (agent + clôture) doivent être **réellement passées**, sans jugement de pertinence ; tout doit se dérouler. (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 lint n'a pas été modifié, la clôture complète est obligatoire. Lister les actions réalisées et non réalisées pour chaque point.

View File

@ -67,4 +67,4 @@ Tu es l'agent fix-search, en charge des **investigations** en vue d'identifier l
## 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. Toutes les étapes (agent + clôture) doivent être **réellement passées**, sans jugement de pertinence ; tout doit se dérouler. (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 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.
En fin d'exécution de cet agent, **toujours** appliquer intégralement `.cursor/rules/cloture-evolution.mdc` : points 1 à 19. Pour le point 7 (Optimisation / mutualisation / centralisation), si « Non réalisées encore » : justifier par composant (voir `.cursor/agents/closure-point-7-justification.md`). Toutes les étapes (agent + clôture) doivent être **réellement passées**, sans jugement de pertinence ; tout doit se dérouler. (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 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.

View File

@ -45,4 +45,4 @@ Tu es l'agent fix, en charge des **correctifs** à partir d'un problème remont
## 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. Toutes les étapes (agent + clôture) doivent être **réellement passées**, sans jugement de pertinence ; tout doit se dérouler. (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 correctif n'a pas été appliqué ou a échoué, la clôture complète est obligatoire. Lister les actions réalisées et non réalisées pour chaque point.
En fin d'exécution de cet agent, **toujours** appliquer intégralement `.cursor/rules/cloture-evolution.mdc` : points 1 à 19. Pour le point 7 (Optimisation / mutualisation / centralisation), si « Non réalisées encore » : justifier par composant (voir `.cursor/agents/closure-point-7-justification.md`). Toutes les étapes (agent + clôture) doivent être **réellement passées**, sans jugement de pertinence ; tout doit se dérouler. (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 correctif n'a pas été appliqué ou a échoué, la clôture complète est obligatoire. Lister les actions réalisées et non réalisées pour chaque point.

View File

@ -154,7 +154,7 @@ Pour chaque point, indiquer **réalisé** ou **non réalisé** et, le cas éché
- **4. i18n + env-full** : Vérifier textes en dur dans l'UI, présence de `.secrets/<env>/env-full*` ; « Réalisées » si conforme, « Non réalisées encore » sinon.
- **5. Fallback interdits** : Parcourir le code pour fallback, valeurs par défaut masquant des erreurs ; « Réalisées » si aucun, « Non réalisées encore » si présents.
- **6. Modifications similaires** : Vérifier patterns similaires à appliquer ailleurs ; « Réalisées » si étendu ou rien à faire, « Non réalisées encore » si à faire.
- **7. Optimisation / mutualisation / centralisation** : Vérifier duplication ou centralisation possible ; « Réalisées » ou « Non réalisées encore » avec précision.
- **7. Optimisation / mutualisation / centralisation** : Vérifier duplication ou centralisation possible ; « Réalisées » ou « Non réalisées encore » avec précision. Si « Non réalisées encore », justification obligatoire par périmètre (voir `.cursor/agents/closure-point-7-justification.md`).
- **8. Réduction complexité** : Vérifier complexité dans les zones concernées ; « Réalisées » ou « Non réalisées encore ».
- **9. Renforcement sécurité** : Vérifier exposition de données sensibles, validation des entrées ; « Réalisées » ou « Non réalisées encore ».
- **10. Code mort** : Vérifier code mort (exports inutilisés, branches mortes) ; « Réalisées » ou « Non réalisées encore ».

View File

@ -47,6 +47,7 @@ model: inherit
7. **Optimisation / mutualisation / centralisation systématique:**
- Réalisées
- Non réalisées encore
- Si « Non réalisées encore » : justification obligatoire par périmètre (voir `.cursor/agents/closure-point-7-justification.md`).
8. **Réduction de la complexité systématique:**
- Réalisées

View File

@ -8,7 +8,7 @@ Ce document consolide la documentation des APIs externes utilisées par LeCoffre
### Vue d'ensemble
Le backend appelle l'API **ai_working_help** pour les opérations **ask** (legacy), **enqueue** et **getResponse**. L'URL de base est configurée via `NOTARY_AI_AGENT_URL`. Le projet et l'env sont identifiés par le token Bearer ; l'API résout le projet via `projects/<id>/.secrets/<env>/ia_token`. Filtrage IP 192.168.1.* côté API.
Le backend appelle lAPI **ai_working_help** pour les opérations **ask** (legacy), **enqueue** et **getResponse**. LURL de base est configurée via `NOTARY_AI_AGENT_URL`. Le projet et lenv sont identifiés par le token Bearer ; lAPI résout le projet via `projects/<id>/.secrets/<env>/ia_token`. Filtrage IP 192.168.1.* côté API.
### Authentification
@ -24,48 +24,48 @@ Le token est de la forme **base** + **env** (ex. `nicolecoffreiotest`, `nicoleco
- **POST** `{NOTARY_AI_AGENT_URL}/enqueue` — mise en file (spooler)
- **GET** `{NOTARY_AI_AGENT_URL}/response/:request_uid` — récupération de la réponse (poll)
Implémentation : `lecoffre-back-main/src/services/notary/NotaryFolderAIService/NotaryFolderAIService.ts`. Le header n'est ajouté que si `NOTARY_AI_AGENT_TOKEN` est renseigné.
Implémentation : `lecoffre-back-main/src/services/notary/NotaryFolderAIService/NotaryFolderAIService.ts`. Le header nest ajouté que si `NOTARY_AI_AGENT_TOKEN` est renseigné.
### Chat IA dossier notaire (endpoints applicatifs)
- **POST /api/v1/notary/folders/:uid/ai-question**
- Auth : même chaîne que les autres routes dossier notaire.
- Body : `{ question: string }`
- **202** : `{ request_uid: string }` (requête en file ; réponse produite par l'agent).
- **202** : `{ request_uid: string }` (requête en file ; réponse produite par lagent).
- **503** : Agent non configuré ou enqueue en échec.
- **GET /api/v1/notary/folders/:uid/ai-response/:requestUid**
- Auth : idem ; vérifie que la requête appartient à l'utilisateur/dossier.
- Auth : idem ; vérifie que la requête appartient à lutilisateur/dossier.
- **200** : `{ status: "pending" }` ou corps `{ answer, nextActionsTable, membersInfoSheet, synthesisRecommendation }`.
- **404** : requête inconnue ou expirée. **503** : agent indisponible.
Flux : front → backend → ai_working_help (enqueue) ; agent (boucle Cursor) produit la réponse ; front poll GET response jusqu'à `status !== "pending"`. Logs backend : `[NotaryFolderAIService]`, `[FolderNotaryAIController]`. Front : `[FolderNotaryAiChat]`.
Flux : front → backend → ai_working_help (enqueue) ; agent (boucle Cursor) produit la réponse ; front poll GET response jusquà `status !== "pending"`. Logs backend : `[NotaryFolderAIService]`, `[FolderNotaryAIController]`. Front : `[FolderNotaryAiChat]`.
### Sécurité et restrictions
L'agent ne doit jamais renvoyer RIB, coordonnées bancaires ou de paiement. Contexte envoyé : métadonnées dossier, type d'acte, types de documents, résumé membres (rôle, nom, email), résumé documents (type, déposant, statut). Pas de contenu de fichier ni donnée de paiement.
Lagent ne doit jamais renvoyer RIB, coordonnées bancaires ou de paiement. Contexte envoyé : métadonnées dossier, type dacte, types de documents, résumé membres (rôle, nom, email), résumé documents (type, déposant, statut). Pas de contenu de fichier ni donnée de paiement.
---
## API Annuaire V2 Recherche offices et membres (IdNot PP)
- **Recherche offices** : route `GET .../api/v2/directory/lookup` avec paramètre **nomOffice** uniquement (recherche sur l'office ; pas de mélange notaire). Retour : offices sans liste de collaborateurs.
- **Membres à la sélection** : à la sélection d'un office, le front appelle `GET /api/v1/notary/search/offices/:officeIdNot/members?officeName=...` ; le backend appelle IdNot `GET /api/pp/v2/entites/:officeIdNot/personnes` et retourne les membres avec **roleLabel** (typeLien IdNot : Notaire, Collaborateur, etc.).
- **Recherche offices** : route `GET .../api/v2/directory/lookup` avec paramètre **nomOffice** uniquement (recherche sur loffice ; pas de mélange notaire). Retour : offices sans liste de collaborateurs.
- **Membres à la sélection** : à la sélection dun office, le front appelle `GET /api/v1/notary/search/offices/:officeIdNot/members?officeName=...` ; le backend appelle IdNot `GET /api/pp/v2/entites/:officeIdNot/personnes` et retourne les membres avec **roleLabel** (typeLien IdNot : Notaire, Collaborateur, etc.).
- **Front** : `getOfficeMembers(officeIdNot, officeName)` ; hook `useOfficeMembers(selectedOffice)` ; affichage « Chargement des membres… » puis liste « Prénom Nom (roleLabel) » (ShareFolderModal, SearchConfrereSection).
- **Référence** : API Annuaire V2 doc § VII.iii.a (nom, nomOffice, nomNotaire) ; IdNot PP entites/:id/personnes. Conformité : `docs/compliance-annuaire-idnot-specs.md`.
## Autres APIs (référence détaillée)
- **API d'ancrage Bitcoin Signet** : vue d'ensemble, endpoints `/api/anchor/document`, `/api/anchor/verify`, flux synchrone, configuration et déploiement — voir `projects/lecoffreio/docs/API.md`.
- **API dancrage Bitcoin Signet** : vue densemble, endpoints `/api/anchor/document`, `/api/anchor/verify`, flux synchrone, configuration et déploiement — voir `projects/lecoffreio/docs/API.md`.
- **Intégration Genapi / iNot** : `POST /api/v1/notary/documents/:uid/push-inot`, OAuth, création eDocument, code métier `GENAPI_API_UNAVAILABLE`.
- **Erreurs d'intégrations externes** : mappings `*_API_UNAVAILABLE` (GENAPI, ANNUAIRE, ANCHORAGE, IDNOT, OPENID, IPFS, MAILCHIMP, STRIPE) ; conventions `integration.operation` pour la traçabilité.
- **Erreurs dintégrations externes** : mappings `*_API_UNAVAILABLE` (GENAPI, ANNUAIRE, ANCHORAGE, IDNOT, OPENID, IPFS, MAILCHIMP, STRIPE) ; conventions `integration.operation` pour la traçabilité.
---
## Sources des messages backend (exposés à l'utilisateur)
## Sources des messages backend (exposés à lutilisateur)
- **PermissionDeniedMessageBuilder.ts** : messages 403 en français (office, dossier, document) ; utilisé par FolderThirdPartiesAccessHelper, DocumentsNotaryAccessHelper.
- **errorMessages.ts** : constantes techniques (réponses API, logique métier).
- **errorHandlers.ts** : construction des réponses d'erreur, `handlePermissionDeniedError` (message du builder 403).
- **errorHandlers.ts** : construction des réponses derreur, `handlePermissionDeniedError` (message du builder 403).
Règle : tout message destiné à l'utilisateur (ex. corps 403) en français et fonctionnel ; constantes et libellés centralisés dans ces modules (ou un module dédié documenté ici).
Règle : tout message destiné à lutilisateur (ex. corps 403) en français et fonctionnel ; constantes et libellés centralisés dans ces modules (ou un module dédié documenté ici).

View File

@ -10,11 +10,11 @@
|---------|-----------|-------------|
| README.md | Home | Index et correspondance (ce fichier). |
| API.md | Api | APIs externes (IdNot, Annuaire, Ancrage, agent IA notaire), contrats et évolution. |
| Operations.md | Operations | Retours prod, parcours, vérifications, scripts d'analyse, modalités d'analyse. |
| Operations.md | Operations | Retours prod, parcours, vérifications, scripts danalyse, modalités danalyse. |
| Frontend.md | Frontend | Toasters, messages 403, sources de textes front, paramétrage, parcours UI. |
| Code-Standards.md | Code-Standards | Lint, refactors, rôles et droits, conventions. |
| Deployment.md | Deployment | Env, seeds, site-texts, vérifications boot, déploiement. |
| Architecture.md | Architecture | Vue d'ensemble technique et intégrations. |
| Architecture.md | Architecture | Vue densemble technique et intégrations. |
| compliance-annuaire-idnot-specs.md | Compliance-Annuaire-Idnot-Specs | Conformité API Annuaire V2 et ID.NOT (lookup, PP). |
Contenu des anciens dossiers `docs/features/` et `docs/fixKnowledge/` : ventilé dans les pages ci-dessus (pas de page dédiée FEATURES ni FIXKNOWLEDGE).