# Configurations projet (`projects//`) 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//` 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//` et `!projects//**` à 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//`** (relatif à la racine `smart_ide`), **distinct** de `./projects/` ici. - **`./projects/`** → uniquement `conf.json` (+ métadonnées légères) pour que `ia_dev` résolve `projects//conf.json` via le lien symbolique décrit dans [ia_dev-module.md](../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 (`ia_dev/lib/conf_path_resolve.sh`). ## `smart_ide` - Fichier : `projects/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` pour recréer le lien `ia_dev/projects/smart_ide` → `../../projects/smart_ide`. ## `enso` - Fichier : `projects/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** sous **`smart_ide.remote_data_access`** : alignés sur **`ENSO_REMOTE_ROOT`**, **`ENSO_SSH_HOST`** et **`data/dossiers-permanents`** (dépôt enso, `enso-deploy.env`). Valeurs réelles : fichiers **`enso-deploy.env`** non versionnés. - Cron fragment : `cron/fragments/enso.cron` - Pour **`ia_dev`** : lien symbolique `ia_dev/projects/enso` → `../../projects/enso` ## Synchronisation Git planifiée Pour **chaque** `projects//conf.json`, le tirage automatique utilise **`cron/config.env`** (`PULL_SYNC_*`) et **`cron/git-pull-wrapper.sh`** → **`cron/git-pull-project-clones.sh`**. - **Timer systemd utilisateur** (recommandé) : `scripts/install-git-pull-systemd-user.sh` — voir [cron-git-pull.md](./cron-git-pull.md) - Désactiver pour un id : `"cron": { "git_pull": false }` dans le `conf.json` - Désactiver tout : `PULL_SYNC_ENABLED=0` dans `config.env` ou `config.local.env` `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 Spécification : [features/remote-deployed-data-ssh.md](../features/remote-deployed-data-ssh.md). ### Bloc optionnel `smart_ide` dans `conf.json` Clé **`smart_ide`** avec notamment **`remote_data_access`**, **`anythingllm_workspace_slug`**. Exemple : `projects/enso/conf.json`. ### Projet actif pour l’éditeur / Cursor 1. Copier `projects/active-project.json.example` vers **`projects/active-project.json`** (non versionné) ; renseigner **`id`**, optionnellement **`default_env`**, **`notes`** (informative). 2. Dans un **`.code-workspace`** : **`smartIde.activeProjectId`** dans **`settings`** (ex. `projects/enso/smart_ide.code-workspace`). Convention agents : `.smartIde/rules/smart-ide-ia-dev-bridge.mdc`. ## Référence amont (schéma conf) Schéma détaillé des champs `conf.json` : [ia-dev-project-conf-schema.md](./ia-dev-project-conf-schema.md) (aligné sur `ia_dev/projects/README.md` amont). Extensions **`cron`** et **`smart_ide`** : spécifiques smart_ide ; `ia_dev` peut ignorer les champs non lus.