**Motivations:** - Clarify active-project.json fields; ignore ad-hoc projects/<id>/ trees. **Evolutions:** - active-project.json.example: document default_env and optional notes. - .gitignore: whitelist versioned projects/* entries; README and remote-deployed-data-ssh doc updates.
5.5 KiB
Configurations projet (projects/<id>/)
Ce répertoire, à la racine du monorepo smart_ide, ne contient que les fichiers de configuration attendus par ia_dev (conf.json par identifiant de projet). Ce n’est pas le répertoire des clones Git des applications.
Les sous-répertoires projects/<id>/ non listés dans le .gitignore à la racine (exceptions pour les ids versionnés) restent ignorés par Git : pour versionner un nouvel id, ajouter les lignes !projects/<id>/ et !projects/<id>/** à côté des exceptions existantes.
Clones applicatifs (docv, stacks métier, etc.)
Les dépôts sources des produits (ex. backend docv sous un chemin du type …/enso/docv, autres apps) doivent vivre ailleurs, selon la convention du poste — typiquement un répertoire frère du monorepo, par ex. ../projects/<nom>/ (relatif à la racine smart_ide), distinct de ./projects/ ici.
./projects/(ce dossier) → uniquementconf.json(+ métadonnées légères) pour queia_devrésolveprojects/<id>/conf.jsonvia le lien symbolique décrit dans docs/ia_dev-module.md.../projects/(ou autre racine configurée) → arborescences Git complètes, builds, etc. ; dans chaqueconf.json,project_pathet les cheminsdeploy.*utiles sont relatifs à la racine du monorepo smart_ide (ex.../enso,.) ou absolus ; le scriptcron/git-pull-project-clones.shet ia_dev les résolvent depuis cette racine (voiria_dev/lib/conf_path_resolve.sh).
smart_ide
- Fichier :
smart_ide/conf.json - Après clone ou réorganisation des dossiers, exécuter si besoin
scripts/ensure-ia-dev-smart-ide-project-link.shpour recréer le lienia_dev/projects/smart_ide→../../projects/smart_ide.
enso
- Fichier :
enso/conf.json— clone enso frère du monorepo (project_pathtypique../enso), déploiementdeploy/scripts_v2, forge 4nk/enso (wiki / issues), mails ticketingAI.ENSO.*@4nkweb.com. - Chemins absolus sur les serveurs déclarés sous
smart_ide.remote_data_access(clone, dossiers permanents docv) sont alignés surENSO_REMOTE_ROOT,ENSO_SSH_HOSTet le sous-chemindata/dossiers-permanentstels que documentés dans le dépôt enso (deploy/enso-deploy.env.example, sync docv). Les valeurs réelles par ferme restent dans lesenso-deploy.envnon versionnés. - Cron fragment :
cron/fragments/enso.cron. - Pour que
ia_devrésolveprojects/enso/conf.json, créer sousia_dev/projects/un lien symboliqueenso→../../projects/enso(même principe quesmart_ide).
Synchronisation Git planifiée (cron/)
Pour chaque projects/<id>/conf.json, le tirage automatique utilise la config centralisée cron/config.env (PULL_SYNC_*) et le wrapper cron/git-pull-wrapper.sh, qui appelle cron/git-pull-project-clones.sh (git fetch / merge --ff-only si possible).
- Activer le timer systemd utilisateur (recommandé) :
scripts/install-git-pull-systemd-user.sh - Désactiver pour un id projet :
"cron": { "git_pull": false }dans leconf.jsonconcerné. - Désactiver tout le mécanisme :
PULL_SYNC_ENABLED=0dansconfig.envoucron/config.local.env.
Détail : cron/README.md. project_path est résolu en chemin absolu à partir de la racine smart_ide lorsqu’il est relatif.
Données déployées, SSH, AnythingLLM et IDE
- Les données métier vivent sur les serveurs test / pprod / prod ; elles ne doivent pas être versionnées dans les dépôts applicatifs (répertoires du type
data/, dumps, etc. en.gitignoresur chaque clone applicatif). docv, AnythingLLM et les services smart_ide qui lisent ces données s’appuient sur des accès SSH documentés vers ces environnements. Spécification : features/remote-deployed-data-ssh.md.
Bloc optionnel smart_ide dans conf.json
Chaque projects/<id>/conf.json peut contenir une clé smart_ide (hors périmètre strict ia_deploy) avec notamment remote_data_access (alias SSH Host, chemins sur serveur par environnement). Voir l’exemple sous enso/conf.json.
Projet actif pour l’éditeur / Cursor
- Copier
active-project.json.exampleversprojects/active-project.json(fichier non versionné) et renseignerid(smart_ide,enso, …). La clé optionnellenotesdans l’exemple est informative ; les outils ne s’en servent pas. - Dans un fichier
.code-workspace, renseignersmartIde.activeProjectIddanssettings(ex.enso/smart_ide.code-workspace).
Les agents Cursor lisent cette convention via .cursor/rules/smart-ide-ia-dev-bridge.mdc.
Référence amont
Schéma des champs : ia_dev/projects/README.md (documentation ia_dev). Le bloc optionnel cron est une extension smart_ide pour les scripts locaux ; ia_dev peut l’ignorer s’il ne le lit pas. Le bloc smart_ide est une extension smart_ide pour données distantes et IDE ; les outils ia_dev qui ne le lisent pas peuvent l’ignorer.