Nicolas Cantu 0f9a69e368 docs: deployed data over SSH, docv/AnythingLLM/services, IDE project config
- Add features/remote-deployed-data-ssh.md (source of truth on test/pprod/prod)
- Extend projects conf smart_ide.remote_data_access and anythingllm slugs (enso example)
- active-project.json.example + gitignore; .vscode/settings smartIde.activeProjectId
- Update docv integration docs, anythingllm-workspaces, ecosystem, API README
- Cursor rule: resolve project id from active-project / env / workspace setting
2026-04-03 17:55:08 +02:00
..

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.

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. ; project_path dans chaque conf.json pointe vers ces chemins absolus.

smart_ide

enso

  • Fichier : enso/conf.json — monorepo enso (project_path typique /home/ncantu/code/enso), déploiement deploy/scripts_v2, forge 4nk/enso (wiki / issues), mails ticketing AI.ENSO.*@4nkweb.com.
  • 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. Les clones restent sous le chemin absolu project_path.

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, …).
  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.