Files
dayMaker_lp/documentação/05_RECOMMENDATION_ENGINE.md
Carlos Correia fee538eebd MVP
2026-05-29 11:03:29 +01:00

3.2 KiB

Motor de Recomendações e IA

Estado atual

O DayMaker usa uma abordagem baseada em IA de linguagem com contexto do inventário.

Não existe atualmente um motor de regras local como fonte principal das recomendações. A recomendação é gerada pelo serviço AiRecommendationService, que chama uma API Ollama remota.


Serviço principal

Ficheiro:

lib/services/ai_recommendation_service.dart

Responsabilidades:

  • Buscar itens do utilizador no Supabase.
  • Construir contexto textual do inventário.
  • Enviar mensagens para a API Ollama.
  • Manter histórico simples de conversa.
  • Suportar silent: true para sugestões estruturadas.
  • Buscar itens com imagens para a home.

Endpoint e modelo

Campo Valor
Endpoint https://apichat.epvc.pt/api/chat
Modelo llama3.2:3b
Stream false
Formato Ollama /api/chat

Payload base:

{
  "model": "llama3.2:3b",
  "messages": [
    {"role": "system", "content": "..."},
    {"role": "user", "content": "..."}
  ],
  "stream": false
}

Prompt de sistema

A IA é instruída a:

  • Ajudar a montar outfits e escolher o que levar.
  • Usar linguagem simples e curta.
  • Não usar emojis.
  • Basear-se nas tags e notas dos itens.
  • Responder sempre em português.

Contexto enviado à IA

O contexto inclui os itens do utilizador:

Itens disponiveis no inventario do utilizador:
- Bota verde (categoria: Roupa) [tags: casual, outdoor]
- Switch (categoria: Eletrónica) [tags: gaming, casual]

Esse contexto é anexado à mensagem de sistema.


Chat IA

No ecrã AiChatScreen:

  • O utilizador escreve livremente.
  • Existem sugestões rápidas no topo.
  • A resposta é apresentada como conversa.
  • O histórico fica em memória no serviço enquanto a instância existir.

Sugestão IA na Home

Fluxo:

  1. Utilizador toca em Pedir sugestão à IA.
  2. App abre um diálogo e pede a ocasião.
  3. O utilizador pode escrever algo como piquenique no parque ou escolher chip rápido.
  4. A app envia a ocasião em modo silent.
  5. A IA deve devolver apenas nomes exatos dos itens, um por linha.
  6. A app cruza esses nomes com os itens reais do Supabase.
  7. A app mostra cards com imagem, nome e categoria.
  8. O utilizador pode exportar os itens para um dia da semana.

Modo silencioso

Quando silent: true, a instrução acrescentada ao pedido é:

responde APENAS com os nomes exatos dos itens do meu inventario que sugeres, um por linha, sem numeracao, sem explicacao, sem comentarios.

Isto permite transformar a resposta da IA numa lista de itens reais.


Limitações conhecidas

  • A correspondência depende da IA devolver nomes próximos aos nomes reais.
  • Se a IA devolver texto extra, a app tenta limpar linhas, mas pode falhar correspondência.
  • A IA não vê imagens, apenas nomes, categorias, tags e notas.
  • Não há ranking local por clima, cor ou histórico de uso.

Melhorias futuras

  • Resposta em JSON em vez de texto simples.
  • Validação local mais robusta por ID de item.
  • Sugestões com clima e duração.
  • Preferências aprendidas por histórico.
  • Integração com calendário.