🔗 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
- ⏳ Sincronização Automática - Cron job para sincronizar periodicamente
- ⏳ Feature Lineage - Rastrear origem de cada feature
- ⏳ Feature Groups - Agrupar features relacionadas
- ⏳ Versionamento - Versões de features ao longo do tempo
- ⏳ Métricas - Monitorar uso e performance
📝 Notas
- O Feature Store não substitui o Feature Service existente
- O Feature Store complementa com cache e versionamento
- Features podem vir de múltiplas fontes (Feature Service, computação local, etc.)
- Cache reduz carga no Feature Service
Última atualização: 2025-12-06