Skip to content

Commit 864831f

Browse files
Thales-Chagasclaude
andcommitted
Corrige leitura de data no comprovante (formato BR DD/MM/AAAA)
A IA estava interpretando a data como MM/DD (padrao americano) e trocando dia com mes. Instrucao agora explicita o formato brasileiro com exemplos, nas funcoes processar e whatsapp. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent e9c5700 commit 864831f

2 files changed

Lines changed: 10 additions & 4 deletions

File tree

supabase/functions/processar/index.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,13 @@ function base64ParaBytes(b64: string): Uint8Array {
4242

4343
// ---- Claude lê a imagem do comprovante ----
4444
async function lerComprovante(base64: string, mime: string) {
45-
const prompt = `Você é um assistente financeiro. Analise este comprovante (cupom, nota, recibo ou Pix) e extraia os dados.
45+
const prompt = `Você é um assistente financeiro brasileiro. Analise este comprovante (cupom, nota, recibo ou Pix) e extraia os dados.
4646
Responda APENAS um JSON válido, sem texto antes ou depois:
4747
{"valor": number, "data": "YYYY-MM-DD", "estabelecimento": string, "categoria": string, "tipo": "despesa"|"receita"}
48-
Regras: valor é o total pago (número com ponto decimal). Se não achar a data, use null. categoria simples (ex: Mercado, Farmácia, Transporte). Quase sempre "despesa".`;
48+
Regras:
49+
- valor é o total pago (número com ponto decimal).
50+
- DATA: comprovantes brasileiros usam o formato DD/MM/AAAA (DIA primeiro, depois o MÊS). Exemplos: "05/06/2026" = 5 de junho de 2026 → "2026-06-05"; "12/03/2026" = 12 de março → "2026-03-12". Cuidado para NÃO inverter dia e mês. Se não achar a data, use null.
51+
- categoria simples (ex: Mercado, Farmácia, Transporte). Quase sempre "despesa".`;
4952
const resp = await fetch("https://api.anthropic.com/v1/messages", {
5053
method: "POST",
5154
headers: {

supabase/functions/whatsapp/index.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,10 +88,13 @@ async function acharUsuario(telefone: string): Promise<string | null> {
8888
// IA: Claude lê a imagem do comprovante e devolve JSON
8989
// ------------------------------------------------------------
9090
async function lerComprovante(base64: string, mime: string) {
91-
const prompt = `Você é um assistente financeiro. Analise este comprovante (cupom, nota, recibo ou Pix) e extraia os dados.
91+
const prompt = `Você é um assistente financeiro brasileiro. Analise este comprovante (cupom, nota, recibo ou Pix) e extraia os dados.
9292
Responda APENAS um JSON válido, sem texto antes ou depois, no formato exato:
9393
{"valor": number, "data": "YYYY-MM-DD", "estabelecimento": string, "categoria": string, "tipo": "despesa"|"receita"}
94-
Regras: valor é o total pago (número com ponto decimal). Se não achar a data, use null. categoria é uma palavra simples (ex: Mercado, Farmácia, Transporte, Alimentação). Quase sempre é "despesa".`;
94+
Regras:
95+
- valor é o total pago (número com ponto decimal).
96+
- DATA: comprovantes brasileiros usam o formato DD/MM/AAAA (DIA primeiro, depois o MÊS). Exemplos: "05/06/2026" = 5 de junho de 2026 → "2026-06-05"; "12/03/2026" = 12 de março → "2026-03-12". Cuidado para NÃO inverter dia e mês. Se não achar a data, use null.
97+
- categoria é uma palavra simples (ex: Mercado, Farmácia, Transporte, Alimentação). Quase sempre é "despesa".`;
9598

9699
const resp = await fetch("https://api.anthropic.com/v1/messages", {
97100
method: "POST",

0 commit comments

Comments
 (0)