Files
SimpleClient-releases/CLAUDE.md
Pierre Marx 58172f6895 docs: Refonte complète du fichier CLAUDE.md pour guider les futures instances
- Structure complète avec commandes, architecture et workflow
- Documentation détaillée de l'intégration SignalR et IPC
- Instructions pour le système de logging et les webviews
- Points d'attention pour sécurité, UI/UX et build cross-platform
- Ajout d'un rappel important de ne pas mentionner Claude/Anthropic dans les commits
2025-09-05 09:58:35 -04:00

162 lines
5.7 KiB
Markdown

# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Commands
### Development
```bash
npm start # Lance l'application en production
npm run dev # Mode développement avec DevTools (NODE_ENV=development)
```
### 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
### Finalisation des modifications
Suivre systématiquement ce workflow :
1. **Mettre à jour le changelog** (`docs/changelog.md`)
- Format date : `AAAA-MM-JJ`
- Catégories : Ajouté, Modifié, Corrigé, Supprimé, Technique, Documentation
2. **Bumper la version** (`package.json`)
- PATCH (x.x.+1) : Corrections, petits ajustements
- MINOR (x.+1.0) : Nouvelles fonctionnalités compatibles
- MAJOR (+1.0.0) : Changements majeurs
3. **Commit structuré**
```bash
git add -A
git commit -m "type: Description courte
- Détail 1
- Détail 2
- Bump version X.X.X"
```
**Important** : Ne jamais mentionner Claude, Anthropic ou des adresses emails relatives à ces entités dans les commits
4. **Build si nécessaire**
```bash
npx electron-builder --linux --x64
```
## Points d'attention
### Sécurité
- **Jamais de credentials en dur** : Tout passe par SignalR
- **Sessions isolées** : Chaque centre a sa partition Electron
- **Logs sécurisés** : Pas de mots de passe dans les logs
### UI/UX
- **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
- **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