Novedades· 30 ítems

Versión 1.74.0

Las notas de versión están escritas en portugués, el idioma en que se desarrolla DeskcommCRM. Tu navegador puede traducirlas, o puedes abrir esta página ya traducida.

Abrir en Google Traductor

Agregado12

Automações ganham o passo opcional "a IA decide", que escolhe uma entre as opções montadas na regra (por enquanto só pela API)

O passo ai_decide recebe uma instrução e de 2 a 6 opções, cada uma com uma ação comum (etiqueta, tarefa, mover o negócio, responsável, mensagem, chamar endereço externo). A IA devolve só o nome de uma opção e o sistema executa a ação pelo caminho de sempre; resposta fora da lista, vazia ou ilegível não executa nada, e o motivo aparece na aba Atividade.

É opcional por regra: quem não monta o passo não muda nada nem gasta nada. Gasta IA: cada execução faz ao menos uma chamada ao modelo (duas, se a opção for responder pela IA), entra no custo das automações e respeita o teto mensal da empresa; a regra só salva se declarar o gasto (custo_de_token: true). Ainda não tem tela. Ao provedor de IA vão a mensagem, os dados do negócio e as etiquetas; e-mail, telefone, nome do contato, título do negócio, identificadores internos e o CPF do cadastro não saem, mas o texto da mensagem e os campos personalizados do negócio vão como estão. Nada muda na configuração.

