diff --git a/README.md b/README.md index ced8911..4c511e6 100644 --- a/README.md +++ b/README.md @@ -1302,3 +1302,67 @@ docker compose up -d --build +--- + +
+✏️ Atualização 08/07/2026 — Editar Lançamento do SimpliRoute (correção pelo ADM) + +Nova tela **só para ADM** que permite **corrigir um lançamento** de entrega direto na +**API do SimpliRoute** (ex.: uma entrega marcada como "completa" que na verdade foi +**óbito**). Até então a única forma era entrar manualmente no SimpliRoute. **Sem migration.** + +### 🆕 Funcionalidades +- **Menu → Administração → "✏️ Editar Lançamento"** (visível só para `admin`). +- **Busca por NF** → o sistema localiza a entrega e mostra o estado atual. +- **Campos editáveis:** `status` (completa/falha/pendente/parcial/cancelada), **motivo** + (óbito, endereço não localizado, mudou-se, etc.), **comentário**, **observações** e, + no avançado, **data/hora + geolocalização** do checkout. +- **Auditoria** — toda alteração grava um `AuditoriaLog` (quem, quando, de/para). +- **Foto da fachada / assinatura** ficam para uma **fase 2** (exigem upload de imagem). + +### ⚙️ Como funciona (técnico) +- A base de rastreio local (`db_reem_simplerout_2026`, model `Entrega`) é **read-only** e + sincroniza a partir do SimpliRoute. A correção **não** escreve nela — grava na **API**; + o painel/consolidações só refletem **na próxima sincronização** (a tela avisa isso). +- **Dois identificadores:** a visita tem `id` numérico (usado na URL de escrita) **e** + `tracking_id` (`SR...`, que é a PK do espelho). O espelho não guarda o id numérico, então + o serviço **resolve** listando as visitas da data (`planned_date`) e casando pelo + `tracking_id` (fallback: NF). +- **Motivo** = campo `checkout_observation`, que é o **UUID** de uma lista fixa de 14 motivos + (`GET /v1/routes/observations/`, todos `type=failed`). É esse UUID que popula a coluna + `observation` — **não** basta texto livre no comentário. +- A gravação usa **PATCH** (só os campos alterados), para **não** sobrescrever assinatura/geo + originais sem intenção. Token da API vem de **`SIMPLIROUTE_TOKEN`** (ENV, nunca no git). + +### 🔧 Correção — botão estava no menu errado +- O botão foi adicionado, por engano, ao `app/views/layouts/_sidebar.html.erb`, que é um + **partial morto** (legado da fase 2/3, nunca renderizado). O menu **real** é o + **`_navbar.html.erb`** (renderizado pelo `application.html.erb`). O link foi movido para lá, + na seção Administração. + +### 📂 Arquivos +``` +config/initializers/simpli_route.rb # lê SIMPLIROUTE_TOKEN / BASE_URL — NOVO +app/services/simpli_route/client.rb # cliente Net::HTTP (observations, resolver_id, PATCH) — NOVO +app/controllers/admin/edicao_lancamentos_controller.rb # busca/atualiza + AuditoriaLog — NOVO +app/policies/edicao_lancamento_policy.rb # admin-only — NOVO +app/views/admin/edicao_lancamentos/show.html.erb # tela (busca NF + form) — NOVO +config/routes.rb # resource admin/edicao_lancamento +app/views/layouts/_navbar.html.erb # link "✏️ Editar Lançamento" (admin) +.env.example # SIMPLIROUTE_TOKEN + SIMPLIROUTE_BASE_URL +``` + +### ▶️ Deploy +```bash +# 1. No servidor, adicionar ao .env (pegue o token em SimpliRoute → Configurações → API): +# SIMPLIROUTE_TOKEN=... +# SIMPLIROUTE_BASE_URL=https://api.simpliroute.com +# 2. Rebuildar/reiniciar: +docker compose up -d --build +# 3. Logar como admin → Administração → "Editar Lançamento" → buscar uma NF e testar. +``` + +> **Sem migration.** ⚠️ Em produção, **reiniciar o Puma** após o deploy (cache de classes/views). + +
+