docs/70-systemes-a-part/10-certicle.md —
ce document se lit aussi dans le dépôt, sans serveur.
Certi'Clé
Où : sav.monsieurcle.fr/certicle/, un guichet du mini-site d'aide. Et dans l'ERP : Outils → Certi'Clé, pour relire les demandes.
Le service a vécu seul surcerticle.monsieurcle.frjusqu'au 27/09/2026. Ce sous-domaine redirige et doit le rester : chaque certificat déjà émis porte une adresse encerticle.monsieurcle.fr/c/<jeton>imprimée dans son PDF, et ces documents ne seront jamais réédités.
À quoi ça sert
Un client fait changer une serrure après un cambriolage. Son assureur veut savoir si la facture qu'on lui présente est vraie.
Avant, l'assureur appelait. Maintenant il saisit trois éléments de la facture sur un site, et obtient un certificat PDF signé par Monsieur Clé qui dit : cette facture existe, elle porte ce montant, la prestation a eu lieu.
C'est le seul service de Darsy ouvert à des gens de l'extérieur, et le seul qui n'ait pas d'authentification.
Le principe, et il faut le comprendre avant tout le reste
Certi'Clé ne restitue jamais une donnée que le demandeur n'a pas lui-même saisie.
Le demandeur donne trois choses. Le service répond oui, ou non. Il ne dit jamais laquelle était fausse.
Pourquoi ce n'est pas négociable
Le numéro de facture est l'identifiant de la commande. Il est donc énumérable : on peut essayer 71366, 71367, 71368.
Si le service répondait « e-mail correct, montant incorrect », il suffirait d'essayer les montants un par un jusqu'à tomber juste, puis les e-mails, puis les noms. On reconstituerait le fichier client de Monsieur Clé un champ à la fois, sans jamais entrer nulle part.
C'est l'exigence simultanée des trois clés qui tient tout l'édifice.
Le message d'échec est le même mot pour mot que le numéro existe ou non. Sinon, la seule différence de formulation dirait déjà « cette facture existe » — et l'énumération redeviendrait payante.
Un développeur qui trouve ce comportement peu pratique et veut « améliorer le retour utilisateur » casserait le service.
Ce qu'on demande au demandeur
Les trois champs obligatoires
| Champ | Pourquoi celui-là |
|---|---|
| Numéro de facture | L'entrée dans l'index |
| Adresse e-mail | Ce que seul le client connaît |
| Montant TTC | Ce que seule la facture porte |
Les trois doivent concorder sur la même commande. Deux sur trois ne suffisent pas.
Les champs facultatifs
Nom, prénom, code postal, ville, date de facture, mode de paiement. Ils ne décident de rien — ils enrichissent le certificat.
Trois états, pas deux
Un mode de paiement importé à la main, un champ vide en base : ce n'est ni concordant ni discordant, c'est illisible. Écrire « non concordant » serait une affirmation fausse sur un document opposable.
Ce que le certificat peut affirmer
Un certificat n'affirme « la prestation a été réalisée » que sur les statuts qui le signifient sans ambiguïté.
Arbitrage du 28/08/2026 :
| Statuts | Ce que le certificat dit | |
|---|---|---|
| Prestation réalisée | completed, cloture, cloturee | « La prestation a été réalisée » |
| En cours | Expédition, transit, attente, devis… | L'état, sans affirmer qu'elle est close |
| Rupture | Remboursée, annulée, litige, SAV, anomalie | Le certificat est émis, et la rupture est affichée |
Une commande expédiée n'est pas une commande close : le colis est parti, la prestation ne l'est pas.
Une rupture n'est jamais masquée
Masquer une rupture rendrait tout le document suspect le jour où l'assureur la découvrirait par ailleurs — et il la découvre toujours. Le document ne vaut que parce qu'il dit aussi ce qui dérange.
Le certificat
Un PDF, numéroté CC-AAAA-MM-NNNNNN, avec un jeton de contre-vérification.
L'assureur qui reçoit le PDF peut ouvrir le lien de contre-vérification qu'il porte — …/c/<jeton> — et voir que ce certificat a bien été émis — sans rien saisir. C'est ce qui le rend opposable : le document se vérifie lui-même.
Un certificat n'est jamais réémis à l'identique
Une seconde demande sur la même facture produit un nouveau numéro et une nouvelle date.
Un certificat atteste d'un état constaté à un instant donné. Une commande peut être remboursée entre deux demandes ; réémettre le même document laisserait croire que rien n'a changé.
Ce qui protège le service
Il est public. Il est donc attaqué.
| Limite | Valeur |
|---|---|
| Demandes par IP, courte fenêtre | 5 par quart d'heure |
| Demandes par IP, par jour | 20 |
| Demandes sur une même facture | 10 par jour |
| Blocage | 24 heures |
S'y ajoutent un champ-piège invisible, un jeton de formulaire à usage unique, et Cloudflare Turnstile quand il est activé.
Aucune donnée du demandeur n'est conservée en clair
Les tentatives ne gardent que des empreintes. Constituer un fichier d'e-mails et de montants tapés par des tiers n'aurait aucune utilité, et créerait exactement le risque que le service existe pour écarter.
Ce que ça touche ailleurs
| La boutique | Lecture seule, toujours. |
| Les commandes | L'index des factures se construit depuis les commandes. Une commande sans numéro de facture n'est pas vérifiable. |
| Les statuts | Le vocabulaire vient de Orders\OrderStatus, jamais recopié. |
Une liste de statuts recopiée finit toujours par diverger de sa jumelle. La copie qui vivait ici citait les deux orthographes de « clôturée » ; celle du caviardage n'en citait qu'une — et 233 commandes échappaient à la rétention sans que rien ne le signale.