Files
claude-plugins/gestao/skills/knowledge/docs/sync-workflow.md
Emanuel Almeida 2cb3210962 feat: adiciona 12 plugins Descomplicar ao marketplace
Plugins: automacao, crm-ops, design-media, dev-tools, gestao,
infraestrutura, marketing, negocio, perfex-dev, project-manager,
wordpress + hello-plugin (existente).

Totais: 83 skills, 44 agents, 12 datasets.json

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 21:41:24 +00:00

240 lines
5.3 KiB
Markdown

# Workflow de Sincronização - /kb-sync
Documentação do processo de sincronização automática do índice de conhecimento.
---
## Visão Geral
```
┌─────────────────┐
│ /kb-sync │
└────────┬────────┘
┌─────────────────┐
│ Listar Dify │ ← mcp__dify-kb__dify_kb_list_datasets
│ Datasets │
└────────┬────────┘
┌─────────────────┐
│ Ler sources │ ← config/sources.json
│ .json │
└────────┬────────┘
┌─────────────────┐
│ Comparar e │
│ Detectar │
│ Alterações │
└────────┬────────┘
┌─────────────────┐
│ Actualizar │
│ sources.json │
└────────┬────────┘
┌─────────────────┐
│ Reportar │
│ Alterações │
└─────────────────┘
```
---
## Processo Detalhado
### 1. Obter Datasets Actuais
```
MCP: mcp__dify-kb__dify_kb_list_datasets
Params:
- limit: 100
- page: 1 (iterar se has_more)
```
**Resposta esperada:**
```json
{
"success": true,
"datasets": [
{
"id": "uuid",
"name": "Nome do Dataset",
"description": "...",
"document_count": 123,
"word_count": 456789,
"created_at": "2025-01-25T..."
}
],
"pagination": {
"total": 73,
"has_more": false
}
}
```
### 2. Ler Índice Actual
Ler `config/sources.json` e extrair:
- `dify_datasets` - mapeamento actual
- `last_sync` - última sincronização
- `total_datasets` - contagem anterior
### 3. Comparar e Detectar
#### Datasets Novos
```python
novos = []
for dataset in dify_response:
slug = slugify(dataset.name)
if slug not in sources.dify_datasets:
novos.append({
"slug": slug,
"id": dataset.id,
"name": dataset.name,
"docs": dataset.document_count
})
```
#### Datasets Removidos
```python
removidos = []
dify_ids = [d.id for d in dify_response]
for slug, info in sources.dify_datasets.items():
if info.id not in dify_ids:
removidos.append(slug)
```
#### Datasets Alterados
```python
alterados = []
for dataset in dify_response:
slug = slugify(dataset.name)
if slug in sources.dify_datasets:
old = sources.dify_datasets[slug]
if old.docs != dataset.document_count:
alterados.append({
"slug": slug,
"old_docs": old.docs,
"new_docs": dataset.document_count
})
```
### 4. Actualizar sources.json
```python
# Actualizar metadados
sources.version = increment_minor(sources.version)
sources.updated = now()
sources.last_sync = now()
sources.total_datasets = len(dify_response)
# Remover datasets eliminados
for slug in removidos:
del sources.dify_datasets[slug]
# Actualizar existentes e adicionar novos
for dataset in dify_response:
slug = slugify(dataset.name)
sources.dify_datasets[slug] = {
"id": dataset.id,
"name": dataset.name,
"docs": dataset.document_count
}
# Escrever ficheiro
write_json("config/sources.json", sources)
```
### 5. Gerar Relatório
```markdown
## Sync Concluído - 2026-01-25 15:30
| Métrica | Valor |
|---------|-------|
| **Total Datasets** | 73 |
| **Anterior** | 74 |
| **Novos** | 0 |
| **Removidos** | 1 |
| **Actualizados** | 5 |
### Datasets Removidos
- Demo Teste Agosto 2025
### Datasets Actualizados
| Dataset | Docs Antes | Docs Depois |
|---------|------------|-------------|
| marketing-digital | 81 | 85 |
| crocoblock-kb | 403 | 410 |
### Datasets Novos
(nenhum)
```
---
## Slugify
Função para converter nome do dataset em slug consistente:
```javascript
function slugify(name) {
return name
.toLowerCase()
.normalize('NFD')
.replace(/[\u0300-\u036f]/g, '') // Remove acentos
.replace(/[^a-z0-9]+/g, '-') // Substitui não-alfanum
.replace(/^-+|-+$/g, ''); // Remove hífens início/fim
}
```
**Exemplos:**
- "Marketing Digital" → "marketing-digital"
- "SEO (Search Engine Optimization)" → "seo-search-engine-optimization"
- "TI (Tecnologia da Informação)" → "ti-tecnologia-da-informacao"
---
## Frequência Recomendada
| Cenário | Frequência |
|---------|------------|
| Uso normal | Semanal |
| Após criar datasets | Imediato |
| Após remover datasets | Imediato |
| Debugging | Conforme necessário |
---
## Erros Comuns
| Erro | Causa | Solução |
|------|-------|---------|
| MCP timeout | Muitos datasets | Paginar requests |
| JSON inválido | Corrupção | Restaurar de backup |
| ID não encontrado | Dataset removido | Executar /kb-sync |
| Duplicados | Nomes similares | Verificar slugs manualmente |
---
## Backup Automático
Antes de cada sync, criar backup:
```
config/sources.json.bak
```
Restaurar se necessário:
```bash
cp config/sources.json.bak config/sources.json
```
---
*Workflow v1.0 | 2026-01-25*