Primer proyecto de principio a fin · equipo a cargo · Tecon (Ekiba) · 2021-2022

GICA, sistema de gestión de incendios para GEACAM

El sistema con el que las cuadrillas de GEACAM reportan su trabajo desde el campo, incluso sin cobertura móvil, mientras una web de gestión orquesta turnos y campañas y convierte la jornada en informes de gestión.

GICA, sistema de gestión de incendios para GEACAM

GEACAM es la empresa pública encargada de prevenir y combatir los incendios forestales en Castilla-La Mancha. Sobre el terreno, cada cuadrilla la dirige un capataz que tiene que reportar el trabajo del día, y esa información es la que después alimenta la gestión de la campaña.

El problema es que las cuadrillas trabajan en plena montaña, muchas veces sin nada de cobertura móvil, y el parte hay que darlo igual cada día. GICA es el sistema que construí para que eso funcionara. Fue también el primer proyecto que llevé de principio a fin: los requisitos con el cliente, la arquitectura, el desarrollo y un pequeño equipo a mi lado. Lo que sigue es una vista general, a propósito poco detallada.

Cómo funciona #s1

En el centro hay unos datos comunes (turnos, campañas, cuadrillas) que tienen que mantenerse actualizados desde una web de gestión. Esa web es donde el personal de GEACAM orquesta los turnos y las campañas que bajan a la app de campo, y donde el trabajo del día, una vez vuelve, se convierte en los informes que sirven para la gestión de la jornada laboral.

Al otro lado está una app móvil, lo único que tocan los capataces. Como una cuadrilla puede pasar el día entero en una zona sin cobertura, está pensada para funcionar del todo sin conexión: captura el trabajo del día en el dispositivo y lo sincroniza con los datos comunes en cuanto vuelve a haber conexión. La app móvil se delegó en un compañero; mi alcance era la plataforma completa que hay detrás: la web de gestión y los datos sobre los que se apoya todo.

GICA system at a glance A bird's-eye view of the system. On the field side, a mobile app works with no coverage and syncs back when it can. In the middle sits the central platform with the common data (shifts, campaigns, crews). On the management side, a web back office orchestrates that data and generates the reports used to manage the working day. In the field intermittent coverage Field app mobile · offline logs the day's work the foreman reports offline no coverage syncs even while offline Central platform shared data shifts · campaigns staff and crews Back office orchestrates shifts and campaigns Reports to manage the working day updates & orchestrates generates
Una web de gestión mantiene actualizados los datos comunes (turnos, campañas, cuadrillas) y los orquesta para una app móvil de campo. La app móvil funciona sin conexión y sincroniza el trabajo del día. Con esos mismos datos, la web genera los informes que sirven para la gestión de la jornada laboral.

Del parte diario a los informes #s2

Donde el sistema aporta más valor es en los informes. De esos partes diarios del campo, GEACAM tiene que sacar los informes con los que gestiona la jornada: quién ha trabajado en cada unidad, en qué presencia y con qué relevos.

La parte difícil son los cambios de turno. Una cuadrilla no es una lista fija: a lo largo del día y del mes hay titulares, sustituciones y personas que cambian de turno, y el informe tiene que reflejar quién cubrió de verdad cada puesto. Cuadrar eso a mano, unidad por unidad y día tras día, era lento y fácil de equivocar.

GICA lo agiliza automatizándolo: a partir de los datos del campo reconstruye quién estuvo en cada puesto, contando esos relevos, y genera los informes ya listos como archivos descargables, un fichero por unidad y empaquetados juntos cuando se piden varias. Lo que antes era un trabajo manual y propenso a errores pasó a ser un par de clics.

The reports, before and with GICA Before-and-after of the reporting process. On the left, the manual process: scattered data (shifts, substitutions, shift changes), reconciling by hand who covered each position day after day, and one error-prone Excel per unit. A central arrow marks that the process gets automated. On the right, with GICA: the already-synced field entries, an automatic reconstruction that resolves shifts and substitutions, and the finished reports as downloadable files in a couple of clicks. BEFORE · by hand WITH GICA · automated Scattered data shifts · substitutions · shift changes Reconcile by hand who covered each position, day by day slow One Excel per unit manual and error-prone automated Field data the entries, already synced Automatic reconstruction resolves shifts and substitutions Downloadable reports one file per unit · ZIP if several a couple of clicks
Los informes, antes y con GICA. A la izquierda, el proceso manual: datos dispersos (turnos, sustituciones, cambios de turno), cuadrar a mano quién cubrió cada puesto día a día y un Excel por unidad propenso a errores. A la derecha, con GICA: los partes ya sincronizados del campo, una reconstrucción automática que resuelve turnos y sustituciones, y los informes descargables listos en un par de clics.

A escala real #s3

GICA no fue nunca un piloto. Más de 2.200 usuarios daban su parte cada día, en toda Castilla-La Mancha: uso real y sostenido, no una demo. Esa escala es también la razón de que automatizar los informes importara tanto, porque con ese volumen cuadrar los turnos a mano no se sostiene.

GICA daily usage A picture of usage volume: more than 2,200 users filed their work every day from the field. On the left, the headline number; on the right, a pictogram of figures representing that sustained daily use across Castilla-La Mancha. +2,200 users every day filing their work from the field daily, sustained use real, sustained daily use across Castilla-La Mancha (illustrative pictogram)
Más de 2.200 usuarios daban su parte cada día desde el campo: uso diario y sostenido en toda Castilla-La Mancha.

La tecnología, a grandes rasgos #s4

Por debajo es un montaje clásico en tres capas, que aquí dejo a propósito muy por encima: los dos clientes (la app móvil de campo y la web de gestión en Angular) hablan por HTTP con una API en Node.js y Express escrita en TypeScript, que se apoya en una base de datos relacional MySQL.

GICA technology, at a glance A simple three-tier view of the technologies. The clients are a field mobile app (Android, offline) and an Angular management web; both talk over HTTP to a Node.js and Express API written in TypeScript, which reads and writes a relational MySQL database. Client Field app mobile · Android offline Management web Angular Server · API Node.js · Express TypeScript Database MySQL relational HTTP reads & writes
Una vista en tres capas de la tecnología: los clientes son una app móvil de campo (Android, sin conexión) y una web de gestión en Angular; ambas hablan por HTTP con una API en Node.js y Express escrita en TypeScript, que lee y guarda en una base de datos relacional MySQL.

Qué me llevé #s5

GICA fue donde por primera vez llevé un producto sobre mis propios hombros: hablar con el cliente, decidir la arquitectura, escribir el código y liderar un pequeño equipo. La libertad para moverme rápido y ser dueño del resultado sigue siendo una de las cosas que más he disfrutado en mi carrera.

También creció mucho más allá de su alcance inicial, lo que me enseñó pronto cuánto se rentabiliza una arquitectura limpia en cuanto un sistema tiene que crecer hacia algo que su primera especificación nunca mencionó.

Stack

Angular Node.js · Express TypeScript MySQL