Récit de vie composant

Le récit de vie d’un composant est la restitution audit complète exigée par M.A.305 EASA Part-145 / EMAR-FR M : tout ce qui doit être présenté à l’autorité (DGAC, DSAÉ) sur réquisition pour un composant donné — son identification, l’historique de ses installations, ses snapshots compteurs à la réception, ses documents attachés et la chaîne d’audit hashchain SHA-256 qui les protège.

L’API expose deux formats parallèles à partir du même service d’agrégation :

  • PDF — restitution lisible humain, archive long terme
  • JSON — restitution machine, intégration BI / export XML

L’interface web rend ce JSON dans un onglet dédié de la fiche article, afin de permettre une consultation immédiate sans téléchargement (cf. § Consultation en ligne ci-dessous).

Contenu agrégé (V2 — aligné Formulaire 1 EMAR/FR)

Le PDF V2 reprend le style visuel du Formulaire 1 EMAR/FR Ed. 3.2 publié par la DSAé :

  • En-tête centré bilingue FR (gras) / EN (italique)
  • 8 cases numérotées sur la page de garde (autorité, régime, n° de traçage, instance, PN/NCAGE, SN/Lot, désignation, fabricant)
  • Pied de page avec édition + génération + pagination
  • Verso « Responsabilités du lecteur » bilingue
Section Source
Cases 1-8 identification StockItem + PartNumber + Manufacturer + Instance.regulatoryFramework
Configuration actuelle Installation active (si posé) OU storage courant (si en stock)
Identification technique R2 Condition, manufactureDate, modLevel, softwareVersion, easaForm1Document
Historique installations Installation (pose/dépose sur aéronef ou container, avec EmploymentPoint si Vague D)
Snapshots compteurs R2 StockItemMeterSnapshot (TSN/TSO/CSN saisis par le technicien navigabilité)
Plans de maintenance applicables StockItemPlanAssignment (PEA assignés au composant)
Compliance AD (placeholder honnête) Gap V1 — Envergure ne modélise pas encore les AD
Information dimensionnelle (placeholder honnête) Gap V1 — pas de champ mesures sur StockItem
Documents attachés DocumentAttachment polymorphique sur resourceType=stock_item
Audit events AuditEvent filtré sur ce StockItem (hashchain SHA-256 vérifiable)
Numéro de traçage ENV-LFC-<sha256 court> déterministe (component.id + generatedAt)
Tip hash de chaîne Dernier event de l’instance — permet vérification a posteriori

Endpoints API

Méthode Chemin Effet
GET GET/stock-items/:id/lifecycle.json Restitution machine (auditeur XML/JSON, BI, intégrations). Auth X-Admin-Secret.
GET GET/stock-items/:id/lifecycle.pdf Restitution humaine PDF/A. Content-Disposition: attachment avec nom basé sur PN + SN.

Les deux endpoints sont protégés par AdminSecretGuard (V1 — basculera sur RBAC Keycloak quand le module sera livré).

Exemple curl

# JSON
curl -H "X-Instance-Id: $INSTANCE_ID" \
     -H "X-Admin-Secret: $ADMIN_SECRET" \
     http://localhost:3000/stock-items/$STOCK_ITEM_ID/lifecycle.json

# PDF (téléchargement)
curl -o lifecycle.pdf \
     -H "X-Instance-Id: $INSTANCE_ID" \
     -H "X-Admin-Secret: $ADMIN_SECRET" \
     http://localhost:3000/stock-items/$STOCK_ITEM_ID/lifecycle.pdf

Consultation en ligne (onglet « Récit de vie »)

La fiche article — /admin/stock-items/:id — embarque un onglet Récit de vie disponible pour tout composant sérialisé. Il consomme directement GET /stock-items/:id/lifecycle.json et affiche les mêmes données que le PDF, organisées en sections lisibles :

  • bandeau métadonnées (date de génération, numéro de traçage, cadre réglementaire, tip hash de chaîne)
  • identification du composant (PN, SN, NCAGE, lot, condition, dates, document EASA Form 1 attaché)
  • localisation actuelle (posé sur aéronef/conteneur ou en stock)
  • historique des poses / déposes (tri chronologique inverse, installation active surlignée)
  • snapshots compteurs (TSN/TSO/CSN saisis en R2)
  • documents attachés (taille, type MIME, qui les a attachés)
  • plans de maintenance applicables (PEA assignés)
  • événements d’audit (5 plus récents par défaut, expansible)

Un bouton Régénérer force une nouvelle agrégation côté backend (le numéro de traçage change car il dépend de l’instant generatedAt). Le bouton Récit de vie dans le bandeau d’actions reste disponible en parallèle pour télécharger le PDF d’archive.

Conformité PDF/A

La V1 produit un PDF standard (polices Helvetica embarquées, metadata title/author/subject/producer). Une conformité PDF/A-3 stricte (metadata XMP xmpMM:DocumentID, OutputIntent, ICC profiles) sera ajoutée en V2 quand un partenaire pilote auditeur DGAC ou DSAÉ aura validé le rendu attendu.

Cadre réglementaire

Couvre la décision structurante D5 — flag regulatoryFramework exploité runtime des décisions réglementaires Envergure. Le rendu inclut un bandeau régime dans l’en-tête pour traçabilité de l’instance ayant émis le récit (Part-145 civil, EMAR-FR défense, mixte).