Aller au contenu

Projet indépendant de R&D · Cologne

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é.

Version de la correspondance
Source telle qu'exportée

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

    MappingDefinition

    Une 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

    FieldRule

    Un 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

    Transform

    trim, 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 → retired

    Une 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

    Diagnostic

    Mis 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.handoff

    Le 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

  1. 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.

  2. 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.

  3. La version est figée. À partir de là, une question comme « pourquoi ceci a-t-il produit cela » a toujours une réponse.

  4. 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é.

  5. 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.

  6. 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