modif doc

This commit is contained in:
Pierre Marx
2025-09-04 12:33:46 -04:00
parent 3f21bc0465
commit ee038cedd8

View File

@@ -14,6 +14,7 @@ Ce document décrit le parcours complet d'un agent utilisant SimpleConnect, depu
```
**Processus système** :
- Connexion automatique au serveur SignalR (configuré dans `config.json`)
- Vérification de la disponibilité du service
- Récupération de la liste des terminaux téléphoniques disponibles
@@ -25,8 +26,9 @@ Ce document décrit le parcours complet d'un agent utilisant SimpleConnect, depu
### 2.1 Interface de connexion
L'agent arrive sur l'écran de connexion avec :
- Champ email
- Champ mot de passe
- Champ code agent
- Champ mot de passe
- Sélecteur de terminal téléphonique (liste dynamique)
- Bouton de connexion
@@ -50,7 +52,7 @@ AgentLogin(email, password, terminal) → Serveur SignalR
password: "pass123"
},
{
code: "centre2",
code: "centre2",
applicationName: "https://pro.mondocteur.fr",
accessCode: "user_clinique",
password: "pass456"
@@ -63,6 +65,7 @@ AgentLogin(email, password, terminal) → Serveur SignalR
### 2.3 Post-connexion
**Actions automatiques après connexion réussie** :
1. Génération dynamique des onglets selon les centres assignés
2. Création des webviews pour chaque plateforme
3. Auto-connexion aux plateformes médicales (injection des credentials)
@@ -78,6 +81,7 @@ AgentLogin(email, password, terminal) → Serveur SignalR
### 3.1 État disponible
**L'agent est prêt à recevoir des appels** :
- Statut : indicateur vert "Disponible"
- Peut naviguer librement entre les onglets
- Peut consulter les plannings de manière proactive
@@ -102,12 +106,13 @@ AgentLogin(email, password, terminal) → Serveur SignalR
#### Actions système
**Notification immédiate** :
```javascript
// Alerte visuelle
showIncomingCallAlert({
centreName: "Centre Cardio Lyon",
patientInfo: "Marie LAMBERT - 0612345678",
motif: "Consultation urgente"
centreName: "Centre Cardio Lyon",
patientInfo: "Marie LAMBERT - 0612345678",
motif: "Consultation urgente",
});
// Son de notification
@@ -115,6 +120,7 @@ playNotificationSound();
```
**Auto-acceptation** :
- Timer de 3 secondes avant acceptation automatique
- Ou acceptation manuelle immédiate par l'agent
@@ -122,13 +128,13 @@ playNotificationSound();
```javascript
// Le système identifie le centre concerné
selectCenter('centre1');
selectCenter("centre1");
// Bascule sur le bon onglet/webview
switchToTab('Centre Cardio Lyon');
switchToTab("Centre Cardio Lyon");
// Mise à jour du statut
updateStatus('EN APPEL - Centre Cardio Lyon');
updateStatus("EN APPEL - Centre Cardio Lyon");
```
### 3.3 Pendant l'appel
@@ -136,11 +142,13 @@ updateStatus('EN APPEL - Centre Cardio Lyon');
**Actions possibles de l'agent** :
1. **Prise de RDV** :
- Navigation dans le planning actif
- Recherche de créneaux disponibles
- Validation du RDV directement dans la webview
2. **Prise de notes** :
```javascript
// Zone de notes rapides
quickNotes.value = "Patient souhaite mardi matin de préférence";
@@ -148,10 +156,11 @@ updateStatus('EN APPEL - Centre Cardio Lyon');
```
3. **Consultation documentation** :
```javascript
// Ouverture wiki interne (nouvelle fenêtre)
OpenDoc("http://wiki.interne/protocoles");
// Consultation infos patient (fenêtre séparée)
OpenDoc("http://crm.interne/patient/12345");
```
@@ -181,17 +190,17 @@ updateStatus('EN APPEL - Centre Cardio Lyon');
```javascript
// Mise à jour automatique
updateStatus('DISPONIBLE');
updateStatus("DISPONIBLE");
callStats.calls++;
callStats.appointments++; // Si RDV pris
// Sauvegarde dans l'historique
saveCallHistory({
timestamp: new Date().toISOString(),
duration: 180, // secondes
centre: "centre1",
status: "completed",
appointment: true
timestamp: new Date().toISOString(),
duration: 180, // secondes
centre: "centre1",
status: "completed",
appointment: true,
});
```
@@ -202,18 +211,19 @@ saveCallHistory({
```javascript
// L'agent peut gérer plusieurs centres simultanément
centres = [
{ id: 'centre1', nom: 'Centre Cardio Lyon', couleur: '#FF6B6B' },
{ id: 'centre2', nom: 'Clinique Saint-Jean', couleur: '#4ECDC4' },
{ id: 'centre3', nom: 'Cabinet Dr Martin', couleur: '#45B7D1' }
{ id: "centre1", nom: "Centre Cardio Lyon", couleur: "#FF6B6B" },
{ id: "centre2", nom: "Clinique Saint-Jean", couleur: "#4ECDC4" },
{ id: "centre3", nom: "Cabinet Dr Martin", couleur: "#45B7D1" },
];
// Navigation libre entre les onglets (hors appel)
selectCenter('centre2'); // Changement manuel
selectCenter("centre2"); // Changement manuel
```
### 4.2 Outils de productivité
**Statistiques temps réel** :
```javascript
{
calls: 15, // Appels traités aujourd'hui
@@ -224,12 +234,13 @@ selectCenter('centre2'); // Changement manuel
```
**Notes et historique** :
```javascript
// Notes rapides par appel
saveNotes({
content: "Patient à rappeler pour confirmation",
centre: "centre1",
timestamp: new Date()
content: "Patient à rappeler pour confirmation",
centre: "centre1",
timestamp: new Date(),
});
// Consultation historique
@@ -241,14 +252,16 @@ getCallHistory(); // 100 derniers appels
```javascript
// Documentation (DocXplore)
childClientDocXplore = new BrowserWindow({
x: 1920, y: 0, // Position configurée
title: "SimpleConnect / Wiki"
x: 1920,
y: 0, // Position configurée
title: "SimpleConnect / Wiki",
});
// Informations client
childClientDoc = new BrowserWindow({
x: 2880, y: 0, // Position configurée
title: "SimpleConnect / Infos client"
x: 2880,
y: 0, // Position configurée
title: "SimpleConnect / Infos client",
});
```
@@ -257,6 +270,7 @@ childClientDoc = new BrowserWindow({
### 5.1 Déclenchement
La déconnexion peut être initiée par :
- Clic sur le bouton "Déconnexion"
- Fermeture de l'application (croix de fenêtre)
- Timeout de session (si configuré)
@@ -265,31 +279,31 @@ La déconnexion peut être initiée par :
```javascript
// Dialogue de confirmation
if (confirm('Voulez-vous vraiment vous déconnecter ?')) {
// 1. Notification au serveur
AgentLogoff(agentId);
// 2. Nettoyage local
currentAgent = null;
currentCentres = [];
webviews = {};
// 3. Fermeture des fenêtres auxiliaires
if (childClientDocXplore) childClientDocXplore.close();
if (childClientDoc) childClientDoc.close();
// 4. Génération log final
writeDashboardLog({
"PrestaConnect": {
"Connexion": {
"Connecte": "Non",
"Date_Deconnexion": new Date().toISOString()
}
}
});
// 5. Retour page connexion ou fermeture
showLoginPage(); // ou app.quit()
if (confirm("Voulez-vous vraiment vous déconnecter ?")) {
// 1. Notification au serveur
AgentLogoff(agentId);
// 2. Nettoyage local
currentAgent = null;
currentCentres = [];
webviews = {};
// 3. Fermeture des fenêtres auxiliaires
if (childClientDocXplore) childClientDocXplore.close();
if (childClientDoc) childClientDoc.close();
// 4. Génération log final
writeDashboardLog({
PrestaConnect: {
Connexion: {
Connecte: "Non",
Date_Deconnexion: new Date().toISOString(),
},
},
});
// 5. Retour page connexion ou fermeture
showLoginPage(); // ou app.quit()
}
```
@@ -301,33 +315,33 @@ if (confirm('Voulez-vous vraiment vous déconnecter ?')) {
```json
{
"PrestaConnect": {
"Ouverture": {
"Ouvert": "Oui",
"Date": "2024-12-04T10:00:00.000Z",
"IP_Client": "192.168.1.50",
"IP_Serveur": "10.90.20.201:8002",
"Liste_Telephones": ["3001", "3002", "3003"]
"PrestaConnect": {
"Ouverture": {
"Ouvert": "Oui",
"Date": "2024-12-04T10:00:00.000Z",
"IP_Client": "192.168.1.50",
"IP_Serveur": "10.90.20.201:8002",
"Liste_Telephones": ["3001", "3002", "3003"]
},
"Connexion": {
"Connecte": "Oui",
"Date": "2024-12-04T10:01:00.000Z",
"Agent": "AGENT001",
"Telephone": "3001",
"Nom_Agent": "Marie DUPONT",
"Nombre_Files": 3,
"Files": [
{
"Nom_File": "centre1",
"URL_File": "https://pro.doctolib.fr"
},
"Connexion": {
"Connecte": "Oui",
"Date": "2024-12-04T10:01:00.000Z",
"Agent": "AGENT001",
"Telephone": "3001",
"Nom_Agent": "Marie DUPONT",
"Nombre_Files": 3,
"Files": [
{
"Nom_File": "centre1",
"URL_File": "https://pro.doctolib.fr"
},
{
"Nom_File": "centre2",
"URL_File": "https://pro.mondocteur.fr"
}
]
{
"Nom_File": "centre2",
"URL_File": "https://pro.mondocteur.fr"
}
]
}
}
}
```
@@ -360,7 +374,7 @@ ctiSimulator.startAutoSimulation(30); // Un appel toutes les 30 secondes
// Scénarios prédéfinis
ctiSimulator.simulateScenarios():
- "Appel urgent"
- "Patient régulier"
- "Patient régulier"
- "Nouveau patient"
- "Demande résultats"
```
@@ -425,13 +439,13 @@ ctiSimulator.simulateScenarios():
```javascript
// Identification par priorité haute
if (callData.priority === 'high') {
// Notification visuelle renforcée
showUrgentCallAlert(callData);
// Son différent
playUrgentSound();
// Auto-acceptation immédiate
acceptCall(callData);
if (callData.priority === "high") {
// Notification visuelle renforcée
showUrgentCallAlert(callData);
// Son différent
playUrgentSound();
// Auto-acceptation immédiate
acceptCall(callData);
}
```
@@ -440,13 +454,13 @@ if (callData.priority === 'high') {
```javascript
// Affichage historique patient
if (callData.lastVisit) {
showPatientHistory({
lastVisit: callData.lastVisit,
appointments: callData.appointmentHistory
});
showPatientHistory({
lastVisit: callData.lastVisit,
appointments: callData.appointmentHistory,
});
}
```
### 10.3 Multi-files simultanées
L'agent peut recevoir des appels de différentes files et le système bascule automatiquement vers la bonne plateforme à chaque appel, permettant une gestion fluide multi-centres.
L'agent peut recevoir des appels de différentes files et le système bascule automatiquement vers la bonne plateforme à chaque appel, permettant une gestion fluide multi-centres.