# SimpleConnect - Application de Gestion Centralisée des Plannings Médicaux Application Electron destinée aux centres d'appels médicaux pour la gestion unifiée de multiples plateformes de prise de rendez-vous. ## 🎯 Fonctionnalités principales ### Gestion centralisée - **Connexion unique** : Authentification centralisée avec sélection du terminal téléphonique - **Multi-centres** : Accès simultané à plusieurs plateformes (Doctolib, MonDocteur, etc.) - **Navigation par onglets** : Bascule rapide entre les différents centres assignés - **Sessions isolées** : Connexions automatiques et indépendantes pour chaque centre ### Intégration CTI (Computer Telephony Integration) - **Connexion SignalR/WebSocket** : Communication temps réel avec le serveur IPBX avec fallback automatique - **Gestion des appels entrants** : Notifications et bascule automatique vers le bon centre - **Terminaux téléphoniques** : Sélection dynamique ou saisie manuelle du poste lors de la connexion - **Événements IPBX** : Support complet des événements téléphoniques (sonnerie, décrochage, raccrochage) ### Outils de productivité - **Panneau de notes latéral** : - Redimensionnable (280px à 600px de largeur) - Sauvegarde automatique après 2 secondes d'inactivité - Historique des 50 dernières versions - Synchronisation localStorage + fichier serveur - **Statistiques en temps réel** : Compteur d'appels et de rendez-vous - **Mode développement** : Simulation d'appels pour les tests ## 🚀 Installation ### Prérequis - Node.js version 16 ou supérieure - npm ou yarn - Windows, macOS ou Linux ### Installation rapide ```bash # Cloner le repository git clone https://github.com/simpleconnect/electron-app.git cd simpleconnect-electron # Installer les dépendances npm install # Lancer l'application npm start ``` ### Scripts disponibles ```bash npm start # Lancer l'application en production npm run dev # Mode développement avec DevTools npm run build # Builder pour toutes les plateformes npm run build:win # Builder pour Windows npm run build:mac # Builder pour macOS npm run build:linux # Builder pour Linux ``` ## ⚙️ Configuration ### Fichier config.json ```json { "signalR": { "enabled": true, "serverUrl": "http://votre-serveur-signalr:8080/planningHub", "reconnectInterval": 5000 } } ``` ### Variables d'environnement - `NODE_ENV=development` : Active le mode développement avec DevTools ## 📱 Utilisation ### 1. Connexion agent 1. **Lancer l'application** SimpleConnect 2. **Vérifier l'indicateur SignalR** (vert = connecté) 3. **Saisir les identifiants** : - Code agent - Mot de passe - Sélection ou saisie manuelle du terminal téléphonique 4. **Option "Débloquer"** si session bloquée 5. **Bouton "Quitter"** pour fermer l'application sans se connecter ### 2. Interface principale - **Header** : Nom de l'agent et statut des appels - **Onglets** : Un par centre assigné (badge pour appels actifs) - **Zone centrale** : Webview du planning sélectionné - **Panneau de notes** : Accessible via le bouton 📝 - **Bouton Quitter** : Déconnexion et fermeture de l'application ### 3. Gestion des appels 1. **Appel entrant** : - Notification avec informations patient - Son de sonnerie - Bouton "Prendre l'appel" 2. **Prise d'appel** : - Bascule automatique vers le bon centre - Badge rouge sur l'onglet actif - Mise à jour du statut d'appel 3. **Pendant l'appel** : - Prise de rendez-vous dans la webview - Notes dans le panneau latéral - Sauvegarde automatique 4. **Fin d'appel** : - Détection automatique du raccrochage - Incrémentation des statistiques - Notes conservées ## 🏗️ Architecture technique ### Stack technologique - **Frontend** : HTML5, CSS3, JavaScript ES6+ - **Framework** : Electron 28.0.0 - **Communication temps réel** : - SignalR (@microsoft/signalr 9.0.6) - WebSocket avec fallback automatique (socket.io-client 4.8.1) - ConnectionManager pour basculement transparent - **UI Components** : Choices.js 11.1.0 pour les selects personnalisés - **Stockage** : Fichiers JSON locaux + localStorage ### Structure du projet ``` simpleconnect-electron/ ├── main.js # Process principal Electron et gestion SignalR/WebSocket ├── renderer.js # Interface utilisateur et gestion des webviews ├── connection-manager.js # Gestionnaire de connexion avec fallback automatique ├── websocket-adapter.js # Adaptateur SocketIO émulant l'API SignalR ├── index.html # Structure HTML de l'application ├── styles-modern.css # Styles CSS modernes avec gradients ├── config.json # Configuration SignalR et paramètres ├── docs/ │ └── changelog.md # Historique complet des versions ├── notes/ # Dossier de stockage des notes agents └── package.json # Dépendances et métadonnées ``` ### Communication IPC Principaux canaux : - `login-agent` : Authentification via SignalR/WebSocket - `logout` / `quit-app` : Déconnexion et fermeture - `get-terminal-list` : Liste des terminaux disponibles - `save-notes` / `get-notes` : Gestion des notes - `signalr-status` : État de la connexion temps réel - `get-app-version` : Récupération de la version de l'application - `switch-to-center` / `release-center` : Événements IPBX pour la gestion des appels ## 🔒 Sécurité - **Isolation des sessions** : Partition Electron par centre - **Connexion sécurisée** : Support HTTPS/WSS pour SignalR et WebSocket - **Pas de stockage de mots de passe** : Authentification directe serveur - **Logging détaillé** : Tous les événements SignalR dans `~/.simpleconnect-ng/signalr.log` ## 📊 Versions ### Version actuelle : 1.4.1 Voir [changelog.md](docs/changelog.md) pour l'historique complet des versions. ### Dernières nouveautés #### v1.4.1 (2025-10-21) - Bouton "Quitter" sur la page de connexion pour fermer l'application sans se connecter - Style secondaire pour différenciation visuelle du bouton principal #### v1.4.0 (2025-10-21) - Affichage de la version dans l'interface (page de login et header principal) - Version affichée dans la barre de titre native : "SimpleConnect vX.X.X" #### v1.3.1 (2025-10-17) - Saisie manuelle de postes téléphoniques personnalisés - Validation de format numérique avec avertissement non-bloquant - Affichage simplifié des terminaux (sans préfixe "Poste") - Amélioration du contraste de l'élément survolé dans la liste déroulante #### v1.3.0 (2025-09-12) - Support dual SignalR/SocketIO avec fallback automatique - Compatibilité totale avec backends .NET et Python - ConnectionManager qui essaie SignalR puis bascule sur SocketIO - WebSocketAdapter émulant l'API SignalR complète #### v1.2.x - Panneau de notes redimensionnable avec sauvegarde automatique - Système de persistance amélioré avec historique (50 versions) - Interface moderne avec animations fluides - Logging complet des événements SignalR ## 🐛 Dépannage ### Problèmes courants 1. **SignalR/WebSocket ne se connecte pas** : - Vérifier l'URL du serveur dans config.json - Vérifier la connexion réseau - Consulter les logs dans `~/.simpleconnect-ng/signalr.log` - L'application bascule automatiquement sur WebSocket si SignalR échoue - Mode développement (`npm run dev`) pour voir les erreurs console 2. **Session bloquée** : - Utiliser l'option "Débloquer" sur la page de connexion - Cette option force la déconnexion de la session précédente - Redémarrer l'application si nécessaire 3. **Poste téléphonique personnalisé non reconnu** : - Le système affiche un avertissement mais accepte tout numéro valide - Vérifier que le poste est bien numérique (ex: 3001) - Le serveur valide la disponibilité du terminal 4. **Webviews ne se chargent pas** : - Vérifier la connexion internet - Vérifier les URLs des centres dans la configuration serveur - Utiliser le bouton Rafraîchir dans le header pour recharger la webview - Mode développement pour voir les erreurs console 5. **Notes non sauvegardées** : - Vérifier que le dossier `notes/` existe et est accessible - La sauvegarde automatique se déclenche après 2 secondes d'inactivité - Les notes sont aussi sauvegardées dans localStorage comme backup ## 🚧 Roadmap - [ ] Support multi-langues - [ ] Mode sombre/clair - [ ] Export des statistiques en CSV/PDF - [ ] Intégration avec plus de plateformes de RDV - [ ] Application mobile companion - [ ] Dashboard manager avec métriques temps réel ## 📝 Licence MIT - Voir le fichier [LICENSE](LICENSE) pour plus de détails. ## 🤝 Support Pour toute question, problème ou suggestion : - Créer une issue sur [GitHub](https://github.com/simpleconnect/electron-app/issues) - Documentation complète dans le dossier [docs/](docs/) --- **SimpleConnect** - Simplifier la gestion des rendez-vous médicaux pour les centres d'appels