smart_ide/projects/README.md
Nicolas Cantu 4d04eed0f3 feat: relative paths in projects/conf.json and cron pull resolution
- project_path, deploy.*, cron: resolve from monorepo root; ia_dev submodule bumped
- enso/smart_ide.code-workspace folder paths ../../enso, ../../builazoo
- Document in projects/README, remote-deployed-data-ssh.md
2026-04-03 18:03:59 +02:00

51 lines
4.7 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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](../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`
- Fichier : [`smart_ide/conf.json`](./smart_ide/conf.json)
- Après clone ou réorganisation des dossiers, exécuter si besoin [`scripts/ensure-ia-dev-smart-ide-project-link.sh`](../scripts/ensure-ia-dev-smart-ide-project-link.sh) pour recréer le lien `ia_dev/projects/smart_ide``../../projects/smart_ide`.
## `enso`
- Fichier : [`enso/conf.json`](./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`.
- Cron fragment : [`cron/fragments/enso.cron`](../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`](../cron/config.env) (`PULL_SYNC_*`) et le wrapper [`cron/git-pull-wrapper.sh`](../cron/git-pull-wrapper.sh), qui appelle [`cron/git-pull-project-clones.sh`](../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`](../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`](../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](../docs/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`](./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`](./enso/smart_ide.code-workspace)).
Les agents Cursor lisent cette convention via [`.cursor/rules/smart-ide-ia-dev-bridge.mdc`](../.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.