modif doc
This commit is contained in:
@@ -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,7 +26,8 @@ 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 code agent
|
||||
- Champ mot de passe
|
||||
- Sélecteur de terminal téléphonique (liste dynamique)
|
||||
- Bouton de connexion
|
||||
@@ -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,6 +156,7 @@ updateStatus('EN APPEL - Centre Cardio Lyon');
|
||||
```
|
||||
|
||||
3. **Consultation documentation** :
|
||||
|
||||
```javascript
|
||||
// Ouverture wiki interne (nouvelle fenêtre)
|
||||
OpenDoc("http://wiki.interne/protocoles");
|
||||
@@ -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);
|
||||
if (confirm("Voulez-vous vraiment vous déconnecter ?")) {
|
||||
// 1. Notification au serveur
|
||||
AgentLogoff(agentId);
|
||||
|
||||
// 2. Nettoyage local
|
||||
currentAgent = null;
|
||||
currentCentres = [];
|
||||
webviews = {};
|
||||
// 2. Nettoyage local
|
||||
currentAgent = null;
|
||||
currentCentres = [];
|
||||
webviews = {};
|
||||
|
||||
// 3. Fermeture des fenêtres auxiliaires
|
||||
if (childClientDocXplore) childClientDocXplore.close();
|
||||
if (childClientDoc) childClientDoc.close();
|
||||
// 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()
|
||||
}
|
||||
}
|
||||
});
|
||||
// 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()
|
||||
// 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"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
@@ -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,10 +454,10 @@ 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,
|
||||
});
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user