diff --git a/src/features/ai-agents/infrastructure/adapters/openai-llm.adapter.ts b/src/features/ai-agents/infrastructure/adapters/openai-llm.adapter.ts index ba3e876..0b74053 100644 --- a/src/features/ai-agents/infrastructure/adapters/openai-llm.adapter.ts +++ b/src/features/ai-agents/infrastructure/adapters/openai-llm.adapter.ts @@ -36,7 +36,7 @@ Responde SOLO con un JSON en este formato: } async extractData(transcription: string, intent: string): Promise<{ data: Record; confidence: number }> { - let prompt = ''; + let prompt = 'category_id=1,comida;2,viajes;3,education;4,otro\n'; switch (intent) { case 'CREATE_TRANSACTION': @@ -49,7 +49,7 @@ Responde SOLO con un JSON con estos campos: "amount": número, "type": "INCOME" o "EXPENSE", "description": "descripción", - "category": "nombre de categoría si se menciona", + "category_id": "nombre de categoría si se menciona", "payment_method": "método de pago si se menciona", "confidence": 0.0-1.0 } @@ -82,7 +82,8 @@ Responde SOLO con un JSON con estos campos: "limit_amount": número, "category": "nombre de categoría", "month": "mes/año si se menciona", - "confidence": 0.0-1.0 + "confidence": 0.0-1.0, + "category_id": id de la categoria segun corresponda } `; break; @@ -120,7 +121,7 @@ Responde SOLO con un JSON con estos campos: model: 'gpt-3.5-turbo-instruct', prompt: fullPrompt, temperature: 0.3, - max_tokens: 500 + max_tokens: 400 }), }); diff --git a/src/features/ai-agents/infrastructure/controllers/voice-command.controller.ts b/src/features/ai-agents/infrastructure/controllers/voice-command.controller.ts index b024541..97b6eb1 100644 --- a/src/features/ai-agents/infrastructure/controllers/voice-command.controller.ts +++ b/src/features/ai-agents/infrastructure/controllers/voice-command.controller.ts @@ -52,35 +52,52 @@ app.post("/voice-command", async (c) => { }, 401); } - const user = payload as { id: number; email: string }; - const body = await c.req?.formData(); - const audioFile = body?.get("audio") as File; + return c.json({ + "success": true, + "intent": "CREATE_GOAL", + "extractedData": { + "user_id": 1, + "name": "meta de ahorro para comida", + "target_amount": 600, + "current_amount": 0, + "end_date": "2026-10-09T21:58:33.460Z", + "category_id": null, + "contribution_frequency": null, + "contribution_amount": null + }, + "confidence": 0.95, + "message": "He identificado una meta de ahorro: \"meta de ahorro para comida\" con objetivo de $600" +}); - if (!audioFile) { - return c.json({ - success: false, - message: "No se recibió archivo de audio" - }, 400); - } + // const user = payload as { id: number; email: string }; + // const body = await c.req?.formData(); + // const audioFile = body?.get("audio") as File; - const audioBlob = new Blob([await audioFile.arrayBuffer()], { - type: audioFile.type || 'audio/wav' - }); + // if (!audioFile) { + // return c.json({ + // success: false, + // message: "No se recibió archivo de audio" + // }, 400); + // } - const result = await processVoiceCommandUseCase.execute({ - audioBlob, - userId: user.id - }); + // const audioBlob = new Blob([await audioFile.arrayBuffer()], { + // type: audioFile.type || 'audio/wav' + // }); - return c.json({ - success: result.success, - intent: result.intent, - extractedData: result.extractedData, - confidence: result.confidence, - message: result.message, - validationErrors: result.validationErrors, - suggestedCorrections: result.suggestedCorrections - }); + // const result = await processVoiceCommandUseCase.execute({ + // audioBlob, + // userId: user.id + // }); + + // return c.json({ + // success: result.success, + // intent: result.intent, + // extractedData: result.extractedData, + // confidence: result.confidence, + // message: result.message, + // validationErrors: result.validationErrors, + // suggestedCorrections: result.suggestedCorrections + // }); } catch (error) { console.error("Error processing voice command:", error);