EL RETO

El personal de Yapiko está asignado a diferentes proyectos de distintos clientes, los cuales esperan que imputen las horas que dedican en sus proyectos dentro de sus Plataformas de Control de Tiempo internas. A su vez, Yapiko, debido a la regulación estatal y para control interno, necesita registrar en su propio Sistema de Control de Tiempo las horas realizadas por su personal y necesita verificar que coinciden con las declaradas en sus clientes para asegurar una correcta facturación a los mismos.

LA SOLUCION

En 2017 Yapiko decidió desarrollar una solución para integrar todas las herramientas de los distintos clientes que estaban involucradas en el procesode enviar las Horas de Trabajo desde su propio Sistema de Control de Horas (Zoho People – Time Tracking) a otros Sistemas de Control de Horas que emplean sus clientes (actualmente Intervals y Jira).

Nuestro equipo de Backend se encargó de definir todas las operaciones y exponerlas como servicios en coordinación con nuestro equipo Web que desarrolló el Frontend de Chronos para proveer de toda la funcionalidad a los usuarios de manera correcta, gracias a la cual se consiguió:

  • Reducir el tiempo empleado por el personal en el registro de horas, al tener que ser introducido una única vez y posteriormente ser enviado al resto de sistemas destino (MyIntervals, Jira) configurados por cada usuario desde la aplicación.
  • Reducir la frustración del equipo al tener sólo que registrar sus horas en una sola plataforma.
  • Prevenir errores y asegurar la consistencia entre los sistemas involucrados.
  • Facilitar la recogida de métricas de productividad.
  • Reducir la carga de trabajo de los Managers en el seguimiento y control de la correcta introducción de la información de horas en los distintos sistemas implicados.

Por último, se incluyó un módulo de automation configurable para cada usuario para que la herramienta enviara los partes de horas a los clientes automáticamente, ahorrando al usuario el tener que acceder a la herramienta y realizar manualmente la configuración y envío de las horas a los sistemas que necesitara.

SOLUCION WEB

Nuestro equipo de Frontend tenía el encargo de desarrollar la Web para dar funcionalidad a la herramienta a través de las operativas que fueron definidas y desarrolladas por nuestro equipo Backend mediante la API Chronos (ver Proyecto Desarrollo Backend de Chronos).

Se desarrolló una aplicación con perfiles de Usuario y Administrador.

Algunas de las funcionalidades implementadas como usuario fueron:

  • Configurar credenciales de acceso a las Plataformas de Clientes para los que se trabajara.
  • Enviar Horas trabajadas desde la Plataforma Origen (Plataforma de Time Tracking del empleado) a las Plataformas de los Clientes (Plataformas Destino) que tuviera configuradas el empleado.
  • Cambio de password de usuario Chronos.
  • Activar el Auto-Submit para que la herramienta enviara los partes de horas a los clientes automáticamente, ahorrando al usuario el tener que acceder a la herramienta para el envío de las horas a los sistemas que necesita.

Algunas de las funcionalidades implementadas como Administrador (adicionales a las del perfil de usuario) fueron:

  • Sincronizar Proyectos y Tareas de la herramienta de Time Tracking de la Compañía con los Proyectos y Tareas de las plataformas de sus Clientes.
  • Administración de usuarios de Chronos.
  • Envío de Partes de Horas de Usuarios (debido por ejemplo a empleados que hayan olvidado enviar sus horas a los clientes que está asignado).

SOLUCION TECNOLOGICA

La tecnología seleccionada para la codificación de la aplicación React Native, desarrollada por Facebook.

Adicionalmente se contó con un set de librerías auxiliares para la ayuda durante el desarrollo. Se utilizaron las últimas versiones del estándar de JS (ES6, 7, 8……), arquitectura tipo Redux, testing y herramientas de calidad de código que proporcionan una estabilidad y una robustez durante el desarrollo de la aplicación.

La aplicación fue desplegada en Cloud usando AWS (Amazon Web Services).

BACKEND & INTEGRACIONES

Nuestro equipo de Backend se encargó de analizar, diseñar y definir todas lasoperaciones para exponerlas como servicios.

Entre las operaciones principales ofrecidas:

  • Autenticación
  • Configuración de Credenciales de Usuario para los Sistemas de Time Tracking de sus clientes
  • Envío de TimeSheets de un usuario desde el sistema de su compañía a los Sistemas de Control de Tiempo de los clientes para los que trabaja.
  • Sincronización de Proyectos y tareas de los Sistemas de los Clientes al Sistema de Time Tracking de la compañía del usuario

Chronos podría constituir una solución solución SaaS para otras empresas para que pudieran obtener beneficio de todas las ventajas que ofrece.

Integraciones

Una parte fundamental era crear un software que facilitara la integración de conectores para distintas plataformas de Time Tracking.

Posteriormente, se evaluaron y definieron “se desarrollaron Conectores de Integración” capaces de operar sobre reconocidas plataformas (Jira, Zoho, MyIntervals) por medio de las respectivas APIs de que disponen y ““de traducir las respuestas” ” al ecosistema de la aplicación.

Actualmente se siguen desarrollando nuevos conectores para integrar nuevos Clientes que cuentan con distintas Plataformas de Control de Tiempo.

Destacable es el broker que se desarrolló para orquestar toda la comunicación a las APIs externas capaz de gestionar la diversidad de límites que definían cada una de ellas (límite total de llamadas, límite por unidad de tiempo, etc.) y de gestionar colas de llamadas para asegurar el correcto funcionamiento con el mayor rendimiento posible y evitando bloqueos.

SOLUCION TECNOLOGICA

Se empleó una arquitectura REST API-based con la especificació OpenAPI 3.0 como marco, de modo que los desarrolladores de Backend y FrontEnd trabajaron en paralelo para reducir tiempos de entrega una vez definidas las interfaces de los servicios.

La aplicación fue desarrollada usando el framework Spring Boot y desplegada en Cloud usando AWS (Amazon Web Service – EC2, RDS Postgresql, Cognito -).