O grosso do modelo em si não muda, apenas algumas correções foram feitas no código.
A chamada do modelo passa a ser de um stop_id (filho) e não mais stop_code (pai). Outros argumentos podem ser passados (lista de direction_ids e trip_ids). O retorno continua o mesmo.
O código estava bastante complexo. As principais mudanças foram de simplificação da lógica e bastante limpeza.
Changelog
mobilidade_rio/mobilidade_rio/settings/base.py:
Corrige timezone para GMT-3. A hora do GPS estava sendo convertida 3 horas para frente.
Corrige imports do shapely e remove imports genéricos (pylint wildcard-import W0401)
Altera parâmetros de entrada:
Uso do stop_id (filho) ao invés do stop_code (pai), para simplificar o código
Remove map_weekday_servie_id: não é necessário esse mapeamento, o service_id correto é obtido via calendar + calendar_dates
Remove get_inputs: essa função ficou super complexa! foi muito mais simples trocar o stop_code para stop_id como entrada e não precisar decidir quanto aos stops filhos, trips, etc, no código.
Correções e melhorias em _get_service_id, _get_shape_id
Separa chamadas do modelo em:
get_trip_eta: ETA para uma trip especifica de um ponto
run_eta: ETA para todas as trips de um ponto (wrapper, apenas itera nos parâmetros retornados por _set_inputs e chama get_trip_eta para cada conjunto de parâmetros)
Prints substituídos por raises- comportamentos como a API vazia devem ser reportados como erro, e o FE passa a lidar com esses erros. Os raises estão corretos?
Colunas de debug foram removidas - são necessárias?
Para ler e analisar o código com calma!
TL;DR
Changelog
mobilidade_rio/mobilidade_rio/settings/base.py
:mobilidade_rio/mobilidade_rio/predictor/utils.py
: (aqui vem avalanche 🌊)shapely
e remove imports genéricos (pylint wildcard-import W0401)map_weekday_servie_id
: não é necessário esse mapeamento, o service_id correto é obtido via calendar + calendar_datesget_inputs
: essa função ficou super complexa! foi muito mais simples trocar o stop_code para stop_id como entrada e não precisar decidir quanto aos stops filhos, trips, etc, no código._get_service_id
,_get_shape_id
get_trip_eta
: ETA para uma trip especifica de um pontorun_eta
: ETA para todas as trips de um ponto (wrapper, apenas itera nos parâmetros retornados por_set_inputs
e chamaget_trip_eta
para cada conjunto de parâmetros)mobilidade_rio/mobilidade_rio/pontos/models.py
:Para checar com atenção:
raises
- comportamentos como a API vazia devem ser reportados como erro, e o FE passa a lidar com esses erros. Os raises estão corretos?__repr__
removida - é necessária?