Contribuição de @webtecnica (#2228, refs #1970).

A mensagem da campanha pode usar campos personalizados do negócio e do contato

O texto da campanha passa a aceitar {{lead.campo}}, que vem do negócio mais recente do contato, e {{contato.campo}}, que vem do cadastro do contato (o caminho da automação, {{lead.custom_fields.campo}}, também funciona). Campo vazio, ausente ou contato sem negócio não manda texto pela metade: a pessoa sai da lista como "Falta um dado que a mensagem usa", e isso aparece na contagem antes de enviar. Não é preciso fazer nada na instalação. Contribuição de @webtecnica (#2357), a partir da issue #2311 de @aleflores35.

Canais ganham o botão pausar: desativado nunca entra na inbox

Cada número conectado passa a ter Pausar/Retomar na Central de Conexões (WhatsApp por QR, API oficial e redes sociais). Canal pausado continua listado, mas as mensagens dele não aparecem na inbox e não acordam a IA. E nada sai por ele: nem resposta da IA, follow-up, automação ou envio manual (o envio é recusado), nem o aviso de caso à equipe, se for ele a conexão escolhida para os avisos. A entrega continua gravada e reaparece ao retomar, sem reimportar nada. Quem ativou a notificação no celular ainda recebe a de nova mensagem de canal pausado. Nada muda para quem nunca pausar nada. Contribuição de @paulolimajr77 (#2318).

Conexão de banco externo: escolha a coluna que identifica o cliente nas conversas

A conexão com um banco de dados externo (em Dados externos) ganhou o campo Cliente nas conversas: você escolhe se o cliente é identificado pelo telefone ou pelo e-mail e qual coluna das suas tabelas guarda esse dado. Com a coluna escolhida, durante uma conversa de atendimento o agente lê só as linhas em que essa coluna é igual ao telefone ou ao e-mail de quem está falando. A lista de conexões mostra um aviso enquanto a coluna não estiver escolhida. Fora das conversas (equipe, integrações, API), a consulta segue como antes.

Um token novo com a permissão de configurar o agente edita, testa, publica e pausa o agente de IA sem a tela

Integrações (n8n, scripts, Claude Code) passam a poder ler e editar o cadastro e o rascunho do agente de IA, rodar o teste, publicar uma versão e pausar, desligar ou arquivar o agente por token de API, sem abrir o navegador. Isso exige criar um token NOVO em Configurações › API Tokens marcando a permissão nova de configurar o agente (config:write, e config:read para leitura) junto com "Tratar o token como administrador". Para listar as versões do agente e criar um rascunho novo, o token também precisa de "Agentes de IA podem LER/AGIR no CRM (MCP)"; sem elas, config:write só edita, testa e publica um rascunho cujo id a integração já conhece. Os tokens que já existem não mudam: mesmo os de administrador com permissão de agir no CRM continuam recebendo recusa nessas ações. Para quem não criar o token novo, nada muda: publicar, pausar e testar seguem pela tela. O que for feito por token fica na auditoria com o token identificado. Não é preciso fazer nada na instalação. Contribuição de @webtecnica (#2194), a partir da issue #2052 de @spoliagency.

O Jev pode escolher o agente sozinho, com a sua IA de sempre de reserva

Quem administra agora pode deixar o Jev escolher o agente sem consultar a IA de sempre em cada mensagem: ela só é chamada quando o Jev falha, não acha a intenção ou fica em dúvida. O modo só liga onde a empresa tem a IA de sempre configurada; sem ela, vale a comparação de hoje, e o cartão diz por quê. O editor do roteador ajusta de zero a 16 mensagens anteriores para a IA de sempre (o Jev continua recebendo só a mensagem atual), com oito por padrão em roteadores novos. IA › Execuções › Roteamento mostra custos, tempos, casos e revisão humana. A atualização não exige ação na VPS. Contribuição de @vitorlacerdadigital (#2061).

Conectar a assinatura do ChatGPT (login do Codex) pela própria tela, com a chave da organização como reserva

Em Administração › Recursos opcionais (/admin/sistema) há um interruptor novo, Login do Codex por assinatura, desligado por padrão, que só quem administra a instalação liga. Ligado, cada empresa conecta a própria conta no painel de Credenciais (quem revende escolhe se conecta a conta dele ou deixa o cliente conectar a sua): abre o link do Codex, entra com a conta da assinatura e cola o endereço em que o navegador parou (localhost:1455; a página não abrir é esperado). O par de tokens é guardado cifrado, como as chaves de IA, e renovado sozinho antes de vencer; se a assinatura falhar, a chamada cai na chave de API da própria empresa. A tela avisa que o client_id e o redirect_uri são do Codex e não são contrato público da OpenAI. Com o interruptor desligado, nada aparece para as empresas; nada a fazer para quem não quiser usar.

Contribuição de @webtecnica (#1672, refs #1639).

Bloqueio opcional de afirmação clínica para negócios de saúde

Em Segurança, na configuração do agente, há uma nova proteção: "Não fazer afirmação clínica". Ligada, ela impede que o assistente envie mensagens que digam o que a pessoa tem (diagnóstico), indiquem remédio, pomada ou dose, garantam resultado ou digam que uma lesão é câncer. O assistente recebe a orientação de reescrever oferecendo consulta; se insistir, a mensagem continua barrada e um caso é aberto para a equipe (se o agente tiver casos ligados). Não consulta modelo nem tem custo, reconhece frases em português e espanhol, e vem desligada: só faz sentido em clínica e consultório, porque em outros negócios poderia barrar frases normais. Contribuição de @hampikamayuq (#2321, a proteção) e de @Tong-bit-art (#2323, o espanhol e a instrução negada "não pode passar creme").

Portugal passa a aparecer no seletor de país, com a citação do RGPD revisada por IA

Em Configurações › Empresa, o seletor de país passa a oferecer Portugal ao lado do Brasil. Escolhido Portugal, o contato usa o NIF (com o dígito de controlo da Autoridade Tributária), o exemplo de telefone é +351, o prazo do pedido de titular conta os feriados portugueses, e o documento de acesso cita RGPD art. 15.º (Regulamento (UE) 2016/679) com o rótulo "Direito exercido". O e-mail ao titular sai em português de Portugal, e nem ele nem o alarme ao encarregado citam a LGPD.

A revisão da citação foi feita por IA, por delegação do dono do produto (doc 88), em 2026-10-05. Não é parecer jurídico e não houve advogado em Portugal. As fontes conferidas estão no cabeçalho de lib/legal/perfil-do-pais.ts, e a tela avisa quem escolhe Portugal: os prazos do sistema (7 e 15 dias úteis) são mais curtos que o mês legal; trocar o país muda a regra do documento do contato — a partir daí, CPF enviado por API, importação ou integração é recusado como NIF inválido; e o sistema não substitui o encarregado da proteção de dados, que deve confirmar os textos enviados aos titulares, sobretudo nas campanhas de marketing, que em Portugal, em regra, exigem consentimento prévio (Lei 41/2004, art. 13.º-A). Hoje só os webhooks da Nuvemshop criam pedido de titular; numa organização portuguesa com loja Nuvemshop brasileira o titular é brasileiro, e citar só o RGPD fica incompleto.

O que NÃO muda: quem está no Brasil (ou nunca escolheu país) recebe o e-mail, o alarme, o PDF e o data.json exatamente como antes. Portugal só vale para a organização em que alguém o escolher.

PR #2339, construído sobre o perfil de Portugal de @webtecnica (#2084), a partir da issue #1946 de @maclevison, que pediu o perfil e a revisão da citação.

A rede social conectada agora pode sair do atendimento ou ser desconectada pela tela

Antes, a tela de redes sociais só conectava. Quem ligava um Instagram ou um Facebook ao atendimento não tinha como desfazer: a assinatura de webhook continuava viva no provedor e as mensagens continuavam entrando. Agora cada conta tem dois botões, e os dois pedem confirmação. Remover do atendimento apaga a assinatura de webhook no provedor e arquiva o canal, e a conta continua vinculada para voltar a receber depois. Desconectar conta faz o mesmo e também remove a conta do provedor. Nos dois casos as conversas já recebidas continuam no CRM. Se o provedor recusar a chamada, o canal fica como estava e dá para tentar de novo. Contribuição de @rafaelbatistazz (#2362, refs #1314).

Em Portugal, o relatório de acesso do titular passa a trazer as alíneas do art. 15.º e a ligação para o data.json

Numa organização com país Portugal, o PDF de acesso ganha a secção "Informações exigidas pelo art. 15.º, n.º 1". A alínea e) traz os direitos de retificação, apagamento, limitação e oposição. A f) traz a autoridade de controlo (CNPD, com o site). A h) descreve os assistentes de IA que estão no ar: quem responde automaticamente e quem só sugere respostas para uma pessoa decidir. Se nenhum estiver no ar, diz que não há assistente a responder. As alíneas a), c) e d) (finalidades, destinatários e prazo de conservação) saem como "não informado pelo controlador", porque ainda não há tela para preenchê-las (#2356).

O e-mail ao titular passa a levar também a ligação para o data.json, com a mesma validade do PDF. Esse ficheiro leva todas as mensagens do titular, e não só as 100 mais recentes. As outras secções têm um número máximo de registos, e as que atingiram esse número vêm listadas em secoes_no_limite. Por isso o relatório não chama a cópia de "completa".

O que NÃO muda: no Brasil, o e-mail, o PDF e o data.json saem exatamente como antes, e o worker nem pede a ligação do data.json.

Contribuição de @webtecnica (#2354, Refs #2340).

A limpeza automática de mídia antiga ganha um interruptor, e a conversa avisa quando a mídia foi apagada

A limpeza que apaga a mídia das conversas (fotos, áudios, documentos) com mais de N dias, ligada desde a 1.53.0, continua ligada em todas as empresas: nada muda para quem atualiza. O que entra é o controle e o aviso. Em Configurações › Empresa, o interruptor Limpeza automática de mídia antiga mostra "Ligado: apaga a mídia com mais de N dias" e permite desligar; para ligar de novo, a tela pede confirmação. A partir desta versão, quando a mídia de uma mensagem é apagada, a conversa mostra "Mídia apagada pela política de retenção (N dias)" em vez de um erro, a transcrição do áudio sai junto, e o sistema não tenta buscar o arquivo de novo no WhatsApp. A mídia apagada antes desta versão (desde a 1.53.0) não tem esse marcador e segue o caminho antigo: o sistema tenta buscá-la no WhatsApp e, se não achar, mostra "Mídia indisponível". Enquanto a empresa tem um pedido de LGPD em andamento, a limpeza dela fica pausada. O piso de 30 dias vale mesmo com valor menor gravado no banco.

Contribuição de @webtecnica (#2180), a partir da issue #1534 de @franceschini-lucas.

Corregido18

Gravar a partir de uma aba que ficou na organização antiga passa a ser recusado (nas telas que usam o cliente da API), e a aba avisa quando a sessão mudou

A organização ativa é uma só por sessão do navegador, mas cada aba mostrava a que tinha quando abriu: depois de trocar de empresa numa aba, as outras seguiam exibindo a antiga enquanto já liam e gravavam na nova.

Agora a aba avisa ("Esta aba está numa organização diferente da sessão. Recarregar?") e não recarrega sozinha, para não perder formulário em edição. Nas telas que gravam pelo cliente da API (apiClient), o servidor recusa a escrita com org_divergente (409) quando a organização da aba não bate com a da sessão. As telas que gravam com fetch direto e as server actions ainda não estão cobertas; o restante fica na #2335. Nada muda na configuração.

Relatado por @aleflores35 (#2313). Contribuição de @webtecnica (#2360, refs #2335).

A conexão do WhatsApp ganha uma opção de guardar o histórico do número, desligada por padrão

A sessão do canal nascia sem guardar o passado do aparelho (3 conversas e 1 MB no número medido, contra 825 conversas e 57 MB com o acervo). Agora a tela de conexões oferece, por conexão, "Guardar o histórico anterior à vinculação" (noweb.store com enabled e fullSync), desligada por padrão. O histórico fica no servidor do canal, fora do alcance da anonimização do CRM (acompanhado em #2320), e ligar a opção não faz conversa antiga aparecer no inbox.

Ligar tem custo: a vinculação de um número movimentado gasta tempo, CPU e disco do canal (o contêiner tem teto de 1.280 MB na instalação padrão). O histórico anterior (cerca de 1 ano) só vem se a opção estiver ligada NA vinculação; num número já pareado, ligar guarda daqui em diante, sem QR novo, e a conexão reinicia por alguns segundos. Desligar num número já pareado pode apagar o que o canal já guardou, e a tela avisa. Instalações atualizadas não mudam nada sozinhas.

Contribuição de @webtecnica (#2319), a partir da issue #999 de @rogercampel.

O atendente vê os modelos aprovados do WhatsApp oficial quando a janela de 24 horas fecha

No inbox, quando a janela de 24 horas de uma conversa do WhatsApp oficial fecha, a única forma de falar com o cliente é um modelo aprovado. Para o atendente (papel agent), esse seletor aparecia vazio: a lista de modelos pedia papel de administrador e devolvia "sem permissão". Agora quem atende lê a lista. Sincronizar modelos e gravar o link de mídia continuam só com administrador, como no canal intermediado.

Contribuição de @webtecnica (#2359).

A busca de contatos acha o nome com ou sem acento

A busca da lista de contatos comparava o nome com ilike, que ignora maiúsculas mas não ignora acento: quem digitava "Joao" não achava "João", e "MARCIA" não achava "Márcia". Agora as quatro colunas de texto (nome, nome exibido, e-mail e telefone) usam imatch, e cada letra com acento do português vira uma classe (jo[aáàâãä…]o), então o termo acha o cadastro nos dois sentidos, sem migração e sem unaccent no banco.

Letra acentuada fora do português (ñ, ë, å, ò) continua achando pela grafia exata, como antes. Asteriscos seguidos no termo viram um curinga só, para que um termo longo de * não trave a consulta. Telefone e CPF seguem com a mesma comparação de antes. A busca de conversas continua em ilike e ainda não acha o nome sem o acento.

Contribuição de @webtecnica (#2310, Refs #1835).

A tela de Produtos encontra qualquer produto do catálogo, não só os 500 primeiros

A tela de Produtos carregava só os 500 primeiros produtos e a busca procurava apenas entre eles. Em catálogos maiores, o restante não aparecia nem buscando pelo nome, embora o atendente de IA continuasse encontrando todos. Agora a busca procura no catálogo inteiro, por nome, código, marca ou categoria, e a lista mostra 50 produtos por página, com o total e botões para avançar e voltar. A busca também deixou de falhar quando o texto tem vírgula ou parênteses, e um % digitado passou a ser procurado como caractere, não como curinga. Uma falha ao ler o catálogo aparece como erro, não como catálogo vazio. Não é preciso fazer nada na instalação. Contribuição de @valterhjr (#2138, refs #2135).

A tela de Produtos de um catálogo grande abre sem "Algo deu errado"

Ler o catálogo custava cerca de 2 ms por produto, porque o banco conferia a regra de quem pode ALTERAR preço em cada linha, mesmo numa leitura. A tela de Produtos lê o catálogo inteiro para contar o total, e num catálogo de alguns milhares de produtos a leitura passava do limite de 8 segundos do banco: a tela mostrava "Algo deu errado" em vez da lista. Agora a regra de alteração só vale para alterar, e a leitura de 579 produtos caiu de cerca de 1,2 s para 10 ms. Quem pode ver e quem pode alterar o catálogo continua igual: só gerente e administrador cadastram, alteram e apagam. A atualização aplica o ajuste sozinha, e não é preciso fazer nada na instalação.

Etiquetas verde-água e vermelha passam a sair com texto branco, inclusive as que já tinham cor

Os dois tons da paleta de etiquetas que saíam com texto preto sobre fundo forte foram escurecidos: o verde-água passa de #12a594 para #00655a e o vermelho de #e54d2e para #cf3716. Nos dois, o texto do chip agora é branco, com contraste de 6,98 e 4,99. Os nomes e a fileira de cores na tela de Tags continuam os mesmos.

As etiquetas que já tinham sido pintadas com os tons antigos não precisam de nada: elas passam a ser lidas no tom novo, sem migration, e a tela de Tags abre com o tom certo marcado. Quem gravar um dos tons antigos pela API recebe o tom novo gravado. Nada muda na configuração.

Relatado por @Fabio-Ribeir0 (#2373). Contribuição de @webtecnica (#2380).

Regras de WhatsApp por aniversário e por compromisso passam a enviar

As regras de automação com gatilho "No aniversário de um contato" ou "Agendamento criado/confirmado/remarcado/cancelado/compareceu/não compareceu" e ação de mandar WhatsApp (ou de acionar a IA, ou de iniciar um fluxo) nunca chegaram a enviar: o evento nascia sem a origem do atendimento e a ação terminava failed com service_boundary_stale, sem erro em lugar nenhum. O carimbo no instante da emissão e a resolução na leitura passam a ler a mesma tabela de (tipo, entidade) → contato.

Atenção a quem já tem uma regra dessas configurada: depois desta atualização ela envia WhatsApp de verdade para o contato, no próximo aniversário ou no próximo evento de agenda. O envio respeita a janela de horário do canal, o limite diário e o espaçamento entre mensagens, como qualquer automação. Eventos anteriores à atualização não são reenviados. Se a regra foi criada e esquecida, revise-a ou desative-a antes de atualizar.

Contribuição de @Tong-bit-art (#2330), a partir da issue #2326 de @Sandersono.

O instalador diz onde configurar o envio de e-mail ao pular a Resend

Quem deixava a chave da Resend em branco na entrevista terminava sem saber que o envio tinha caminho de volta: o .env saía sem remetente, e o CRM subia sem mandar convite de equipe, PDF de LGPD nem — em Supabase próprio — os e-mails de acesso (senha, cadastro). Agora o campo da Resend mostra o atalho junto do "Enter pula", e a tela final — a única que a pessoa lê inteira — repete a pendência dizendo o que não sai e onde ligar: Admin → E-mail, a mesma tela que configura o servidor SMTP próprio ou o serviço externo (Resend). Num Supabase próprio o aviso acrescenta o passo bash hostgator-setup-kit/update.sh, para o GoTrue passar a usar o mesmo servidor.

Nenhuma ação para quem já manda e-mail: o aviso só aparece quando não há RESEND_API_KEY nem SMTP_HOST no .env.

Contribuição de @Tong-bit-art (#2325, fecha #1110).

A tela de agendas não diz mais "Ainda não sincronizada" para agenda que só bloqueia horário

Quem conectou o Google e marcou várias agendas para bloquear horário via só UMA delas com "Última sincronização" na tela de agendas conectadas. As outras apareciam como "Ainda não sincronizada", e a única forma de conferir se estavam paradas era olhar o banco — enquanto isso a agenda seguia trazendo eventos normalmente (uma delas trouxe 39).

A rodada de sincronização agora grava a marca em cada agenda que ela leu, e não só na que recebe os compromissos novos: quem só bloqueia horário é lida na mesma passada que a de destino e sai com a própria hora gravada. A marca continua sendo verdadeira — agenda que a rodada não leu não ganha carimbo, e a que não terminou de ler continua mostrando o erro na própria linha, como já mostrava.

Nada a fazer na atualização: a próxima rodada de sincronização grava as marcas que faltarem.

Contribuição de @webtecnica (#2332).

Quem marca para amanhã não recebe o lembrete de véspera no mesmo dia

Com o lembrete de 1 dia ligado, quem marcava hoje às 9h para amanhã às 14h recebia, hoje às 14h, a mensagem "passando pra lembrar do seu compromisso" — poucas horas depois de ter confirmado. O lembrete que já estava vencido na hora da marcação já não saía; faltava o que vence mais tarde no mesmo dia. Agora o lembrete de 1 dia ou mais não sai no mesmo dia em que a reunião foi marcada, no fuso da organização. O aviso curto, como o de 1 hora antes, continua saindo normalmente.

Contribuição de @erikyudi (#2349).

O link de redefinir senha, de convite e de confirmar cadastro funciona para quem usa Hotmail, Outlook e e-mail corporativo

Quem recebia o e-mail num Hotmail, Outlook ou numa caixa corporativa clicava no link e caía em "Link inválido ou expirado", mesmo pedindo um link novo. O motivo: esses provedores abrem cada link sozinhos, segundos depois da entrega, para conferir se é seguro, e o CRM gastava o token de uso único nessa primeira visita. Agora o link leva a uma tela "Confirmar acesso" com o botão Continuar, e o token só é usado quando a pessoa aperta o botão. Verificador automático abre o link, mas não aperta o botão. Nada muda na configuração da instalação.

Contribuição de @fabianmartinelli-fm (#2183).

O agente passou a incluir alguém da equipe no convite da reunião que marca (guest_email)

Quando o agente marcava uma reunião (crm_book_appointment ou crm_find_and_book_appointment), o convite do Google saía sem o consultor que ia conduzi-la: as ferramentas do agente não ofereciam o guest_email que a tela e a API já aceitavam. Agora as duas aceitam guest_email opcional, desde que seja de um usuário ativo da própria empresa; e-mail de cliente, de terceiro ou de outra empresa é recusado e nada é marcado. Sem guest_email, a marcação funciona como antes, e a tela da Agenda e a API não mudam. Nenhuma ação é necessária.

Contribuição de @webtecnica (#2077), a partir da issue #2062 de @InvestidorDiversificado; a regra de "só da equipe" foi decisão do mantenedor, aplicada sobre o trabalho dele.

O relatório de acesso (LGPD) mostra o CPF informado na conversa mascarado, em vez de apontar para um arquivo que o titular não recebe

Quando o titular tinha informado o CPF numa conversa, o PDF de acesso dizia "Informado na conversa (valor no arquivo de dados)" e o mandava a um data.json que ele nunca recebe: o arquivo fica no servidor e o e-mail entrega só o PDF. Agora a linha mostra o próprio CPF com só os 4 últimos dígitos visíveis (***.***.*47-25). Quando o relatório não consegue saber com segurança qual valor é do titular (nenhum CPF guardado, ou dois campos de CPF com valores diferentes, como o do responsável e o do paciente), a linha diz "valor não disponível neste relatório", sem apontar para arquivo nenhum. O valor completo continua guardado só no arquivo de dados. Não há nada para quem opera a instalação fazer.

Contribuição de @webtecnica (#2355, refs #2341).

A limpeza automática do arquivo de webhooks não trava mais quando há atraso acumulado

A poda pedia 500 itens de uma vez num endereço longo demais: com algumas centenas de linhas vencidas acumuladas, o endereço passava do limite do gateway e a limpeza parava na mesma leva para sempre, deixando o banco crescer sem teto (numa instalação medida, ~23 MB/dia). Agora o lote é cortado por data, e a poda esvazia o corpo das linhas vencidas como prometido. Nada muda na configuração.

Contribuição de @Sandersono (#2324).

O roteador volta a escolher qual agente atende cada mensagem

Em empresas que usam a OpenRouter, o roteador de agentes falhava a cada mensagem com o erro "claude-haiku-4-5 is not a valid model ID" e nenhuma escolha de agente acontecia — toda conversa caía no mesmo agente, ou em nenhum, como se os roteadores configurados não existissem. A mensagem nunca aparecia no painel de erro: era o aviso que a própria tela do classificador mostrava.

O modelo do classificador vinha gravado pelo próprio Deskcomm ao criar o roteador, com um nome que a OpenRouter não reconhece. Ninguém escolheu esse modelo, e a empresa podia ter configurado Claude como modelo de atendimento — o roteador é que insistia no dele. Agora o roteador nasce em "Automático": quem decide o modelo do classificador é o painel de provedores ou, na falta dele, o modelo de atendimento da empresa, e nenhuma escolha é sobrescrita por baixo dos panos.

Quem já tinha um roteador com esse modelo gravado de fábrica, numa empresa que não usa a Anthropic diretamente, passa para "Automático" ao atualizar. Se quiser um classificador mais barato e rápido do que o modelo de atendimento, basta escolhê-lo na tela do roteador. Empresas que usam a Anthropic diretamente não mudam nada: lá esse modelo funciona, e o roteador continua com ele. Também não muda nada para quem escolheu o modelo do classificador na tela, inclusive o Claude Haiku 4.5 pela Requesty, nem para quem não usa roteador de agentes. Não é preciso fazer nada na instalação.

Contribuição de @dilneiss (#2134).

A IA não pede mais o máximo de tokens do modelo em cada resposta

Quando a organização não definia um limite de tamanho de resposta, a chamada ao modelo saía sem limite nenhum. No OpenRouter isso reserva o máximo do modelo (64 mil tokens no Claude Haiku 4.5) contra o saldo da chave, e uma chave com crédito para milhares de respostas curtas recusava todas com "can only afford". O agente parava de responder e as sugestões do modo assistido falhavam. Agora, sem limite configurado, cada resposta pede no máximo 4.096 tokens; quem definiu um limite próprio continua com o dele.

Contribuição de @erikyudi (#2350).

A transferência de funil pergunta a régua da etapa de perda da origem antes de criar o clone

A troca de funil (transfereParaOFunil, usada pela automação create_or_move_lead e pelo roteador de intenção) criava o clone no funil de destino e só depois encerrava a origem — e a exigência de campos da etapa de perda mora dentro do encerramento. Quando a etapa de perda da ORIGEM tinha obrigatorio_em (ao_perder ou etapas) apontando um campo que o negócio não tinha, a recusa required_fields_missing nascia depois do clone gravado: o cliente ficava com dois negócios abertos, um em cada funil, com a recusa dizendo que nada mudou.

A régua agora é conferida antes da primeira escrita, com a mesma função de sempre (validaCamposExigidos) e o mesmo 422 com details.faltando — os dois chamadores continuam tratando exatamente o mesmo código, e quando a régua recusa nenhum negócio novo é gravado.

Nada muda para quem não configurou obrigatorio_em no funil da origem: a regra continua opt-in, e uma leitura indisponível das configurações deixa a transferência acontecer como antes.

Contribuição de @webtecnica (#2308, fecha #2303).

← Volver a todas las versionesVer en GitHub