From 630f1fa8c3d28b0f507bc69ae0e3adc7238fa08a Mon Sep 17 00:00:00 2001 From: Pierre Marx Date: Thu, 12 Mar 2026 19:48:04 -0400 Subject: [PATCH] =?UTF-8?q?Condenser=20CLAUDE.md=20:=20149=E2=86=9247=20li?= =?UTF-8?q?gnes,=20npm=E2=86=92bun?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Supprimer les sections documentation (fonctionnalités, IPC détaillé, webviews, workflow résumé) — garder uniquement le contexte essentiel. --- CLAUDE.md | 172 +++++++++++------------------------------------------- 1 file changed, 33 insertions(+), 139 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index df3e648..0350374 100644 --- a/CLAUDE.md +++ b/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 -npm start # Lance l'application en production -npm run dev # Mode développement avec DevTools (NODE_ENV=development) +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) ``` -### 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 -### 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 +- **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 +- **SignalR reconnexion** : [0, 2000, 5000, 10000]ms +- **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 -- **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) +## Workflow de développement -### 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 \ No newline at end of file +Voir [.claude/commands/dev.md](.claude/commands/dev.md) pour le guide complet.