smart_ide/projects/README.md
Nicolas Cantu 77c0872d0b chore(projects): refresh active-project example and gitignore local dirs
**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.
2026-04-03 18:10:08 +02:00

5.5 KiB
Raw Blame History

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 nest 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) → uniquement conf.json (+ métadonnées légères) pour que ia_dev résolve projects/<id>/conf.json via le lien symbolique décrit dans docs/ia_dev-module.md.
  • ../projects/ (ou autre racine configurée) → arborescences Git complètes, builds, etc. ; dans chaque conf.json, project_path et les chemins deploy.* utiles sont relatifs à la racine du monorepo smart_ide (ex. ../enso, .) ou absolus ; le script cron/git-pull-project-clones.sh et ia_dev les résolvent depuis cette racine (voir ia_dev/lib/conf_path_resolve.sh).

smart_ide

enso

  • Fichier : enso/conf.json — clone enso frère du monorepo (project_path typique ../enso), déploiement deploy/scripts_v2, forge 4nk/enso (wiki / issues), mails ticketing AI.ENSO.*@4nkweb.com.
  • Chemins absolus sur les serveurs déclarés sous smart_ide.remote_data_access (clone, dossiers permanents docv) sont alignés sur ENSO_REMOTE_ROOT, ENSO_SSH_HOST et le sous-chemin data/dossiers-permanents tels que documentés dans le dépôt enso (deploy/enso-deploy.env.example, sync docv). Les valeurs réelles par ferme restent dans les enso-deploy.env non versionnés.
  • Cron fragment : cron/fragments/enso.cron.
  • Pour que ia_dev résolve projects/enso/conf.json, créer sous ia_dev/projects/ un lien symbolique enso../../projects/enso (même principe que smart_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 le conf.json concerné.
  • Désactiver tout le mécanisme: PULL_SYNC_ENABLED=0 dans config.env ou cron/config.local.env.

Détail : cron/README.md. project_path est résolu en chemin absolu à partir de la racine smart_ide lorsquil 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 .gitignore sur chaque clone applicatif). docv, AnythingLLM et les services smart_ide qui lisent ces données sappuient 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 lexemple sous enso/conf.json.

Projet actif pour léditeur / Cursor

  1. Copier active-project.json.example vers projects/active-project.json (fichier non versionné) et renseigner id (smart_ide, enso, …). La clé optionnelle notes dans lexemple est informative ; les outils ne sen servent pas.
  2. Dans un fichier .code-workspace, renseigner smartIde.activeProjectId dans settings (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 lignorer sil 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 lignorer.