, Correçoes na busca da API para ver os ultimos planos
This commit is contained in:
@@ -64,22 +64,64 @@ module SimpliRoute
|
||||
Array(get(caminho))
|
||||
end
|
||||
|
||||
# Rotas PLANEJADAS da data (Array de hashes). É aqui que costuma morar o par
|
||||
# veículo/motorista, que a visita talvez não carregue — e o romaneio precisa do
|
||||
# veículo para saber quantas folhas imprimir.
|
||||
# UMA rota pelo uuid. Serve para descobrir o DIA REAL de um plano: o registro
|
||||
# do plano só traz a JANELA (`start_date`/`end_date`), e o dia das rotas nem
|
||||
# sempre é o começo dela — medido em 28/08/2026: EMAD SETEMBRO 2026 (31/08 a
|
||||
# 08/09) tem rotas em 31/08 (= início), mas UBS OESTE AGOSTO 2026 (18/08 a
|
||||
# 20/08) e UBS NORTE AGOSTO 2026 (17/08 a 20/08) têm rotas em 20/08 (= FIM).
|
||||
# Era isto que tornava a data impossível de adivinhar de fora; agora se
|
||||
# pergunta à API. Todas as rotas de um plano dividem o mesmo dia (amostra de
|
||||
# 8 em 3 planos), então basta a primeira.
|
||||
def rota(id)
|
||||
get("/v1/routes/routes/#{id}/")
|
||||
rescue Error
|
||||
nil
|
||||
end
|
||||
|
||||
# Rotas PLANEJADAS da data (Array de hashes). É aqui que mora o par
|
||||
# veículo/motorista, e o romaneio precisa do veículo para saber quantas folhas
|
||||
# imprimir.
|
||||
#
|
||||
# ⚠️ NÃO VERIFICADO contra a API real: não há token na máquina de
|
||||
# desenvolvimento. Por isso é best-effort (endpoint inexistente devolve [], não
|
||||
# explode) e por isso Romaneios::PlanoDoDia tem uma escada de queda até o
|
||||
# espelho local. Rode `bin/sondar_plano_do_dia` no servidor antes de confiar
|
||||
# nesta chamada — e anote o resultado no cabeçalho daquele script, como foi
|
||||
# feito em bin/sondar_busca_nf.
|
||||
# ✔ VERIFICADO em 28/08/2026 contra a API real: `?planned_date=2026-08-31`
|
||||
# devolve 73 rotas (83 KB, 0,59 s), cada uma com `vehicle` (id numérico),
|
||||
# `plan` (uuid) e `total_visits`. ⚠️ O parâmetro é OBRIGATÓRIO: sem ele a rota
|
||||
# responde 200 com **lista vazia**, não com tudo — então "veio vazio" aqui
|
||||
# pode ser data errada, nunca "a conta não tem rotas". A rota NÃO traz array
|
||||
# de visitas (`visits` não existe); quem liga visita→rota é o campo `route`
|
||||
# da própria visita.
|
||||
def rotas_da_data(data)
|
||||
Array(get("/v1/routes/routes/?planned_date=#{data.to_date.iso8601}"))
|
||||
rescue Error
|
||||
[]
|
||||
end
|
||||
|
||||
# Os N planos mais recentes da conta — nome, período e as rotas de cada um.
|
||||
#
|
||||
# ⚠️ A CONCLUSÃO ANTIGA ("a API não expõe listagem de planos, só dá para
|
||||
# buscar por data") ESTAVA ERRADA. `/v1/routes/plans/` existe, não é
|
||||
# documentado, e devolve TUDO com o nome que a operação usa — "EMAD SETEMBRO
|
||||
# 2026", "UBS OESTE AGOSTO 2026". Verificado em 28/08/2026 contra a API real:
|
||||
# 138 planos, 185 KB, 0,86 s. Ver bin/sondar_planos.
|
||||
#
|
||||
# POR QUE ORDENAR E CORTAR AQUI, e não na URL: a API IGNORA todo filtro nesta
|
||||
# rota. `ordering`, `limit`, `page`, `page_size`, `search`, `name`,
|
||||
# `start_date__gte` — os dez candidatos testados devolveram os mesmos 138
|
||||
# itens do controle sem parâmetro. Então não existe "pedir 5": pede-se tudo
|
||||
# (uma chamada, menos de 1 s) e corta-se em Ruby.
|
||||
#
|
||||
# `created` é o critério: `start_date` de um plano é o PRIMEIRO dia da janela
|
||||
# (o EMAD SETEMBRO 2026 vai de 31/08 a 08/09), e é justamente essa janela que
|
||||
# tornava impossível adivinhar "a data do plano". Quem publicou por último é
|
||||
# quem o operador quer — ele abre a ferramenta logo depois de lançar.
|
||||
def planos(limite: 5)
|
||||
Array(get('/v1/routes/plans/'))
|
||||
.sort_by { |p| p['created'].to_s }
|
||||
.reverse
|
||||
.first(limite)
|
||||
rescue Error
|
||||
[]
|
||||
end
|
||||
|
||||
# Veículos da conta, para traduzir o id numérico que vem nas rotas
|
||||
# (`vehicle: 630011`) no nome que a operação usa (`GADE_038`).
|
||||
#
|
||||
|
||||
Reference in New Issue
Block a user