- Ecouter call_event au lieu de ipbx_event - Lire event_code, queue_name, terminal en snake_case - handleCallPickedUp/handleCallHungUp utilisent event.queue_name - renderer.js lit data.queue_name - 3 tests unitaires ajoutés dans socketio-adapter.test.js
2.1 KiB
2.1 KiB
SimpleClient
Application desktop de télésecrétariat pour les postes RDVPREM.
Stack
- Electron 28 + Socket.IO (socket.io-client 4.8.1) + Choices.js 11.1.0
- HTML/CSS/JavaScript natif (pas de framework frontend)
Structure
├── main.js # Process principal — Socket.IO, IPC, fenêtres
├── socketio-adapter.js # Adaptateur Socket.IO (connect/logoff/disconnect)
├── renderer.js # Process renderer — UI, webviews
├── index.html # Structure HTML
├── styles-modern.css # Styles CSS
├── config.json # Config Socket.IO (serverUrl, serviceProvider)
└── notes/ # Stockage notes agents (notes_{agentId}.json)
Commandes
bun run dev # Mode dev avec DevTools
bun start # Production
bun run build # Build toutes plateformes
bun run build:linux # Build Linux (AppImage, .deb, .rpm)
bun run build:mac # Build macOS (.dmg, .app)
Tests
bun test # 8 tests unitaires socketio-adapter
socketio-adapter.jsaccepte un socket factory en 2e param (injection pour tests)- Fake socket avec EventEmitter minimal dans
socketio-adapter.test.js
Points d'attention
- Pas d'emojis dans l'UI — icônes SVG inline (compatibilité Linux)
- Sessions webview isolées : partition Electron unique par centre, auto-connexion via preload script
- Socket.IO reconnexion : illimitée (2s→10s backoff)
- IPC principal :
login-agent,get-terminal-list,server-status,switch-to-center,release-center - Protocole serveur : auth au handshake, events
login_ok/login_error/call_event/logout→logout_ok(champs snake_case :event_code,queue_name,terminal) - Terminaux : REST
GET /terminals?provider=RDVPREM(pas Socket.IO) - Logs :
~/.simpleconnect-ng/socketio.log - Notes : sauvegarde auto après 2s d'inactivité, 50 versions, sync localStorage + fichier
Workflow de développement
Voir .claude/commands/dev.md pour le guide complet.