# 🎯 mySupport

## Plateforme de Service Client Intelligent, Multilingue et Multi-Entreprises

![Version](https://img.shields.io/badge/version-1.0.0-blue.svg)
![PHP](https://img.shields.io/badge/PHP-8.0+-purple.svg)
![MySQL](https://img.shields.io/badge/MySQL-8.0+-orange.svg)
![License](https://img.shields.io/badge/license-Proprietary-red.svg)

---

## 📋 Table des matières

1. [Présentation](#-présentation)
2. [Fonctionnalités](#-fonctionnalités-principales)
3. [Architecture](#-architecture-technique)
4. [Installation](#-installation)
5. [Configuration](#-configuration)
6. [Guide d'utilisation](#-guide-dutilisation)
7. [API Reference](#-api-reference)
8. [Intégrations](#-intégrations)
9. [Sécurité](#-sécurité)
10. [Déploiement](#-déploiement)

---

## 🌟 Présentation

### Vision

**mySupport** est une plateforme de service client nouvelle génération conçue pour l'Afrique de l'Ouest. Elle remplace ou complète efficacement les call centers traditionnels en s'appuyant sur :

- 🤖 **Intelligence Artificielle Conversationnelle** (GPT-4)
- 🎙️ **Support Vocal Multilingue** (Audio-First)
- 📱 **Communication Multicanale** (Web, WhatsApp, Voix)
- 📊 **Analyse Prédictive et Alertes**

### Proposition de valeur

| Problème | Solution mySupport |
|----------|-------------------|
| Coûts élevés des call centers | Automatisation IA (80% des demandes) |
| Indisponibilité hors horaires | Service 24/7 automatisé |
| Barrière de la langue | Support en Français, Bambara, Peulh, Soninké |
| Exclusion des non-alphabétisés | Interface vocale native |
| Absence de données décisionnelles | Tableaux de bord et CX Index |

### Modèle SaaS Multi-Tenants

```
┌─────────────────────────────────────────────────────────────┐
│                    PLATEFORME mySupport                      │
├─────────────────────────────────────────────────────────────┤
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐          │
│  │ Entreprise 1│  │ Entreprise 2│  │ Entreprise N│          │
│  │  (Orange)   │  │   (EDM)     │  │   (DGCC)    │          │
│  └─────────────┘  └─────────────┘  └─────────────┘          │
│         │               │               │                    │
│         └───────────────┴───────────────┘                    │
│                         │                                    │
│              ┌──────────┴──────────┐                        │
│              │   DONNÉES ISOLÉES   │                        │
│              │   PAR ENTREPRISE    │                        │
│              └─────────────────────┘                        │
└─────────────────────────────────────────────────────────────┘
```

---

## ⚡ Fonctionnalités principales

### 1. 💬 Service Client Multicanal

#### Widget Web Intégrable
- Installation en **une ligne de code**
- Design personnalisable (couleurs, logo, messages)
- Responsive mobile-first
- Support des fichiers et images

```html
<!-- Intégration simple -->
<script src="https://votre-domaine.com/widget/embed.js" 
        data-token="VOTRE_TOKEN"></script>
```

#### WhatsApp Business
- Réception des messages WhatsApp
- Réponses automatiques IA
- Messages vocaux transcrits
- Images et fichiers supportés

#### Appels Vocaux (WebRTC + Twilio)
- Appels depuis le navigateur
- Voicebot IA intelligent
- Transcription temps réel
- Escalade vers agent humain

### 2. 🤖 Intelligence Artificielle

#### Chatbot Conversationnel
- Basé sur **GPT-4**
- Compréhension du langage naturel
- Contexte de conversation maintenu
- Apprentissage sur la FAQ de l'entreprise

#### Voicebot Intelligent
- Synthèse vocale naturelle
- Reconnaissance vocale multilingue
- Détection d'intention
- Transfert automatique si nécessaire

#### Fonctionnalités IA
| Fonction | Description |
|----------|-------------|
| Auto-réponse | Répond automatiquement aux questions fréquentes |
| Catégorisation | Classe les demandes par type |
| Sentiment | Analyse le ton du client |
| Escalade | Transfère aux agents si complexe |
| Suggestion | Propose des réponses aux agents |

### 3. 🎙️ Support Multilingue (Audio-First)

#### Langues supportées
- 🇫🇷 **Français** (complet)
- 🇲🇱 **Bambara** (prioritaire)
- 🇲🇱 **Peulh (Fulfuldé)**
- 🇲🇱 **Soninké**

#### Approche Audio-First
```
Client parle → Transcription → Compréhension IA → Réponse → Synthèse vocale
```

Accessible aux personnes peu alphabétisées grâce à l'interface vocale.

### 4. 🚨 Système de Signalements/Dénonciations

#### Types de signalements
- 📝 Texte avec description
- 🎤 Audio (enregistrement direct)
- 📷 Photo (capture ou upload)
- 🎬 Vidéo (preuve visuelle)

#### Workflow
```
Signalement → Validation → Enquête → Résolution → Notification
```

#### Anonymat garanti
- Identité protégée
- Code de suivi unique
- Communication sécurisée

### 5. 📊 Tableaux de Bord & Analytics

#### Indicateurs clés (KPIs)
- Volume de conversations
- Temps de réponse moyen
- Taux de résolution
- Satisfaction client (CSAT)
- CX Index global

#### CX Index (Indice de Satisfaction)
Calculé automatiquement basé sur :
- Temps de réponse
- Taux de résolution
- Satisfaction déclarée
- Récurrence des plaintes

#### Alertes intelligentes
- Hausse anormale de plaintes
- Baisse de satisfaction
- Sujet sensible récurrent
- Risque de crise détecté

---

## 🏗️ Architecture technique

### Stack technologique

| Composant | Technologie |
|-----------|-------------|
| **Backend** | PHP 8.0+ (MVC custom) |
| **Base de données** | MySQL 8.0+ |
| **Frontend** | HTML5, TailwindCSS, JavaScript |
| **IA** | OpenAI GPT-4 API |
| **Voix** | Twilio Voice + WebRTC |
| **WhatsApp** | Twilio WhatsApp API |
| **Serveur** | Apache/Nginx |

### Structure du projet

```
mySupport/
├── app/
│   ├── Controllers/          # Contrôleurs MVC
│   │   ├── AdminController.php
│   │   ├── AgentController.php
│   │   ├── AuthController.php
│   │   ├── ChatApiController.php
│   │   ├── DenonciationController.php
│   │   ├── SuperAdminController.php
│   │   ├── TwilioController.php
│   │   └── WidgetController.php
│   ├── Models/               # Modèles de données
│   │   ├── Entreprise.php
│   │   ├── User.php
│   │   ├── Client.php
│   │   ├── Conversation.php
│   │   ├── Message.php
│   │   └── Denonciation.php
│   ├── Views/                # Vues (templates)
│   │   ├── admin/
│   │   ├── agent/
│   │   ├── auth/
│   │   ├── super_admin/
│   │   ├── widget/
│   │   └── layouts/
│   └── Services/             # Services métier
│       ├── AIVoiceAgent.php
│       ├── TwilioVoiceService.php
│       └── TwilioClientService.php
├── config/
│   ├── app.php               # Configuration générale
│   ├── database.php          # Configuration BDD
│   └── twilio.php            # Configuration Twilio
├── core/
│   ├── Controller.php        # Contrôleur de base
│   ├── Database.php          # Connexion BDD
│   ├── Model.php             # Modèle de base
│   └── Router.php            # Routeur
├── database/
│   ├── schema.sql            # Structure BDD
│   └── migrations/           # Migrations
├── public/
│   ├── index.php             # Point d'entrée
│   ├── .htaccess             # Réécriture URL
│   ├── assets/               # CSS, JS, Images
│   └── uploads/              # Fichiers uploadés
└── uploads/                  # Stockage fichiers
```

### Schéma de la base de données

```
┌──────────────────┐
│   entreprises    │
├──────────────────┤
│ id               │──┐
│ nom              │  │
│ widget_token     │  │
│ ia_config        │  │
│ canaux_actifs    │  │
└──────────────────┘  │
         │            │
         │ 1:N        │ 1:N
         ▼            │
┌──────────────────┐  │    ┌──────────────────┐
│     clients      │  │    │      users       │
├──────────────────┤  │    ├──────────────────┤
│ id               │  │    │ id               │
│ entreprise_id    │◄─┤    │ entreprise_id    │◄─┘
│ nom              │  │    │ role             │
│ telephone        │  │    │ email            │
│ whatsapp_id      │  │    └──────────────────┘
└──────────────────┘  │             │
         │            │             │
         │ 1:N        │             │
         ▼            │             │
┌──────────────────┐  │             │
│  conversations   │  │             │
├──────────────────┤  │             │
│ id               │  │             │
│ entreprise_id    │◄─┘             │
│ client_id        │◄───────────────┘
│ agent_id         │
│ canal            │
│ statut           │
└──────────────────┘
         │
         │ 1:N
         ▼
┌──────────────────┐
│    messages      │
├──────────────────┤
│ conversation_id  │
│ sender_type      │
│ contenu          │
│ type_message     │
└──────────────────┘
```

---

## 📦 Installation

### Prérequis

- PHP 8.0 ou supérieur
- MySQL 8.0 ou supérieur
- Apache avec mod_rewrite ou Nginx
- Composer (optionnel)
- Compte Twilio (pour voix/WhatsApp)
- Clé API OpenAI (pour l'IA)

### Installation locale (MAMP/XAMPP)

```bash
# 1. Cloner le projet
git clone https://github.com/votre-repo/mySupport.git
cd mySupport

# 2. Créer la base de données
mysql -u root -p < database/schema.sql

# 3. Configurer la connexion BDD
cp config/database.example.php config/database.php
# Éditer config/database.php avec vos identifiants

# 4. Configurer l'application
cp config/app.example.php config/app.php
# Éditer config/app.php avec votre URL de base

# 5. Donner les permissions
chmod -R 755 uploads/
chmod -R 755 public/uploads/

# 6. Accéder à l'application
# http://localhost:8888/mySupport/public/
```

### Installation serveur (Production)

```bash
# 1. Uploader les fichiers via FTP/SSH

# 2. Configurer le virtual host Apache
<VirtualHost *:80>
    ServerName support.votre-domaine.com
    DocumentRoot /var/www/mySupport/public
    
    <Directory /var/www/mySupport/public>
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

# 3. Activer mod_rewrite
a2enmod rewrite
systemctl restart apache2

# 4. Configurer SSL (recommandé)
certbot --apache -d support.votre-domaine.com
```

---

## ⚙️ Configuration

### Configuration générale (`config/app.php`)

```php
<?php
// URL de base
define('BASE_URL', 'https://support.votre-domaine.com');
define('APP_NAME', 'mySupport');

// Session
define('SESSION_NAME', 'mysupport_session');
define('SESSION_LIFETIME', 3600 * 24); // 24 heures

// Langues
define('SUPPORTED_LANGUAGES', ['fr', 'bm', 'ff', 'snk']);
define('DEFAULT_LANGUAGE', 'fr');
```

### Configuration base de données (`config/database.php`)

```php
<?php
define('DB_HOST', 'localhost');
define('DB_NAME', 'mysupport_db');
define('DB_USER', 'votre_utilisateur');
define('DB_PASS', 'votre_mot_de_passe');
```

### Configuration OpenAI (`config/app.php`)

```php
<?php
// Ajouter dans config/app.php
define('OPENAI_API_KEY', 'sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
```

### Configuration Twilio (`config/twilio.php`)

```php
<?php
// Identifiants Twilio
define('TWILIO_ACCOUNT_SID', 'ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
define('TWILIO_AUTH_TOKEN', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
define('TWILIO_PHONE_NUMBER', '+1234567890');

// WebRTC
define('TWILIO_API_KEY_SID', 'SKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
define('TWILIO_API_KEY_SECRET', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
define('TWILIO_TWIML_APP_SID', 'APxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');

// Paramètres vocaux
define('TWILIO_DEFAULT_LANGUAGE', 'fr-FR');
define('TWILIO_DEFAULT_VOICE', 'alice');
```

---

## 📖 Guide d'utilisation

### Rôles utilisateurs

#### 🔐 Super Administrateur
Gestion globale de la plateforme :
- Créer/gérer les entreprises
- Configurer les abonnements
- Voir les statistiques globales
- Gérer les langues et modules

#### 🏢 Administrateur Entreprise
Gestion de son entreprise :
- Configurer le widget
- Gérer les agents
- Voir ses statistiques
- Configurer la FAQ et l'IA

#### 👨‍💻 Agent
Traitement des conversations :
- Voir les conversations assignées
- Répondre aux clients
- Utiliser les suggestions IA
- Transférer si nécessaire

### Configuration du Widget

1. **Accéder à l'admin** → Paramètres Widget
2. **Personnaliser** :
   - Couleur primaire
   - Message de bienvenue
   - Avatar/Logo
3. **Copier le code** d'intégration
4. **Coller** sur votre site web

```html
<script 
  src="https://support.domaine.com/widget/embed.js" 
  data-token="abc123xyz"
  data-position="bottom-right">
</script>
```

### Configuration de l'IA

1. **Accéder à l'admin** → Configuration IA
2. **Activer** le mode IA
3. **Configurer** :
   - Prompt système personnalisé
   - Niveau de confiance minimum
   - Langue par défaut
4. **Ajouter** des FAQ pour améliorer les réponses

### Gestion des signalements

1. Les clients soumettent via le widget
2. Les admins voient dans **Signalements**
3. Workflow : Nouveau → En cours → Résolu
4. Communication anonyme avec le signaleur

---

## 🔌 API Reference

### Authentification

Toutes les requêtes API nécessitent un token :
- **Widget** : `?token=WIDGET_TOKEN`
- **API** : `?api_key=API_KEY`

### Endpoints principaux

#### Chat API

```http
POST /api/chat
Content-Type: application/json

{
  "token": "widget_token",
  "message": "Bonjour, je cherche...",
  "session_id": "optional_session_id"
}
```

**Réponse :**
```json
{
  "success": true,
  "response": "Bonjour ! Comment puis-je vous aider ?",
  "conversation_id": 123,
  "session_id": "sess_abc123"
}
```

#### Signalement

```http
POST /api/denonciation/submit
Content-Type: multipart/form-data

token: widget_token
type: texte|audio|photo|video
titre: Titre du signalement
description: Description détaillée
fichier: [binary]
```

#### Twilio Webhooks

| Endpoint | Description |
|----------|-------------|
| `POST /api/twilio/voice` | Appel entrant |
| `POST /api/twilio/gather` | Input utilisateur |
| `POST /api/twilio/webrtc-voice` | Appel WebRTC |
| `GET /api/twilio/token` | Token WebRTC |

---

## 🔗 Intégrations

### Twilio Voice (WebRTC)

#### Configuration dans Twilio Console

1. **Créer une API Key** :
   - Console → Account → API Keys
   - Créer "Standard" key
   - Copier SID et Secret

2. **Créer TwiML App** :
   - Console → Voice → TwiML Apps
   - Voice URL : `https://domaine.com/api/twilio/webrtc-voice`
   - Copier le SID

3. **Configurer** dans `config/twilio.php`

### Twilio WhatsApp

1. **Activer** WhatsApp dans Twilio Console
2. **Configurer** le webhook : `https://domaine.com/api/webhook/whatsapp`
3. **Tester** avec le sandbox Twilio

### OpenAI GPT-4

```php
// Exemple d'utilisation dans AIVoiceAgent
$response = $this->callOpenAI([
    'role' => 'system',
    'content' => 'Tu es un assistant...'
], $conversationHistory);
```

---

## 🔒 Sécurité

### Mesures implémentées

| Mesure | Description |
|--------|-------------|
| **Isolation des données** | Chaque entreprise ne voit que ses données |
| **Authentification** | Sessions sécurisées avec tokens |
| **Mots de passe** | Hashés avec password_hash() |
| **CSRF** | Protection sur les formulaires |
| **XSS** | Échappement des sorties |
| **SQL Injection** | Requêtes préparées (PDO) |
| **HTTPS** | Recommandé en production |

### Bonnes pratiques

```php
// Toujours vérifier l'entreprise_id
$entrepriseId = $_SESSION['entreprise_id'];
$data = $model->findByEntreprise($entrepriseId, $id);

// Toujours échapper les sorties
echo htmlspecialchars($userInput, ENT_QUOTES, 'UTF-8');

// Utiliser les requêtes préparées
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
$stmt->execute([$userId]);
```

---

## 🚀 Déploiement

### Checklist production

- [ ] HTTPS activé
- [ ] Variables d'environnement configurées
- [ ] Base de données optimisée
- [ ] Logs configurés
- [ ] Backups automatiques
- [ ] Monitoring en place

### Variables d'environnement recommandées

```bash
# .env (ou configuration serveur)
DB_HOST=localhost
DB_NAME=mysupport_prod
DB_USER=mysupport_user
DB_PASS=mot_de_passe_fort

OPENAI_API_KEY=sk-xxx
TWILIO_ACCOUNT_SID=ACxxx
TWILIO_AUTH_TOKEN=xxx
```

### Commandes utiles

```bash
# Vérifier les logs
tail -f /var/log/apache2/error.log

# Vérifier les permissions
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
chmod -R 775 uploads/

# Optimiser MySQL
mysqlcheck -o mysupport_db -u root -p
```

---

## 📞 Support & Contact

### Assistance technique

- **Email** : support@mysupport.ml
- **Documentation** : https://docs.mysupport.ml
- **API Status** : https://status.mysupport.ml

### Contribuer

1. Fork le projet
2. Créer une branche (`git checkout -b feature/nouvelle-fonctionnalite`)
3. Commit (`git commit -m 'Ajout nouvelle fonctionnalité'`)
4. Push (`git push origin feature/nouvelle-fonctionnalite`)
5. Ouvrir une Pull Request

---

## 📄 Licence

© 2024-2026 mySupport. Tous droits réservés.

Logiciel propriétaire - Usage soumis à licence commerciale.

---

<div align="center">

**Fait avec ❤️ au Mali 🇲🇱**

*Plateforme de Service Client Intelligent pour l'Afrique*

</div>
