Vue d'ensemble de la recherche appliquée
Des structures sources aux structures de passeport
Any2DPP
Connecter un nouveau système source à un passeport produit ne devrait pas obliger à écrire du nouveau code, et quoi que cela implique, le résultat doit dire quelle version de quelle correspondance a produit quel champ.
Statut: Concept de recherche · prototype non publié
Any2DPP et AnyDPP
Any2DPP met en correspondance et valide. Il n'émet rien.
AnyDPP porte la démonstration de bout en bout : ingestion, décision, composition et passeport publié.
Ils se rejoignent dans un adaptateur. Any2DPP valide au regard du schéma UNTP 0.7.0 épinglé par AnyDPP lui-même plutôt que d'une copie, et ne peut transmettre une exécution libérée au compositeur d'AnyDPP que lorsque la source de l'exécution est une trace du corridor.
La question de recherche
Comment des structures sources hétérogènes peuvent-elles être transformées en un modèle cible compatible DPP sans perdre la provenance, le sens ou le lien avec les preuves, sous une forme qu'une personne peut examiner ?
- Comment ce champ source devient-il ce champ cible ?
- Quelle version de la correspondance l'a produit ?
- Qu'est-ce qui manque, et est-ce important ?
- Quelles preuves se trouvent derrière chaque champ ?
Le modèle, de façon interactive
Un export fournisseur en portugais, mis en correspondance avec des champs de passeport. Ce sont la définition et la source utilisées dans les propres tests du module. Sélectionnez une règle pour suivre un champ, ou changez de version de correspondance pour voir ce qui a changé.
Structure source
- produto.
nome" café ARÁBICA " - produto.
pais"br" - produto.
data"04/05/2026" - produto.
peso"1.200,50" - observacoes"nada"Lu par aucune règle
Règles de correspondance
Structure cible
- type"DigitalProductPassport"
- credentialSubject.
product. name"Cafe Arabica"Preuve: supplier-export - credentialSubject.
product. originCountry"BR"Preuve: supplier-export - credentialSubject.
product. producedOn"2026-05-04" - credentialSubject.
product. mass"1200.50"
Complétude
2 sur 2 requis · 3 sur 3 facultatifs
Tous les champs requis sont présents. La structure peut être validée au regard du schéma et libérée par une personne.
Primitives fondamentales
Définition de correspondance
MappingDefinitionUne règle par champ cible. Des données, pas du code, validées au chargement : une transformation inconnue échoue au chargement, et non silencieusement à l'exécution.
Règle de champ
FieldRuleUn chemin source ou une constante, une transformation, requis ou facultatif, la source de preuves derrière la valeur, et un libellé qu'une personne peut lire.
Liste fermée de transformations
Transformtrim, upper, lower, title, iso_date, decimal, country_code. En ajouter une est un acte délibéré accompagné d'un test ; il n'y a pas de langage d'expressions.
Version immuable
draft → published → retiredUne correspondance publiée ne peut jamais changer. Un changement est une nouvelle version sous le même nom, et chaque exécution enregistre la version qui l'a produite.
Diagnostic par champ
DiagnosticMis en correspondance, constante, manquant ou échec de transformation, à côté du champ, ainsi que les champs sources qu'aucune règle ne lit et les décomptes de complétude.
Libération humaine
compose.handoffLe moment où le résultat cesse d'être interne est la décision d'une personne, enregistrée comme acte d'autorité. Ce n'est pas une machine qui le choisit.
Un scénario, étape par étape
De l'export d'un fournisseur à une structure qui pourrait alimenter un passeport.
Étape 1 sur 6: Écrire la correspondance sous forme de données
Des règles pour le nom, le pays d'origine, la date de production et la masse, chacune avec une transformation et, là où cela compte, la source de preuves.
La correspondance est appliquée à un échantillon. La prévisualisation n'écrit rien, de sorte qu'un brouillon peut être essayé aussi souvent que nécessaire.
La version est figée. À partir de là, une question comme « pourquoi ceci a-t-il produit cela » a toujours une réponse.
La source est hachée dans la chaîne, chaque règle produit son diagnostic, et le résultat est validé au regard du schéma UNTP épinglé.
Une personne libère l'exécution. Une exécution échouée ne peut pas être libérée ; une exécution libérée conserve sa libération même si la transmission est refusée.
Une exécution issue d'une trace du corridor va au compositeur d'AnyDPP. Toute autre source est refusée avec un motif, et non composée.
Ce qui existe, et ce qui n'existe pas
Dans le dépôt
- app/products/any2dpp/mapping.py : définition, transformations fermées, diagnostics par champ, complétude, champs sources non lus
- service.py : créer, modifier un brouillon, publier, retirer, prévisualiser, exécuter, demander la libération, libérer, transmettre
- adapters/anydpp.py : l'unique fichier qui atteint AnyDPP, pour son schéma épinglé et son compositeur
- tables any2dpp_mappings et any2dpp_runs ; 14 routes authentifiées
- tests/any_family/test_any2dpp.py : moteur, immuabilité, le contrôle de libération, le véritable adaptateur AnyDPP (31 tests)
Programme de recherche, non construit
- Introspection du schéma source : la source est une charge utile, et rien n'en déduit la forme
- Une représentation intermédiaire canonique entre la source et la cible
- Mise en correspondance de vocabulaires et conversion d'unités au-delà des transformations nommées
- Listes et cardinalité : les chemins sont des clés pointées dans des objets, délibérément pour l'instant
- Comparaisons entre versions de correspondance et migration entre versions du profil cible
- Un écran de rédaction guidée : la prévisualisation et les diagnostics existent, l'éditeur en plusieurs étapes non
- Composer un passeport à partir d'une source arbitraire : le compositeur d'AnyDPP lit une trace, selon son propre contrat
Ce qui le distingue
- AnyDPP
Sa question
Comment fonctionne un pipeline complet, des preuves jusqu'au passeport ?
Pourquoi ce n'est pas la même chose
AnyDPP lit les sources pour lesquelles il dispose d'extracteurs. Any2DPP étudie comment n'importe quelle structure source est décrite au système sous la forme d'un contrat versionné et examinable.
- AnyTrace
Sa question
Où cette chose est-elle passée ?
Pourquoi ce n'est pas la même chose
Any2DPP rattache les champs mis en correspondance aux preuves de la trace ; il ne suit pas la chose elle-même.
- AnyVerify
Sa question
Les preuves étayent-elles cette affirmation ?
Pourquoi ce n'est pas la même chose
Un champ mis en correspondance est un champ bien formé, pas un champ vérifié.
Sa place dans AnyLAI
Any2DPP
- AnyDPPValide au regard du schéma UNTP 0.7.0 épinglé par AnyDPP et transmet à son compositeur les exécutions issues d'une trace, via un adaptateur.
- AnyTraceUne exécution est liée au dossier de traçabilité dont elle met en correspondance les données ; les champs sont rattachés aux preuves de cette trace.
- Application kernelLes exécutions sont des dossiers du noyau ; le hachage de la source est dans la chaîne ; la libération est un acte d'autorité.
- COADFLa connaissance des règles sous forme de données, un chargement avec refus par défaut et un chemin déterministe sans modèle de langage : les principes de COADF, appliqués, sans revendication de conformité.
- lien entre dossiers via le noyau
- usage direct d'un autre module ou système
- appel en mode fantôme : enregistré, jamais exécuté
Limites et non-objectifs
- Il n'émet, ne signe ni ne publie jamais de passeport.
- Il ne détient pas la norme du passeport ; il vérifie au regard du schéma qu'AnyDPP épingle.
- Il ne peut transmettre que des exécutions issues d'une trace du corridor.
- Un champ qui se met proprement en correspondance est bien formé, pas vrai.
État actuel
Statut de recherche
- Concept de recherche · prototype non publié
- Non publié : routes désactivées
- Aucun usage en production, aucune donnée réelle
- 31 tests dans le dépôt
Un module prototype reposant sur le noyau partagé : moteur de correspondance, service, adaptateur, tables, routes et tests. Désactivé, non publié, non utilisé sur des données réelles de fournisseurs. Le programme de recherche ci-dessus est plus vaste que ce qui existe, et il est présenté comme un programme.
Suite de tests: python-backend/tests/any_family/test_any2dpp.py
Projet de recherche · R&D indépendante · Pas une offre commerciale
