Condenser CLAUDE.md : 149→47 lignes, npm→bun
Supprimer les sections documentation (fonctionnalités, IPC détaillé, webviews, workflow résumé) — garder uniquement le contexte essentiel.
This commit is contained in:
172
CLAUDE.md
172
CLAUDE.md
@@ -1,149 +1,43 @@
|
|||||||
# CLAUDE.md
|
# SimpleClient
|
||||||
|
|
||||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
Application desktop de télésecrétariat pour les postes RDVPREM.
|
||||||
|
|
||||||
## Commands
|
## Stack
|
||||||
|
- **Electron 28** + **SignalR** (@microsoft/signalr 9.0.6) + **Choices.js** 11.1.0
|
||||||
|
- HTML/CSS/JavaScript natif (pas de framework frontend)
|
||||||
|
|
||||||
|
## Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
├── main.js # Process principal — SignalR, IPC, fenêtres
|
||||||
|
├── renderer.js # Process renderer — UI, webviews
|
||||||
|
├── index.html # Structure HTML
|
||||||
|
├── styles-modern.css # Styles CSS
|
||||||
|
├── config.json # Config SignalR (host, port, serviceProvider)
|
||||||
|
└── notes/ # Stockage notes agents (notes_{agentId}.json)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Commandes
|
||||||
|
|
||||||
### Development
|
|
||||||
```bash
|
```bash
|
||||||
npm start # Lance l'application en production
|
bun run dev # Mode dev avec DevTools
|
||||||
npm run dev # Mode développement avec DevTools (NODE_ENV=development)
|
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)
|
||||||
```
|
```
|
||||||
|
|
||||||
### Build & Distribution
|
|
||||||
```bash
|
|
||||||
npm run build # Build pour toutes les plateformes
|
|
||||||
npm run build:win # Build pour Windows (.exe, .nsis)
|
|
||||||
npm run build:mac # Build pour macOS (.dmg, .app)
|
|
||||||
npm run build:linux # Build pour Linux (AppImage, .deb, .rpm)
|
|
||||||
npm run build:linux-x64 # Build Linux spécifique x64
|
|
||||||
npm run build:linux-arm64 # Build Linux spécifique ARM64
|
|
||||||
```
|
|
||||||
|
|
||||||
## Architecture
|
|
||||||
|
|
||||||
### Stack technologique
|
|
||||||
- **Electron 28.0.0** : Framework principal pour l'application desktop
|
|
||||||
- **SignalR (@microsoft/signalr 9.0.6)** : Communication temps réel avec le serveur CTI/IPBX
|
|
||||||
- **Choices.js 11.1.0** : Interface de sélection améliorée pour les terminaux téléphoniques
|
|
||||||
- **HTML/CSS/JavaScript natif** : Pas de framework frontend (React, Vue, etc.)
|
|
||||||
|
|
||||||
### Structure des fichiers principaux
|
|
||||||
|
|
||||||
```
|
|
||||||
/
|
|
||||||
├── main.js # Process principal Electron - gère SignalR, IPC et fenêtres
|
|
||||||
├── renderer.js # Process renderer - UI et gestion des webviews
|
|
||||||
├── index.html # Structure HTML de l'application
|
|
||||||
├── styles-modern.css # Styles CSS avec gradients et animations
|
|
||||||
├── config.json # Configuration SignalR uniquement
|
|
||||||
└── notes/ # Stockage des notes agents (format: notes_{agentId}.json)
|
|
||||||
```
|
|
||||||
|
|
||||||
### Communication inter-process (IPC)
|
|
||||||
|
|
||||||
Le système utilise IPC pour la communication entre le process principal et le renderer :
|
|
||||||
|
|
||||||
**Canaux principaux** :
|
|
||||||
- `agent-login` : Authentification via SignalR (AgentLogin)
|
|
||||||
- `logout` / `quit-app` : Déconnexion et fermeture
|
|
||||||
- `get-terminals` : Récupération de la liste des terminaux
|
|
||||||
- `save-notes` / `get-notes` : Gestion des notes avec persistance fichier
|
|
||||||
- `signalr-status` : État de la connexion SignalR
|
|
||||||
- `switch-to-center` / `release-center` : Événements IPBX pour la gestion des appels
|
|
||||||
|
|
||||||
### Intégration SignalR
|
|
||||||
|
|
||||||
**Hub SignalR** : `/planningHub`
|
|
||||||
|
|
||||||
**Méthodes invoquées** :
|
|
||||||
- `GetTerminalListByServiceProvider` : Liste des terminaux disponibles
|
|
||||||
- `AgentLogin` : Connexion agent (email, password, terminal)
|
|
||||||
- `AgentLogoff` : Déconnexion agent
|
|
||||||
|
|
||||||
**Événements écoutés** :
|
|
||||||
- `IpbxEvent` : Événements téléphoniques (codes 1=appel entrant, 2=fin d'appel)
|
|
||||||
- Plus de 13 types d'événements potentiels loggés dans `~/.simpleconnect-ng/signalr.log`
|
|
||||||
|
|
||||||
### Gestion des webviews
|
|
||||||
|
|
||||||
Chaque centre médical a sa propre webview Electron avec :
|
|
||||||
- **Session isolée** : Partition unique par centre pour cookies/auth séparés
|
|
||||||
- **Auto-connexion** : Injection des credentials dans les plateformes (Doctolib, MonDocteur, etc.)
|
|
||||||
- **Preload script** : Injection JavaScript pour automatiser la connexion
|
|
||||||
- **UserAgent personnalisé** : Identification comme navigateur standard
|
|
||||||
|
|
||||||
### Système de logging
|
|
||||||
|
|
||||||
**SignalR logs** : `~/.simpleconnect-ng/signalr.log`
|
|
||||||
- Tous les événements SignalR en JSON structuré
|
|
||||||
- Timestamp, arguments et contexte agent
|
|
||||||
|
|
||||||
**Notes agents** : `/notes/notes_{agentId}.json`
|
|
||||||
- Sauvegarde automatique après 2 secondes d'inactivité
|
|
||||||
- Historique des 50 dernières versions
|
|
||||||
- Synchronisation localStorage + fichier
|
|
||||||
|
|
||||||
## Workflow de développement
|
|
||||||
|
|
||||||
Pour le workflow complet de développement et de release, consulter [.claude/commands/dev.md](.claude/commands/dev.md).
|
|
||||||
|
|
||||||
**Résumé rapide** :
|
|
||||||
1. Créer une branche feature
|
|
||||||
2. Développer en petits commits atomiques (dev → test → commit → repeat)
|
|
||||||
3. Préparer la release (changelog + version bump)
|
|
||||||
4. Merger dans main avec `--no-ff`
|
|
||||||
5. Build et organisation des artefacts
|
|
||||||
6. Documentation et déploiement
|
|
||||||
|
|
||||||
**Points de vigilance** :
|
|
||||||
- Ne JAMAIS committer les binaires dans Git (`dist/` est dans `.gitignore`)
|
|
||||||
- Toujours utiliser `--no-ff` pour les merges (historique tracé)
|
|
||||||
- Tester avant de committer (chaque commit = code fonctionnel)
|
|
||||||
- Suivre Semantic Versioning (semver.org)
|
|
||||||
- Conventional Commits pour les messages (conventionalcommits.org)
|
|
||||||
|
|
||||||
## Points d'attention
|
## Points d'attention
|
||||||
|
|
||||||
### Sécurité
|
- **Pas d'emojis** dans l'UI — icônes SVG inline (compatibilité Linux)
|
||||||
- **Jamais de credentials en dur** : Tout passe par SignalR
|
- **Sessions webview isolées** : partition Electron unique par centre, auto-connexion via preload script
|
||||||
- **Sessions isolées** : Chaque centre a sa partition Electron
|
- **SignalR reconnexion** : [0, 2000, 5000, 10000]ms
|
||||||
- **Logs sécurisés** : Pas de mots de passe dans les logs
|
- **IPC principal** : `agent-login`, `get-terminals`, `signalr-status`, `switch-to-center`, `release-center`
|
||||||
|
- **Hub SignalR** : `/planningHub` — méthodes `AgentLogin`, `AgentLogoff`, `GetTerminalListByServiceProvider`
|
||||||
|
- **Événement `IpbxEvent`** : codes 1=appel entrant, 2=fin d'appel
|
||||||
|
- **Logs SignalR** : `~/.simpleconnect-ng/signalr.log` (JSON structuré)
|
||||||
|
- **Notes** : sauvegarde auto après 2s d'inactivité, 50 versions, sync localStorage + fichier
|
||||||
|
|
||||||
### UI/UX
|
## Workflow de développement
|
||||||
- **Pas d'emojis** : Utiliser des icônes SVG inline pour compatibilité Linux
|
|
||||||
- **Animations fluides** : Transitions CSS avec cubic-bezier
|
|
||||||
- **Responsive** : Panneau de notes redimensionnable (280-600px)
|
|
||||||
|
|
||||||
### SignalR
|
Voir [.claude/commands/dev.md](.claude/commands/dev.md) pour le guide complet.
|
||||||
- **Reconnexion automatique** : [0, 2000, 5000, 10000]ms
|
|
||||||
- **Filtrage par terminal** : Ne recevoir que les événements du terminal connecté
|
|
||||||
- **Gestion des erreurs** : Try/catch sur toutes les invocations
|
|
||||||
|
|
||||||
### Build cross-platform
|
|
||||||
- **Windows** : NSIS installer avec shortcuts
|
|
||||||
- **macOS** : DMG avec icône personnalisée
|
|
||||||
- **Linux** : AppImage, .deb, .rpm (x64 et arm64)
|
|
||||||
|
|
||||||
## Fonctionnalités clés
|
|
||||||
|
|
||||||
### Authentification
|
|
||||||
- Connexion centralisée via SignalR
|
|
||||||
- Option "Forcer la déconnexion" pour débloquer sessions
|
|
||||||
- Auto-focus sur le champ code d'accès
|
|
||||||
|
|
||||||
### Gestion des appels
|
|
||||||
- Basculement automatique vers le bon centre (IpbxEvent code 1)
|
|
||||||
- Libération automatique après raccrochage (IpbxEvent code 2)
|
|
||||||
- Notifications visuelles et sonores
|
|
||||||
|
|
||||||
### Interface
|
|
||||||
- Header unifié avec onglets (fusion pour gagner de l'espace)
|
|
||||||
- Panneau de notes latéral avec sauvegarde automatique
|
|
||||||
- Pas de barre de menu Electron (autoHideMenuBar: true)
|
|
||||||
- Scrollbars masquées mais fonctionnelles
|
|
||||||
|
|
||||||
### Persistance
|
|
||||||
- Notes sauvegardées localement et sur serveur
|
|
||||||
- Préférences utilisateur dans localStorage
|
|
||||||
- Historique des 50 dernières versions de notes
|
|
||||||
|
|||||||
Reference in New Issue
Block a user