Integracao Feature Store

🔗 Integração Feature Store ↔ Feature Service

Data: 2025-12-06
Status: Implementado ✅


🎯 Objetivo

Integrar o novo Feature Store com o Feature Service existente (4C) para:
1. Reutilizar features já computadas
2. Cachear resultados no Feature Store
3. Sincronizar definições automaticamente
4. Manter compatibilidade com APIs existentes


📦 Componentes

1. Feature Service Adapter

Arquivo: csuite-feature-store/app/services/feature_service_adapter.py

Funcionalidades:
- ✅ get_customer_features() - Obtém features do Feature Service
- ✅ list_available_features() - Lista features disponíveis
- ✅ sync_feature_definitions() - Sincroniza definições
- ✅ Versão síncrona para compatibilidade


🔄 Fluxo de Integração

1. Sincronização de Definições

# Via API
curl -X POST https://csuite.internut.com.br/feature-store/sync-definitions

# Via script
./scripts/integrate_feature_store.sh

O que faz:
1. Lista features disponíveis no Feature Service
2. Cria definições no Feature Store (se não existirem)
3. Marca como computation_type="external"


2. Obtenção de Features

Fluxo:

1. Feature Store recebe requisição
2. Verifica cache (Redis)
3. Se não encontrado, busca no Feature Service
4. Cacheia resultado
5. Retorna features

Exemplo:

import httpx

async with httpx.AsyncClient() as client:
    response = await client.post(
        "https://csuite.internut.com.br/feature-store/values",
        json={
            "entity_type": "customer",
            "entity_id": "123",
            "feature_names": ["recency_days", "freq_90d"],
            "use_cache": True
        }
    )
    data = response.json()
    features = data["features"]

🔧 Configuração

Variáveis de Ambiente

# Feature Store
FEATURE_SERVICE_URL=http://tasks.4c_feature-service:8081
FEATURE_CACHE_TTL_SECONDS=3600

Docker Stack

O docker-stack.yml já está configurado com:
- ✅ FEATURE_SERVICE_URL apontando para o Feature Service
- ✅ Network compartilhada (superbot-swarm-network)


📊 APIs Disponíveis

Sincronizar Definições

POST /feature-store/sync-definitions

Resposta:

{
  "status": "success",
  "synced_count": 5,
  "message": "5 definições sincronizadas"
}

Obter Features (com fallback)

POST /feature-store/values
Content-Type: application/json

{
  "entity_type": "customer",
  "entity_id": "123",
  "feature_names": ["recency_days", "freq_90d"],
  "use_cache": true
}

Resposta:

{
  "entity_type": "customer",
  "entity_id": "123",
  "features": {
    "recency_days": 15,
    "freq_90d": 3
  },
  "from_cache": false
}

🧪 Testes

1. Testar Sincronização

curl -X POST https://csuite.internut.com.br/feature-store/sync-definitions

2. Testar Obtenção

curl -X POST https://csuite.internut.com.br/feature-store/values \
  -H "Content-Type: application/json" \
  -d '{
    "entity_type": "customer",
    "entity_id": "123",
    "use_cache": true
  }'

3. Verificar Cache

# Verificar se features foram cacheadas
curl https://csuite.internut.com.br/feature-store/definitions

🔄 Melhorias Futuras

  1. Sincronização Automática - Cron job para sincronizar periodicamente
  2. Feature Lineage - Rastrear origem de cada feature
  3. Feature Groups - Agrupar features relacionadas
  4. Versionamento - Versões de features ao longo do tempo
  5. Métricas - Monitorar uso e performance

📝 Notas


Última atualização: 2025-12-06

🔊 Text-to-Speech

1.0x
1.0
Pronto para reproduzir