Timetracking system for taiga using slack integration

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 taiga (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

 

00

More Blog Entries

0 Comments