Feature #90
closedFeature #82: Améliorer la génération de PDF pour les contrats avec design professionnel et signatures configurables
Backend — moteur de rendu PDF du contrat (police, logo, marges)
0%
Description
Parent : #82. Socle (aucune dépendance).
Retravailler le moteur de rendu PDF du contrat (server/, pdf-lib/jsPDF) à partir des réglages du modèle : police choisie, logo de la structure en haut à gauche + filet de séparation, marges 2 cm, mise en page soignée. Définir le **contrat de données des réglages** (police, logo, emplacement signatures) consommé par le rendu — à partager avec le frontend #82-config.
## Acceptance criteria
- [ ] Le PDF respecte la police et la mise en page du modèle ; marges 2 cm sur tous les côtés.
- [ ] Logo de la structure rendu en haut à gauche avec filet de séparation.
- [ ] Le schéma des réglages de présentation est défini et documenté (consommé par le frontend).
- [ ] Tests backend (TDD) + lint/typecheck verts.
RA Updated by Redmine Admin about 2 months ago
- Status changed from Submitted to In development
- branch set to feat/90-contract-pdf-renderer
Dev démarré (worktree isolé, `feat/90-contract-pdf-renderer` sur `origin/dev`). Submitted → In development. Socle PDF du #82.
RA Updated by Redmine Admin about 2 months ago
- Status changed from In development to QA
- pr_url set to https://github.com/Scobby-organisation/scobby/pull/8
RA Updated by Redmine Admin about 2 months ago
- Status changed from QA to In development
**QA → In development (échec QA préprod).** Root cause confirmé (log api préprod) : `P2022 — column HtmlContractTemplate.presentation_settings does not exist`. #90 a ajouté `presentation_settings` au `schema.prisma` mais **sans migration** → la colonne manque sur la DB préprod (migrate deploy), alors que les tests passaient (test DB en `prisma db push`). Toute requête Prisma sur HtmlContractTemplate référence la colonne → 500 à l'enregistrement/génération. Correctif : migration `ALTER TABLE ... ADD COLUMN presentation_settings JSONB`.
RA Updated by Redmine Admin about 2 months ago
- Status changed from In development to QA
**Correctif vérifié en live (préprod) → QA.** PR #19 mergée (dev) + promue préprod (PR #20, build préprod #11 `migrate deploy` OK). Le même enregistrement de modèle qui renvoyait **500 (P2022)** renvoie désormais **201 Created** avec `presentation_settings` persisté. La colonne existe, les modèles s'enregistrent ; la génération PDF honorera donc les réglages (logo/police/marges/emplacement signatures) au lieu des valeurs par défaut. Template de test supprimé après vérif.
Reste pour la validation client : génération visuelle d'un vrai contrat (logo + 3 emplacements de signature + numéro) avec données réelles.
RA Updated by Redmine Admin about 2 months ago
**Prévention de récurrence livrée** (PR #21, mergée dev `f7f207e6`) : garde CI `migration-schema-coverage.test.ts` — test sans DB tournant dans `npm run test:unit` (donc dans la CI sans Postgres) qui échoue si une colonne du `schema.prisma` n'a pas de migration. Preuve négative faite (échoue en nommant `presentation_settings` sans la migration). Comble l'écart `db push` (tests) vs `migrate deploy` (préprod/prod) qui avait masqué ce bug. Inclut aussi le fix du test obsolète `functions.e2e` (501 generateContractPdf → désormais un nom non enregistré). Test-only, sans impact runtime ; partira en préprod avec la prochaine promotion.
RA Updated by Redmine Admin about 2 months ago
- Status changed from QA to Preprod
Déployé en préprod (https://preprod-scobby.omdev.tech). Passage QA → Preprod.
RA Updated by Redmine Admin about 1 month ago
- Status changed from Preprod to Ready to ship
Livré sur master (dev = preprod = master). Commits `8dc2a341` (PR #8) — moteur de rendu PDF professionnel + `52733a4f` (PR #19) — migration presentation_settings. Passage en **Ready to ship** — *Shipped* après confirmation du gate prod manuel (Jenkins) sur scobby.fr.
RA Updated by Redmine Admin about 1 month ago
- Status changed from Ready to ship to Shipped
- deploy_status set to deployed
- deployed_at set to 06/23/2026
Déploiement PROD confirmé live sur scobby.fr (gate manuel Jenkins approuvé le 2026-06-23). Passage en **Shipped**.