smart_ide/docs/repo/projects-directory.md
Nicolas Cantu ac96434351 docs: centralize README content under docs/repo/
**Motivations:**
- Single canonical documentation tree under docs/; reduce drift between README copies.

**Evolutions:**
- Add docs/repo/ with operational guides (cron, systemd, projects, logs, docv, ia_dev, services, scripts, extension).
- Replace scattered README.md files with pointers to docs/repo/*.md.
- Refresh docs/README.md index and cross-links across docs/, .cursor rules/agents.
- Bump ia_dev submodule to matching doc pointer commits.
2026-04-03 18:20:31 +02:00

54 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

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.
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/`** → 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 [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/<id>/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** lorsquil 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 : `.cursor/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.