Aller au contenu

Documents & signatures

Une fois les données validées, la facturation produit les documents réglementaires du dossier, puis les persiste. Les documents sont générés en séquence (et non en parallèle) pour éviter la contention de ressources.

L’ordre de génération est :

Facture → Traçabilité → Relevés d'activité → Signatures (e-sign)

Le mécanisme est une file d’attente dans la machine : assignSaveAllQueue identifie les documents manquants et les met en file ; dequeueNextDocument en sort un, l’invoque, puis recommence en cas de succès (et s’arrête au premier échec). Un garde (allFundedDocumentsGenerated) vérifie que les documents modèles (facture, traçabilité, relevés) sont prêts avant d’autoriser l’e-signature.

Chaque document est décrit par des DocumentProps (union typée : BillDocumentProps | TraceabilityDocumentProps | ActivityLogsDocumentProps | ESignDocumentProps), construites côté serveur par generateDocumentProps, puis rendues en PDF via la procédure tRPC pdf.generate.

Les PDF générés sont uploadés vers le file-api (stockage minio), puis le dossier de facturation (billing_file) est sauvegardé dans l’internal-api avec les IRIs des médias (bill, traceability, activityLogs, signatures, et le cas échéant creditNote).

  • Remédiation des signatures manquantes : un correctif one-shot ré-estampille les signatures typées absentes des PDF de consentement ; l’opérateur peut prévisualiser / télécharger pour validation manuelle.
  • Détection de changement de session : si les sessions associées au dossier changent après génération, la sauvegarde est désactivée tant que tous les documents n’ont pas été régénérés (computeSessionsChanged / clearSessionsChangedIfAllRegenerated).

Pour récupérer l’export XLSX des participants FIFPL hors du parcours app (débogage, contrôle), une skill dédiée existe : fifpl-export-participants (identifie le dossier via NACPRO + finishingAt puis télécharge l’XLSX). Voir aussi Automatisation FIFPL.

  • File de génération : applications/billing/src/machines/billing-app-machine.ts (assignSaveAllQueue, dequeueNextDocument, gardes allFundedDocumentsGenerated, hasMoreDocumentsInQueue).
  • Props & rendu : generateDocumentProps / generateESignAnnotations dans librairies/trpc/src/controller/billing/index.ts ; rendu via librairies/trpc/src/controller/pdf/index.ts (pdf.generate).
  • Upload : file-api (REACT_APP_FILE_API_URL) ; rendu via REACT_APP_DOCUMENT_URL.
  • Dossier persisté : structure BillingFileAPIWithMedia (reference, sessionNumber, sessions[], status, billNumber, bill, traceability, activityLogs, signatures, creditNote…).