Saltar al contenido principal

Soluciones

En el uso de Ares pueden presentarse algunos inconvenientes o necesidades comunes.
A continuación se documentan los principales y cómo solucionarlos.


1. Agregar un atributo nuevo en Ares

Síntoma:
Necesitan agregar un atributo nuevo en Ares, por ejemplo 'energy_required' de tipo boolean.

Posibles causas:
El equipo comercial quiere mostrar a los usuarios de web si el articulo se conecta a la corriente electrica.

Solución:
Vamos a registrar el nuevo atributo en Ares para que sea capaz de recibirlo en las comunicaciones de RabbitMQ y asi guardarlo en MongoDB.

  1. En el listado de AWS Lambdas busca la que se llama ms-ares-consumers-stg-pimconsumer-v6 y/ó ms-ares-consumers-prod-pimconsumer-v6
  2. Dentro de la lambda hay informacion general en la seccion de 'Function overview' y debajo hay opciones formato de tabs (Code, Test, Monitor, Configuration, Alises, Versions), asi que elige 'Code'. Para más información
  3. Una vez en el editor de código (el cual es parecido a VS Code) ubica el archivo src/pim-consumer/template.js**
  4. Vamos a agregar un nuevo atributo en el objeto de module.exports, podria ser debajo del ultimo atributo registrado que es 'sale_price'. Queremos que en la base de datos de Ares de almacene con el nombre de is_energy_required en formato boolean pero en el JSON que recibiremos en RMQ el campo se llamara energy_required y podriamos recibir un numero (1,0) o formato boolean.

Entonces se veria algo así...

module.exports = {
..., // otros atributos
sale_price: {
"path": "price",
"transform": (price) => price ? +(Number(price).toFixed(2)) : undefined,
"api_import": false,
},
is_energy_required: {
"path": "energy_required",
"transform": (attributeValueFromJson) => {
if (undefined == attributeValueFromJson) {
return undefined; // esto evita actualizar cuando no se envia el atributo en el JSON
}
let attributeValueToDatabase = false;
if (1 == attributeValueFromJson || true == attributeValueFromJson) {
attributeValueToDatabase = true;
}
return attributeValueToDatabase;
},
"api_import": false,
},
};
  1. Una vez modificado el template atributos vamos a guardar los cambios usando el botón Deploy.

Desde ahora ya podras enviar el nuevo campo en las comunicaciones de rabbitmq y Ares lo guardara. Sigue el proceso Publicacion de productos enviando un JSON como el siguiente.

{ "sku":"12204_2", "energy_required":1 }

2. Agregar un atributo en la publicación de Typesense

Síntoma:
Necesitan agregar un atributo nuevo en Typesense, por ejemplo 'energy' de tipo string.

Posibles causas:
El equipo comercial quiere mostrar a los usuarios de web si el articulo se conecta a la corriente electrica.

Solución:
Vamos a registrar el nuevo atributo en el publicador de Ares-Typesense.

  1. En el listado de AWS Lambdas busca la que se llama ms-ares-reports-stg-typesensePublish y/ó ms-ares-reports-prod-typesensePublish
  2. Dentro de la lambda hay informacion general en la seccion de 'Function overview' y debajo hay opciones formato de tabs (Code, Test, Monitor, Configuration, Alises, Versions), asi que elige 'Code'. Para más información
  3. Una vez en el editor de código (el cual es parecido a VS Code) ubica el archivo src/publisher/channels/TYPESENSE/template.js**
  4. Vamos a agregar un nuevo atributo en el objeto de exports.map, podria ser debajo del ultimo atributo registrado que es 'has_cashback'. En Ares el campo se llama is_energy_required de tipo boolean pero queremos que en typesense llegue con el nombre de energy con valor 'si' ó 'no'.

Entonces se veria algo así...

exports.map = {
template: {
..., // otros atributos
has_cashback: {
path: "has_cashback",
transform: function (val, transformedObject, originalObject) {
return val === true
&& originalObject.product_type !== 'gaiagrouped';
}
},
energy: {
path: "is_energy_required",
transform: function (val, transformedObject, originalObject) {
return val === true ? 'si' : 'no'
}
},
}
};
  1. Una vez modificado el template atributos vamos a guardar los cambios usando el botón Deploy.

Desde ahora las nuevas publicaciones en typesense incluiran el campo 'energy'.