etalab / transport-site

Rendre disponible, valoriser et améliorer les données transports
https://transport.data.gouv.fr
194 stars 30 forks source link

Validateur vs GTFS-Flex : ne pas afficher d'erreur en attendant de valider le format "GTFS-Flex" #3058

Closed cyrilmorin closed 1 year ago

cyrilmorin commented 1 year ago

Hello,

Comme vu ensemble les 1ers GTFS-Flex vont arrivés et à ce jour ils vont être détecté "en erreur" par le validateur car les éléments testés sont logiquement différents.

J'ai mis en "Privé" le GTFS-Flex de TAO sur notre espace producteur pour que vous puissiez regarder ce qu'il y a à l'intérieur. Voici celle du producteur (soucis ODS pour la publication)

Vous trouverez ici un autre exemple non référencé sur le PAN Pour info et après avoir un peu regarder la spec GTFS-Flex v2

Je pense qu'on aura dans l'avenir 2 types de ressources : 1- 1 GTFS standard + 1GTFS pur TAD zonal (avec donc l'offre TAD uniquement) 2- 1 GTFS avec toute l'offre (probablement plus tard vu l'avancement sur le sujet et les outils différents de modélisation des ses types d'offres)

On pourrait donc dans un 1er temps ajouter un type de format gtfs-flex pour ne pas sortir les erreurs sur les jeu pur TAD et encourager les producteurs à les publier même si on ne garantira pas à ce jour la qualité/complétude du jeu

Dispo pour en parler :)

AntoineAugusti commented 1 year ago

Un exemple de rapport de validation avec une erreur avec ce ZIP FlexExample--on-demand-service.zip.

Le problème est que stop_times.stop_id indique area_294 qui n'est pas dans stops.txt mais dans locations.geojson, cas non géré par notre validateur GTFS.

On indique aussi des fichiers superflus :

ajoutés par GTFS-FlexibleTrips et GTFS-BookingRules

fchabouis commented 1 year ago

On pourrait dans un premier temps détecter la présence de booking_rules.Txt et de locations.geojson, et sortir une erreur dans le validateur disant qu'il ne sait pas valider du GTFS Flex. Puis adapter le site pour dire que si cette erreur est détectée, on affiche un "pas de validation disponible pour le GTFS Flex".

Et voir dans le futur si on a envie de faire évoluer le validateur pour gérer le Flex...

Qu'en pensez vous ?

cyrilmorin commented 1 year ago

@fchabouis ça me semble une bonne idée pour à la fois ne pas "valider" un fichier qu'on ne valide pas vraiment, expliquer pourquoi et donc ne pas bloquer sa potentielle réutilisation

On pourrait d'ailleurs plutôt afficher un "avertissement" plutôt qu'une "erreur" pour ne pas signaler un JDD "en erreur" s'il respecte les 1ers éléments existants de la spec (même non finalisée) ? Vu qu'on ne check finalement pas ?

Après pour la création du format "gtfs-flex" ce serait vraiment bien d'afficher l'étiquette "gtfs-flex" sur la ressource et par domino sur la page de recherche du JDD à l'image du gtfs, gtfs-rt, NeTex ...

AntoineAugusti commented 1 year ago

@fchabouis On a déjà la liste des fichiers contenus dans le ZIP par le biais de resource_history.payload.filenames, ça pourrait être utile pour détecter la présence de locations.geojson.

En revanche on ne sait pas que c'est un GTFS Flex tant qu'on n'a pas analysé son contenu et d'ordinaire on n'inspecte pas le contenu pour déterminer un format d'une ressource. Peut-être se reposer sur du déclaratif dans data.gouv.fr en regardant le format et le title de la ressource pour déterminer si c'est bien un GTFS Flex et en faire un traitement différent ?

cyrilmorin commented 1 year ago

Hello,

Un nouveau cas qui questionne le producteur à juste titre. TAD 3CM

Peut-on trouver une solution simple pour détecter et ne pas valider un GTFS avec extension Flex (format de la ressource ? description ? ... ) en attendant de pousser le sujet sur la prise en compte du format ?

Dispo pour en parler !

AntoineAugusti commented 1 year ago

Pour le moment il n'y a que le JDD partagé par Cyril qui publie du GTFS Flex, vérifié avec la présence du fichier locations.geojson requis par GTFS Flex.

select
  rh.payload->>'filenames',
  d.id dataset_id,
  'https://transport.data.gouv.fr/datasets/' || d.slug,
  r.title
from resource r
join dataset d on d.id = r.dataset_id and d.is_active
join (
  select
    rh.*,
    row_number() over (partition by rh.resource_id order by rh.inserted_at desc) row_number
  from resource_history rh
) rh on rh.resource_id = r.id and rh.row_number = 1 and rh.payload->>'format' = 'GTFS'
where (rh.payload->>'filenames')::varchar like '%geojson%';

Il devrait y avoir TAO TAD Orléans mais ils ne publient pas de manière adéquate. cc @etalab/transport-bizdev

AntoineAugusti commented 1 year ago

Après discussion avec @cyrilmorin nous avons décidé d'identifier ces fichiers par la présence d'un fichier locations.geojson dans l'archive ZIP et de ne pas valider avec notre validateur en conséquence. On conserve le format GTFS.

On prévoit aussi un message expliquant la situation :