Files
SimpleClient-releases/CLAUDE.md
Pierre Marx 72514cc578 feat: aligner event handler Socket.IO sur le contrat snake_case (#20)
- 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
2026-03-19 12:32:30 -04:00

54 lines
2.1 KiB
Markdown

# 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
```bash
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
```bash
bun test # 8 tests unitaires socketio-adapter
```
- `socketio-adapter.js` accepte 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](.claude/commands/dev.md) pour le guide complet.