Pierre Marx 2258013394 feat: add REST + Socket.IO fallback for Python server
Add RestSocketAdapter that uses:
- REST API for actions (login, logout, terminals)
- Socket.IO for real-time events (IpbxEvent)

ConnectionManager now tries SignalR first (.NET server),
then falls back to REST+SocketIO (Python server).

This enables the client to work with both servers during migration.
2025-11-24 16:05:30 -05:00
2025-10-21 15:16:04 -04:00
2025-09-04 11:43:50 -04:00

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

# 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

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

{
  "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 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 pour plus de détails.

🤝 Support

Pour toute question, problème ou suggestion :

  • Créer une issue sur GitHub
  • Documentation complète dans le dossier docs/

SimpleConnect - Simplifier la gestion des rendez-vous médicaux pour les centres d'appels

Description
SimpleConnect Client - Releases
Readme 246 KiB