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