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

7.4 KiB
Raw Blame History

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-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) 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

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

Les chemins locaux vers clones (project_path, deploy.repository_root, etc.) sont relatifs à la racine du monorepo smart_ide (ou absolus). Les path_on_server sous smart_ide.remote_data_access restent des chemins absolus sur la machine déployée.

Bloc optionnel smart_ide (ignoré par les outils qui ne le lisent pas, ex. parties dia_dev qui ne sélectionnent que leurs champs) :

  • remote_data_access.environments.<test|pprod|prod> : pour chaque environnement,

    • ssh_host_alias : nom dhôte SSH tel que défini dans ~/.ssh/config (Host …). Pour enso, le déploiement lit ENSO_SSH_HOST dans le fichier enso-deploy.env de lenvironnement (exemples dans enso/deploy/enso-deploy.env.example : test, pprod, prod). Si votre Host local diffère (ex. enso-test-app), renseigner ce libellé ici pour que les outils SSH du poste ciblent la bonne entrée.
    • remote_app_root (optionnel) : chemin absolu sur le serveur de la racine du clone applicatif lorsquil est fixé par les scripts de déploiement. Pour enso, même sémantique que ENSO_REMOTE_ROOT (ex. /home/ncantu/enso dans lexemple du dépôt enso ; sous $HOME sur la cible pour les unités systemd utilisateur, voir commentaire dans enso-deploy.env.example).
    • remote_data_directories : liste dobjets { "role": "…", "path_on_server": "…" } avec path_on_server en chemin absolu sur la machine déployée. Pour enso, les rôles enso_monorepo_clone et docv_dp_git_data reflètent ENSO_REMOTE_ROOT et le sous-chemin par défaut data/dossiers-permanents décrit dans enso/deploy/enso-deploy.env.example et enso/docs/features/DOSSIERS_PERMANENTS_DATA_GIT.md. Ajuster si DOCV_DP_GIT_REPO_ROOT / DOCV_DP_GIT_DATA_SUBPATH sur la cible divergent.
    • 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.

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 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). Lexemple versionné peut contenir dautres clés purement documentaires (ex. notes) ignorées par les automatisations.
  2. Paramètres du fichier workspace VS Code / Cursor

    • Dans le .code-workspace que vous ouvrez (ex. projects/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).

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