Stockage et intégrité
Vavang Invoice persiste les artefacts de conformité dans son propre modèle Doctrine. Il n’existe pas de clé storage à configurer dans sylius_invoice.yaml pour choisir un filesystem ou un bucket.
Ce qui est stocké
Pour chaque document de conformité, le plugin conserve notamment :
- le XML structuré Factur-X ;
- le PDF Factur-X ;
- un SHA-256 du XML ;
- un SHA-256 du PDF ;
- l’état de validation ;
- les erreurs de validation normalisées ;
- le lien vers la facture Sylius source.
Les PDF sont stockés en BLOB et le XML en texte dans la base via Doctrine.
Immutabilité
Une fois enregistrés, le XML et le PDF ne peuvent pas être remplacés. Une tentative de réécriture lève une erreur.
Lors d’une lecture ou d’une régénération, le plugin vérifie les empreintes SHA-256. Un document dont l’intégrité ne correspond plus est refusé plutôt que transmis.
Contrat d’extension
SyliusInvoicePlugin\Generation\ComplianceDocumentStoreInterface est aliasée vers le store Doctrine par défaut et n’expose que :
public function find(string $id): ?ComplianceDocument;
public function save(ComplianceDocument $document): void;
Cela permet une décoration pour le logging, les métriques ou une réplication contrôlée. Un remplacement complet présente plus de risques car le reste de la chaîne attend que le ComplianceDocument retourné conserve les mêmes sémantiques d’identité déterministe, d’immutabilité, d’état de validation et de checksums.
Un décorateur doit normalement déléguer find() et save() au store Doctrine interne puis ajouter son effet de bord autour de cet appel. N’utilisez pas un décorateur pour modifier le XML/PDF stocké après établissement du contrat d’intégrité.
Frontière du stockage externe
L’interface abstrait un repository de documents de conformité ; ce n’est pas un driver générique de stockage d’objets binaires. Il n’existe actuellement ni adaptateur S3/filesystem natif ni switch de configuration storage supporté.
Si un projet nécessite un archivage hors base, préférez une réplication ou un export depuis le document Doctrine faisant autorité, tout en testant les métadonnées d’intégrité et les procédures de restauration. Remplacer le store faisant autorité exige des tests de bout en bout sur génération, régénération idempotente, téléchargement, validation et transmission.
Conséquence opérationnelle
La sauvegarde de la base de données fait donc partie de la stratégie de sauvegarde des documents de conformité. Tant qu’un backend de stockage externe n’est pas explicitement implémenté et supporté, ne documentez ni S3, ni filesystem externe, ni option storage comme fonctionnalité disponible.