Files
dayMaker_lp/documentação/RULE_ENGINE.md
2026-05-13 15:59:02 +01:00

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