Alterações de fotos da simpleroute

This commit is contained in:
2026-07-20 17:35:21 -03:00
parent f6ae32f485
commit f6eda043a3
4 changed files with 319 additions and 38 deletions

View File

@@ -32,8 +32,10 @@ class Admin::EdicaoLancamentosController < ApplicationController
entrega = Entrega.por_nf(nf).first
return render_erro("NF #{nf} não encontrada na base de rastreio.") if entrega.nil?
id = client.resolver_id(entrega)
visita = client.visita(id)
id = client.resolver_id(entrega)
visita = client.visita(id)
# Segunda fonte de imagens (POD). Não é obrigatória: se falhar, vem {}.
detalhe = client.detalhe_visita(id)
render json: {
ok: true,
@@ -52,11 +54,9 @@ class Admin::EdicaoLancamentosController < ApplicationController
planned_date: visita['planned_date'],
contato: visita['contact_name'],
telefone: visita['contact_phone'],
# Fotos do card: fachada vem do rastreio (mesma foto do mapa de operações);
# pictures/assinatura vêm da API. Só URLs http(s) chegam ao <img>.
foto_fachada: url_imagem(entrega.try(:foto_da_fachada)),
pictures: Array(visita['pictures']).filter_map { |u| url_imagem(u) },
signature: url_imagem(visita['signature']),
# Galeria unificada — TODAS as fotos do lançamento, de todas as fontes,
# cada uma etiquetada para o ADM saber o que está conferindo.
fotos: fotos_do_lancamento(entrega, visita, detalhe),
motorista: entrega.driver,
veiculo: entrega.vehicle
},
@@ -218,6 +218,31 @@ class Admin::EdicaoLancamentosController < ApplicationController
url.match?(%r{\Ahttps?://}i) ? url : nil
end
# Reúne as imagens das TRÊS fontes numa lista única e etiquetada:
# 1. espelho de rastreio -> foto da fachada (mesma do mapa de operações)
# 2. visita da API -> pictures[] + signature
# 3. detalhe do POD -> pictures[] + signature (costuma ser mais completo)
#
# A mesma foto costuma aparecer em mais de uma fonte, então deduplica por URL
# mantendo a primeira etiqueta (a ordem abaixo é a mais informativa).
def fotos_do_lancamento(entrega, visita, detalhe)
brutas = []
brutas << [entrega.try(:foto_da_fachada), 'fachada', 'Rastreio']
[[visita, 'Visita'], [detalhe, 'Comprovante']].each do |fonte, origem|
Array(fonte['pictures']).each { |u| brutas << [u, 'entrega', origem] }
brutas << [fonte['signature'], 'assinatura', origem]
end
vistas = Set.new
brutas.filter_map do |valor, tipo, origem|
url = url_imagem(valor)
next if url.nil? || !vistas.add?(url)
{ url: url, tipo: tipo, origem: origem }
end
end
# Sem token não há o que fazer — avisa e volta.
def garantir_configurado
return if SimpliRoute.configurado?