diff --git a/CLAUDE.md b/CLAUDE.md index b99ff86..3d352dd 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,122 +1,162 @@ -# Instructions pour Claude - Workflow de développement +# CLAUDE.md -## 📋 Processus de finalisation des modifications +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. -Lorsqu'une fonctionnalité ou correction est terminée, suivre systématiquement ce workflow : +## Commands -### 1. 📝 Mettre à jour le changelog - -**Fichier** : `docs/changelog.md` - -- Ajouter une nouvelle section avec le numéro de version suivant -- Format de date : `AAAA-MM-JJ` -- Structurer les changements par catégories : - - **Ajouté** : Nouvelles fonctionnalités - - **Modifié** : Changements aux fonctionnalités existantes - - **Corrigé** : Corrections de bugs - - **Supprimé** : Fonctionnalités retirées - - **Technique** : Détails d'implémentation - - **Documentation** : Mises à jour de docs - -Exemple : -```markdown -## [1.2.16] - 2025-09-05 - -### Ajouté -- **Titre de la fonctionnalité** : Description courte - - Détail spécifique avec bullet points - - Autre détail important -``` - -### 2. 🔢 Bump de version - -**Fichier** : `package.json` - -Mettre à jour le champ `"version"` selon la convention SemVer : - -- **PATCH** (x.x.+1) : Corrections de bugs, petits ajustements -- **MINOR** (x.+1.0) : Nouvelles fonctionnalités compatibles -- **MAJOR** (+1.0.0) : Changements majeurs non rétrocompatibles - -**Méthodes** : - -Option 1 - Manuellement : -```json -"version": "1.2.16", -``` - -Option 2 - Avec npm (si le repo est clean) : +### Development ```bash -npm version patch # ou minor/major -npm version 1.2.16 # version spécifique +npm start # Lance l'application en production +npm run dev # Mode développement avec DevTools (NODE_ENV=development) ``` -### 3. 📦 Commit Git - -Faire un commit structuré avec tous les changements : - +### Build & Distribution ```bash -git add -A -git commit -m "type: Description courte - -- Détail important 1 -- Détail important 2 -- Bump version X.X.X" +npm run build # Build pour toutes les plateformes +npm run build:win # Build pour Windows (.exe, .nsis) +npm run build:mac # Build pour macOS (.dmg, .app) +npm run build:linux # Build pour Linux (AppImage, .deb, .rpm) +npm run build:linux-x64 # Build Linux spécifique x64 +npm run build:linux-arm64 # Build Linux spécifique ARM64 ``` -**Types de commit** : -- `feat:` Nouvelle fonctionnalité -- `fix:` Correction de bug -- `refactor:` Refactoring de code -- `docs:` Documentation -- `style:` Formatage, style -- `chore:` Maintenance +## Architecture -### 4. 🏗️ Build (optionnel) +### Stack technologique +- **Electron 28.0.0** : Framework principal pour l'application desktop +- **SignalR (@microsoft/signalr 9.0.6)** : Communication temps réel avec le serveur CTI/IPBX +- **Choices.js 11.1.0** : Interface de sélection améliorée pour les terminaux téléphoniques +- **HTML/CSS/JavaScript natif** : Pas de framework frontend (React, Vue, etc.) -Si nécessaire, créer les builds de distribution : +### Structure des fichiers principaux -```bash -# Linux -npx electron-builder --linux --x64 - -# Windows -npx electron-builder --win - -# macOS -npx electron-builder --mac +``` +/ +├── main.js # Process principal Electron - gère SignalR, IPC et fenêtres +├── renderer.js # Process renderer - UI et gestion des webviews +├── index.html # Structure HTML de l'application +├── styles-modern.css # Styles CSS avec gradients et animations +├── config.json # Configuration SignalR uniquement +└── notes/ # Stockage des notes agents (format: notes_{agentId}.json) ``` -## 📌 Exemple complet +### Communication inter-process (IPC) -```bash -# 1. Éditer docs/changelog.md avec la nouvelle version -# 2. Éditer package.json pour bumper la version -# 3. Commit -git add -A -git commit -m "feat: Ajout système de logging SignalR et corrections UI +Le système utilise IPC pour la communication entre le process principal et le renderer : -- Système de logging complet dans ~/.simpleconnect-ng/signalr.log -- Remplacement des emojis par icônes SVG -- Suppression du menu Electron -- Bump version 1.2.16" +**Canaux principaux** : +- `agent-login` : Authentification via SignalR (AgentLogin) +- `logout` / `quit-app` : Déconnexion et fermeture +- `get-terminals` : Récupération de la liste des terminaux +- `save-notes` / `get-notes` : Gestion des notes avec persistance fichier +- `signalr-status` : État de la connexion SignalR +- `switch-to-center` / `release-center` : Événements IPBX pour la gestion des appels -# 4. Build si nécessaire -npx electron-builder --linux --x64 -``` +### Intégration SignalR -## ⚠️ Points d'attention +**Hub SignalR** : `/planningHub` -1. **Toujours** mettre à jour le changelog AVANT de bumper la version -2. **Vérifier** que la version dans le changelog correspond à celle du package.json -3. **Inclure** "Bump version X.X.X" dans le message de commit -4. **Ne pas** référencer Claude ou Anthropic dans les commits -5. **Utiliser** la date du jour (vérifier avec `date` si nécessaire) +**Méthodes invoquées** : +- `GetTerminalListByServiceProvider` : Liste des terminaux disponibles +- `AgentLogin` : Connexion agent (email, password, terminal) +- `AgentLogoff` : Déconnexion agent -## 🎯 Objectif +**Événements écoutés** : +- `IpbxEvent` : Événements téléphoniques (codes 1=appel entrant, 2=fin d'appel) +- Plus de 13 types d'événements potentiels loggés dans `~/.simpleconnect-ng/signalr.log` -Ce workflow garantit : -- Une traçabilité complète des changements -- Des versions cohérentes entre documentation et code -- Un historique Git propre et informatif -- Une facilité de génération des releases \ No newline at end of file +### Gestion des webviews + +Chaque centre médical a sa propre webview Electron avec : +- **Session isolée** : Partition unique par centre pour cookies/auth séparés +- **Auto-connexion** : Injection des credentials dans les plateformes (Doctolib, MonDocteur, etc.) +- **Preload script** : Injection JavaScript pour automatiser la connexion +- **UserAgent personnalisé** : Identification comme navigateur standard + +### Système de logging + +**SignalR logs** : `~/.simpleconnect-ng/signalr.log` +- Tous les événements SignalR en JSON structuré +- Timestamp, arguments et contexte agent + +**Notes agents** : `/notes/notes_{agentId}.json` +- Sauvegarde automatique après 2 secondes d'inactivité +- Historique des 50 dernières versions +- Synchronisation localStorage + fichier + +## Workflow de développement + +### Finalisation des modifications + +Suivre systématiquement ce workflow : + +1. **Mettre à jour le changelog** (`docs/changelog.md`) + - Format date : `AAAA-MM-JJ` + - Catégories : Ajouté, Modifié, Corrigé, Supprimé, Technique, Documentation + +2. **Bumper la version** (`package.json`) + - PATCH (x.x.+1) : Corrections, petits ajustements + - MINOR (x.+1.0) : Nouvelles fonctionnalités compatibles + - MAJOR (+1.0.0) : Changements majeurs + +3. **Commit structuré** + ```bash + git add -A + git commit -m "type: Description courte + + - Détail 1 + - Détail 2 + - Bump version X.X.X" + ``` + + **Important** : Ne jamais mentionner Claude, Anthropic ou des adresses emails relatives à ces entités dans les commits + +4. **Build si nécessaire** + ```bash + npx electron-builder --linux --x64 + ``` + +## Points d'attention + +### Sécurité +- **Jamais de credentials en dur** : Tout passe par SignalR +- **Sessions isolées** : Chaque centre a sa partition Electron +- **Logs sécurisés** : Pas de mots de passe dans les logs + +### UI/UX +- **Pas d'emojis** : Utiliser des icônes SVG inline pour compatibilité Linux +- **Animations fluides** : Transitions CSS avec cubic-bezier +- **Responsive** : Panneau de notes redimensionnable (280-600px) + +### SignalR +- **Reconnexion automatique** : [0, 2000, 5000, 10000]ms +- **Filtrage par terminal** : Ne recevoir que les événements du terminal connecté +- **Gestion des erreurs** : Try/catch sur toutes les invocations + +### Build cross-platform +- **Windows** : NSIS installer avec shortcuts +- **macOS** : DMG avec icône personnalisée +- **Linux** : AppImage, .deb, .rpm (x64 et arm64) + +## Fonctionnalités clés + +### Authentification +- Connexion centralisée via SignalR +- Option "Forcer la déconnexion" pour débloquer sessions +- Auto-focus sur le champ code d'accès + +### Gestion des appels +- Basculement automatique vers le bon centre (IpbxEvent code 1) +- Libération automatique après raccrochage (IpbxEvent code 2) +- Notifications visuelles et sonores + +### Interface +- Header unifié avec onglets (fusion pour gagner de l'espace) +- Panneau de notes latéral avec sauvegarde automatique +- Pas de barre de menu Electron (autoHideMenuBar: true) +- Scrollbars masquées mais fonctionnelles + +### Persistance +- Notes sauvegardées localement et sur serveur +- Préférences utilisateur dans localStorage +- Historique des 50 dernières versions de notes \ No newline at end of file