# Backend — Guide d'entretien PFE (Orange RDC, Kinshasa)

API REST en PHP (PDO/MySQL) qui sert de backend à l'application Flutter :
questions du guide, création et suivi des entretiens, sauvegarde des
réponses, et statistiques agrégées pour le tableau de bord.

## 1. Prérequis

- PHP 8.1+ avec l'extension `pdo_mysql` (`php -m | grep pdo_mysql`)
- Un serveur MySQL ou MariaDB (en local : XAMPP, WAMP, Laragon, MAMP, ou
  `mysql-server` / `mariadb-server` installé nativement)

## 2. Créer la base de données

Importez le schéma (crée la base `enquete_pfe_orange` et ses 4 tables) :

```bash
mysql -u root -p < schema.sql
```

## 3. Configurer la connexion

Modifiez `config.php` si besoin (hôte, utilisateur, mot de passe), ou
définissez des variables d'environnement avant de lancer PHP :

```bash
export DB_HOST=127.0.0.1
export DB_NAME=enquete_pfe_orange
export DB_USER=root
export DB_PASS=motdepasse
```

## 4. Peupler la base (≥ 100 entretiens)

```bash
php seed.php               # génère 100 entretiens + réponses
php seed.php --count=200   # ou un autre nombre (toujours ≥ 100)
```

Ce script importe d'abord les 6 sections et 24 questions du guide
(`questions_data.php`), puis génère des entretiens simulés avec des
métadonnées réalistes (zone, fonction, canal, consentement...) et des
réponses qualitatives assemblées aléatoirement à partir d'une banque de
phrases plausibles (`answer_bank.php`). Chaque exécution régénère
entièrement les entretiens et réponses (les sections/questions sont
mises à jour, pas dupliquées).

## 5. Lancer le serveur

Pour un test rapide avec le serveur intégré de PHP :

```bash
php -S 0.0.0.0:8080
```

L'API est alors accessible sur `http://<votre-ip>:8080/api/...`. En
production, servez ce dossier avec Apache/Nginx (ou déployez-le sur un
hébergement mutualisé classique compatible PHP + MySQL).

## 6. Endpoints disponibles

| Méthode | URL                          | Rôle                                              |
|---------|------------------------------|----------------------------------------------------|
| GET     | `/api/questions.php`         | Les 6 sections et 24 questions du guide            |
| GET     | `/api/dashboard.php`         | Statistiques agrégées (tableau de bord)            |
| GET     | `/api/entretiens.php`        | Liste des entretiens (`?statut=termine\|en_cours`) |
| POST    | `/api/entretiens.php`        | Créer un entretien (fiche + consentement)          |
| GET     | `/api/entretien.php?id=`     | Détail d'un entretien + ses 24 réponses            |
| PATCH   | `/api/entretien.php?id=`     | Mettre à jour la clôture (synthèse, durée, statut) |
| POST    | `/api/reponses.php`          | Enregistrer une ou plusieurs réponses              |

Toutes les réponses sont en JSON. Les erreurs renvoient
`{"error": "..."}` avec le code HTTP approprié (404, 409, 422, 500...).

## 7. Notes

- CORS est ouvert (`Access-Control-Allow-Origin: *`) pour simplifier le
  développement de l'app Flutter (émulateur, téléphone physique...). À
  restreindre avant toute mise en production réelle.
- Le script `seed.php` et les endpoints partagent la même connexion PDO
  (`api/db.php`) et la même définition des questions
  (`questions_data.php`), qui reste la source unique de vérité.
