Pular para o conteúdo

2.2.0 — Etiqueta de envio, configuração centralizada e versão única

Data: 23/10/2026 · Todas as versões

Etiqueta pronta para transportadora

Etiqueta 10 × 15 cm com códigos de barras do pedido e do CEP, endereço completo do destinatário e remetente da Moldapé.

Configuração em um lugar só

Um único .env.example na raiz, dividido por projeto e funcionalidade; make env monta o .env de cada app.

Segredos fora do código

Credenciais de produção que estavam versionadas foram removidas dos arquivos (ver o alerta abaixo).

Uma versão para tudo

Todos os apps e pacotes passam a ter a mesma versão da plataforma (ADR-0016).

Melhoria Ganho
Etiqueta de envio em página própria de 10 × 15 cm (padrão de impressora térmica), com faixas “Destinatário” e “Remetente” Imprime direto na impressora de etiquetas das transportadoras
Código de barras Code128 do número do pedido e do CEP do destinatário (bwip-js) Leitura por scanner na expedição e na coleta
Endereço completo do destinatário em linhas (logradouro e número, complemento, bairro, CEP e cidade/UF), com o CEP em destaque Menos erro de entrega
Remetente fixo: Moldapé, Rua Itatuba, 201, Edf. Cosmopolitan Mix, 17 andar, Sala 1702, Parque Bela Vista, CEP 40279-700, Salvador/BA Devolução possível pelos Correios e transportadoras
CPF e método de entrega fora da etiqueta (continuam na página de informações de entrega) Menos dado pessoal exposto no pacote
Endereço da página de informações de entrega sem rótulos vazios (“Complemento:” sem valor) Leitura mais limpa
  • Um único .env.example na raiz (ADR-0015), com seções marcadas por #@target (compartilhadas, web, order-lifecycle, docs, docker-compose), apenas as variáveis que o código lê e padrões que funcionam localmente. Os .env.example de apps e pacotes foram removidos.
  • make env distribui cada seção para o .env certo: cria os que faltam e, nos existentes, só acrescenta as variáveis novas, sem alterar valores (FORCE=1 recria). Ver Variáveis de ambiente.
  • Credenciais de produção trocadas por valores dev-only-… no .env.example, no docker-compose.yml, no fallback do AUTH_SECRET e em docs/. A pasta .idea/ saiu do repositório e o NEXT_PUBLIC_DATABASE_URL saiu do docker-compose.yml (o prefixo NEXT_PUBLIC_ poderia levá-lo ao navegador).
  • Estúdio e parcial: sete páginas liam params.id de forma síncrona, mas no Next 16 params é uma Promise e o id chegava undefined. Todas as páginas agora usam PageProps<'/rota'> com use(params) (client) ou await params (server).
  • Hidratação do cabeçalho público: o menu “Suporte” não renderizava no servidor (typeof window), o que fazia o React refazer o cabeçalho no navegador.
  • React Query Devtools: o carregamento sob demanda gerava 404 em desenvolvimento; voltou ao import normal (o pacote já é vazio em produção).
  • order-lifecycle: os dois fallbacks de sessão liam AUTH_SERVICE_URL em formatos diferentes; um chamava /session, que não existe no Better Auth. Agora ambos usam a origem do web e /api/auth/get-session.
  • Plantigrafia no e-mail de confirmação: quando o pedido voltava a ser marcado como pago (ou era marcado pelo painel sem informar o carrinho), a plantigrafia não podia ser regerada, porque os rascunhos com as imagens já tinham sido apagados no primeiro pagamento, e o e-mail para contato@moldape.com saía sem ela, embora o painel mostrasse a anterior. Agora o carrinho de origem é achado pelos itens do pedido e, sem imagens, o e-mail anexa a plantigrafia já salva. O endpoint confirm-payment deixou de gerar uma plantigrafia sem imagens por cima da existente.
  • E-mails de confirmação independentes: o e-mail interno era disparado sem await e só depois do e-mail do cliente; uma falha nele (ex.: limite de tamanho do SMTP) sumia do log. Agora os dois saem em paralelo e cada resultado, com a lista de anexos, fica registrado.
  • Texto do estúdio: a folha A4 aparecia como “21cm x 27,9cm”; corrigido para 21 × 29,7 cm.
  • Versão única para os 18 workspaces e a raiz (ADR-0016): scripts/sync-versions.mjs, pnpm versions:check e pnpm release:bump-version atualizando todos de uma vez.
  • pnpm prisma:migrate:deploy (prisma migrate deploy) para aplicar migrations em produção sem o migrate dev (parte de MF-27).
  • Apagadas as 24 suítes de teste herdadas do Jest, que já falhavam antes da migração para o Vitest, e o run-login-tests.sh que as rodava.
  • Fonte Loved by the King removida (não era usada e gerava aviso no build).

Todos os apps e pacotes passam para 2.2.0:

Workspace Antes
Plataforma (raiz), web 2.1.0
@moldape/order-lifecycle-service, @moldape/docs, @moldape/swagger 1.1.0
@moldape/api-client, @moldape/auth, @moldape/ui, @moldape/logger, @moldape/vitest-config, @moldape/playwright-config, @moldape/prettier 1.0.0
@moldape/email 1.0.1
@moldape/prisma, @moldape/redis, @moldape/types 0.0.1
@moldape/eslint-config, @moldape/typescript-config 0.0.0
  • Rotacione as credenciais listadas no alerta acima.
  • O PDF de entrega passa a ter uma página A4 e uma 10 × 15 cm. Em impressora comum, imprima a etiqueta em “tamanho real”.
  • O order-lifecycle ganhou a dependência bwip-js (JavaScript puro, sem binário nativo).
  • Recomendado: pnpm prisma:migrate:deploy como pre-deploy command do order-lifecycle no Coolify.
  • Nenhuma migration de banco nesta versão.
Desenvolvido e documentado por
Nós Tecnologia · Desenvolvimento Criativo