Saltar al contenido
Agendar llamada

Enterprise · Operaciones enterprise

Trident Ops Portal

Un modelo de permisos lo bastante complejo como para exigir construirlo con pruebas primero.

Rol
Ingeniero de backend
Duración
9 meses
Equipo
3 de nuestro lado
Sector
Operaciones enterprise
trident — tablero de proyectos
trident — matriz de roles
trident — log de auditoría

La situación

Una plataforma de proyectos y operaciones donde lo que puedes ver y hacer depende de tu rol, tu cliente y el proyecto concreto — tres dimensiones que se cruzan en vez de anidarse.

Nosotros teníamos la capa Django y DRF: el modelo de datos, la lógica de permisos y la API que consume el frontend en React.

El problema

Las reglas de permisos con esta forma son donde las plataformas enterprise se rompen en silencio. Un cambio en un rol filtra acceso a otro, y nadie se da cuenta hasta que un cliente ve un proyecto que nunca fue suyo.

El QA manual no puede cubrir las combinaciones. La matriz de rol × cliente × proyecto es demasiado grande para recorrerla a mano antes de cada despliegue.

Lo que construimos

  1. 01

    El modelo de permisos como datos

    Cliente, permiso y rol-permiso como modelos de primera clase, en vez de condicionales repartidos por las vistas. Un solo lugar donde leerlo, un solo lugar donde cambiarlo.

  2. 02

    Cobertura unitaria en cada modelo y endpoint

    Escritas junto a la lógica, no después. Cada par rol-permiso tiene una prueba que afirma tanto lo que concede como lo que debe negar.

  3. 03

    Una capa DRF con los permisos en el borde

    La autorización se decide en un único punto de control, así un endpoint nuevo hereda las reglas en vez de reimplementarlas.

  4. 04

    Integraciones con Boto3 para el lado operativo

    Almacenamiento de documentos y trabajos asíncronos en AWS, conectados para que una integración caída degrade una funcionalidad y no el portal.

DjangoDRFReactReduxBoto3PostgreSQLAWS

El resultado

Cobertura unitaria en cada modelo y endpoint, para que los cambios de permisos salgan sin regresiones entre roles.

Cambiar lo que puede hacer un rol pasó a ser un pull request normal con una prueba que demuestra que nada más se movió — en vez de un despliegue que todos aguantaban la respiración.