Importar dados de produtos para o Vecta Desk
Sincronize, de forma agendada, os dados do catálogo de produtos do seu armazém de dados para o seu CRM.
Use este padrão para manter o Vecta Desk sincronizado com os dados de produtos do seu armazém de dados (por exemplo, Snowflake, BigQuery, PostgreSQL).
Estrutura do fluxo de trabalho
- Gatilho: agendamento.
- Código: consultar seu armazém de dados.
- Código (opcional): formatar os dados como array.
- Iterador: percorrer cada produto.
- Inserir/atualizar registro: criar ou atualizar no Vecta Desk.
Etapa 1: agendar o gatilho
Defina o fluxo de trabalho para executar em uma frequência que atenda às suas necessidades de atualização dos dados:
- A cada 5 minutos para sincronização quase em tempo real.
- A cada hora para dados menos críticos.
- Diariamente para atualizações em lote.
Etapa 2: consultar seu armazém de dados
Adicione uma ação de Código para buscar dados recentes:
export const main = async () => {
const intervalMinutes = 10; // Igual à frequência do seu agendamento
const cutoffTime = new Date(Date.now() - intervalMinutes * 60 * 1000).toISOString();
// Substitua pela conexão real do seu armazém de dados
const response = await fetch("https://seu-armazem-api.com/query", {
method: "POST",
headers: {
"Authorization": "Bearer SUA_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({
query: `
SELECT id, name, sku, price, stock_quantity, updated_at
FROM products
WHERE updated_at >= '${cutoffTime}'
`
})
});
const data = await response.json();
return { products: data.results };
};Filtre por updated_at >= últimos X minutos para recuperar apenas registros alterados recentemente. Isso mantém a sincronização eficiente.
Etapa 3: formatar os dados (opcional)
Se o seu armazém de dados retornar dados em um formato que precise de transformação, adicione outra ação de Código. Transformações comuns incluem conversões de tipo, renomeação de campos e limpeza de dados.
Exemplo: dados de produto com conversões de tipo
export const main = async (params: { products: any }) => {
const products = typeof params.products === "string"
? JSON.parse(params.products)
: params.products;
return {
products: products.map(product => ({
externalId: product.id,
name: product.name,
sku: product.sku,
price: parseFloat(product.price), // String → Número
stockQuantity: parseInt(product.stock_quantity),
isActive: product.status === "active" // String → Booleano
}))
};
};Exemplo: formatação de data e moeda
export const main = async (params: { deals: any }) => {
const deals = typeof params.deals === "string"
? JSON.parse(params.deals)
: params.deals;
return {
deals: deals.map(deal => ({
...deal,
// Converte timestamp Unix em data ISO
closedAt: deal.closed_timestamp
? new Date(deal.closed_timestamp * 1000).toISOString()
: null,
// Garante que o valor seja um número (remove símbolos de moeda)
amount: parseFloat(String(deal.amount).replace(/[^0-9.-]/g, "")),
// Normaliza nomes de etapa
stage: deal.stage?.toLowerCase().replace(/_/g, " ")
}))
};
};Transformações comuns
| Formato de origem | Formato de destino | Código |
|---|---|---|
"true" / "false" | true / false | v === true || v === "true" |
"123.45" | 123.45 | parseFloat(value) |
"active" | "ACTIVE" | value.toUpperCase() |
1704067200 (Unix) | Data ISO | new Date(v * 1000).toISOString() |
"R$ 1.234,56" | 1234.56 | parseFloat(v.replace(/[^0-9.-]/g, "")) |
null / undefined | "" | value || "" |
Etapa 4: iterar pelos produtos
Adicione uma ação de Iterador:
- Entrada:
{{code.products}}
Isso percorre cada produto no array.
Etapa 5: inserir/atualizar cada registro
Dentro do iterador, adicione uma ação de Inserir/atualizar registro:
| Configuração | Valor |
|---|---|
| Objeto | Seu objeto Produto personalizado |
| Correspondência por | ID externo ou SKU (identificador único) |
| Nome | {{iterator.item.name}} |
| SKU | {{iterator.item.sku}} |
| Preço | {{iterator.item.price}} |
Use inserir/atualizar (atualizar ou criar) em vez de construir ramificações separadas para criação vs. atualização. É mais rápido de construir e mais fácil de depurar.
Casos de uso de exemplo
| Fonte | Dados |
|---|---|
| Sistema ERP | Catálogo de produtos, preços, inventário |
| Plataforma de e-commerce | Pedidos, clientes, atualizações de produtos |
| Armazém de dados | Métricas agregadas, dados enriquecidos |
| Sistema de inventário | Níveis de estoque, alertas de reposição |