# Nouveau site Les Techniciens

Le site est fait de pages HTML rapides et optimisées pour Google. S'y ajoute un petit module PHP/MySQL qui enregistre les demandes du formulaire, vous les envoie par e-mail et vous permet de les suivre dans un back-office.

## Contenu du dossier

- `site/` : le site prêt à mettre en ligne. Il contient 11 pages (dont Emploi), les logos SVG issus de la charte, `sitemap.xml`, `robots.txt` et `.htaccess`, qui gère le HTTPS, le www et les redirections.
- `site/install.php` : l'assistant d'installation (base de données, compte du back-office, e-mails de notification).
- `site/api/` : la réception des formulaires (contact et candidatures).
- `site/fichiers/` : les CV et lettres de motivation reçus. Ce dossier est bloqué pour les visiteurs, et les fichiers n'y sont téléchargeables que depuis le back-office.
- `site/.user.ini` : il autorise l'envoi de fichiers jusqu'à 8 Mo chez les hébergeurs qui le prennent en compte.
- `site/admin/` : le back-office.
- `site/lib/` : le code commun et, après l'installation, `config.php`. Ce dossier est bloqué pour les visiteurs.
- `build.py` : le générateur des pages HTML. Les textes, horaires, magasins et formules se trouvent en haut du fichier. Après une modification, lancez `python3 build.py`.

## Mise en ligne chez un hébergeur PHP/MySQL (OVH, o2switch, Hostinger…)

1. **Créer la base**. Dans l'espace client de l'hébergeur, créez une base MySQL (ou MariaDB). Notez l'hôte, le nom de la base, l'utilisateur et le mot de passe.
2. **Envoyer les fichiers**. Envoyez tout le contenu de `site/` dans le dossier web (souvent `www` ou `public_html`), avec FileZilla ou le gestionnaire de fichiers de l'hébergeur. Vérifiez que les fichiers cachés `.htaccess` sont bien envoyés, y compris celui de `lib/`.
3. **Installer**. Ouvrez `https://www.lestechniciens.fr/install.php` et renseignez :
   - les accès de la base ;
   - votre identifiant et votre mot de passe pour le back-office (10 caractères minimum) ;
   - l'adresse qui reçoit les demandes de chaque magasin ;
   - l'adresse qui reçoit les candidatures et les demandes de stage ;
   - une adresse d'expédition de votre domaine, par exemple site@lestechniciens.fr. Créez-la chez l'hébergeur, sinon les e-mails risquent de tomber en indésirables.

   Les tables sont créées automatiquement et le fichier `install.php` s'efface tout seul. S'il est encore présent, supprimez-le.
