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.
Le pipeline de génération
Section intitulée « Le pipeline de génération »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.
Rendu PDF
Section intitulée « Rendu PDF »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.
Persistance
Section intitulée « Persistance »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).
Robustesse
Section intitulée « Robustesse »- 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).
Export manuel FIFPL
Section intitulée « Export manuel FIFPL »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.
Sous le capot
Section intitulée « Sous le capot »- File de génération :
applications/billing/src/machines/billing-app-machine.ts(assignSaveAllQueue,dequeueNextDocument, gardesallFundedDocumentsGenerated,hasMoreDocumentsInQueue). - Props & rendu :
generateDocumentProps/generateESignAnnotationsdanslibrairies/trpc/src/controller/billing/index.ts; rendu vialibrairies/trpc/src/controller/pdf/index.ts(pdf.generate). - Upload : file-api (
REACT_APP_FILE_API_URL) ; rendu viaREACT_APP_DOCUMENT_URL. - Dossier persisté : structure
BillingFileAPIWithMedia(reference,sessionNumber,sessions[],status,billNumber,bill,traceability,activityLogs,signatures,creditNote…).