Création d'un module de signature électronique pour SaaS métier
Secteur : Gestion technique & suivi terrain — Développement de module métier sur SaaS existant. Stack : Symfony, génération PDF, signature électronique, moteur de workflow.
Contexte
Notre client opère un SaaS métier dédié au suivi terrain pour des acteurs du contrôle technique et de la maintenance d'équipements. La plateforme couvre l'ensemble de la chaîne opérationnelle : gestion des clients, des sites, des techniciens et des commandes de prestation.
Jusqu'alors, le cycle de vie d'une visite technique s'arrêtait à la saisie des contrôles. La validation finale — signature des parties prenantes, clôture administrative, archivage réglementaire — reposait sur des processus manuels : formulaires papier, échanges email, PDF générés à la main. Ce fonctionnement générait des frictions opérationnelles importantes et exposait le client à des risques juridiques en l'absence de preuve de validation formalisée.
Chaque visite implique jusqu'à trois parties prenantes distinctes : le ou les techniciens chargés des contrôles sur site, le référent site représentant l'entité responsable du lieu inspecté, l'occupant présent physiquement et concerné par les résultats. La problématique était claire : formaliser l'intégralité du cycle d'inspection dans le SaaS, et sécuriser juridiquement sa validation par signature électronique.
Le défi technique et métier
La mission ne se limitait pas à ajouter un champ « signature » dans un formulaire. Le périmètre réel était bien plus structurant.
- Modéliser le cycle de vie d'une visite en machine d'états : En attente → Programmée → En cours → Terminée → Clôturée (ou Annulée), avec transitions conditionnelles et effets sur les entités liées
- Règles métier strictes : une visite ne peut pas passer en « Terminée » si des contrôles obligatoires sont incomplets ; elle ne peut pas être « Clôturée » sans toutes les signatures ; une commande ne passe en « Terminée » que lorsque toutes ses visites sont clôturées
- Détection automatique des parties prenantes présentes sur site pour générer uniquement les demandes de signature correspondantes (référent, occupant, mandataire)
- Signature capturée via pad électronique, horodatée (date, heure, fuseau), associée à l'identité du signataire, avec possibilité de refus motivé et traçabilité du motif
- Génération automatique d'un rapport PDF structuré à la clôture, incorporant l'ensemble des données de l'inspection (archive réglementaire, transmission sans intervention manuelle)
Architecture mise en place
Module développé en Symfony autour d'un aggregate « Visite » central, avec un service de workflow dédié pour les changements de statut, les préconditions et les événements associés.
- Visite — Aggregate central, porteur du statut et des relations
- Contrôle — Résultat d'un point d'inspection (OK / KO / NC / NA)
- Photo — Pièce jointe liée à un contrôle ou à la visite globale
- Signature — Entité avec statut, horodatage et image
- Presence — Enregistrement des parties prenantes présentes sur site
- À la finalisation de la visite, détection automatique des présences et création des entités Signature (statut En attente → Validée ou Refusée) ; refus avec commentaire possible, blocage de la clôture et notification
- Traçabilité complète : identité du signataire, date et heure exactes, image vectorielle de la signature, adresse IP ou device, statut et motif en cas de refus
- Rapport PDF généré à la clôture (Twig → PDF) : informations générales, résultats des contrôles, travaux identifiés, photos, signatures validées ; stocké en base et transmissible par email
- Reprise / déclôture : réinitialisation contrôlée du statut, conservation de l'historique des signatures, nouveau cycle de signature après corrections, nouveau rapport PDF en version révisée
Intégration au SaaS existant
Le module s'inscrit dans le flux global sans rupture : Commande créée → Visite(s) planifiée(s) → Contrôles réalisés → Visite finalisée et signatures générées → Signatures recueillies et visite clôturée → Toutes visites clôturées → Commande Terminée. Un écouteur d'événements déclenché à chaque clôture de visite bascule la commande en « Terminée » lorsque toutes les visites sont clôturées.
Commande créée
└── Visite(s) planifiée(s)
└── Contrôles réalisés sur site
└── Visite finalisée → Signatures générées
└── Signatures recueillies → Visite clôturée
└── Toutes visites clôturées → Commande Terminée
Résultats
- Opérationnel — Processus terrain entièrement tracé dans le SaaS ; validation en fin de visite, demandes de signature en temps réel, clôture administrative sans délai
- Juridique — Parcours de signature horodaté, tracé et stocké ; rapport PDF comme preuve formalisée ; réduction significative des contestations en environnement réglementé
- Technique — Module intégré au code base Symfony via services découplés et événements ; extensible (nouveaux signataires, prestataire signature qualifiée, export archivage)
- Produit — Argument commercial différenciant ; répond au besoin réglementaire structurant pour les clients soumis à des obligations de traçabilité
Ce que ce projet illustre
Modéliser un workflow métier complexe demande autant de compréhension du domaine que de maîtrise technique. Le vrai travail n'est pas d'écrire du code — c'est de formaliser des règles implicites, de les rendre explicites, et de les traduire en architecture maintenable.
Ce type de module, à l'intersection du métier, du réglementaire et de l'expérience utilisateur terrain, est représentatif des projets sur lesquels nous intervenons : des sujets où la complexité est dans les détails, et où une implémentation bâclée coûte cher à corriger.
Stack
Développement d'applications sur mesure
Architecture backend, modules métier, API et intégration dans un SaaS existant : découvrez notre offre dédiée au développement d'applications.
Un besoin similaire ?
Nous pouvons concevoir et intégrer un module de signature ou de workflow métier dans votre SaaS existant.