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
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
- 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.
- 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.
- 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.
- 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.
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.
Más trabajo
Synzi
Agregar un nuevo idioma para pacientes pasó a ser una edición de contenido en vez de un despliegue de código.
Operaciones de campoAZ Data Collector
Checklists de inspección que se terminan donde no hay señal, y que se reconcilian cuando la hay.
ConsumoBloomcatch
Tres plataformas, dos tiendas, un solo comando de publicación.