feat(correspondance): le format de lettre commerciale devient un gabarit réutilisable
Fixé avec le dossier KissMetrics du 24/08 et validé par l'opérateur : « on peut se souvenir de ce format pour les communications avec KM et futurs prospects/clients ». Il ne servira à rien s'il faut le reconstituer à chaque fois — d'où un gabarit, un script, et les raisons écrites. LE TEST DU GABARIT : la lettre du 24/08 s'en régénère à l'identique, au mot près, vérifié par diff du texte extrait. Un gabarit qui ne reproduit pas son propre exemple n'est pas un gabarit. LES CHOIX, ET POURQUOI. Charter pour le texte — dessinée par Matthew Carter pour tenir le petit corps là où d'autres se délitent — et Optima pour les titres. Les deux incorporées au PDF : le rendu est le même chez le destinataire. Chiffres elzéviriens, pour que les montants s'alignent au lieu de faire des bâtons. Deux encadrés, deux usages : le gris porte une question, le rouge sourd ce qui doit être lu en diagonale — UN SEUL par lettre, deux et plus rien ne ressort. Les tableaux portent un <thead>, sans quoi ils perdent leur en-tête en se coupant entre deux pages. LE PIÈGE, consigné parce qu'il coûte une heure à qui le redécouvre : weasyprint NE SAIT PAS rendre Apple Color Emoji. C'est un format bitmap sbix qu'il ignore, et les trois emblèmes 🏹💻🪽 sortent en carrés vides — sans erreur, sans avertissement. D'où correspondance/emblemes/*.png, rendus une fois pour toutes par test/emoji2png.ts, qui passe par Chromium : lui lit la police système. Les PNG sont incorporés en base64 À LA GÉNÉRATION, pas dans le gabarit : un gabarit de 400 Ko dont 97 % de charabia ne se relit pas. Le PDF produit reste autonome. Les trois emblèmes viennent du site — « Gabriel 🪽 Radureau, pour 🏹 réussir vos projets 💻 ». L'arc et l'ange sont dans le nom lui-même. lettre.py proteste au-delà de deux pages : une lettre d'affaires qui déborde ne se lit pas, et la tentation est alors de rétrécir la typographie plutôt que le propos. C'est le propos qu'il faut resserrer. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
# Correspondance commerciale — le format maison
|
||||
|
||||
Le gabarit des lettres qu'Arcodange adresse à ses clients et prospects. Fixé le
|
||||
24 août 2026 avec le dossier KissMetrics, et validé par l'opérateur : « on peut
|
||||
se souvenir de ce format pour les communications avec KM et futurs
|
||||
prospects/clients ».
|
||||
|
||||
## Produire une lettre
|
||||
|
||||
```bash
|
||||
python3 correspondance/lettre.py corps.html sortie.pdf \
|
||||
--titre "Contracts and invoices — cycles M1 to M4" \
|
||||
--date "24 August 2026" --prenom Evan \
|
||||
--destinataire "Evan Sforzo" --fonction "Chief Executive Officer" \
|
||||
--societe "Kissmetrics Inc." \
|
||||
--adresse "2850 34th Street North, 307 — St. Petersburg, Florida 33713 — United States" \
|
||||
--copie "Hendrik Rootering" \
|
||||
--pied "Arcodange × Kissmetrics Inc. — 24 August 2026"
|
||||
```
|
||||
|
||||
`corps.html` ne porte que le corps — les `<h2>`, `<p>`, `<table>`, encadrés.
|
||||
L'en-tête, le bloc destinataire, la signature et le pied viennent du gabarit.
|
||||
Sans `--copie`, la ligne « cc » disparaît entièrement.
|
||||
|
||||
Le script vérifie le nombre de pages et proteste au-delà de deux : une lettre
|
||||
d'affaires qui déborde ne se lit pas. Resserrer le CORPS, jamais la typographie.
|
||||
|
||||
## Les choix, et pourquoi
|
||||
|
||||
**Charter pour le texte, Optima pour les titres.** Charter a été dessinée par
|
||||
Matthew Carter pour tenir le petit corps là où d'autres se délitent — elle reste
|
||||
lisible à l'écran comme sur papier bon marché. Optima lui donne un contrepoint
|
||||
humaniste sans raideur. Les deux sont incorporées au PDF : le rendu est le même
|
||||
chez le destinataire, quelle que soit sa machine. Chiffres elzéviriens activés,
|
||||
pour que les montants dans le texte s'alignent au lieu de faire des bâtons.
|
||||
|
||||
**Deux encadrés, deux usages.** Le gris (`.calme`) porte une question ou une
|
||||
demande — elle ne doit pas se noyer dans un paragraphe. Le rouge sourd
|
||||
(`.encart`) porte ce qui doit être lu même en diagonale. **Un seul par lettre** ;
|
||||
deux, et plus rien ne ressort.
|
||||
|
||||
**Les tableaux portent un `<thead>`.** Sans lui, un tableau qui se coupe entre
|
||||
deux pages perd son en-tête et devient illisible. Avec, il se répète.
|
||||
|
||||
**Les trois emblèmes 🏹💻🪽** viennent du site — *« Gabriel 🪽 Radureau, pour 🏹
|
||||
réussir vos projets 💻 »*. L'arc et l'ange sont dans le nom lui-même. Ils
|
||||
figurent en marque sous le mot-marque, et l'aile seule entre prénom et nom dans
|
||||
la signature.
|
||||
|
||||
## Le piège des emblèmes
|
||||
|
||||
> [!IMPORTANT]
|
||||
> **`weasyprint` ne sait pas rendre Apple Color Emoji.** C'est un format bitmap
|
||||
> `sbix` qu'il ignore : les trois emblèmes sortent en carrés vides, sans erreur
|
||||
> ni avertissement. Vérifié le 24/08/2026.
|
||||
|
||||
D'où `emblemes/*.png`, rendus une fois pour toutes par `test/emoji2png.ts`, qui
|
||||
passe par Chromium — lui lit la police système. Pour les régénérer ou en ajouter :
|
||||
|
||||
```bash
|
||||
cd test && deno run -A emoji2png.ts ../correspondance/emblemes 🏹 💻 🪽
|
||||
```
|
||||
|
||||
Les PNG sont incorporés en base64 **à la génération**, pas dans le gabarit : un
|
||||
gabarit de 400 Ko dont 97 % de charabia ne se relit pas. Le PDF produit, lui,
|
||||
reste autonome.
|
||||
|
||||
## Ce que le format ne fait pas
|
||||
|
||||
Il ne remplace pas le message d'accompagnement. La lettre est le document qu'on
|
||||
joint ; le mot sur Slack ou par courriel reste séparé, plus court, et dit
|
||||
pourquoi on écrit. Les deux doivent rester d'accord — vérifier que la lettre ne
|
||||
mentionne aucune pièce absente de l'envoi.
|
||||
|
||||
## Exemple de référence
|
||||
|
||||
`1_DOCUMENTS/prospects/KissMetrics/relances/2026-08-24_lettre_KM.html` — la
|
||||
lettre du 24/08/2026, dont ce gabarit est extrait. Elle se régénère à
|
||||
l'identique, au mot près, ce qui est le test du gabarit.
|
||||
Reference in New Issue
Block a user