Zona atravessada pela tarifa
Verifica se contains_id de fare_rules.txt referencia zone_id em stops.txt.
Propriedades da regra
| Propriedade | Valor |
|---|---|
| Rule ID | fare_rules_contains_id_foreign |
| Ficheiros | fare_rules.txt, stops.txt |
| Campos | contains_id, zone_id |
| Tipo | Referência a stops.zone_id, Identificador de zona |
| Severidade | Opcional |
Descrição dos campos:
contains_id: identifica as zonas que o passageiro atravessa ao usar uma categoria tarifária. Alguns sistemas usam estas zonas para determinar a categoria tarifária aplicável.zone_id: identifica a zona tarifária da paragem emstops.txt.
Mais informação em fare_rules.txt e stops.txt.
Como funciona
O resultado depende da severidade definida na configuração da regra: obrigatório (error) reprova; recomendado (warning) passa com aviso; informativo (info) passa com informação. O aviso antecipa uma futura exigência, mas só reprova quando a configuração passar a obrigatório. Nos casos sem severidade explícita abaixo, a indicação de reprovação pressupõe a configuração obrigatória.
Quando preenchido, o identificador tem de existir no campo zone_id de stops.txt. A regra não verifica o preenchimento, a unicidade ou se a tarifa se aplica efetivamente à viagem.
A regra avalia cada linha do fare_rules.txt, seguindo os passos abaixo por ordem, até um deles dar o resultado.
| # | Pergunta | Se sim | Se não |
|---|---|---|---|
| 1 | O campo de fare_rules.txt está vazio? | ✅ Passa sem procurar uma referência | Segue para o passo 2 |
| 2 | Existe uma linha de stops.txt com o mesmo valor em zone_id? | ✅ Passa | ❌ Reprova: referência inexistente |
Os espaços não são removidos. A comparação distingue maiúsculas de minúsculas. Uma coluna ausente também é tratada como vazia. O preenchimento é verificado separadamente. Os exemplos pressupõem que a regra é executada e que a configuração da regra permite reportar problemas.
Como se relacionam
O campo contains_id de fare_rules.txt deve corresponder a zone_id em stops.txt. Várias paragens podem pertencer à mesma zona; basta existir uma correspondência. Nos exemplos, stop-only e code-only são o identificador e o código de uma paragem da zona A. Esta verificação não confirma que o percurso atravessa todas as zonas necessárias para aplicar a tarifa.
Exemplos
contains_id | zone_id | Resultado | Porquê |
|---|---|---|---|
A | A | ✅ Passa | Zona encontrada |
missing | A | ❌ Reprova | Zona inexistente |
stop-only | A | ❌ Reprova | Identificador de paragem não é a zona |
code-only | A | ❌ Reprova | Código de paragem não é a zona |
Como corrigir
| Problema | Causa provável | O que fazer |
|---|---|---|
| Referência inexistente | O valor não existe no campo zone_id de stops.txt | Corrigir contains_id em fare_rules.txt para um valor existente em zone_id de stops.txt. Se a definição estiver em falta, acrescentá-la no ficheiro de referência. |