116 lines
3.3 KiB
Markdown
116 lines
3.3 KiB
Markdown
# ⚙️ Rule Engine — Regras de Recomendação (MVP)
|
|
|
|
## Propósito
|
|
|
|
Define as regras estáticas que o motor de recomendações segue para sugerir itens ao utilizador.
|
|
|
|
---
|
|
|
|
## Regras Ativas (MVP)
|
|
|
|
### R1 — Filtragem por Context Tags
|
|
```
|
|
IF item.contextTags contém pelo menos uma tag do contexto
|
|
THEN item é relevante
|
|
```
|
|
|
|
### R2 — Ordenação por Prioridade de Categoria
|
|
```
|
|
Ordenar itens pela posição da categoria em context.priorityCategories
|
|
Categorias fora da lista → prioridade baixa (999)
|
|
```
|
|
|
|
### R3 — Limite de Itens
|
|
```
|
|
Retornar no máximo context.maxItems itens
|
|
```
|
|
|
|
| Contexto | maxItems |
|
|
|----------|----------|
|
|
| travel_short | 20 |
|
|
| travel_long | 40 |
|
|
| work | 15 |
|
|
| casual | 10 |
|
|
| sport | 8 |
|
|
| outdoor | 12 |
|
|
|
|
### R4 — Interpretação de Pedido (Parser)
|
|
```
|
|
Palavras-chave → contexto + duração + clima + formalidade
|
|
|
|
viagem/comboio/voo → travel_short + transit
|
|
trabalho/reunião → work + indoor
|
|
fim de semana/casual/lazer → casual
|
|
treino/desporto/gym → sport
|
|
exterior/caminhada → outdoor + outdoor
|
|
|
|
4+ dias/semana/longa → duration:long + upgrade para travel_long
|
|
4 horas/média → duration:medium
|
|
1-2 horas/curta → duration:short
|
|
|
|
frio/inverno → weather:cold
|
|
calor/verão/praia → weather:hot
|
|
chuva → weather:rainy
|
|
|
|
formal/cerimónia → formality:formal
|
|
casual/informal → formality:casual
|
|
```
|
|
|
|
---
|
|
|
|
## Regras Pendentes (a implementar)
|
|
|
|
### R5 — Filtro por Duração
|
|
```
|
|
IF duration == short → apenas essenciais (documents, cables, 1x clothing)
|
|
IF duration == medium → essenciais + entretenimento
|
|
IF duration == long → essenciais + entretenimento + conforto extra
|
|
```
|
|
**Estado:** Não implementado no MVP atual. Duração é detetada mas não filtra.
|
|
|
|
### R6 — Filtro por Clima
|
|
```
|
|
IF weather == cold → priorizar outerwear, remover beach/hot items
|
|
IF weather == hot → priorizar roupa leve, remover cold items
|
|
IF weather == rainy → priorizar outerwear + accessories.impermeável
|
|
```
|
|
**Estado:** Clima é detetado mas não filtra itens no MVP.
|
|
|
|
### R7 — Filtro por Formalidade
|
|
```
|
|
IF formality == formal → priorizar clothing.formal, footwear.formal
|
|
IF formality == casual → excluir clothing.formal
|
|
```
|
|
**Estado:** Formalidade é detetada mas não filtra itens no MVP.
|
|
|
|
---
|
|
|
|
## Mapeamento de Context Tags (04_CATEGORIES_AND_TAGS.md)
|
|
|
|
| Categoria.Subcategoria | Context Tags |
|
|
|------------------------|-------------|
|
|
| clothing.formal | work, formal |
|
|
| clothing.casual | casual, travel |
|
|
| clothing.sportswear | sport |
|
|
| clothing.outerwear | travel, cold, outdoor |
|
|
| electronics.computers | work, travel |
|
|
| electronics.phones | travel, work, casual |
|
|
| electronics.cables | travel |
|
|
| electronics.gaming | casual, travel |
|
|
| footwear.formal | work, formal |
|
|
| footwear.casual | casual, travel |
|
|
| footwear.sport | sport |
|
|
| footwear.outdoor | outdoor, travel |
|
|
| accessories.bags | travel, work, casual |
|
|
| documents.identity | travel |
|
|
| documents.travel | travel |
|
|
|
|
---
|
|
|
|
## Notas para o Agente
|
|
|
|
- **NÃO** adicionar regras novas sem validar com o utilizador
|
|
- As regras R5-R7 estão identificadas como pendentes — implementar quando o MVP base estiver estável
|
|
- O parser de palavras-chave (R4) é temporário — Fase 2 substitui por OpenAI
|
|
- Sempre que uma regra pendente for implementada, atualizar este ficheiro e o AI_AGENTS_LOG.md
|