Cuando un ciudadano tiene que hacer un cambio de titular o llevar un documento, reserva una cita en la oficina de la empresa que le suministra agua, gas o energía. El portal es la agenda compartida de operadoras y personal del cliente: más de cien mil citas desde 2020, siempre con citas ya fijadas para las semanas siguientes. No había un momento para «apagar y encender».
01El punto de partida
El viejo portal funcionaba, pero las sorpresas no faltaban: las reglas de disponibilidad (horarios, aforo, cientos de excepciones y festivos) estaban en programas compilados cuyo código fuente ya no existía — las reconstruimos leyendo las consultas a la base de datos que quedaban dentro. Una regla estaba incluso en el código de la página web. Las notificaciones SMS consultaban tablas que ya no existían: llevaban tiempo paradas y nadie se había dado cuenta. Y la cita no registraba para qué empresa era, un dato que en las oficinas compartidas simplemente faltaba.
02Las decisiones
Una aplicación nueva, no una reforma. Escrita en Python con un framework maduro y open source, en una máquina cloud en una región italiana, a nombre del cliente y administrada por nosotros: la infraestructura es suya, nosotros la gestionamos. El cliente es una línea de configuración: añadir una empresa ya no requiere un despliegue. Separación rigurosa: en las oficinas compartidas, las citas de la otra empresa no existen para el operador, ni en el calendario ni en la búsqueda.
03La migración: con la gente ya en la cola
El cambio se hizo oficina por oficina, con autorización explícita para cada una. Más de veintisiete mil citas históricas y futuras se migraron, de forma repetible (cada fila recuerda su origen, sin duplicados) y silenciosa (ningún correo de confirmación enviado por citas de años atrás). Durante unos días los dos portales estuvieron en paralelo, con una sonda que cada media hora llevaba al nuevo las citas hechas en el viejo; luego un aviso, finalmente el viejo en solo lectura. Donde un dato no estaba, no lo inventamos.
04Seguridad, verificada desde fuera
Un portal en internet hay que revisarlo como lo miraría quien no debería entrar. La revisión encontró un solo problema serio: ningún límite a los intentos de acceso. Cerrado el mismo día, aplicado solo a la página de login. El resto estaba en orden: cifrado moderno, cabeceras de seguridad, base de datos accesible solo desde la propia máquina, acceso de administración desde una sola dirección. Y los datos no están solo en la nube: cada noche una copia completa baja a un servidor en sede.
05Lo que aprendimos
1. Cuando las reglas están en código perdido, los datos cuentan igualmente la verdad. 2. No se inventan los datos que faltan: mejor un campo vacío y declarado que un valor plausible y falso. 3. Las migraciones se hacen con las personas dentro: paralelo, sonda, aviso, solo lectura. Nunca un salto al vacío. 4. La seguridad se verifica desde fuera, y los controles automáticos hay que controlarlos a su vez.