# Workflow de Pesquisa - /knowledge Documentação detalhada do processo de pesquisa e routing. --- ## Fluxo Principal ``` ┌─────────────┐ │ Pergunta │ └──────┬──────┘ │ ▼ ┌─────────────┐ │ Analisar │ ← Extrair keywords, identificar tema │ Termo │ └──────┬──────┘ │ ▼ ┌─────────────┐ │ Routing │ ← Consultar config/sources.json │ Tema │ └──────┬──────┘ │ ▼ ┌─────────────┐ │ Pesquisar │ ← Fonte primária │ Fonte 1 │ └──────┬──────┘ │ ▼ ┌─────────────┐ ┌─────────────┐ │ Resultados │ NO │ Pesquisar │ │ Suficientes?├────►│ Fonte 2 │ └──────┬──────┘ └──────┬──────┘ │ YES │ ▼ ▼ ┌─────────────┐ ┌─────────────┐ │ Agregar │◄────┤ Fonte 3 │ │ Resultados │ │ (se neces.) │ └──────┬──────┘ └─────────────┘ │ ▼ ┌─────────────┐ │ Detectar │ ← Se resultados insuficientes │ Lacunas │ └──────┬──────┘ │ ▼ ┌─────────────┐ │ Resposta │ │ Estruturada │ └─────────────┘ ``` --- ## Fase 1: Análise do Termo ### Extracção de Keywords ``` Input: "como configurar crocoblock filters no elementor" Keywords: [crocoblock, filters, elementor, configurar] Tema detectado: wordpress ``` ### Regras de Detecção 1. Corresponder keywords com `routing[tema].keywords` 2. Se múltiplos temas, usar o mais específico 3. Se nenhum tema, usar pesquisa genérica (todas as fontes) --- ## Fase 2: Routing ### Consulta ao Mapeamento ```javascript // Pseudocódigo tema = detectarTema(keywords) sources = routing[tema].sources // Ordenar por prioridade fonte1 = sources[0] // Primária fonte2 = sources[1] // Secundária fonte3 = sources[2] // Terciária ``` ### Prioridades por Tipo | Tipo de Pergunta | Fonte Primária | Porque | |------------------|----------------|--------| | Técnico/Como fazer | Context7 | Docs actualizados | | Negócio/Clientes | Supabase | Contexto recente | | Procedimento | WikiJS | Documentação interna | | Conhecimento geral | Dify KB | RAG temático | | Histórico/Decisão | Supabase | Memória longo prazo | --- ## Fase 3: Pesquisa ### Dify KB ``` MCP: mcp__dify-kb__dify_kb_retrieve_segments Params: - dataset_id: [obtido de sources.json] - query: [termo original] - top_k: 5 ``` ### WikiJS ``` MCP: mcp__wikijs__search_pages Params: - query: [termo] Filtrar por paths relevantes do routing ``` ### Supabase ``` MCP: mcp__memory-supabase__search_memories Params: - query: [termo] Filtrar por tags do routing ``` ### Context7 ``` MCP: mcp__context7__resolve-library-id MCP: mcp__context7__get-library-docs Params: - libraryName: [biblioteca detectada] - topic: [termo específico] ``` ### Filesystem ``` Grep em paths do routing: - /media/ealmeida/Dados/Hub/ (Obsidian vault) - /media/ealmeida/Dados/GDrive/Projectos/ ``` --- ## Fase 4: Agregação ### Critérios de Suficiência - **Suficiente**: ≥1 resultado relevante com conteúdo útil - **Parcial**: Resultados tangenciais, precisa complemento - **Insuficiente**: 0 resultados ou irrelevantes ### Formatação de Resposta ```markdown ## Resultado: [termo pesquisado] ### Fonte: [Nome da Fonte] [Conteúdo encontrado, formatado e resumido] ### Fonte: [Segunda Fonte] (se aplicável) [Conteúdo complementar] ### Relacionado - [[Link interno 1]] - [[Link interno 2]] ### Acções Sugeridas (se aplicável) - [ ] Criar documentação sobre X - [ ] Actualizar Y com esta informação ``` --- ## Fase 5: Detecção de Lacunas ### Triggers 1. **Zero resultados** em todas as fontes 2. **Tema recorrente** (3+ pesquisas similares sem resultado) 3. **Resultado desactualizado** (>6 meses) 4. **Decisão importante** sem registo ### Acção Automática ```markdown > [!warning] Lacuna Detectada > O tema "[X]" não tem documentação adequada. > > **Sugestão:** > - Criar dataset Dify: `[nome-sugerido]` > - Ou página WikiJS: `[path-sugerido]` > - Ou guardar em Supabase (se decisão/contexto) ``` ### Registo de Lacunas Adicionar a `config/sources.json` → `gaps`: ```json { "gaps": { "dify_missing": ["novo-tema"], "wikijs_missing": ["novo-path"], "detected_at": "2026-01-25" } } ``` --- ## Comandos Especiais ### /kb-save [tema] ``` 1. Receber conteúdo a guardar 2. Analisar tipo: - Decisão → Supabase (tag: decisao) - Procedimento → WikiJS - Conhecimento → Dify KB 3. Formatar com metadata 4. Guardar na fonte adequada 5. Confirmar com referência ``` ### /kb-gaps ``` 1. Ler config/sources.json → gaps 2. Listar lacunas conhecidas 3. Sugerir prioridades baseado em: - Frequência de pesquisa - Impacto no trabalho - Esforço de criação ``` ### /kb-new [tema] ``` 1. Criar dataset no Dify KB 2. Adicionar estrutura base 3. Actualizar sources.json com novo ID 4. Remover de gaps.dify_missing ``` --- ## Métricas de Qualidade ### Pesquisa Bem Sucedida - [ ] Resultado relevante encontrado - [ ] Fonte adequada usada - [ ] Resposta formatada correctamente - [ ] Links internos incluídos ### Detecção de Lacunas - [ ] Lacuna identificada quando apropriado - [ ] Sugestão de acção clara - [ ] Lacuna registada para futuro --- ## Troubleshooting | Problema | Causa | Solução | |----------|-------|---------| | MCP timeout | Servidor lento | Retry com delay | | Dataset não encontrado | ID inválido | Actualizar sources.json | | Resultados irrelevantes | Keywords mal detectadas | Refinar routing | | Muitas lacunas | Tema novo | Criar conteúdo base | --- *Workflow v1.0 | 2026-01-25*