4. **Tester**. Envoyez une demande depuis la page Contact, vérifiez l'e-mail reçu, puis retrouvez la demande sur `https://www.lestechniciens.fr/admin/`.
5. **Brancher le domaine**. Activez le certificat HTTPS (Let's Encrypt, gratuit chez ces hébergeurs), faites pointer le domaine vers l'hébergement, puis arrêtez l'abonnement Wix.

Il faut PHP 8.1 ou plus récent, ce qui est le réglage par défaut chez ces hébergeurs.

### Adresses des pages sans « .html »

Les liens du site pointent vers les fichiers `.html`. Ils fonctionnent donc partout : sur l'hébergement, sur un serveur local (WAMP, XAMPP, Laragon), dans un sous-dossier, et même en ouvrant les fichiers directement.

Sur le site en ligne (www.lestechniciens.fr), un petit script retire « .html » de la barre d'adresse : on y lit `www.lestechniciens.fr/contact`. Si quelqu'un tape ou partage l'adresse courte, le `.htaccess` sert la bonne page. Google reçoit les adresses courtes dans le plan du site et dans les balises canoniques.

## Comment une demande arrive

1. Le client envoie le formulaire.
2. Le serveur vérifie la demande (voir la section sur les robots plus bas), puis l'enregistre dans la base.
3. Un e-mail part vers l'adresse du magasin choisi. Les demandes « Peu importe » partent vers les deux adresses.
4. L'objet de l'e-mail ressemble à « Site LT · Contrat d'assistance · Pompignac · Jean Dupont ». En cliquant sur « Répondre », vous écrivez directement au client.
5. L'e-mail contient aussi un lien vers la demande dans le back-office.

Si l'e-mail n'arrive pas, la demande est quand même enregistrée dans le back-office.

## Le back-office (`/admin/`)

Le back-office a deux rubriques, accessibles en haut de l'écran. Une pastille rose y indique le nombre d'éléments nouveaux.

- **La liste** :
  - les demandes nouvelles apparaissent en haut, surlignées en rose ;
  - des onglets filtrent par statut (Toutes, Nouveau, En cours, Traité) et affichent le nombre de demandes dans chacun ;
  - vous pouvez aussi filtrer par magasin (Ambarès-et-Lagrave, Pompignac) et chercher un nom, un téléphone ou un e-mail.
- **Une demande** :
  - quand vous l'ouvrez, elle passe automatiquement de « Nouveau » à « En cours » ;
  - des boutons permettent d'appeler le client ou de lui répondre par e-mail ;
  - vous pouvez ajouter une note interne, par exemple « rappelé le 12/10, devis envoyé » ;
  - les boutons « Marquer comme traitée », « Laisser en cours » et « Remettre en nouvelle » changent le statut. La date et l'auteur de la dernière action sont enregistrés.
- **Les candidatures** : même fonctionnement, avec les statuts, la note interne et un filtre Emploi / Stage. Le CV et la lettre se téléchargent depuis la fiche du candidat, et un bouton permet de supprimer une candidature avec ses documents.
- **La conservation** : les demandes de contact de plus de 3 ans et les candidatures de plus de 2 ans (recommandation de la CNIL) sont supprimées automatiquement, documents compris.
- **Changer de mot de passe** : supprimez `lib/config.php`, remettez `install.php` sur l'hébergement et relancez-le avec les mêmes accès à la base. Les demandes déjà enregistrées sont conservées.

## Formulaires Emploi et Stage

- **Les pièces obligatoires** : le CV et la lettre de motivation sont exigés tous les deux, en PDF, Word (.doc, .docx) ou OpenDocument (.odt), 5 Mo maximum chacun.
- **Le contrôle des fichiers** : le type réel de chaque fichier est vérifié, pas seulement son extension. Un fichier déguisé est refusé.
- **Le rangement** : les fichiers sont renommés avec un nom aléatoire impossible à deviner, dans le dossier protégé `fichiers/`.
- **Le consentement** : le candidat doit cocher une case qui l'informe de la conservation de ses documents pendant 2 ans.
- **L'e-mail de notification** : il ne contient pas les documents, pour éviter que des CV circulent dans les boîtes mail. Il donne un lien vers la fiche du candidat dans le back-office.
- **La limite d'envois** : 3 candidatures par heure au maximum depuis une même connexion, avec les mêmes protections anti-robots que le formulaire de contact.

## Informations masquées

L'adresse e-mail et le nom du directeur de la publication (Philippe Giraudel, dans `DIRECTEUR` de `build.py`) ne sont jamais écrits en clair dans le code des pages. Un bouton les affiche au clic d'un visiteur.

## Protection du formulaire contre les robots

Toutes ces vérifications sont faites sur le serveur :

- **Un champ piège invisible** : un envoi où il est rempli est ignoré sans être enregistré.
- **Un jeton signé** : la page Contact le demande au serveur à son ouverture. Un envoi sans jeton valide, ou envoyé moins de 4 secondes après l'ouverture de la page, est refusé. Les robots qui envoient directement au formulaire sont ainsi bloqués.
- **Une limite d'envois** : pas plus de 5 demandes par heure depuis une même connexion.
- **Un filtre sur les liens** : les messages qui contiennent plusieurs liens sont refusés.
- **Des contrôles de format** : le téléphone et l'e-mail sont vérifiés, et les listes de sujets et de magasins ne peuvent pas être modifiées.

Les adresses IP ne sont jamais stockées en clair : seule une empreinte chiffrée sert au calcul des limites. Le back-office bloque la connexion pendant 15 minutes après 5 mots de passe erronés.

## À vérifier avant la mise en ligne

1. **Les magasins et les horaires** : ils se trouvent dans la liste `MAGASINS` de `build.py`. Le samedi et le dimanche sont indiqués « Fermé », et le 05 24 84 78 00 est utilisé pour les deux magasins.
2. **Les mentions légales** : il manque le directeur de la publication, le capital, le numéro de TVA et l'hébergeur.
3. **Les villes desservies** : liste `VILLES` de `build.py`.
4. **L'adresse e-mail publique** (contact@lestechniciens.fr) : elle n'apparaît nulle part dans le code des pages. Un bouton « Afficher l'adresse e-mail » la reconstitue au clic d'un visiteur, ce que les robots ne font pas.
5. **Le label Répar'acteurs et le relais Pickup** dans les deux magasins.
6. **La page Particuliers** : les formules se trouvent dans la liste `FORMULES`. Pour relier vos conditions générales, déposez le PDF dans `site/assets/` et renseignez `CGV_URL`.

## Après la mise en ligne (référencement)

- **Google Search Console** : ajoutez le site, puis soumettez `https://www.lestechniciens.fr/sitemap.xml`.
- **Google Business Profile** : créez ou vérifiez une fiche par magasin, avec le site, les horaires, des photos et les services. Demandez des avis à vos clients satisfaits.
- **Anciennes pages Wix** : listez-les (recherche `site:lestechniciens.fr` sur Google), puis ajoutez les redirections manquantes dans `.htaccess`.
- **Facebook** : mettez le lien du site sur la page. Chaque page a déjà son aperçu de partage.
- **Photos** : ajoutez de vraies photos des magasins et de l'équipe.

## En cas de problème

- **Tester sur votre ordinateur** (WAMP, XAMPP, Laragon…) : copiez le contenu du dossier `site` dans le dossier web du logiciel (`www` ou `htdocs`), éventuellement dans un sous-dossier, puis ouvrez `http://127.0.0.1/` (ou `http://127.0.0.1/sous-dossier/`). Pour tester les formulaires, créez une base dans phpMyAdmin (utilisateur `root`, mot de passe souvent vide), puis lancez `install.php`. Les e-mails ne partent pas depuis un ordinateur local, mais les demandes apparaissent dans le back-office.
- **Page d'erreur 404** : vérifiez que vous avez envoyé le *contenu* du dossier `site`, et non le dossier lui-même, et que les fichiers cachés `.htaccess` sont présents (dans FileZilla, menu Serveur > Forcer l'affichage des fichiers cachés).
- **Erreur 500 sur toutes les pages** : renommez temporairement `.htaccess` en `htaccess.txt`. Si le site revient, c'est une directive que l'hébergeur refuse ; envoyez-moi alors le nom de l'hébergeur.
- **Erreur sur install.php** : la page indique maintenant ce qui manque (version de PHP, extensions, fichiers). Il faut PHP 7.4 minimum (8.1 ou plus conseillé). Chez OVH, le fichier `.ovhconfig` choisit PHP 8.2.
- **Erreur de sécurité HTTPS** : le certificat n'est pas encore activé. Activez-le chez l'hébergeur (Let's Encrypt, gratuit), ou mettez un `#` devant les lignes HTTPS du `.htaccess`.
