#!/bin/bash # m5-vault-sync — Sincroniza vault Obsidian → Ruflo Memory # Uso: m5-vault-sync [--full] # Sem args: sincroniza documentos-chave # --full: sincroniza todos os .md do vault raiz VAULT="/root/ecommerce/vault/ecommerce-kb" PROJECT="/root/ecommerce" DATE=$(date '+%Y-%m-%d %H:%M') echo "🔄 M5 Vault Sync — $DATE" # Documentos-chave a sincronizar sempre KEY_DOCS=( "SYSTEMS-STATUS.md:systems-status" "INTEGRATIONS.md:integrations" "N8N-WORKFLOWS.md:n8n-workflows" "CHATWOOT-SETUP.md:chatwoot-setup" "TWENTY-CRM-SETUP.md:twenty-crm-setup" "OMNIROUTE-EVOLUTION-09jul2026.md:omniroute-evolution" "DASHBOARD.md:dashboard" ) sync_doc() { local file="$1" local key="$2" local filepath="$VAULT/$file" if [ -f "$filepath" ]; then # Limitar a 4KB pra não estourar o memory backend content=$(head -c 4096 "$filepath") cd "$PROJECT" && ruflo memory store -k "$key" --value "$content" >/dev/null 2>&1 if [ $? -eq 0 ]; then echo " ✅ $file → $key" else echo " ❌ $file (erro ao armazenar)" fi else echo " ⚠️ $file não encontrado" fi } # Sincronizar docs chave for entry in "${KEY_DOCS[@]}"; do IFS=":" read -r file key <<< "$entry" sync_doc "$file" "$key" done # Atualizar metadados cd "$PROJECT" && ruflo memory store -k "vault-sync-timestamp" \ --value "Última sincronização: $DATE. Vault: $VAULT. Docs sincronizados: ${#KEY_DOCS[@]}" >/dev/null 2>&1 # Se --full, sincronizar todos os .md da raiz do vault if [ "$1" = "--full" ]; then echo "" echo "📚 Sync completo (todos os .md raiz):" for f in "$VAULT"/*.md; do [ -f "$f" ] || continue basename=$(basename "$f" .md) key=$(echo "$basename" | tr 'A-Z ' 'a-z-' | tr -cd 'a-z0-9-') sync_doc "$(basename $f)" "vault-$key" done fi echo "" echo "✅ Sync concluído — $(cd "$PROJECT" && ruflo memory list 2>/dev/null | grep -c '✓') entradas no Ruflo Memory"