diff options
| author | Michel Etienne | 2014-02-20 11:12:18 +0100 |
|---|---|---|
| committer | Michel Etienne | 2014-02-20 11:12:18 +0100 |
| commit | 8778417b9dabe8e1dc17eede0c423b8976faa88a (patch) | |
| tree | 9f3f567f6654539819d544494a176130cb4cb0ab | |
| parent | b086fced7397d105b265743434429e2db7c68007 (diff) | |
| parent | 8264d5ece61d84cbef37102e94fa491070b0e791 (diff) | |
| download | chouette-core-8778417b9dabe8e1dc17eede0c423b8976faa88a.tar.bz2 | |
Merge branch 'V2_2'
| -rw-r--r-- | app/helpers/compliance_check_results_helper.rb | 4 | ||||
| -rw-r--r-- | app/views/compliance_check_results/index.html.erb | 2 | ||||
| -rw-r--r-- | app/views/help/imports.textile | 75 | ||||
| -rw-r--r-- | app/views/help/validations.textile | 71 | ||||
| -rw-r--r-- | config/environments/development.rb | 5 | ||||
| -rw-r--r-- | config/environments/production.rb | 4 | ||||
| -rw-r--r-- | config/environments/test.rb | 2 | ||||
| -rw-r--r-- | config/locales/compliance_check_results.yml | 237 |
8 files changed, 344 insertions, 56 deletions
diff --git a/app/helpers/compliance_check_results_helper.rb b/app/helpers/compliance_check_results_helper.rb index a24cbaa23..c2099562a 100644 --- a/app/helpers/compliance_check_results_helper.rb +++ b/app/helpers/compliance_check_results_helper.rb @@ -10,4 +10,8 @@ module ComplianceCheckResultsHelper end end + def test_definition (compliance_check_result_code) + Rails.application.config.validation_spec + I18n.locale.to_s + "/" + compliance_check_result_code +".html" + end + end diff --git a/app/views/compliance_check_results/index.html.erb b/app/views/compliance_check_results/index.html.erb index 532e32be0..3a73f2146 100644 --- a/app/views/compliance_check_results/index.html.erb +++ b/app/views/compliance_check_results/index.html.erb @@ -18,7 +18,7 @@ <td><%= t compliance_check_result.severity, :scope => "compliance_check_result.severities" %></td> <td> <%= image_tag "icons/notice.png", :"data-content" => ComplianceCheckResult.human_attribute_name(compliance_check_result.rule_code), :"data-title" => t("activerecord.attributes.compliance_check_result.detail"), :class =>"notice" %> - <%= link_to compliance_check_result.rule_code, "#", :title => ComplianceCheckResult.human_attribute_name(compliance_check_result.rule_code) %></td> + <%= link_to compliance_check_result.rule_code, test_definition(compliance_check_result.rule_code), :title => ComplianceCheckResult.human_attribute_name(compliance_check_result.rule_code), :target => "validation" %></td> <% if @compliance_check_results && @compliance_check_results.first.status == "nok" %> <td class="td_error"> <% if compliance_check_result.detail.present? %> diff --git a/app/views/help/imports.textile b/app/views/help/imports.textile index 971287643..f8610134f 100644 --- a/app/views/help/imports.textile +++ b/app/views/help/imports.textile @@ -3,11 +3,23 @@ layout: default title: Imports --- -h3. Rôle +* "Rôle":#rol +* "Validation":#val +* "Formats disponibles":#fmt +* "Paramètres communs":#com +* "Options des formats":#opt +* "l’onglet IMPORTS":#imp +* "Nouvel Import":#new +* "Paramètres de validation":pvl +* "Consultation des résultats":#res +* "Résultats de validation":#rvl -p. L'import permet d'enregistrer dans la base un ensemble de données selon un format au choix -h3. Validation +h3(#rol). Rôle + +p. L’import permet d’enregistrer dans la base un jeu de données d'offre TC, selon un format au choix. Des tests de validation des données sont exécutés avant l'import en base de données (plus détaillées dans le cas du format Neptune). Il est possible d'importer sans sauver en base, uniquement pour jouer les tests de vérification de conformité. Dans ce cas les tests en base de données (auxquels sont associés les jeux de paramètres) ne seront pas exécutés (et donc aucun test ne sera exécuté, pour des données CSV, GTFS, ou Netex). + +h3(#val). Validation p. Lors de l'import, des tests sont effectués : @@ -19,7 +31,7 @@ p(olnext). - nécessite la fourniture d'un jeu de paramètres définissant les s p(note). Les tests de niveau 1 et 2 ne sont actuellement implémentés que pour le format Neptune -h3. Formats disponibles +h3(#fmt). Formats disponibles - Neptune := format normalisé des échanges de données de transport en commun pour la France (cf "Normalisation":normalisation) - NeTEx := format d'échange de données de transport en commun expérimental sur la norme européenne ["NeTEx":http://normes-donnees-tc.org/spip.php?article66] mais limité au sous-ensemble des données définies dans la norme Neptune @@ -29,7 +41,7 @@ format originaire de ["Google Transit":https://support.google.com/transitpartner p(olnext). - les données exportées en GTFS sont explicités ["ICI":http://normes-donnees-tc.org/spip.php?article64] -h3. Paramètres communs +h3(#com). Paramètres communs - Pas de sauvegarde := permet d'effecter une simulation de l'import sans enregistrer les données @@ -41,7 +53,7 @@ p(ddnext). - les jeux de paramètres sont créés via le lien ["Jeux de paramèt - Fichier à importer := fichier (plat ou zip selon format) -h3. Options des formats +h3(#opt). Options des formats Les options des différents formats apparaissent en fonction de celui qui a été choisi. @@ -74,34 +86,45 @@ une distance de 0 ne génère aucune correspondance =: préfixe à utiliser pour générer les identifiants Neptune des objets importés, initialisé à la valeur définie pour l'espace de données =: -h3. Consultation des résultats +h3(#imp). l'onglet IMPORTS -p. L'import est lancé en différé; son état d'avancement est affiché sous la forme d'une icône dont la couleur dépend de l'état: +p. L'onglet IMPORTS contient les objets Import de l'espace de données courant. -- bleu : en cours -- vert : terminé correctement -- rouge : terminé en échec (L'import n'a pas pu aboutir, contacter l'administrateur système pour plus de détails) +p. Chaque objet Import est représenté par une vignette comprenant : sa date, l'utilisateur qui l'a créé, son état (bleu : en cours ; vert : terminé correctement ; rouge : terminé en échec), un lien pour télécharger le fichier importé, un lien vers le détail de l'objet, un lien vers l'objet Validation associé). -p. Le résultat est conservé tant que l'import n'est pas supprimé. +p=. !import.png! -p(note). Note : la suppression d'un import ne fait que supprimer le rapport; les données sont conservées +p. Comme les fichiers importés restent stockés en base, il est opportun que l'utilisateur supprime périodiquement les objets Imports devenus inutiles. La suppression supprimera aussi les objets Validation associés. -p. La consultation du résultat de l'import donnera : +p. Dans la partie droite de l'écran, -p=. !import.png! +* créer un nouvel Import +* Jeu de paramètres + +h3(#new). Nouvel Import + +p. Il est possible de modifier le jeu de paramètres par défaut ou de créer un nouveau Jeu de paramètres. Il est possible de ne choisir aucun jeu de paramètres. + +p. L’import est lancé en différé, son résultat n'est pas immédiat. Le résultat est conservé tant que l’import n’est pas supprimé. L'import lance également la validation (avec ou sans jeu de paramètres associés), ce qui crée un objet Validation associé. La suppression d’un import également l'objet Validation associé à cet import ; néanmoins si les données ont été sauvergardées en base, elles seront conservées. -* le lien 'Import _Format n°_' permet de voir les éléments et volumes importés -* le lien 'Fichier importé' permet de récupérer le fichier source de l'import -* le lien 'Validation' permet de consulter les résultats des tests de validation exécutés lors de l'import +p. Si les données ne sont pas sauvées en base, il faut relancer un import avec sauvegarde si on souhaite effectivement importer ces données en base après une première validation « à blanc ». -h4. Résultats d'import +h3(#pvl). Paramètres de validation + +p. Il est possible de modifier le jeu de paramètres par défaut ou de créer un nouveau Jeu de paramètres. Les paramètres de vitesses et durée entre arrêts successifs sont définis mode par mode. + +h3(#res). Consultation des résultats : détail de l'objet Import p=. !import_result.png! p. Le résultat d'import fournit 2 synthèses : -# Synthèse des fichiers analysés -# Synthèse des lignes lues +# Synthèse des fichiers analysés (à gauche) +# Synthèse des lignes lues (à droite) + +p. Le bouton « Fichier Importé » permet de télécharger le fichier sur son poste. + +p. Le bouton « Validation » permet de basculer vers la validation des données. p. _1 - La synthèse des fichiers analysés affiche 3 secteurs_ @@ -111,7 +134,9 @@ p(border_image). !import_file_result.png! * en rouge les fichiers comportant des erreurs qui empêche leur traitement * en gris les fichiers ignorés -p. La sélection d'un des secteurs affiche la liste des fichiers concernés : +p. En passant la souris sur chaque partie, le nombre de fchiers correspondant est affiché. + +p. La sélection (clic souris) d'un des secteurs affiche la liste des fichiers concernés : p(border_image). !import_file_detail.png! @@ -132,7 +157,11 @@ p. La sélection de l'histogramme affiche le détail des lignes lues : p(border_image). !import_line_detail.png! -h4. Résultats de validation +p. un survol affiche le nombre de données concernées par type. + +p. la sélection du graphique affiche le détail par ligne + +h3(#rvl). Résultats de validation p. Les résultats de validation des niveaux 1, 2 et 3 sont consolidés dans un même formulaire de résultat. voir "Validation":validations diff --git a/app/views/help/validations.textile b/app/views/help/validations.textile index d4eb25880..7101739fb 100644 --- a/app/views/help/validations.textile +++ b/app/views/help/validations.textile @@ -3,37 +3,49 @@ layout: default title: Validation --- -h3. Rôle +* "Rôle":#rol +* "Formats disponibles":#fmt +* "Ajouter une Validation":#new +* "Consultation des résultats : détail de l'objet Validation":#res +* "Résultats de validation":#rvl -p. La validation permet d'effectuer un ensemble de contrôles syntaxiques, sématiques et structurels sur une offre de transport. -Elle se décompose en 3 phases (ou niveaux) +h3(#rol). Rôle -- Phase 1 := les données doivent respecter un format d'échange définissant une syntaxe et une sémantique précise (Actuellement seul le format Neptune est implémenté) -- Phase 2 := les données doivent respecter le niveau de complétude et de cohérence du format d'échange (Actuellement seul le format Neptune est implémenté). -- Phase 3 := l'offre est analysée dans ses fonctionnalités et subit des contrôles de réalisme, cette phase est indépendante du format d'échange. +p. La validation effectue un ensemble de contrôles syntaxiques, sémantiques et structurels sur un jeu de données d'offre de transport collectif, à 3 niveaux : -Les tests de validation sont décrits sur le site "chouette.mobi":http://www.chouette.mobi/spip.php?rubrique24 +* les deux premiers niveaux sont spécifiques à Neptune (dans la version actuelle): +** les données d’offre de transport sont importées depuis le format Neptune et subissent des contrôles vis-à-vis du format XML et du Schéma XSD Neptune ; +** les données d’offre sont analysées (structure, contrôles de complétude et de connexité des données) ; +* le 3ème niveau d'analyse concerne plutôt des contrôles du « réalisme » des données ; il peut être effectué en base de données, donc y compris sur des données importées depuis un autre format que Neptune (GTFS, CSV, etc.). A ces points de contrôle est associé un jeu de paramètres modifiable par l'utilisateur. -h3. Formats disponibles +p. Les tests (« points de contrôle ») de validation Neptune sont décrits sur le site "chouette.mobi":http://www.chouette.mobi/spip.php?rubrique108 + +h3(#fmt). Formats disponibles - Neptune := format normalisé des échanges de données de transport en commun pour la France (cf "Normalisation":normalisation) - Données internes Chouette := tests sur les objets déjà importés ou créés/modifiés en base (Phase 3 uniquement) -h3. Activation +h3(#val). Onglet VALIDATIONS + +p. L'onglet VALIDATIONS contient les objets Validation de l'espace de données courant. A chaque objet Import est associé un objet Validation. -La validation peut être activée sur un fichier lors de son import en précisant les paramètres nécessaires à la phase 3. +p. Chaque objet Validation est représenté par une vignette comprenant : sa date, l'utilisateur qui l'a créé, son état (bleu : en cours ; vert : terminé correctement ; rouge : terminé en échec), un lien vers le détail de l'objet, et le cas échéant : un lien vers l'objet Import associé s'il existe, un lien vers le jeu de paramètres s'il existe). + +p=. !validation.png! -L'onglet validation permet de réaliser un contrôle 'Phase 3' sur tout ou partie des lignes stockées en base. +p. Dans la partie droite de l'écran : -h3. Paramètres communs +* ajouter une Validation +* Jeu de paramètres -- Jeu de paramètres pour validation := paramètres définisant les seuils des tests de niveau 3 +h3(#new). Ajouter une Validation -p(ddnext). - les jeux de paramètres sont créés via le lien ["Jeux de paramètres":parametersets] disponible sur les vues des listes d'imports et de validations +p. A chaque objet Import est associé un objet Validation, mais l'inverse est faux : on peut créer de nouveaux objets Validation, afin de faire passer des tests de validation de données en base. L'utilisateur doit sélectionner : -- Type de données incluses := critère de sélection des lignes à contrôler. +* un ["jeu de paramètres":parametersets] pour cette validation +* les données incluses : Toutes, ou un ou plusieurs Lignes, Réseaux, Transporteurs, Groupes de lignes. -h3. Consultation des résultats +h3(#res). Consultation des résultats : détail de l'objet Validation p. La validation est lancée en différé; son état d'avancement est affiché sous la forme d'une icône donc la couleur dépend de l'état: @@ -41,24 +53,21 @@ p. La validation est lancée en différé; son état d'avancement est affiché s - vert : terminé correctement - rouge : terminé en échec (la validation n'a pas pu aboutir, contacter l'administrateur système pour plus de détails) -p. Le résultat est conservé tant que la validation n'est pas supprimée. +p. La consultation du résultat de la validation donne le bilan des contrôles ou les motifs de l’échec. Le résultat est conservé tant que la validation n’est pas supprimée. -p. La consultation du résultat de la validation donnera : +p. Pour une validation terminée, on peut : -p=. !validation.png! - -* le lien 'Validation _n°_' permet de voir la liste des tests de validation effectués sur le jeu de données -* le lien 'Import' permet de voir le bilan d'import si la validation est faite sur fichiers -* le lien 'Jeu de paramètres' permet de consulter les paramètres de seuils pour les tests de phase 3 +* basculer vers l'onglet d'import des données (s'il y a lieu) +* visualiser les résultats : -h4. Résultats de validation +h3(#rvl). Résultats de validation p=. !validation_result.png! p. Le résultat de validation fournit 2 synthèses : -# Synthèse des tests obligatoires -# Synthèse des tests optionnels +# Synthèse des tests obligatoires (à gauche) +# Synthèse des tests optionnels (à droite) p. _1 - La synthèse des tests obligatoires affiche 3 secteurs_ @@ -66,17 +75,19 @@ p(border_image). !validation_mandatory_result.png! * en vert les tests valides * en rouge les tests en échec -* en gris les tests non réalisables (contexte du test ne permettant pas de l'effectuer) +* en gris les tests ignorés (contexte du test ne permettant pas de l'effectuer) p(olnext). exemple : tests sur les accès avec aucun accès dans le jeu de données à valider +p. En passant la souris (resp. en cliquant) sur chaque partie on affiche le nombre de tests correspondants (resp. la liste des tests) + p. _2 - La synthèse des tests optionnels affiche 3 secteurs_ p(border_image). !validation_optionnal_result.png! * en vert les tests valides * en jaune les tests en échec -* en gris les tests non réalisables (contexte du test ne permettant pas de l'effectuer) +* en gris les tests ignorés (contexte du test ne permettant pas de l'effectuer) p. Dans les 2 cas, la sélection d'un des secteurs affiche la liste des tests concernés avec le détail en cas d'erreur @@ -86,7 +97,9 @@ Une bulle d'information s'affiche en sélectionnant une icone bleue !notice.png! p(border_image). !validation_bulle.png! -En cas d'erreur, la localisation est fournie dans la colonne 'Détail': +p. La spécificaation du test s'affiche par le lien sur le code + +p. En cas d'erreur, la localisation est fournie dans la colonne 'Détail': * pour les tests des phases 1 et 2, par l'emplacement (nom du fichier, ligne et colonne) de l'objet en erreur, * pour les tests de la phase 3, par un lien vers la page de consultation de l'objet en erreur. diff --git a/config/environments/development.rb b/config/environments/development.rb index 62c8a6f0d..8a6eee7d3 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -41,6 +41,9 @@ ChouetteIhm::Application.configure do # file to data for demo config.demo_data = "tmp/demo.zip" + # link to validation specification pages + config.validation_spec = "http://www.chouette.mobi/neptune-validation/v20/" + # Configure the e-mail address which will be shown in Devise::Maile config.mailer_sender = "appli@chouette.mobi" @@ -50,7 +53,7 @@ ChouetteIhm::Application.configure do } # api key to geoportail IGN (development key 3 month validity) - config.geoportail_api_key = "f1t6wihbh98njlbaf5cuzxy4" + # config.geoportail_api_key = "f1t6wihbh98njlbaf5cuzxy4" config.to_prepare do Devise::Mailer.layout "mailer" diff --git a/config/environments/production.rb b/config/environments/production.rb index 70da48605..54d89be28 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -112,6 +112,10 @@ ChouetteIhm::Application.configure do # file to data for demo config.demo_data = "/var/lib/chouette/demo.zip" + # link to validation specification pages + config.validation_spec = "http://www.chouette.mobi/neptune-validation/v20/" + + # paths for external resources #if ENV['OS'] == 'Windows_NT' # config.to_prepare do diff --git a/config/environments/test.rb b/config/environments/test.rb index ee03afbea..fdfe9f527 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -44,6 +44,8 @@ ChouetteIhm::Application.configure do # Print deprecation notices to the stderr config.active_support.deprecation = :stderr + # link to validation specification pages + config.validation_spec = "http://www.chouette.mobi/neptune-validation/v20/" config.to_prepare do Chouette::Command.command = "true" diff --git a/config/locales/compliance_check_results.yml b/config/locales/compliance_check_results.yml index 27dfdbc71..cda7f7b32 100644 --- a/config/locales/compliance_check_results.yml +++ b/config/locales/compliance_check_results.yml @@ -1,4 +1,8 @@ en: + compliance_check_results: + index: + line: "Li" + column: "Col" compliance_check_result: severities: error: "Obligatory Tests" @@ -7,6 +11,126 @@ en: nok: "Error" na: "Unavailable" ok: "Success" + details: + #### level 1 + ## NEPTUNE + detail_1_neptune_xml_1: "%{xmlKey} : %{message}" + detail_1_neptune_xml_2: "%{xmlKey} : %{message}" + #### level 2 + ## NEPTUNE + detail_2_neptune_common_1: "L'élément %{objectId} a des attributs qui diffèrent entre les différents fichiers qui le définissent" + detail_2_neptune_common_2: "L'élément %{objectId} partage l'attribut RegistrationNumber = %{RegistrationNumber} avec un autre objet de même type" + detail_2_neptune_network_1: "La ligne %{lineId} est absente de la liste des lignes du réseau %{objectId}" + detail_2_neptune_groupofline_1: "La ligne %{lineId} est absente de la liste des lignes du du groupe de lignes %{objectId}" + detail_2_neptune_stoparea_1: "Le fils (contains = %{contains}) de l'arrêt %{objectId} n'est pas de type StopArea ni StopPoint" + detail_2_neptune_stoparea_2: "L'arrêt %{objectId} de type %{parentType} ne peut contenir que des arrêts de type StopPlace ou CommercialStopPoint, or un des arrêts contenus (contains = %{contains}) est de type %{type}" + detail_2_neptune_stoparea_3: "L'arrêt %{objectId} de type %{parentType} ne peut contenir que des arrêts de type BoardingPosition ou Quay, or un des arrêts contenus (contains = %{contains}) est de type %{type}" + detail_2_neptune_stoparea_4: "L'arrêt %{objectId} de type %{parentType} ne peut contenir que des points d'arrêt de séquence, or un des arrêts contenus (contains = %{contains}) est un StopArea arrêt de type %{type}" + detail_2_neptune_stoparea_5: "L'arrêt %{objectId} référence une position géographique (centroidOfArea = %{centroidOfArea}) inexistante" + detail_2_neptune_stoparea_6: "L'arrêt %{objectId} référence une position géographique (centroidOfArea = %{centroidOfArea}) qui ne le référence pas en retour (containedIn = %{containedIn})" + detail_2_neptune_itl_1: "Le fils (contains = %{contains}) de type %{type} ne peut pas être contenu dans l'arrêt %{objectId} de type %{parentType}" + detail_2_neptune_itl_2: "L'arrêt de type ITL %{objectId} n'est pas utilisé" + detail_2_neptune_itl_3: "L'arrêt areaId = %{areaId} référencé par l'ITL %{name} n'existe pas" + detail_2_neptune_itl_4: "L'arrêt areaId = %{areaId} référencé par l'ITL %{name} devrait être de type ITL et non de type %{type}" + detail_2_neptune_itl_5: "La référence lineIdShortCut = %{lineIdShortCut} de l'ITL %{name} n'est pas cohérente avec la ligne %{lineId}" + detail_2_neptune_areacentroid_1: "La position géographique <AreaCentroid> %{objectId} référence un arrêt (containedIn = %{containedIn}) inexistant" + detail_2_neptune_areacentroid_2: "La position géographique <AreaCentroid> %{objectId} utilise un référentiel géographique (longLatType = %{longLatType}) invalide" + detail_2_neptune_connectionlink_1: "La correspondance %{objectId} référence 2 arrêts inexistants (startOfLink = %{startOfLink} et endOfLink = %{endOfLink})" + detail_2_neptune_accesspoint_1: "L'accès %{objectId} référence un arrêt parent (containedIn = %{containedIn}) inexistant" + detail_2_neptune_accesspoint_2: "L'accès %{objectId} référence un arrêt parent (containedIn = %{containedIn}) de type invalide (ITL)" + detail_2_neptune_accesspoint_3: "L'accès %{objectId} n'a pas de lien d'accès" + detail_2_neptune_accesspoint_4: "L'accès %{objectId} de type In a des liens d'accès sortants" + detail_2_neptune_accesspoint_5: "L'accès %{objectId} de type Out a des liens d'accès entrants" + detail_2_neptune_accesspoint_6: "L'accès %{objectId} de type InOut n'a que des liens d'accès entrants ou sortants" + detail_2_neptune_accesspoint_7: "L'accès %{objectId} utilise un référentiel géographique (longLatType = %{longLatType}) invalide" + detail_2_neptune_accesslink_1: "La liaison d'accès %{objectId} référence %{link} = %{target} qui n'existe pas" + detail_2_neptune_accesslink_2: "Sur la liaison d'accès %{objectId}, les références startOfLink = %{startOfLink} et endOfLink = %{endOfLink} sont de même type : %{type}" + detail_2_neptune_line_1: "La ligne %{objectId} référence un réseau (ptNetworkIdShortcut = %{ptNetworkIdShortcut} inexistant" + detail_2_neptune_line_2: "La ligne %{objectId} référence un point d'arrêt <StopPoint> (lineEnd = %{lineEnd}) inexistant " + detail_2_neptune_line_3: "La ligne %{objectId} référence référence un point d'arrêt (lineEnd = %{lineEnd}) qui n'est pas terminus d'une séquence d'arrêts" + detail_2_neptune_line_4: "La ligne %{objectId} référence une séquence d'arrêt (routeId = %{routeId}) inexistante" + detail_2_neptune_line_5: "La séquence d'arrêts (routeId = %{routeId}) n'est pas référencée par la ligne %{objectId}" + detail_2_neptune_route_1: "La séquence d'arrêts %{objectId} référence une mission (journeyPatternId = %{journeyPatternId}) inexistante" + detail_2_neptune_route_2: "La séquence d'arrêts %{objectId} référence un tronçon (ptLinkId = %{ptLinkId}) inexistant" + detail_2_neptune_route_3: "La séquence retour (waybackRouteId = %{waybackRouteId}) de la séquence d'arrêts %{objectId} n'existe pas" + detail_2_neptune_route_4: "Le tronçon (ptLinkId = %{ptLinkId}) référencé par la séquence d'arrêt %{objectId} est partagé avec %{routeId}" + detail_2_neptune_route_5: "Le tronçon %{objectId} partage un %{link} : %{target} avec un autre tronçon" + detail_2_neptune_route_6_1: "La séquence d'arrêts %{objectId} n'est pas une séquence linéaire, le chainage des tronçons forme un anneau" + detail_2_neptune_route_6_2: "La séquence d'arrêts %{objectId} n'est pas une séquence linéaire, le chainage des tronçons est rompu à l'arrêt %{stopPointId}" + detail_2_neptune_route_7: "La séquence d'arrêts %{objectId} ne référence pas la mission %{journeyPatternId} alors que cette mission référence la séquence d'arrêt" + detail_2_neptune_route_8: "La mission journeyPatternId = %{journeyPatternId} de la séquence d'arrêts %{objectId} utilise des points d'arrêts hors séquence" + detail_2_neptune_route_9: "Le point d'arrêt (stopPointId = %{stopPointId}) de la séquence d'arrêts %{objectId} n'est utilisé dans aucune mission" + detail_2_neptune_route_10: "La séquence retour (waybackRouteId = %{waybackRouteId}) ne référence pas la séquence d'arrêts %{objectId} comme retour" + detail_2_neptune_route_11: "Le sens (%{waybackValue}) de la séquence d'arrêt %{objectId} n'est pas compatible avec celui (%{oppositeWaybackValue}) de la séquence opposée %{waybackRouteId}" + detail_2_neptune_route_12: "Le départ (stopPointId = %{stopPointId}) de la séquence d'arrêts %{objectId} n'est pas dans la même zone que l'arrivée (stopPointId = %{waybackStopPointId} de la séquence retour %{waybackRouteId}" + detail_2_neptune_ptlink_1: "Le tronçon %{objectId} reférence un %{link} = %{target} inexistant" + detail_2_neptune_journeypattern_1: "La mission %{objectId} référence une séquence d'arrêts (routeId = %{routeId}) inexistante" + detail_2_neptune_journeypattern_2: "La mission %{objectId} référence un point d'arrêt (stopPointId = %{stopPointId}) inexistant" + detail_2_neptune_journeypattern_3: "La mission %{objectId} référence une ligne (lineIdShortcut = %{lineIdShortcut}) inexistante" + detail_2_neptune_stoppoint_1: "Le point d'arrêt %{objectId} référence une ligne (lineIdShortcut = %{lineIdShortcut}) inexistante" + detail_2_neptune_stoppoint_2: "Le point d'arrêt %{objectId} référence un réseau (ptNetworkIdShortcut = %{ptNetworkIdShortcut}) inexistant" + detail_2_neptune_stoppoint_3: "Le point d'arrêt %{objectId} référence un arrêt (containedIn = %{containedIn}) inexistant" + detail_2_neptune_stoppoint_4: "Le point d'arrêt %{objectId} utilise un référentiel géographique (longLatType = %{longLatType}) invalide" + detail_2_neptune_timetable_1: "Le calendrier (<Timetable>) %{objectId} ne référence aucune course existante" + detail_2_neptune_timetable_2: "La course %{objectId} n'est référencée dans aucun calendrier (<Timetable>)" + detail_2_neptune_vehiclejourney_1: "La course %{objectId} référence une séquence d'arrêts (routeId = %{routeId}) inexistante" + detail_2_neptune_vehiclejourney_2: "La course %{objectId} référence une mission (journeyPatternId = %{journeyPatternId}) inexistante" + detail_2_neptune_vehiclejourney_3: "La course %{objectId} référence une ligne (lineIdShortcut = %{lineIdShortcut}) inexistante" + detail_2_neptune_vehiclejourney_4: "La course %{objectId} référence un opérateur (operatorId = %{operatorId}) inexistant" + detail_2_neptune_vehiclejourney_5: "La course %{objectId} référence une fréquence horaire (timeSlotId = %{timeSlotId}) inexistante" + detail_2_neptune_vehiclejourney_6: "La course %{objectId} référence une mission %{journeyPatternId} incompatible de la séquence d'arrêts %{routeId}" + detail_2_neptune_vehiclejourney_7: "La mission %{objectId} n'est référencée par aucune course" + detail_2_neptune_vehiclejourneyatstop_1: "La course %{objectId} fournit un horaire sur un point d'arrêt (stopPointId = %{stopPointId}) inexistant" + detail_2_neptune_vehiclejourneyatstop_2: "Un horaire de la course %{objectId} référence une autre course : vehicleJourneyId = %{vehicleJourneyId}" + detail_2_neptune_vehiclejourneyatstop_3: "La course %{objectId} ne fournit pas les horaires des points d'arrêts selon l'ordre de la séquence d'arrêts %{routeId}" + detail_2_neptune_vehiclejourneyatstop_4: "La course %{objectId} ne fournit pas les horaires des points d'arrêts de sa mission %{journeyPatternId}" + detail_2_neptune_facility_1: "L'équipement %{objectId} est situé sur un arrêt inexistant (containedId = %{containedId})" + detail_2_neptune_facility_2: "L'équipement %{objectId} référence un arrêt (stopAreaId = %{stopAreaId}) inexistant" + detail_2_neptune_facility_3: "L'équipement %{objectId} référence une ligne (lineId = %{lineId} inexistante" + detail_2_neptune_facility_4: "L'équipement %{objectId} référence une correspondance (connectionLinkId = %{connectionLinkId} inexistante" + detail_2_neptune_facility_5: "L'équipement %{objectId} référence un point d'arrêt (stopPointId = %{stopPointId} inexistant" + detail_2_neptune_facility_6: "L'équipement %{objectId} utilise un référentiel géographique (longLatType = %{longLatType}) invalide" + #### level 3 + detail_3_stoparea_1: "L'arrêt %{name} (%{objectId}) n'est pas géolocalisé" + detail_3_stoparea_2: "L'arrêt %{name} (%{objectId}) est localisé trop près de l'arrêt %{areaName} (%{areaId}) : distance %{distance} < %{distanceLimit}" + detail_3_stoparea_3: "Les arrêts %{name} (%{objectId} et %{areaId}) sont desservis par les mêmes lignes" + detail_3_stoparea_4: "L'arrêt %{name} (%{objectId}) est en dehors du périmètre de contrôle" + detail_3_stoparea_5: "L'arrêt %{name} (%{objectId}) est localisé trop loin de son parent %{parentName} (%{parentId}) : distance %{distance} > %{distanceLimit}" + detail_3_accesspoint_1: "L'accès %{name} (%{objectId}) de l'arrêt %{areaName} (%{areaId}) n'est pas géolocalisé" + detail_3_accesspoint_2: "L'accès %{name} (%{objectId}) est localisé trop près de l'accès %{accessName} (%{accessId}) : distance %{distance} < %{distanceLimit}" + detail_3_accesspoint_3: "L'accès %{name} (%{objectId}) est localisé trop loin de son parent %{parentName} (%{parentId}) : distance %{distance} > %{distanceLimit}" + detail_3_connectionlink_1: "Sur la correspondance %{name} (%{objectId}), la distance entre les arrêts %{startName} (%{startId}) et %{endName} (%{endId}) est trop grande : distance %{distance} > %{distanceLimit}" + detail_3_connectionlink_2: "Sur la correspondance %{name} (%{objectId}), la distance entre les arrêts %{startName} (%{startId}) et %{endName} (%{endId}) : %{distance} est supérieure à la longueur du lien : %{linkDistance}" + detail_3_connectionlink_3_1: "Sur la correspondance %{name} (%{objectId}), la vitesse par défaut %{speed} est supérieure à %{speedLimit} km/h" + detail_3_connectionlink_3_2: "Sur la correspondance %{name} (%{objectId}), la vitesse pour un voyageur occasionnel %{speed} est supérieure à %{speedLimit} km/h" + detail_3_connectionlink_3_3: "Sur la correspondance %{name} (%{objectId}), la vitesse pour un voyageur habitué %{speed} est supérieure à %{speedLimit} km/h" + detail_3_connectionlink_3_4: "Sur la correspondance %{name} (%{objectId}), la vitesse pour un voyageur à mobilité réduite %{speed} est supérieure à %{speedLimit} km/h" + detail_3_accesslink_1: "Sur le lien d'accès %{name} (%{objectId}), la distance entre l'arrêt %{startName} (%{startId}) et l'accès %{endName} (%{endId}) est trop grande : distance %{distance} > %{distanceLimit}" + detail_3_accesslink_2: "Sur le lien d'accès %{name} (%{objectId}), la distance entre l'arrêt %{startName} (%{startId}) et l'accès %{endName} (%{endId}) : %{distance} est supérieure à la longueur du lien : %{linkDistance}" + detail_3_accesslink_3_1: "Sur le lien d'accès %{name} (%{objectId}), la vitesse par défaut %{speed} est supérieure à %{speedLimit} km/h" + detail_3_accesslink_3_2: "Sur le lien d'accès %{name} (%{objectId}), la vitesse pour un voyageur occasionnel %{speed} est supérieure à %{speedLimit} km/h" + detail_3_accesslink_3_3: "Sur le lien d'accès %{name} (%{objectId}), la vitesse pour un voyageur habitué %{speed} est supérieure à %{speedLimit} km/h" + detail_3_accesslink_3_4: "Sur le lien d'accès %{name} (%{objectId}), la vitesse pour un voyageur à mobilité réduite %{speed} est supérieure à %{speedLimit} km/h" + detail_3_line_1: "La ligne %{number} : %{name} ( %{objectId}) a une ligne homonyme sur le même réseau %{networkName} (%{networkId})" + detail_3_line_2: "La ligne %{number} : %{name} ( %{objectId}) n'a pas de séquence d'arrêts" + detail_3_route_1: "Sur la séquence d'arrêt %{objectId}, l'arrêt %{areaName} (%{areaId}) est desservi 2 fois consécutivement" + detail_3_route_2: "Les terminus de la séquence d'arrêt %{objectId} ne sont pas cohérent avec ceux de la séquence opposée %{routeId} : l'une part de %{firstName} (%firstId}) et l'autre arrive à %{lastName} (%lastId})" + detail_3_route_3: "Sur la séquence d'arrêt %{objectId}, entre les arrêts de rang %{firstStopRank} (%{firstStop} et %{nextStopRank} (%{nextStop}, distance %{distance} %{orientation} %{distanceLimit} " + detail_3_route_4: "La séquence d'arrêt %{objectId} utilise la même liste ordonnée d'arrêts que la séquence d'arrêts %{routeId}" + detail_3_route_5: "La séquence d'arrêt %{objectId} peut admettre la séquence %{routeId} comme séquence opposée" + detail_3_route_6: "La séquence d'arrêt %{objectId} doit avoir un minimum de 2 arrêts" + detail_3_route_7: "La séquence d'arrêt %{objectId} n'a pas de mission" + detail_3_route_8: "La séquence d'arrêt %{objectId} a %{count} arrêts non utilisés par des missions : %{names}" + detail_3_route_9: "La séquence d'arrêt %{objectId} n'a pas de mission desservant l'ensemble de ses arrêts" + detail_3_journeypattern_1: "La mission %{objectId} utilise les mêmes arrêts que la mission %{journeyPatternId}; nombre d'arrêts = %{count}" + detail_3_vehiclejourney_1: "Arrêt n° %{stopRank} (%{stopName}) : durée d'arrêt mesurée %{diffTime} > %{maxDiffTime}" + detail_3_vehiclejourney_2_1: "La course %{objectId} a des horaires décroissants entre les arrêts n° %{firstStopRank} (%{firstStopName}) et n° %{lastStopRank} (%{lastStopName})" + detail_3_vehiclejourney_2_2: "La course %{objectId} a une vitesse %{speed} < %{speedLimit} km/h entre les arrêts n° %{firstStopRank} (%{firstStopName}) et n° %{lastStopRank} (%{lastStopName})" + detail_3_vehiclejourney_2_3: "La course %{objectId} a une vitesse %{speed} > %{speedLimit} km/h entre les arrêts n° %{firstStopRank} (%{firstStopName}) et n° %{lastStopRank} (%{lastStopName})" + detail_3_vehiclejourney_3: "La course %{objectId} a une variation de progression entre les arrêts n° %{firstStopRank} (%{firstStopName}) et n° %{lastStopRank} (%{lastStopName}) %{variation} > %{maxVariation} avec la course %{vehicleJourneyId}" + detail_3_vehiclejourney_4: "La course %{objectId} n'a pas de calendrier d'application" + detail_3_facility_1: "L'équipement %{name} (%{objectId}) n'est pas géolocalisé" + detail_3_facility_2: "L'équipement %{name} (%{objectId}) est localisé trop loin de son parent %{areaName} (%{areaId}) : distance %{distance} > %{distanceLimit}" activerecord: models: compliance_check_result: @@ -15,7 +139,116 @@ en: other: "Validation" attributes: compliance_check_result: - violation_count: "Violation count" + 1-NEPTUNE-XML-1: "Conformité à la syntaxe XML suivant les recommandations du W3C." + 1-NEPTUNE-XML-2: "Conformité au schéma défini par la XSD du profil TRIDENT/NEPTUNE." + 2-NEPTUNE-Common-1: "Unicité des éléments objectId des différents objets d'un lot de fichiers Neptune." + 2-NEPTUNE-Common-2: "Unicité des éléments regitrationNumber des différents objets d'un lot de fichiers Neptune." + 2-NEPTUNE-Network-1: "Correcte référence à des lignes <Line> dans version du réseau <PTNetwork>." + 2-NEPTUNE-GroupOfLine-1: "Correcte référence à des lignes <Line> dans groupe de lignes <GroupOfLine>." + 2-NEPTUNE-StopArea-1: "Correcte référence à des arrêts <StopArea> et/ou à des points d'arrêt sur parcours <StopPoint> dans les arrêts <StopArea>." + 2-NEPTUNE-StopArea-2: "Correcte référence à des arrêts <StopArea> dans les arrêts <StopArea> de type StopPlace." + 2-NEPTUNE-StopArea-3: "Correcte référence à des arrêts <StopArea> dans les arrêts <StopArea> de type CommercialStopPoint." + 2-NEPTUNE-StopArea-4: "Correcte référence à des points d'arrêt sur parcours <StopPoint> dans les arrêts <StopArea> de type BoardingPosition ou Quay." + 2-NEPTUNE-StopArea-5: "Correcte référence à une position géographique <AreaCentroid> dans les arrêts <StopArea> de tout type StopPlace, CommercialStopPoint, BoardingPosition et Quay." + 2-NEPTUNE-StopArea-6: "référenceréciproque d'une position géographique <AreaCentroid> dans les arrêts <StopArea> de tout type StopPlace, CommercialStopPoint, BoardingPosition et Quay." + 2-NEPTUNE-ITL-1: "Correcte référence à des arrêts <StopArea> dans les arrêts <StopArea> de type ITL." + 2-NEPTUNE-ITL-2: "Correcte référence à des arrêts <StopArea> de type ITL dans la classe d’objets <ITL>." + 2-NEPTUNE-ITL-3: "Correcte référence à des arrêts <StopArea> dans la classe d’objets <ITL>." + 2-NEPTUNE-ITL-4: "Vérification du type de référence à des arrêts <StopArea> type ITL dans la classe d’objets <ITL>." + 2-NEPTUNE-ITL-5: "Bonne référence à la ligne <Line> dans la classe d’objets <ITL>." + 2-NEPTUNE-AreaCentroid-1: "Correcte référence à des arrêts <StopArea> dans la classe d’objets <AreaCentroid>." + 2-NEPTUNE-AreaCentroid-2: "Vérification du modèle de projection de référence utilisé." + 2-NEPTUNE-ConnectionLink-1: "Correcte référence aux arrêts <StopArea> définissant des tronçons de correspondance <ConnectionLink>." + 2-NEPTUNE-AccessPoint-1: "Correcte référence à un arrêt <StopArea> dans les accès <AccessPoint>." + 2-NEPTUNE-AccessPoint-2: "Correcte référence à un arrêt <StopArea> dans les accès <AccessPoint>." + 2-NEPTUNE-AccessPoint-3: "Existence de liens d'accès <AccessLink> sur les accès <AccessPoint>." + 2-NEPTUNE-AccessPoint-4: "Existence de liens d'accès <AccessLink> sur les accès <AccessPoint> de type 'in'." + 2-NEPTUNE-AccessPoint-5: "Existence de liens d'accès <AccessLink> sur les accès <AccessPoint> sur les accès de type 'out'." + 2-NEPTUNE-AccessPoint-6: "Existence de liens d'accès <AccessLink> sur les accès <AccessPoint> sur les accès de type 'inout'." + 2-NEPTUNE-AccessPoint-7: "Vérification du modèle de projection de référence utilisé." + 2-NEPTUNE-AccessLink-1: "Correcte référence aux arrêts <StopArea> et accès <AccessPoint> définissant des liens d'accès <AccessLink>." + 2-NEPTUNE-AccessLink-2: "Correcte référence aux arrêts <StopArea> et accès <AccessPoint> définissant des liens d'accès <AccessLink>." + 2-NEPTUNE-Line-1: "Correcte référence au réseau dans l'objet ligne <Line>." + 2-NEPTUNE-Line-2: "Correcte référence à un point d'arrêt sur parcours <StopPoint> comme terminus de ligne <Line>." + 2-NEPTUNE-Line-3: "Correcte référence à un point d'arrêt sur parcours <StopPoint> comme terminus de ligne <Line>." + 2-NEPTUNE-Line-4: "Correcte référence aux séquences d'arrêts <ChouetteRoute> dans l'objet ligne <Line>." + 2-NEPTUNE-Line-5: "Correcte référence aux séquences d'arrêts <ChouetteRoute> dans l'objet ligne <Line>." + 2-NEPTUNE-Route-1: "Existence des missions <JourneyPattern> référencées par la séquence d'arrêt <ChouetteRoute>." + 2-NEPTUNE-Route-2: "Existence des tronçons commerciaux <PtLink> référencés par la séquence d'arrêt <ChouetteRoute>." + 2-NEPTUNE-Route-3: "Existence de la séquence opposée <ChouetteRoute> référencée par la séquence d'arrêt <ChouetteRoute>." + 2-NEPTUNE-Route-4: "Correcte référence à un tronçon commercial <PtLink> dans une séquence d'arrêts <ChouetteRoute>." + 2-NEPTUNE-Route-5: "Vérification que tous les points d'arrêts sur parcours sont rattachés à une séquence d'arrêts <ChouetteRoute> au départ d'un tronçon commercial <PtLink> et/ou à l'arrivée d'un autre tronçon commercial <PtLink> de la même séquence d'arrêts." + 2-NEPTUNE-Route-6: "Vérification du correct ordonnancement des points d'arrêts sur parcours <StopPoint> dans le chainage des tronçons <PtLink> d'une séquence d'arrêts <ChouetteRoute>." + 2-NEPTUNE-Route-7: "référence mutuelle des missions <JourneyPattern> et des séquences d'arrêts <ChouetteRoute>." + 2-NEPTUNE-Route-8: "Cohérence des références aux points d'arrêt des missions <JourneyPattern> et des séquences d'arrêts <ChouetteRoute>." + 2-NEPTUNE-Route-9: "Utilité des points d'arrêts sur parcours des séquences d'arrêts <ChouetteRoute>." + 2-NEPTUNE-Route-10: "référence d'une séquence d'arrêts <ChouetteRoute> à une séquence d'arrêts opposée." + 2-NEPTUNE-Route-11: "Cohérence des sens de la référence d'une séquence d'arrêts <ChouetteRoute> à une séquence d'arrêts opposée." + 2-NEPTUNE-Route-12: "Cohérence des terminus de la référence d'une séquence d'arrêts <ChouetteRoute> à une séquence d'arrêts opposée." + 2-NEPTUNE-PtLink-1: "Existence des arrêts <StopPoint> référencés par les tronçons commerciaux <PTLink>." + 2-NEPTUNE-JourneyPattern-1: "Existence de la séquence d'arrêt <ChouetteRoute> référencée par la mission <JourneyPattern>." + 2-NEPTUNE-JourneyPattern-2: "Existence des arrêts <StopPoint> référencés par la mission <JourneyPattern>." + 2-NEPTUNE-JourneyPattern-3: "Existence de la ligne <Line> référencée par la mission <JourneyPattern>." + 2-NEPTUNE-StopPoint-1: "Existence de la ligne <Line> référencée par l'arrêt <StopPoint>." + 2-NEPTUNE-StopPoint-2: "Existence du réseau <PTNetwork> référence par l'arrêt <StopPoint>." + 2-NEPTUNE-StopPoint-3: "Existence de l'arrêt <StopArea> référencé par l'arrêt <StopPoint>." + 2-NEPTUNE-StopPoint-4: "Vérification du modèle de projection de référence utilisé." + 2-NEPTUNE-Timetable-1: "Utilité des calendriers." + 2-NEPTUNE-Timetable-2: "Utilité des calendriers." + 2-NEPTUNE-VehicleJourney-1: "Existence de la séquence d'arrêt <ChouetteRoute> référencée par la course <VehicleJourney>." + 2-NEPTUNE-VehicleJourney-2: "Existence de la mission <JourneyPattern> référencée par la course <VehicleJourney>." + 2-NEPTUNE-VehicleJourney-3: "Existence de la ligne <Line> référencée par la course <VehicleJourney>." + 2-NEPTUNE-VehicleJourney-4: "Existence de l'opérateur <Company> référencé par la course <VehicleJourney>." + 2-NEPTUNE-VehicleJourney-5: "Existence de la tranche horaire <TimeSlot> référencée par la course <VehicleJourney>." + 2-NEPTUNE-VehicleJourney-6: "Cohérence entre la course, la mission et la séquence d'arrêts." + 2-NEPTUNE-VehicleJourney-7: "Utilité des missions" + 2-NEPTUNE-VehicleJourneyAtStop-1: "Existence de l'arrêt <StopPoint> référencé par l'horaire <VehicleJourneyAtStop>." + 2-NEPTUNE-VehicleJourneyAtStop-2: "Existence de la course <VehicleJourney> référenceé par l'horaire <VehicleJourneyAtStop>." + 2-NEPTUNE-VehicleJourneyAtStop-3: "adéquation des horaires de la course à la séquence d'arrêts." + 2-NEPTUNE-VehicleJourneyAtStop-4: "adéquation des horaires de la course à la mission." + 2-NEPTUNE-Facility-1: "Existence de l'arrêt <StopArea> référencé par l'équipement <Facility>." + 2-NEPTUNE-Facility-2: "Existence de l'arrêt <StopArea> référencé par l'équipement <Facility>." + 2-NEPTUNE-Facility-3: "Existence de la ligne <Line> référencée par l'équipement <Facility>." + 2-NEPTUNE-Facility-4: "Existence de la correspondance <ConnectionLink> référencée par l'équipement <Facility>." + 2-NEPTUNE-Facility-5: "Existence de l'arrêt <StopPoint> référencé par l'équipement <Facility>." + 2-NEPTUNE-Facility-6: "Vérification du modèle de projection de référence utilisé." + 3-StopArea-1: "Vérification de la géolocalisation de tous les arrêts hors ITL" + 3-StopArea-2: "Vérification que 2 arrêts de noms différents en dehors d'un même regroupement d'arrêts ne sont pas trop proches" + 3-StopArea-3: "Vérification de l'unicité des arrêts" + 3-StopArea-4: "Vérification de la géolocalisation des arrêts" + 3-StopArea-5: "Vérification de la position relative des arrêts et de leur parent" + 3-AccessPoint-1: "Vérification de la géolocalisation de tous les accès" + 3-AccessPoint-2: "Vérification que deux accès de nom différents ne sont pas trop proches" + 3-AccessPoint-3: "Vérification de la proximité entre les accès et leur arrêt de rattachement" + 3-ConnectionLink-1: "Vérification de la proximité entre les deux arrêts d'une correspondance" + 3-ConnectionLink-2: "Vérification de la cohérence entre la distance fournie sur la correspondance et la distance géographique entre les deux arrêts de la correspondance" + 3-ConnectionLink-3: "Vérification de la vitesse de parcours entre les deux arrêts d'une correspondance" + 3-AccessLink-1: "Vérification de la proximité entre les deux extrémités d'un lien d'accès" + 3-AccessLink-2: "Vérification de la cohérence entre la distance fournie sur le lien d'accès et la distance géographique entre les deux extrémités du lien d'accès" + 3-AccessLink-3: "Vérification de la vitesse de parcours entre les deux extrémités d'un lien d'accès" + 3-Line-1: "Vérification de la non homonymie des lignes" + 3-Route-1: "Vérification de la succession des arrêts de la séquence" + 3-Route-2: "Vérification de la séquence inverse" + 3-Route-3: "Vérification de la distance entre deux arrêts successifs de la séquence" + 3-Route-4: "Vérification de double définition de séquences" + 3-Route-5: "Vérification de séquences sans séquence opposée" + 3-JourneyPattern-1: "Vérification de l'utilisation des arrêts par les missions" + 3-JourneyPattern-2: "Vérification de l’existence d’une mission passant par tous les arrêts de la séquence" + 3-JourneyPattern-3: "Vérification de double définition de missions" + 3-VehicleJourney-1: "Vérification de la chronologie des horaires de passage à un arrêt" + 3-VehicleJourney-2: "Vérification de la vitesse de transfert entre deux arrêts" + 3-VehicleJourney-3: "Vérification de la cohérence des courses successives desservant deux mêmes arrêts" + 3-VehicleJourney-4: "Vérification de l'affectation des courses à un calendrier" + 3-Facility-1: "Vérification de la géolocalisation de tous les accès" + 3-Facility-2: "Vérification de la proximité entre les équipements et leur arrêt de rattachement" + severity: "Severity" + status: "Status" + rule_level: "Level" + rule_target: "Object" + rule_number: "Step" + rule_code: "Code" + violation_count: "Violation(s)" + detail: "Detail" fr: compliance_check_results: @@ -267,6 +500,6 @@ fr: rule_target: "Objet" rule_number: "Etape" rule_code: "Code" - violation_count: "Violations" + violation_count: "Violation(s)" detail: "Détail" |
