Ir al contenido
PaqueteAuditoría de arquitectura: revisión independiente y plan de migración paso a paso en 5-7 días laborables
Proyectos
Detalle del proyecto

ABE BIYOSIDAL · 2020 – ACTUALIDAD

Sistema de equipos de campo Biocidal

Software multi-tenant basado en SIG para gestionar equipos de campo, que reúne en un solo sistema el control de plagas y vectores de ayuntamientos y empresas privadas de control de plagas, desde el aviso de un vecino hasta el cierre al final del día. Lo utilizan varios ayuntamientos.

Mi función: Arquitectura de software: diseñé la arquitectura desde cero y dirijo el desarrollo desde 2020.

en producción desde
2020
datos separados por organización
Multi-tenant
consultas espaciales
PostGIS
ayuntamientos lo utilizan
Varios

El problema

En el control de vectores, el trabajo se reparte en muchos pasos: llega la queja de un vecino, se convierte en una orden de trabajo, un equipo de campo realiza el tratamiento, el producto utilizado se descuenta del inventario y, por último, se preparan los informes que exige el pliego de la licitación.

Si esos pasos están en sitios distintos, es difícil responder a la pregunta “¿qué equipo usó qué producto, dónde y en qué cantidad?”, y las inspecciones y los informes llevan días.

Arquitectura

Panel de administración

  • Angular

Mapa

App de campo

  • React Native

Móvil

API GraphQL

  • GraphQL Yoga
  • WebSocket

Datos en vivo y suscripciones

Base de datos

  • PostgreSQL
  • PostGIS

Datos por tenant

Caché

  • Redis

Eventos en tiempo real

Las notificaciones funcionan en dos capas: mediante una suscripción WebSocket mientras la app está abierta, y por push, SMS y correo electrónico cuando está cerrada.

Lo que he construido

  • Trabajo de campo

    El ciclo aviso → orden de trabajo → tratamiento in situ → cierre del día; las órdenes de trabajo avanzan por una máquina de estados.

  • Inteligencia espacial

    Zonas de responsabilidad, planificación de rutas y asignación punto en polígono que determina en qué zona cae una ubicación, con PostGIS.

  • Inventario y coste

    Seguimiento por lotes, salida por fecha de caducidad (FEFO) y valoración según primero en entrar, primero en salir (FIFO).

  • Entrega a equipos y conciliación

    Los productos entregados a un equipo quedan a nombre de ese equipo; el inventario se descuenta cuando se aprueba el tratamiento in situ.

  • Permisos y auditoría

    Permisos dinámicos por módulo y acción; un registro de quién cambió qué y cuándo.

  • Informes y notificaciones

    Informes por provincia y distrito; notificaciones en la app, push, SMS y correo electrónico.

Problemas difíciles que he resuelto

  1. 1

    Añadir multi-tenancy a un sistema en producción

    Añadí el aislamiento de datos por organización a un esquema que ya estaba en producción. Las consultas sobre tablas ligadas a un tenant se filtran automáticamente en la capa de datos, de modo que un filtro olvidado por un desarrollador no provoca una fuga de datos.

  2. 2

    Valoración del inventario

    Para lotes del mismo producto con precios y fechas de caducidad distintos, la salida se calcula según FEFO y el coste según FIFO; el consumo en campo se asocia al lote y al coste correctos.

  3. 3

    Migración de la capa de datos en producción

    Mientras el sistema estaba en uso, se sustituyeron el ORM y el enfoque del esquema GraphQL; las definiciones del esquema están ahora en archivos SDL escritos a mano.

Tecnologías

  • Angular
  • TypeScript
  • GraphQL
  • Node.js
  • Prisma
  • PostgreSQL
  • PostGIS
  • Redis
  • Firebase

Servicios relacionados

¿Está construyendo un sistema similar? Podemos trabajar juntos desde la arquitectura hasta la puesta en producción.

Contactar