smart_ide/docs/features/remote-deployed-data-ssh.md
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

85 lines
6.1 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.

# Données sur environnements déployés — SSH, docv, AnythingLLM, services
## Règle de périmètre
- La **vérité opérationnelle des données métier** (fichiers documentaires, volumes applicatifs, dumps ou extractions de bases utilisées pour lIA / docv / recherche) réside sur les **machines déployées** **test**, **pprod** et **prod**, pas dans lhistorique Git des dépôts applicatifs.
- Les dépôts sources (clone local ou CI) contiennent le **code** et la **doc versionnée** ; les répertoires du type **`data/`**, caches dindex, exports SQL destinés au RAG, etc. doivent être **ignorés par Git** (`.gitignore` dans chaque dépôt applicatif concerné). Smart_ide ne remplace pas le `.gitignore` des projets externes : la convention est **documentée ici** pour alignement équipe.
## Objectifs par consommateur
| Consommateur | Besoin | Moyen prévu |
|--------------|--------|-------------|
| **docv** | Lire / actualiser la vue documentaire et les données projet alignées sur létat **déployé** | Connexion **SSH** (ou rebond **ProxyJump**) vers les hôtes ou bastions par environnement ; copie contrôlée (**rsync**, **scp**, **sftp**) ou **commandes distantes** (ex. `pg_dump` sur le serveur) vers une **zone de travail locale ou de service** autorisée, puis ingestion AnythingLLM / API docv selon les pipelines du dépôt docv. |
| **AnythingLLM** | Workspace par projet alimenté avec un corpus **proche de la prod** (ou de test) | Après **récupération SSH** depuis lenvironnement cible (fichiers + éventuels dumps transformés en documents), exécution des scripts de synchro existants ([anythingllm-workspaces.md](../anythingllm-workspaces.md), [anythingllm-pull-sync-after-pull.md](./anythingllm-pull-sync-after-pull.md)) en pointant vers ce **miroir local ou volume monté**, pas vers un `data/` versionné dans Git. |
| **Services smart_ide** (éditeur, IA, extraction, recherche dans les données) | Opérer sur des fichiers ou flux qui **ne sont pas** dans le clone Git | Même principe : les services qui doivent lire des **données déployées** obtiennent un **chemin résolu après fetch SSH** (répertoire cache par projet / environnement) ou exécutent des **commandes distantes** via SSH ; les contrats HTTP existants ([API/README.md](../API/README.md)) peuvent être étendus côté implémentation pour accepter une **racine de lecture** (`*_ROOT`, `*_CACHE_DIR`) alimentée par ce flux. |
Les **secrets** (clés SSH, mots de passe BDD) restent **hors dépôt** : fichiers sous `~/.ssh/config`, agents SSH, coffres locaux — jamais dans `projects/*/conf.json`.
## Schéma logique
```mermaid
flowchart TB
subgraph deployed [Environnements déployés]
T[test]
P[pprod]
R[prod]
end
subgraph git [Dépôts Git]
APP[clone applicatif]
end
subgraph bridge [Pont SSH]
SSH[ssh_rsync_ou_commande_distante]
end
subgraph consumers [Consommateurs]
DV[docv]
ALLM[AnythingLLM]
SVC[services_smart_ide]
end
T --> SSH
P --> SSH
R --> SSH
SSH --> DV
SSH --> ALLM
SSH --> SVC
APP --> git
APP -.-x|pas de data versionnée| git
```
## Déclaration dans `projects/<id>/conf.json`
Bloc optionnel **`smart_ide`** (ignoré par les outils qui ne le lisent pas, ex. parties d**ia_dev** qui ne sélectionnent que leurs champs) :
- **`remote_data_access.environments.<test|pprod|prod>`** : pour chaque environnement,
- **`ssh_host_alias`** : nom d**hôte SSH** tel que défini dans **`~/.ssh/config`** (recommandé : `Host enso-test-app`, `ProxyJump`, `IdentityFile`, etc.).
- **`remote_data_directories`** : liste dobjets `{ "role": "…", "path_on_server": "…" }` décrivant les chemins **sur la machine déployée** (ex. répertoire docv, dossier de pièces jointes, répertoire de dumps). Les chemins sont **indicatifs** : les ajuster sur chaque ferme.
- **`database` (optionnel)** : description **non secrète** du besoin (moteur, stratégie dump) ; pas dURL ni mot de passe dans le JSON versionné.
- **`anythingllm_workspace_slug` (optionnel)** : objet ou chaînes par env — slugs de workspace alignés sur [anythingllm-workspaces.md](../anythingllm-workspaces.md).
Un exemple structuré est donné sous **`projects/enso/conf.json`** ; copier / adapter pour dautres ids.
## Configuration projet dans lIDE
Objectif : indiquer **quel** `projects/<id>/` est actif pour léditeur et les agents, sans mélanger avec `IA_PROJECT_ID` ia_dev quand ils divergent.
1. **Fichier local (recommandé)**
- Copier [`projects/active-project.json.example`](../projects/active-project.json.example) vers **`projects/active-project.json`**.
- Ce fichier est **ignoré par Git** (voir racine `.gitignore`).
- Champs : **`id`** (obligatoire, ex. `enso`), **`default_env`** (optionnel : `test` | `pprod` | `prod`).
2. **Paramètres du fichier workspace VS Code / Cursor**
- Dans le **`.code-workspace`** que vous ouvrez (ex. [`projects/enso/smart_ide.code-workspace`](../enso/smart_ide.code-workspace)), renseigner:
`"smartIde.activeProjectId": "<id>"`
- Même clé possible dans **`.vscode/settings.json`** à la racine du dossier smart_ide pour un dossier unique.
- Ces clés ne sont **pas** des clés natives VS Code : elles servent de **convention** lue par scripts, extensions maison ou règles Cursor (voir [`.cursor/rules/smart-ide-ia-dev-bridge.mdc`](../../.cursor/rules/smart-ide-ia-dev-bridge.mdc)).
Ordre de priorité suggéré pour les automatisations : **`projects/active-project.json`** → variable denvironnement **`SMART_IDE_PROJECT_ID`** si défini au lancement → **`smartIde.activeProjectId`** dans les settings du workspace → demande explicite à lutilisateur.
## Liens
- Intégration docv et chemins historiques locaux : [docv-service-integration.md](./docv-service-integration.md)
- IA docv : [docv-ai-integration.md](./docv-ai-integration.md)
- AnythingLLM : [anythingllm-workspaces.md](../anythingllm-workspaces.md)
- Écosystème Git / synchro : [ecosystem-architecture-and-sync.md](../ecosystem-architecture-and-sync.md)
- Index `projects/` : [projects/README.md](../../projects/README.md)