Layer-api-kafka-subscriber-service

De Plataforma COA Crowd
Saltar a: navegación, buscar

La función de este servicio es conectarse a los tópicos de kafka para procesar los mensajes que estén configurados para ingestar tareas en plataforma. Al escuchar un mensaje de alguno de los tópicos a los que está conectado hace una petición hacia el API Core para solicitar la configuración de las tareas y en base a ello se confirma que la tarea fue tomada por el suscriptor.

Los mensajes se procesan por cada tarea obtenida mediante la consulta de configuración aplicando las expresiones de jmpesth, al validar que una tarea cumple con las condiciones requeridas para ingresar la tarea se hacen las peticiones respectivas para actualizar el mensaje en máquina de estados. Por último, al terminar de procesar las tareas se notifica al tópico de kafka que ese mensaje ha sido leído.

Diagrama

El siguiente diagrama representa el flujo que sigue el modelo implementado en los consumer para procesar cada tarea configurada de los mensajes que lleguen a la cola de solicitudes de máquina de estados.

Flujo de proceso de tareas

Consumer

Los consumer son subscriptores que escuchan un canal definido, reciben un mensaje y al finalizar se marca como leído para evitar ser procesado nuevamente. Estos canales son llamados tópicos y son las colas de mensajes dentro del servidor de kafka.

Tópicos

Los tópicos hacen referencia a las colas de mensajes que el servidor tiene configuradas. Actualmente nuestro subscriptor está conectado a dos colas en las cuales cada una cuenta con una lista de configuración de tareas con las cuales se procesan verificaciones de diferentes áreas.

Solicitudes

Contiene la información de los clientes que inician un proceso de crédito. Los mensajes que llegan a este canal se encuentran en la parte del roadmap, donde tomamos aquellas que se tienen configuradas. Actualmente las tareas que se procesan por este medio son:

  • AFIACC
  • VERIFRAUDES
  • VERIDOMCOA
  • AXILIDER
  • AXIACC
  • AXIGERENTE
  • AXIEJECUTIVO
  • VERIFIRMAPRESENCIAL
  • AXISUBDIR
  • AXIDIR
  • AXIZONAL
  • AXIRIESGO
  • VERIVISITANEGOCIO
  • AXIFIRMA
  • VERIDOMFISICA
  • AXIOC
  • VERIEMPLEOINFORMAL
  • VERIEMPLEOFORMAL

Domiciliación

Es el canal donde se publican las tareas de domiciliación. Las validaciones que tiene configurada la plataforma en este tópico son las siguientes:

Dependencias

  • Kafka: Servidores donde están configurados los tópicos, así como el nombre con el cuál se identifican al leer los mensajes.
  • API Core: Consulta las configuraciones para procesar los mensajes.
Endpoint Método Petición Response
~/api/get_config POST {"type": "nombre_tópico"}
[{"id":107,"taskIdentifier":"AFIACC","data":"{}","options":"{}","createdAt":1637685841201,"updatedAt":null,"active":null,"conditions":"{\"type\": \"solicitudes\"}","dataConf":"{\"roadmap\": {\"result\": \"UNDEFINED\", \"status\": \"INPROGRESS\", \"taskId\": \"AFIACC\", \"roadmap\": \"{statusDescription: roadmap[?taskId=='AFIACC']|[0].statusDescription,passes: roadmap[?taskId=='AFIACC']|[0].passes,taskId:'AFIACC',taskType:roadmap[?taskId=='AFIACC']|[0].taskType,isDigital:roadmap[?taskId=='AFIACC']|[0].isDigital,result:'UNDEFINED',status:'INPROGRESS'}\", \"taskType\": \"VERIFICATION\", \"isDigital\": true}, \"data_conf\": {\"data\": \"merge(roadmap[?taskId=='AFIACC']|[0].payload,{idSolicitud: id})\", \"status\": \"RESOLVIENDO\", \"options\": \"{callback: 'https://me-solicitudes-service.maq-estados.calidad-architect.com/v1/message/kafka'}\", \"tracking_data\": \"{idSolicitud: id, taskId: 'AFIACC'}\", \"task_identifier\": \"vericlient\"}, \"validate_id\": false, \"data_expression\": \"roadmap[?taskId == 'AFIACC' && status == 'NEW'].taskId\"}"}]
  • Máquina de estados: Se consumen dos servicios conectados a cada tópico para actualizar el mensaje en caso de que al procesarlo cumpla las condiciones de ingesta. Pertenecen a los tópicos del consumer respectivos.
Endpoint Método Petición Response
me-solicitudes-service.maq-estados.calidad-architect.com/v1/message/kafka POST {"topic":"resultado-verificaciones-topic","message":{"roadmap":[{"result":"APPROVED","taskType":"VERIFICATION","isDigital":true,"payload":{"docs":null,"document":{"birthday":"","lastName":"","optionalData2":"","address":{"country":"","subdivision":"","formattedAddress":"","city":"","postalCode":"","latitude":0,"line2":"","line1":"","longitude":0},"gender":"","type":"","optionalData1":"","voterIdNumber":"","firstName":"","number":"","idSubtype":"","issuingNumber":"","dob":"","issuingCountry":"","expiry":"","curp":"","status":""},"identityVerification":{"ineReversoOcr":96.36588541666667,"similarity":"","ineAnversoOcr":100,"validity":false,"similarityDecision":"AUTOMATED","similarityScore":""},"codigoResolucion":"VICA","scanReference":"","resolution":"APPROVED","uuid":"082000b9-eb8f-4dd8-9df5-b4b88f218009","transaction":{"date":"","merchantScanReference":"","merchantReportingCriteria":"","clientIp":"","customerId":"","source":"","status":"","updatedAt":""},"verification":null},"taskId":"VERIDENTI","status":"REJECTED"}],"idSolicitud":"61a059ad27bf660001fff73a"}}
Status 200
me-domiciliaciones-service.maq-estados.calidad-architect.com/v1/message/kafka POST {"topic":"resultado-domiciliaciones-topic","message":{"roadmap":[{"result":"APPROVED","taskType":"VERIFICATION","isDigital":true,"payload":{"docs":null,"document":{"birthday":"","lastName":"","optionalData2":"","address":{"country":"","subdivision":"","formattedAddress":"","city":"","postalCode":"","latitude":0,"line2":"","line1":"","longitude":0},"gender":"","type":"","optionalData1":"","voterIdNumber":"","firstName":"","number":"","idSubtype":"","issuingNumber":"","dob":"","issuingCountry":"","expiry":"","curp":"","status":""},"identityVerification":{"ineReversoOcr":96.36588541666667,"similarity":"","ineAnversoOcr":100,"validity":false,"similarityDecision":"AUTOMATED","similarityScore":""},"codigoResolucion":"VICA","scanReference":"","resolution":"APPROVED","uuid":"082000b9-eb8f-4dd8-9df5-b4b88f218009","transaction":{"date":"","merchantScanReference":"","merchantReportingCriteria":"","clientIp":"","customerId":"","source":"","status":"","updatedAt":""},"verification":null},"taskId":"VERIDOMI","status":"REJECTED"}],"idSolicitud":"61a059ad27bf660001fff73a"}}
Status 200
  • Jmespath: Biblioteca de manipulación de json con la cuál validamos los datos de actualización de la tarea en máquina de estados así como la forma en la que entra a la plataforma.

Referencias

Repositorio: https://source.cloud.google.com/coa-autonomation-mx/layer-api-kafka-subscriber-service

Despliegue: https://layer-api-kafka-subscriber-service.autonomation.calidad-architect.com/v1/actuator/info