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
This commit is contained in:
242
CLAUDE.md
242
CLAUDE.md
@@ -1,122 +1,162 @@
|
||||
# Instructions pour Claude - Workflow de développement
|
||||
# CLAUDE.md
|
||||
|
||||
## 📋 Processus de finalisation des modifications
|
||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||
|
||||
Lorsqu'une fonctionnalité ou correction est terminée, suivre systématiquement ce workflow :
|
||||
## Commands
|
||||
|
||||
### 1. 📝 Mettre à jour le changelog
|
||||
|
||||
**Fichier** : `docs/changelog.md`
|
||||
|
||||
- Ajouter une nouvelle section avec le numéro de version suivant
|
||||
- Format de date : `AAAA-MM-JJ`
|
||||
- Structurer les changements par catégories :
|
||||
- **Ajouté** : Nouvelles fonctionnalités
|
||||
- **Modifié** : Changements aux fonctionnalités existantes
|
||||
- **Corrigé** : Corrections de bugs
|
||||
- **Supprimé** : Fonctionnalités retirées
|
||||
- **Technique** : Détails d'implémentation
|
||||
- **Documentation** : Mises à jour de docs
|
||||
|
||||
Exemple :
|
||||
```markdown
|
||||
## [1.2.16] - 2025-09-05
|
||||
|
||||
### Ajouté
|
||||
- **Titre de la fonctionnalité** : Description courte
|
||||
- Détail spécifique avec bullet points
|
||||
- Autre détail important
|
||||
```
|
||||
|
||||
### 2. 🔢 Bump de version
|
||||
|
||||
**Fichier** : `package.json`
|
||||
|
||||
Mettre à jour le champ `"version"` selon la convention SemVer :
|
||||
|
||||
- **PATCH** (x.x.+1) : Corrections de bugs, petits ajustements
|
||||
- **MINOR** (x.+1.0) : Nouvelles fonctionnalités compatibles
|
||||
- **MAJOR** (+1.0.0) : Changements majeurs non rétrocompatibles
|
||||
|
||||
**Méthodes** :
|
||||
|
||||
Option 1 - Manuellement :
|
||||
```json
|
||||
"version": "1.2.16",
|
||||
```
|
||||
|
||||
Option 2 - Avec npm (si le repo est clean) :
|
||||
### Development
|
||||
```bash
|
||||
npm version patch # ou minor/major
|
||||
npm version 1.2.16 # version spécifique
|
||||
npm start # Lance l'application en production
|
||||
npm run dev # Mode développement avec DevTools (NODE_ENV=development)
|
||||
```
|
||||
|
||||
### 3. 📦 Commit Git
|
||||
|
||||
Faire un commit structuré avec tous les changements :
|
||||
|
||||
### Build & Distribution
|
||||
```bash
|
||||
git add -A
|
||||
git commit -m "type: Description courte
|
||||
|
||||
- Détail important 1
|
||||
- Détail important 2
|
||||
- Bump version X.X.X"
|
||||
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
|
||||
```
|
||||
|
||||
**Types de commit** :
|
||||
- `feat:` Nouvelle fonctionnalité
|
||||
- `fix:` Correction de bug
|
||||
- `refactor:` Refactoring de code
|
||||
- `docs:` Documentation
|
||||
- `style:` Formatage, style
|
||||
- `chore:` Maintenance
|
||||
## Architecture
|
||||
|
||||
### 4. 🏗️ Build (optionnel)
|
||||
### 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.)
|
||||
|
||||
Si nécessaire, créer les builds de distribution :
|
||||
### Structure des fichiers principaux
|
||||
|
||||
```bash
|
||||
# Linux
|
||||
npx electron-builder --linux --x64
|
||||
|
||||
# Windows
|
||||
npx electron-builder --win
|
||||
|
||||
# macOS
|
||||
npx electron-builder --mac
|
||||
```
|
||||
/
|
||||
├── 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)
|
||||
```
|
||||
|
||||
## 📌 Exemple complet
|
||||
### Communication inter-process (IPC)
|
||||
|
||||
```bash
|
||||
# 1. Éditer docs/changelog.md avec la nouvelle version
|
||||
# 2. Éditer package.json pour bumper la version
|
||||
# 3. Commit
|
||||
git add -A
|
||||
git commit -m "feat: Ajout système de logging SignalR et corrections UI
|
||||
Le système utilise IPC pour la communication entre le process principal et le renderer :
|
||||
|
||||
- Système de logging complet dans ~/.simpleconnect-ng/signalr.log
|
||||
- Remplacement des emojis par icônes SVG
|
||||
- Suppression du menu Electron
|
||||
- Bump version 1.2.16"
|
||||
**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
|
||||
|
||||
# 4. Build si nécessaire
|
||||
npx electron-builder --linux --x64
|
||||
```
|
||||
### Intégration SignalR
|
||||
|
||||
## ⚠️ Points d'attention
|
||||
**Hub SignalR** : `/planningHub`
|
||||
|
||||
1. **Toujours** mettre à jour le changelog AVANT de bumper la version
|
||||
2. **Vérifier** que la version dans le changelog correspond à celle du package.json
|
||||
3. **Inclure** "Bump version X.X.X" dans le message de commit
|
||||
4. **Ne pas** référencer Claude ou Anthropic dans les commits
|
||||
5. **Utiliser** la date du jour (vérifier avec `date` si nécessaire)
|
||||
**Méthodes invoquées** :
|
||||
- `GetTerminalListByServiceProvider` : Liste des terminaux disponibles
|
||||
- `AgentLogin` : Connexion agent (email, password, terminal)
|
||||
- `AgentLogoff` : Déconnexion agent
|
||||
|
||||
## 🎯 Objectif
|
||||
**É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`
|
||||
|
||||
Ce workflow garantit :
|
||||
- Une traçabilité complète des changements
|
||||
- Des versions cohérentes entre documentation et code
|
||||
- Un historique Git propre et informatif
|
||||
- Une facilité de génération des releases
|
||||
### 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
|
||||
Reference in New Issue
Block a user