Layer-api-clonacion-tareas-service
El servicio de clonación es un microservicio enfocado en determinar las tareas a las cuales es necesario generar una copia de esta basándose en la calificación score que tiene el agente al cual se le asigna la tarea original, esto va determinado a garantizar la calidad de revisión de ejecución de tareas.
El enfoque de decisión de clonación se basa por porcentajes y rangos de score, donde un score bajo tiene mas probabilidades de clonación y un score alto tiene menor probabilidad de clonación, según el score del agente en cuestión su porcentaje de clonación ser un propocional según su ubicación de score entre el score menor y mayor de clonación y sus respectivos porcentajes de clonación.
Sumario
Dependencias
layer-api-core-service
Este servicio es utilizado para la consulta de los datos (task_request, task_segment) de tarea a clonar así como consulta de existencia del nuevo id de segmento con el fin de determinar que la tarea solicitada no haya sido clonada con anterioridad y sus configuraciones en task_request y task_segment permitan que la tarea pueda ser clonada.
Endpoint | Tipo Petición | Petición | Respuesta |
~/api/get_task_segment | GET | ~?task_segment_id={id tarea recibida} |
{ task_request_uuid: {}, |
~/api/get_task_request | GET | ~?uuid={task_request_uuid} |
{ |
~/api/get_task_clonable | GET | ~?segmentId={id_nuevo_segmento} |
{ uuid: {id_nuevo_segmento}, clonable: {true/false, dependiendo si existe la tarea o no} } |
layer-api-event-handler
Este servicio es consultado para realizar la extracción de la información en redis correspondiente al tipo de role que debe cumplir un usuario para poderle asignar la tarea o en este caso el clon de la tarea que se esta generando.
Endpoint | Tipo Peticion | Peticion | Respuesta |
~/state/taskInfo | GET | ~?taskId={id tarea recibida} |
{ taskIdentifier: {}, role: {role que deben cumplir los agentes para poder atender el clon} } |
layer-api-score-service
Este servicio es utilizado para consultar el score del agente correspondiente para el tipo de tarea que debe ser clonada así como el score minimo usado para la búsqueda de agentes disponibles que puedan realizar la ejecución de la tarea clonada. El score minimo regularmente esta situado en score - 10%.
Endpoint | Tipo Petición | Petición | Respuesta |
~/api/getMinScore |
GET | ~/worker_uuid={workerid}&task_identifier={microTaskType}&process=clonacion |
{ score: {actual score del worker para la microTask}, minScore: {el score minimo que debe cumplir otro agente para que se le asigne el clon} |
layer-api-web-service
Este servicio es utilizado para la consulta de parametros del porcentaje de muestra para operadores, así como la consulta de agentes disponibles que cumplan las condiciones (score mínimo, role) para poder atender la tarea clonada y por ultimo la actualización del segmento de tarea para poder identificar que la tarea solicitada ha sido clonada.
Endpoints
Endpoint | Tipo Petición | Petición | Respuesta |
~/api/get_workers_availables |
GET |
~?worker_uuid={workerid}&roleOrTask={task role or type}&minScore={minScore}µtask={microTaskType} |
{
workers_list: [
{workerid},
{workerid},
...... ]
}
|
~/api/get_top_cloned_microtask_worker |
GET | ~?worker_uuid={workerid}µtask_type={microTaskType} |
{
microtask_cloned: {numero_clonadas} }
|
~/api/get_parameter |
GET | ~?clave=porcentajeMuestraOperador&tarea_destino={microTaskType} | { "scoreInf": 3, "scoreSup": 5, "porcentajes": { "porcentajeInf": 100, "porcentajeSup": 20 } } |
/api/tasks_updt_clonada |
POST |
{ uuid: {id_task_segment}, clonada: true } |
Parametros
Para el correcto funcionamiento del servicio es necesario dentro de la base de datos layer-api-web-service en la tabla paramentros se encuentre registrado el siguiente parametro:
task_identifier | parameter_key | parameter_value |
{tarea para la cual aplica los valores del parametro} | porcentajeMuestraOperador | { "scoreInf": 3, "scoreSup": 5, "porcentajes": { "porcentajeInf": 100, "porcentajeSup": 20 } } |
Nota: El parametro debera ser registrado N cantidad de veces segun se requiera para cada task_identifier distinto.
layer-api-task-publisher-service
Este servicio es se encarga de generar la nueva con el nuevo id de segmento tomando como base los datos del id del segmento original, además de esto, se encarga de realizar la publicación en redis para que esta tarea sea atendida.
Endpoint | Tipo Petición | Peticion |
~/api/publish_cloned_task | POST | ~?original_id={id_segmento_original}&clon_id={new_id_segmento} |
Núcleo de decisión
La parte fundamental del servicio es el proceso del cálculo de porcentaje de clonación tomando como base el score del worker para una tarea, el tope superior de score junto con su porcentaje correspondiente de clonación y el tope inferior de score junto con su porcentaje correspondiente de clonación.
En base al siguiente ejemplo grafico, contemplando 100%(porcentajeInf) de clonación para score de 3 (scoreInf) y 20%(porcentajeInf) de clonación para score de 5, a un score de 3.5 le corresponderia 80% de clonación y 50% para un score de 4.25.
En el siguiente recuadro se encuentra la descripción de como es que se calcula el porcentaje así como un ejemplo de uso.
Definición | Ejemplo |
scoreSup = "tope superior de score";
score = "score de worker para el tipo de tarea";
scoreRango = ((scoreSup - scoreInf) * 100); if(topClonedMicroTask < tareasAmuestrear){ |
{ score = 3.5;
scoreRango = ((5 - 3) * 100); //200 if(topClonedMicroTask < tareasAMuestrear) //9 < 8 |