# ⚙️ 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