# Redsmite Sync — Plugin Obsidian Synchronise automatiquement vos comptes-rendus (CRs) Redsmite dans votre vault Obsidian. ## Fonctionnalités - **Sync automatique** — poll périodique (configurable, 1-60 min) des CRs en attente - **Smart placement** — le plugin propose un dossier basé sur le nom du client, et apprend vos préférences (après 2 confirmations identiques, le placement devient automatique) - **Idempotence** — un CR déjà présent dans le vault n'est pas re-téléchargé - **Desktop only** — fonctionne sur Windows, macOS, Linux (pas mobile) ## Installation Le plugin est disponible sur le **Community Plugin Store** d'Obsidian : 1. Ouvrir Obsidian → **Paramètres** → **Plugins tiers** 2. Désactiver le "Mode restreint" si ce n'est pas déjà fait 3. Cliquer **Parcourir** → rechercher **"Redsmite"** 4. Cliquer **Installer** → **Activer** Les mises à jour sont automatiques via Obsidian. ## Configuration Après activation, aller dans Paramètres → Redsmite Sync : | Paramètre | Description | Défaut | |-----------|-------------|--------| | **Token API** | Token d'authentification Redsmite (fourni par votre administrateur) | — | | **Dossier cible** | Dossier par défaut pour les CRs sans correspondance client | `Redsmite` | | **Intervalle de sync** | Fréquence de vérification des nouveaux CRs (minutes) | 5 min | Le bouton **Tester la connexion** vérifie que le token est valide. Les **correspondances client-dossier** sont apprises automatiquement : après 2 placements confirmés dans le même dossier pour un client, les CRs suivants y sont classés sans intervention. ## Architecture ``` Plugin (desktop, TypeScript) ↓ poll toutes les N minutes Supabase Edge Function /obsidian-pending ↓ retourne les CRs non synchronisés Plugin : smart placement (propose dossier → confirmation utilisateur) ↓ Plugin : télécharge le markdown via /obsidian-cr-md/:id ↓ écrit le fichier .md dans le vault Supabase Edge Function /obsidian-ack/:id ↓ marque le CR comme synchronisé (obsidian_synced = true) ``` ## Développement ### Prérequis - Node.js 18+ - npm ### Commandes ```bash npm install # installer les dépendances npm run build # compiler main.ts → main.js (production) npm run dev # compiler en mode watch (développement) ``` ### Structure ``` main.ts # Plugin principal (polling, sync, smart placement) settings.ts # Types et valeurs par défaut des settings settings-tab.ts # UI de configuration dans Obsidian smart-placement-modal.ts # Modale de validation du dossier cible folder-suggest-modal.ts # Sélecteur de dossier fuzzy manifest.json # Métadonnées du plugin (id, version, compatibilité) esbuild.config.mjs # Config de build esbuild ``` ### Publier une mise à jour 1. Modifier le code 2. Bumper la version dans `manifest.json` ET `package.json` 3. Build : `npm run build` 4. Commit + push 5. Créer une GitHub Release avec le tag = version (ex: `1.1.0`) 6. Attacher `main.js` et `manifest.json` comme assets de la release 7. Les utilisateurs BRAT reçoivent la mise à jour automatiquement ## Backend requis Ce plugin nécessite les Edge Functions Supabase suivantes déployées en production : - `obsidian-pending` — GET, retourne les CRs en attente de sync - `obsidian-ack` — POST, marque un CR comme synchronisé - `obsidian-cr-md` — GET, retourne le contenu markdown d'un CR Et la migration `api_tokens_obsidian` appliquée (table `api_tokens` + colonne `obsidian_synced` sur `meeting_notes`). ## Licence Propriétaire — Redsmite SAS