Skip to content

Bug dans l'interprétation des erreurs "task-error" dans le rapport de validation de l'UI

Contexte

Dans le cas où l'on choisit par mégarde un fichier de données à valider qui ne correspond pas au schéma attendu (par exemple un fichier de données de Délibérations pour un schéma de Subventions), un message d'erreur apparaît "Le schéma n'est pas valide selon la spécification TableSchema.Validation annulée." dans l'interface : image

L'extrait du rapport de validation de validata_core correspondant est le suivant :

validata exemple_valide_subventions.csv --schema https://git.opendatafrance.net/scdl/deliberations/-/raw/master/schema.json

{
  "date": "2022-12-29T08:40:49.506466+00:00",
  "errors": [
    {
      "code": "task-error",
      "description": "General task-level error.",
      "message": "The task has an error: list assignment index out of range",
      "name": "Task Error",
      "note": "list assignment index out of range",
      "tags": []
    }
  ],
  "stats": {
    "errors": 1,
    "tasks": 0
  },
  "tasks": [],
  "time": 0.048,
  "valid": false,
  "version": "4.38.0"
} 

Reproduction du bug :

Version de validata-core : 0.9.3

Version de validata-ui : 0.7.1

Schéma utilisé : Délibérations v2.1.4

Fichier de données utilisé : exemple_valide_subventions.csv

Problème

L'erreur qui apparaît dans le rapport de validation de validata-core est de type "task-error" et non de type "schema-error". L'interprétation de cette erreur par l'interface de Validata.fr est impertinente, d'autant plus que le code de validata-ui prévoit l'affichage d'un message d'erreur particulier pour les erreurs de type "task-error" : "Une erreur est survenue durant la validation : {err_msg!r}. Pour plus d'information, consultez la FAQ."

Toutefois en l'état actuel, validata-ui ne filtre pas les report.errors de type "task-error", mais uniquement les report.tasks[].errors (cf doc frictionless), ce qui explique pourquoi l'erreur de type "task-error" mentionnée dans le rapport de validation de validata_core n'est pas interprétée comme telle de l'interface de Validata.fr.

Solution proposée

Retravailler le code de validata-ui dans son ensemble pour que, pour chaque type d'erreur apparaissant dans le rapport de validation de validata_core, toutes les report.errors et les report.tasks[].errors puissent être interprétées avec un message d'erreur cohérent dans l'interface.