# Diagnostic de maturité numérique & IA — déploiement sur OVH

Mini-site pour **diagnostic.bisqi.fr** : un front-end (le diagnostic, repris de la
maquette) + un back-end PHP qui, à chaque diagnostic terminé :

1. **journalise** la ligne dans un CSV central (`data/journal-diagnostics.csv`) ;
2. **notifie BIS-Q.I.** par e-mail (objet : *un diagnostic maturité a été fait*), PDF joint ;
3. **envoie son rapport PDF au répondant**.

---

## 1. Arborescence

```
diagnostic.bisqi.fr/
├── public/                ← RACINE WEB du sous-domaine (docroot)
│   ├── index.html
│   ├── .htaccess          (sécurité, HTTPS, cache)
│   ├── assets/ css · js · img · vendor(jsPDF)
│   └── api/
│       ├── submit.php     réception → CSV + e-mails
│       └── journal.php    téléchargement protégé du journal
├── config/
│   ├── config.sample.php  modèle (à copier)
│   └── config.php         ⚠️ À CRÉER — vos identifiants SMTP (NON public)
├── data/                  journal CSV (créé tout seul, NON public)
└── vendor/phpmailer/      librairie d'envoi SMTP (NON public)
```

> 🔒 **Clé de la sécurité** : seul `public/` est exposé sur le web. `config/`,
> `data/` et `vendor/` sont *à côté* de `public/`, donc inaccessibles depuis
> Internet. Des `.htaccess` « Deny » sont en place en plus, par précaution.

---

## 2. Pré-requis OVH

- Hébergement **mutualisé** OVH avec **PHP 7.4+** (idéalement 8.x — réglable dans
  l'espace client : *Hébergement → onglet « PHP »*).
- Une **boîte e-mail OVH** du domaine `bisqi.fr` pour l'envoi (ex. `noreply@bisqi.fr`).
  *Espace client → E-mails → créer une adresse* (ou réutiliser une existante).

---

## 3. Configurer le back-end (5 min)

1. Dans `config/`, **copiez** `config.sample.php` en **`config.php`**.
2. Ouvrez `config.php` et renseignez :
   - `smtp_user` / `smtp_pass` → l'adresse OVH créée et son mot de passe ;
   - `from_email` → la même adresse (doit appartenir à `bisqi.fr`) ;
   - `notify_to` → reste `christian.barbier@bisqi.fr` ;
   - `admin_key` → **une longue clé secrète** (générez-en une aléatoire).
3. Paramètres SMTP OVH (déjà pré-remplis) :
   - `ssl0.ovh.net` · port **465** · `'ssl'`  *(ou port 587 + `'tls'`)*.

> Le mot de passe SMTP ne se trouve **que** dans `config/config.php`, jamais dans
> le code public ni dans Git (`config.php` est dans `.gitignore`).

---

## 4. Créer le sous-domaine + pointer le docroot

Dans l'espace client OVH → **Hébergements → votre hébergement → onglet « Multisite »** :

1. **Ajouter un domaine/sous-domaine** : `diagnostic.bisqi.fr`
   (OVH crée l'entrée DNS automatiquement si le domaine est chez OVH).
2. **Dossier racine** : indiquez le chemin vers **`public/`**, par exemple
   `diagnostic.bisqi.fr/public` (selon l'endroit où vous déposez le dossier — voir §5).
3. Cochez/activez **SSL** pour ce sous-domaine.

---

## 5. Téléverser les fichiers (FTP)

Avec FileZilla (ou l'explorateur FTP OVH), connectez-vous à votre hébergement et
**déposez le dossier `diagnostic.bisqi.fr/` entier** à la racine FTP (souvent le
dossier `www/` ou la racine `/home/...`).

- Le **docroot** du sous-domaine (§4) doit pointer sur le sous-dossier **`public/`**.
- Résultat : `https://diagnostic.bisqi.fr/` sert `public/index.html`, et
  `config/ data/ vendor/` restent hors du web.

### Permissions
- Le dossier **`data/`** doit être **inscriptible** par PHP (le serveur y écrit le
  CSV et le fichier de débit). Via FTP : clic droit sur `data/` → permissions **755**
  (ou **775** si l'écriture échoue). Le fichier CSV se crée tout seul au 1ᵉʳ diagnostic.

---

## 6. Activer HTTPS

Dans OVH → **SSL** du sous-domaine : activez **Let's Encrypt** (gratuit).
Tant que le certificat n'est pas actif, **commentez** temporairement le bloc
« Forcer HTTPS » dans `public/.htaccess` (sinon redirection vers une page non
sécurisée). Une fois le cadenas OK, laissez la redirection active.

---

## 7. Tester

1. Ouvrez **https://diagnostic.bisqi.fr/** → l'accueil s'affiche (logo, charte).
2. Faites un diagnostic de bout en bout avec **votre** e-mail comme répondant.
3. À la fin, le bandeau doit afficher **« Votre rapport a été envoyé… »**.
4. Vérifiez : vous (christian.barbier@bisqi.fr) recevez la **notification + PDF**,
   et l'adresse répondant reçoit **son rapport**.
5. **Journal** : téléchargez le CSV central via
   `https://diagnostic.bisqi.fr/api/journal.php?key=VOTRE_CLE_ADMIN`.

---

## 8. Dépannage

| Symptôme | Cause probable / solution |
|---|---|
| Bandeau « envoi a échoué », PDF quand même téléchargeable | Le serveur n'a pas répondu OK. Voir les logs PHP (OVH → Logs) ; souvent SMTP. |
| Pas d'e-mail reçu | `smtp_user`/`smtp_pass` erronés, ou port/SSL. Tester 465+ssl puis 587+tls. |
| E-mails en **spam** | Configurer **SPF** (inclure OVH) et activer **DKIM** sur `bisqi.fr` (OVH → E-mails → DKIM). Indispensable pour la délivrabilité. |
| Erreur 500 | PHP < 7.4, ou `config.php` manquant/chemin. Vérifier la version PHP et que `config/config.php` existe. |
| CSV non écrit | `data/` non inscriptible → passer en 775. |
| `journal.php` « Accès refusé » | `admin_key` non changée dans `config.php`, ou clé de l'URL incorrecte. |
| Redirection en boucle | SSL pas encore actif : commenter le bloc HTTPS du `.htaccess`. |

---

## 9. RGPD

- Une **case de consentement** obligatoire est déjà présente avant le questionnaire.
- Le diagnostic n'envoie rien sans ce consentement (vérifié aussi côté serveur).
- Recommandé : ajoutez un lien **« Politique de confidentialité / Mentions légales »**
  (page de votre site) précisant finalité, durée de conservation et droit d'accès.
- Le journal CSV contient des données nominatives : il est protégé (hors web + clé).
  Pensez à le purger périodiquement selon votre politique de conservation.

---

## 10. Maintenance

- **Mettre à jour le questionnaire / le PDF** : tout est dans `public/assets/js/app.js`
  (mêmes fonctions que la maquette). Re-téléverser ce fichier suffit.
- **Changer le destinataire / l'objet** : `config/config.php` (`notify_to`, `notify_subject`).
- **Sauvegarde** : pensez à sauvegarder `data/journal-diagnostics.csv`.

---

*Front-end et contrat d'API vérifiés (chargement des assets, garde-fou consentement,
génération PDF avec logo, payload POST complet). Le PHP n'a pas pu être exécuté sur
le poste de préparation (PHP non installé) : un test grandeur nature sur l'hébergement
— étape §7 — est donc recommandé après le 1ᵉʳ dépôt.*
