diff --git a/README.md b/README.md index 5d9deda..9af3088 100644 --- a/README.md +++ b/README.md @@ -11,9 +11,9 @@ Application Electron destinée aux centres d'appels médicaux pour la gestion un - **Sessions isolées** : Connexions automatiques et indépendantes pour chaque centre ### Intégration CTI (Computer Telephony Integration) -- **Connexion SignalR** : Communication temps réel avec le serveur IPBX +- **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 du poste lors de la connexion +- **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é @@ -83,8 +83,9 @@ npm run build:linux # Builder pour Linux 3. **Saisir les identifiants** : - Code agent - Mot de passe - - Sélection du terminal téléphonique -4. **Option "Forcer la déconnexion"** si session bloquée + - 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 @@ -118,74 +119,114 @@ npm run build:linux # Builder pour Linux ### Stack technologique - **Frontend** : HTML5, CSS3, JavaScript ES6+ - **Framework** : Electron 28.0.0 -- **Communication temps réel** : SignalR (@microsoft/signalr 9.0.6) -- **UI Components** : Choices.js pour les selects personnalisés +- **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 -├── renderer.js # Interface utilisateur et gestion des webviews -├── index.html # Structure HTML de l'application -├── styles-modern.css # Styles CSS modernes avec gradients -├── config.json # Configuration SignalR et paramètres +├── 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 des versions -│ ├── WORKFLOW_AGENT.md # Documentation du workflow complet -│ └── INTEGRATION_SIGNALR.md # Guide d'intégration SignalR -├── notes/ # Dossier de stockage des notes agents -└── package.json # Dépendances et métadonnées - +│ └── 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 : -- `agent-login` : Authentification via SignalR +- `login-agent` : Authentification via SignalR/WebSocket - `logout` / `quit-app` : Déconnexion et fermeture -- `get-terminals` : Liste des terminaux disponibles +- `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 SignalR sécurisée** : Support HTTPS/WSS +- **Connexion sécurisée** : Support HTTPS/WSS pour SignalR et WebSocket - **Pas de stockage de mots de passe** : Authentification directe serveur -- **Notes chiffrées** : Stockage local sécurisé par agent +- **Logging détaillé** : Tous les événements SignalR dans `~/.simpleconnect-ng/signalr.log` ## 📊 Versions -### Version actuelle : 1.2.15 +### Version actuelle : 1.4.1 Voir [changelog.md](docs/changelog.md) pour l'historique complet des versions. ### Dernières nouveautés -- Bouton "Quitter" avec fermeture complète de l'application + +#### 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 +- 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 ne se connecte pas** : +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 de la console (mode dev) + - 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 "Forcer la déconnexion" + - 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. **Webviews ne se chargent pas** : +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