Open IT Experts for Enterprise

Zylk empresa de desarrollo de ecommerce

Timetracking system for taiga using slack integration

Gustavo Fernández
Gustavo Fernández

En zylk.net llevamos unos diez años gestionando los proyectos y los
soportes con el bugtracker
(mantis)
. En este último mes estamos probando distintas
herramientas más próximas a la gestión de proyectos que a la gestión
de issues/tasks etc.. Hemos probado algunas SAAS otras on premise
etc… De momento con la que más a gusto nos estamos encontrando es con taiga

Una de las cosas
que no tiene taiga es la posibilidad de imputar
horas reales en
las notas de las historias de usuario, issues, tasks etc.. Con lo que
hace un poco más compleja la gestión de las horas reales imputadas en
un proyecto. Por esa razón y dado que estamos usando también
el sistema de mensajería slack a nivel interno he desarrollado este
fin de semana
un modulo (no lo llamaría módulo de taiga ya
que en realidad no lo es) para permitir hacer el seguimiento de
tiempos de las tareas definidas en un proyecto del taiga.

Para ello contaba con los siguientes ingredientes

  • Pocos o nulos conocimientos de la arquitectura de
    taig
    a (Python pip etc..)
  • Un sistema de mensajería basado en slack con un bot que
    procesa la información de los canales
    de slack (Proyecto
    interno que estamos desarrollando en zylk.net que esperamos poder
    presentar el año que viene). Hay un montón de post relacionados con
    el tema en el blog de zylk [1][2][3]
    que aunque parecen inconexos tiene un objetivo común.
  • Modulo de integración entre taiga y slack

Visto el
primer ingrediente
… quedaba descartada la mejor opción a
nivel técnico que era hacer un módulo de taiga. Así que lo que diseñe
fue lo siguiente

  1. Mandar los mensajes de las acciones realizadas en taiga
    a un canal de slack, usando el módulo de
    taiga disponible a tal efecto
  2. Parsear esos mensajes y extraer la información de seguimiento
    de tiempos, una expresión regular …
    [".*<https://taiga.zylk.net/project/(.*?)/task/(.*?)\|#.*?:(.*)>.*\n+.*Comment
    by (.*?):(.*@timetracking\s{1}(\S*)\s?.*)"
    ]
  3. Guardar esa información un backend y notificar que se ha
    realizar la acción. De momento en una base de datos relacional.

Para ello bastó con diseñar la siguiente tabla

 

CREATE TABLE timetracking
(
   project VARCHAR(255),
   taskId VARCHAR(255),
   task VARCHAR(255),
   channel VARCHAR(255),
   timestamp BIGINT,
   message TEXT,
   timetrack DOUBLE,
   user VARCHAR(255)
);

Y usar el BOT que
ya tenemos en zylk para que respondiera a la expresión regular. Con
este sencillo modelo hemos conseguido que si se añade la
siguiente instrucción (@timetracking 1:00) a un comentario

de una tarea en taiga se añada esa imputación a la tabla anteriormente
descrita …

El sistema tiene una enorme cantidad de mejoras
posibles
… pero tiene una virtud, que no
tendría un módulo de taiga, y es que nos permite realizar
imputación sobre proyectos tanto desde la interfaz de taiga, como
desde el propio sistema de mensajería de slack
. A
continuación mostramos unas imágenes de cómo sería el flujo de una
imputación, el flujo sigue la el siguiente esquema

  1. Se crear una nota en una tarea de un proyecto de
    taiga
    , que tenga el texto @timetracking 2:00
  2. El mensaje se envía al canal de slack del proyecto en cuestión
  3. El BOT que tenemos desarrollado en zylk,
    interpreta ese mensaje, extrae la información necesaria (proyecto,
    task, timetracking, usuario etc…) y la añade a la tabla
  4. El BOT notifica que ha realizado la acción con éxito

 

Si te ha parecido interesante comparte este post en RRS

Facebook
LinkedIn
Telegram
Email

Leer más sobre temas relacionados

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *