{"id":1279,"date":"2026-09-28T04:01:33","date_gmt":"2026-09-28T07:01:33","guid":{"rendered":"https:\/\/adrianosantostreina.com.br\/blog\/checklist-testar-codigo-gerado-por-ia\/"},"modified":"2026-09-28T04:01:40","modified_gmt":"2026-09-28T07:01:40","slug":"checklist-testar-codigo-gerado-por-ia","status":"publish","type":"post","link":"https:\/\/adrianosantostreina.com.br\/blog\/checklist-testar-codigo-gerado-por-ia\/","title":{"rendered":"O Checklist da Confian\u00e7a: Um Passo a Passo Simples para Testar C\u00f3digo Gerado por IA Antes de Coloc\u00e1-lo em Produ\u00e7\u00e3o"},"content":{"rendered":"<p>S\u00e3o dez horas da noite. Voc\u00ea pediu para o assistente de IA gerar uma fun\u00e7\u00e3o que calcula o valor de frete com base no peso e na dist\u00e2ncia. O c\u00f3digo apareceu em segundos, bonito, com coment\u00e1rios explicativos, at\u00e9 com um exemplo de uso. Voc\u00ea copiou, colou no projeto, rodou uma vez no console, viu um n\u00famero que parecia razo\u00e1vel e seguiu em frente. Tr\u00eas dias depois, o cliente reclama que um pedido de dois quilos para outro estado saiu cobrando o triplo do valor correto. Voc\u00ea abre o c\u00f3digo de novo e percebe: a f\u00f3rmula estava trocando a ordem de duas vari\u00e1veis. Funcionava perfeitamente para o \u00fanico caso que voc\u00ea testou &#8220;de olho&#8221;, e falhava silenciosamente para todos os outros.<\/p>\n<p>Essa cena se repete todos os dias em equipes de desenvolvimento de todos os tamanhos. A IA escreve c\u00f3digo com uma flu\u00eancia impressionante, mas flu\u00eancia n\u00e3o \u00e9 sin\u00f4nimo de corre\u00e7\u00e3o. Um c\u00f3digo pode estar gramaticalmente perfeito, seguir todas as conven\u00e7\u00f5es de estilo da linguagem e ainda assim estar errado \u2014 porque a l\u00f3gica n\u00e3o bate com a regra de neg\u00f3cio real, porque esqueceu um caso extremo, ou porque simplesmente inventou um comportamento que parece plaus\u00edvel, mas n\u00e3o existe. Este artigo \u00e9 um guia b\u00e1sico, para quem est\u00e1 come\u00e7ando a usar IA generativa no dia a dia de programa\u00e7\u00e3o, sobre como validar e testar esse c\u00f3digo antes de confiar nele. Vamos passar por conceitos fundamentais, mostrar exemplos de c\u00f3digo completos em mais de uma linguagem, e construir um checklist pr\u00e1tico que voc\u00ea pode aplicar hoje mesmo.<\/p>\n<h2>Por que o c\u00f3digo da IA exige um cuidado diferente<\/h2>\n<p>Antes de falar em ferramentas e testes, \u00e9 importante entender uma diferen\u00e7a de comportamento. Quando voc\u00ea mesmo escreve uma fun\u00e7\u00e3o, o processo mental \u00e9: pensar no problema, escrever uma tentativa, testar, errar, corrigir. Esse ciclo de erro e corre\u00e7\u00e3o deixa marcas \u2014 voc\u00ea lembra dos casos que te pegaram de surpresa, porque voc\u00ea mesmo caiu neles.<\/p>\n<p>A IA generativa n\u00e3o tem esse hist\u00f3rico de dor. Ela produz o texto do c\u00f3digo com base em padr\u00f5es estat\u00edsticos aprendidos a partir de uma quantidade enorme de exemplos. O resultado costuma ser sintaticamente correto e estilisticamente convincente, mas a IA n\u00e3o &#8220;sabe&#8221; se aquela l\u00f3gica resolve o seu problema espec\u00edfico \u2014 ela sabe que aquele tipo de c\u00f3digo costuma aparecer em contextos parecidos com o que voc\u00ea descreveu.<\/p>\n<blockquote><p><strong>\ud83d\udca1 Dica do Mestre:<\/strong> um v\u00eddeo interessante para assistir sobre esse tema \u00e9 <a href=\"https:\/\/www.youtube.com\/watch?v=4UB6vr_FnBE\" target=\"_blank\" rel=\"noopener\">este debate sobre se ainda \u00e9 poss\u00edvel revisar c\u00f3digo gerado por IA<\/a>, que discute os limites da revis\u00e3o manual quando o volume de c\u00f3digo cresce r\u00e1pido demais.<\/p><\/blockquote>\n<p>Esse fen\u00f4meno tem um nome que j\u00e1 circula bastante nas comunidades de desenvolvimento: alucina\u00e7\u00e3o de c\u00f3digo. \u00c9 quando a IA inventa uma fun\u00e7\u00e3o que n\u00e3o existe em uma biblioteca, usa um par\u00e2metro que foi descontinuado h\u00e1 anos, ou aplica uma f\u00f3rmula matem\u00e1tica que parece certa, mas tem um sinal trocado. O c\u00f3digo roda sem erro de sintaxe \u2014 o problema s\u00f3 aparece quando voc\u00ea usa dados reais, em cen\u00e1rios reais.<\/p>\n<h2>O que significa &#8220;validar&#8221; e o que significa &#8220;testar&#8221;<\/h2>\n<p>Esses dois termos costumam ser usados como sin\u00f4nimos, mas vale separar os conceitos para organizar o racioc\u00ednio.<\/p>\n<ul>\n<li><strong>Validar<\/strong> \u00e9 confirmar que o c\u00f3digo faz o que deveria fazer, segundo a regra de neg\u00f3cio. \u00c9 uma pergunta de inten\u00e7\u00e3o: &#8220;isso resolve o problema que eu descrevi?&#8221;<\/li>\n<li><strong>Testar<\/strong> \u00e9 a pr\u00e1tica t\u00e9cnica de escrever verifica\u00e7\u00f5es automatizadas \u2014 pequenos programas que rodam o c\u00f3digo e conferem se o resultado bate com o esperado. \u00c9 a ferramenta que usamos para chegar \u00e0 valida\u00e7\u00e3o de forma repet\u00edvel.<\/li>\n<\/ul>\n<p>Em outras palavras: voc\u00ea pode ter um c\u00f3digo com testes passando e ainda assim inv\u00e1lido, se os testes tamb\u00e9m foram escritos de forma apressada e n\u00e3o cobrem o cen\u00e1rio real do neg\u00f3cio. Por isso, o processo que vamos construir aqui tem duas camadas: uma camada humana, de leitura e questionamento, e uma camada automatizada, de testes que rodam sempre que o c\u00f3digo muda.<\/p>\n<h2>Camada 1: leitura cr\u00edtica antes de qualquer teste<\/h2>\n<p>Antes de escrever um \u00fanico teste automatizado, existe um passo mais barato e mais r\u00e1pido: ler o c\u00f3digo com aten\u00e7\u00e3o, como se ele tivesse sido escrito por um estagi\u00e1rio talentoso, mas inexperiente, que voc\u00ea nunca conheceu pessoalmente.<\/p>\n<h3>Perguntas que voc\u00ea deve se fazer<\/h3>\n<ul>\n<li>Eu entendo cada linha desse c\u00f3digo, ou apenas reconhe\u00e7o o padr\u00e3o geral?<\/li>\n<li>Essa fun\u00e7\u00e3o trata o caso de entrada vazia, nula ou negativa?<\/li>\n<li>Os nomes de vari\u00e1veis e fun\u00e7\u00f5es combinam com o que o c\u00f3digo realmente faz?<\/li>\n<li>Existe alguma biblioteca ou m\u00e9todo sendo chamado que eu nunca ouvi falar? Vale a pena checar a documenta\u00e7\u00e3o oficial dela.<\/li>\n<li>A complexidade do c\u00f3digo \u00e9 proporcional \u00e0 complexidade do problema, ou parece exagerada?<\/li>\n<\/ul>\n<p>Se voc\u00ea respondeu &#8220;n\u00e3o sei&#8221; para a primeira pergunta, pare. Pedir para a pr\u00f3pria IA explicar o c\u00f3digo, linha por linha, \u00e9 um passo leg\u00edtimo e \u00fatil \u2014 mas a explica\u00e7\u00e3o tamb\u00e9m precisa ser conferida, porque a IA pode &#8220;narrar&#8221; um comportamento diferente do que o c\u00f3digo de fato executa.<\/p>\n<blockquote><p><strong>\ud83d\udca1 Dica do Mestre:<\/strong> existem ferramentas que ajudam justamente nessa etapa de revis\u00e3o automatizada, sinalizando trechos suspeitos antes mesmo de voc\u00ea rodar o c\u00f3digo. Vale conhecer o panorama descrito em <a href=\"https:\/\/www.kimi.ai\/pt-br\/resources\/ai-code-review-tools\" target=\"_blank\" rel=\"noopener\">este levantamento de ferramentas de IA para revis\u00e3o de c\u00f3digo<\/a> e tamb\u00e9m em <a href=\"https:\/\/pt.aikido.dev\/blog\/best-ai-code-review-tools\" target=\"_blank\" rel=\"noopener\">este comparativo de ferramentas de revis\u00e3o de c\u00f3digo com IA<\/a>. Nenhuma delas substitui o teste automatizado, mas ajudam a apontar riscos antes da etapa seguinte.<\/p><\/blockquote>\n<h2>Camada 2: transformando a regra de neg\u00f3cio em teste automatizado<\/h2>\n<p>Um teste automatizado, de forma simples, \u00e9 um peda\u00e7o de c\u00f3digo cuja \u00fanica fun\u00e7\u00e3o \u00e9 chamar outro peda\u00e7o de c\u00f3digo com uma entrada conhecida e verificar se a sa\u00edda \u00e9 a esperada. Se a sa\u00edda bater, o teste &#8220;passa&#8221;; se n\u00e3o bater, o teste &#8220;falha&#8221; e avisa voc\u00ea antes que o erro chegue ao usu\u00e1rio final.<\/p>\n<p>Vamos usar o exemplo do frete que abriu este artigo. Suponha que a regra de neg\u00f3cio seja: o valor do frete \u00e9 o peso em quilos multiplicado por dois reais, mais a dist\u00e2ncia em quil\u00f4metros multiplicada por cinquenta centavos. Veja como a IA poderia ter gerado essa fun\u00e7\u00e3o em JavaScript:<\/p>\n<pre><code>function calcularFrete(pesoKg, distanciaKm) {\n  const valorPorKg = 2.0;\n  const valorPorKm = 0.5;\n  return distanciaKm * valorPorKg + pesoKg * valorPorKm; \/\/ erro: vari\u00e1veis trocadas\n}\n\nmodule.exports = { calcularFrete };\n<\/code><\/pre>\n<p>Repare que o erro est\u00e1 sutil: a dist\u00e2ncia est\u00e1 sendo multiplicada pelo valor por quilo, e o peso pelo valor por quil\u00f4metro. Rodando manualmente com peso 2 e dist\u00e2ncia 10, o resultado seria 20 + 1 = 21, um n\u00famero que parece plaus\u00edvel se voc\u00ea n\u00e3o souber a f\u00f3rmula de cor. Agora veja como um teste automatizado, usando <a href=\"https:\/\/vitest.dev\" target=\"_blank\" rel=\"noopener\">o Vitest<\/a>, um executor de testes para projetos JavaScript e TypeScript, revela o problema imediatamente:<\/p>\n<pre><code>import { describe, it, expect } from 'vitest';\nimport { calcularFrete } from '.\/frete.js';\n\ndescribe('calcularFrete', () =&gt; {\n  it('calcula o frete corretamente para peso 2kg e dist\u00e2ncia 10km', () =&gt; {\n    \/\/ 2kg * 2,00 + 10km * 0,50 = 4 + 5 = 9\n    const resultado = calcularFrete(2, 10);\n    expect(resultado).toBe(9);\n  });\n\n  it('retorna zero quando peso e dist\u00e2ncia s\u00e3o zero', () =&gt; {\n    expect(calcularFrete(0, 0)).toBe(0);\n  });\n\n  it('lida com valores decimais sem arredondar incorretamente', () =&gt; {\n    \/\/ 1,5kg * 2,00 + 3km * 0,50 = 3 + 1,5 = 4,5\n    expect(calcularFrete(1.5, 3)).toBeCloseTo(4.5);\n  });\n});\n<\/code><\/pre>\n<p>Ao rodar esse teste, o primeiro caso falha imediatamente, porque o resultado real da fun\u00e7\u00e3o com o erro \u00e9 21, n\u00e3o 9. Esse \u00e9 exatamente o tipo de falha silenciosa que passa despercebida em um teste manual &#8220;de olho&#8221;, mas que um teste automatizado captura de forma objetiva e repet\u00edvel.<\/p>\n<h3>O mesmo princ\u00edpio em Python<\/h3>\n<p>O racioc\u00ednio \u00e9 id\u00eantico em qualquer linguagem. Em Python, usando o framework de testes <a href=\"https:\/\/docs.pytest.org\/\" target=\"_blank\" rel=\"noopener\">pytest<\/a>, o mesmo cen\u00e1rio ficaria assim:<\/p>\n<pre><code>def calcular_frete(peso_kg: float, distancia_km: float) -&gt; float:\n    valor_por_kg = 2.0\n    valor_por_km = 0.5\n    return peso_kg * valor_por_kg + distancia_km * valor_por_km\n<\/code><\/pre>\n<pre><code>import pytest\nfrom frete import calcular_frete\n\ndef test_frete_caso_padrao():\n    # 2kg * 2,00 + 10km * 0,50 = 4 + 5 = 9\n    assert calcular_frete(2, 10) == 9\n\ndef test_frete_zero():\n    assert calcular_frete(0, 0) == 0\n\ndef test_frete_valor_negativo_deve_falhar():\n    with pytest.raises(ValueError):\n        calcular_frete(-1, 5)\n<\/code><\/pre>\n<p>Note o terceiro teste: ele verifica um caso que a IA provavelmente n\u00e3o pensou sozinha \u2014 o que acontece se algu\u00e9m passar um peso negativo? Se a fun\u00e7\u00e3o atual n\u00e3o trata esse caso, o teste vai falhar, e essa falha \u00e9 uma informa\u00e7\u00e3o valiosa: ela mostra exatamente onde o c\u00f3digo precisa de uma valida\u00e7\u00e3o de entrada, algo como levantar um erro (<code>raise ValueError<\/code>) quando o valor n\u00e3o faz sentido no mundo real.<\/p>\n<h3>E em linguagens com tipagem forte, como Delphi<\/h3>\n<p>Em projetos Delphi, o mesmo princ\u00edpio se aplica usando o framework de testes <a href=\"https:\/\/www.finalbuilder.com\/dunitx\" target=\"_blank\" rel=\"noopener\">DUnitX<\/a>. A vantagem aqui \u00e9 que a tipagem est\u00e1tica j\u00e1 barra alguns erros grosseiros antes mesmo de rodar o teste, mas erros de l\u00f3gica de neg\u00f3cio continuam passando despercebidos sem uma verifica\u00e7\u00e3o expl\u00edcita:<\/p>\n<pre><code>function CalcularFrete(PesoKg, DistanciaKm: Double): Double;\nconst\n  ValorPorKg = 2.0;\n  ValorPorKm = 0.5;\nbegin\n  if (PesoKg &lt; 0) or (DistanciaKm &lt; 0) then\n    raise EArgumentException.Create('Peso e dist\u00e2ncia n\u00e3o podem ser negativos');\n\n  Result := (PesoKg * ValorPorKg) + (DistanciaKm * ValorPorKm);\nend;\n<\/code><\/pre>\n<pre><code>[Test]\nprocedure TestCalcularFreteCasoPadrao;\nbegin\n  \/\/ 2kg * 2,00 + 10km * 0,50 = 9\n  Assert.AreEqual(9.0, CalcularFrete(2, 10), 0.001);\nend;\n\n[Test]\nprocedure TestCalcularFretePesoNegativoLevantaExcecao;\nbegin\n  Assert.WillRaise(\n    procedure begin CalcularFrete(-1, 5); end,\n    EArgumentException\n  );\nend;\n<\/code><\/pre>\n<p>O ponto central, independentemente da linguagem, \u00e9 o mesmo: escreva um teste para o caso comum, um para o caso limite (zero, vazio, nulo) e um para o caso inv\u00e1lido (negativo, fora do dom\u00ednio esperado). Esses tr\u00eas testes j\u00e1 cobrem a maior parte dos erros que costumam aparecer em c\u00f3digo gerado por IA.<\/p>\n<h2>Casos extremos: a lista que a IA raramente completa sozinha<\/h2>\n<p>Existe uma tend\u00eancia natural na gera\u00e7\u00e3o de c\u00f3digo por IA de cobrir bem o &#8220;caminho feliz&#8221; \u2014 o cen\u00e1rio em que tudo d\u00e1 certo \u2014 e negligenciar os casos de borda. Ao validar c\u00f3digo gerado, mantenha em mente uma checklist mental de cen\u00e1rios que costumam ser esquecidos:<\/p>\n<ul>\n<li>Entrada vazia (string vazia, lista vazia, objeto nulo)<\/li>\n<li>Valores no limite (zero, o maior n\u00famero poss\u00edvel, o menor n\u00famero poss\u00edvel)<\/li>\n<li>Valores negativos, quando o dom\u00ednio do problema n\u00e3o permite negativos<\/li>\n<li>Caracteres especiais ou acentua\u00e7\u00e3o, em campos de texto<\/li>\n<li>Concorr\u00eancia: o que acontece se duas chamadas rodarem ao mesmo tempo?<\/li>\n<li>Falha de rede ou de banco de dados, em fun\u00e7\u00f5es que dependem de servi\u00e7os externos<\/li>\n<\/ul>\n<p>Um exerc\u00edcio simples e eficaz \u00e9, depois de receber o c\u00f3digo da IA, perguntar diretamente a ela: &#8220;quais casos de borda esse c\u00f3digo n\u00e3o est\u00e1 tratando?&#8221;. Muitas vezes a pr\u00f3pria IA consegue listar esses pontos quando provocada \u2014 mas raramente os inclui de forma espont\u00e2nea na primeira resposta.<\/p>\n<h2>Testes de ponta a ponta: validando o fluxo completo<\/h2>\n<p>Testes unit\u00e1rios, como os exemplos acima, verificam uma fun\u00e7\u00e3o isolada. Mas em muitos casos o problema n\u00e3o est\u00e1 em uma fun\u00e7\u00e3o sozinha, e sim na integra\u00e7\u00e3o entre v\u00e1rias partes \u2014 a interface do usu\u00e1rio, a API, o banco de dados. Para esse tipo de verifica\u00e7\u00e3o, existe a categoria de testes de ponta a ponta (end-to-end), que simulam o comportamento real de um usu\u00e1rio navegando pelo sistema.<\/p>\n<blockquote><p><strong>\ud83d\udca1 Dica do Mestre:<\/strong> se o seu projeto envolve fluxos completos de tela, como um formul\u00e1rio de checkout ou um cadastro de usu\u00e1rio, vale conhecer ferramentas especializadas nesse tipo de teste. Um panorama recente pode ser visto em <a href=\"https:\/\/www.testsprite.com\/use-cases\/pt\/the-most-reliable-AI-end-to-end-tests\" target=\"_blank\" rel=\"noopener\">este comparativo sobre as ferramentas de teste de ponta a ponta mais confi\u00e1veis<\/a>, que apresenta op\u00e7\u00f5es voltadas justamente para validar fluxos gerados ou acelerados por IA.<\/p><\/blockquote>\n<h2>Quando desconfiar de que o c\u00f3digo foi copiado ou gerado sem contexto<\/h2>\n<p>Um ponto que costuma passar despercebido em times iniciantes \u00e9 a origem exata do c\u00f3digo. \u00c0s vezes um trecho gerado pela IA reproduz, quase literalmente, um padr\u00e3o de um projeto p\u00fablico de c\u00f3digo aberto, com uma licen\u00e7a que pode n\u00e3o ser compat\u00edvel com o seu produto comercial. Outras vezes, o pr\u00f3prio time quer entender, em uma auditoria ou revis\u00e3o de seguran\u00e7a, se determinado arquivo foi escrito por uma pessoa ou por um modelo de IA.<\/p>\n<p>Para esses cen\u00e1rios, j\u00e1 existem detectores especializados. Vale a leitura de <a href=\"https:\/\/www.pangram.com\/pt\/blog\/ai-code-detector\" target=\"_blank\" rel=\"noopener\">este artigo sobre detectores de c\u00f3digo gerado por IA<\/a>, que explica como essas ferramentas funcionam e quais s\u00e3o os limites delas \u2014 \u00e9 importante frisar que nenhum detector \u00e9 infal\u00edvel, e o uso desse tipo de ferramenta deve ser um complemento, n\u00e3o um substituto, da revis\u00e3o t\u00e9cnica de qualidade.<\/p>\n<h2>Montando o checklist final<\/h2>\n<p>Reunindo tudo o que vimos, aqui est\u00e1 um roteiro simples para aplicar toda vez que um trecho relevante de c\u00f3digo chegar pronto de uma ferramenta de IA:<\/p>\n<ul>\n<li><strong>1. Leia o c\u00f3digo inteiro<\/strong> antes de rodar qualquer coisa. Se n\u00e3o entender uma linha, pergunte \u00e0 IA o motivo dela antes de seguir.<\/li>\n<li><strong>2. Confira nomes e bibliotecas.<\/strong> Se algo parece inventado, verifique na documenta\u00e7\u00e3o oficial da linguagem ou da biblioteca.<\/li>\n<li><strong>3. Escreva ao menos tr\u00eas testes por fun\u00e7\u00e3o:<\/strong> caso comum, caso de borda e caso inv\u00e1lido.<\/li>\n<li><strong>4. Rode os testes antes de integrar<\/strong> o c\u00f3digo ao restante do projeto, nunca depois.<\/li>\n<li><strong>5. Pergunte \u00e0 IA quais casos de borda ela n\u00e3o tratou<\/strong> \u2014 muitas vezes ela mesma aponta as lacunas quando provocada diretamente.<\/li>\n<li><strong>6. Para fluxos de tela ou integra\u00e7\u00f5es completas,<\/strong> considere testes de ponta a ponta, al\u00e9m dos testes unit\u00e1rios.<\/li>\n<li><strong>7. Documente a origem<\/strong> do trecho gerado, especialmente em projetos comerciais, para evitar d\u00favidas futuras sobre licenciamento.<\/li>\n<\/ul>\n<h2>Comunidade: aprender esse processo com outras pessoas que j\u00e1 passaram por ele<\/h2>\n<p>Validar c\u00f3digo gerado por IA \u00e9 uma habilidade que se aperfei\u00e7oa com pr\u00e1tica e com troca de experi\u00eancia. Ver como outros desenvolvedores estruturam seus testes, quais casos de borda eles j\u00e1 foram pegos de surpresa, e quais ferramentas realmente ajudam no dia a dia acelera muito esse aprendizado. Se voc\u00ea quer discutir esses fluxos com outros profissionais que tamb\u00e9m est\u00e3o levando IA para o desenvolvimento de software de forma s\u00e9ria, entre na <a href=\"https:\/\/adrianosantos.link\/ComunidadeDevAI\" target=\"_blank\" rel=\"noopener\">Comunidade Dev&#8217;s AI<\/a>. L\u00e1 compartilhamos exemplos pr\u00e1ticos, discutimos ferramentas e ajudamos uns aos outros a evitar os erros que custam tempo e credibilidade.<\/p>\n<h2>Conclus\u00e3o<\/h2>\n<p>O c\u00f3digo gerado por IA n\u00e3o \u00e9 bom nem ruim por natureza \u2014 ele \u00e9 uma mat\u00e9ria-prima que precisa passar pelo mesmo rigor que qualquer outro c\u00f3digo escrito por qualquer outra pessoa, com um agravante: voc\u00ea n\u00e3o teve o processo de tentativa e erro que normalmente ensina onde est\u00e3o as armadilhas. Por isso, a leitura cr\u00edtica e os testes automatizados deixam de ser um passo opcional, &#8220;para quando sobrar tempo&#8221;, e passam a ser a etapa que garante que a velocidade trazida pela IA n\u00e3o se transforme em retrabalho, bug em produ\u00e7\u00e3o ou perda de confian\u00e7a do cliente. Comece pequeno: escolha uma fun\u00e7\u00e3o gerada recentemente, escreva os tr\u00eas testes b\u00e1sicos descritos aqui, e observe o que aparece. \u00c9 prov\u00e1vel que voc\u00ea encontre, j\u00e1 na primeira tentativa, algo que merecia mais aten\u00e7\u00e3o antes de ir para produ\u00e7\u00e3o.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>S\u00e3o dez horas da noite. Voc\u00ea pediu para o assistente de IA gerar uma fun\u00e7\u00e3o que calcula o valor de frete com base no peso e na dist\u00e2ncia. O c\u00f3digo apareceu em segundos, bonito, com coment\u00e1rios explicativos, at\u00e9 com um exemplo de uso. Voc\u00ea copiou, colou no projeto, rodou uma vez no console, viu um [&hellip;]<\/p>\n","protected":false},"author":127,"featured_media":1280,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1279","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts\/1279","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/users\/127"}],"replies":[{"embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/comments?post=1279"}],"version-history":[{"count":1,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts\/1279\/revisions"}],"predecessor-version":[{"id":1281,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts\/1279\/revisions\/1281"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/media\/1280"}],"wp:attachment":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/media?parent=1279"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/categories?post=1279"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/tags?post=1279"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}