Audit-First Design
En Yastubo, la transparencia es una característica del producto, no una ocurrencia tardía. Nuestro enfoque Audit-First asegura que cada acción significativa —desde la emisión de una póliza hasta un ajuste de precio en Stripe— sea registrada, trazable y responsable.
Core Benefits
Section titled “Core Benefits”- Trazabilidad Total: Registro automático de quién hizo qué, cuándo y sobre qué entidad.
- Cumplimiento Normativo: Cumple con las exigencias de transparencia de las aseguradoras y entidades financieras.
- Depuración Simplificada: Permite rastrear errores de lógica o de usuario al tener un historial completo de cambios.
Deep Dive Técnico: El Decorador @audited
Section titled “Deep Dive Técnico: El Decorador @audited”El corazón de nuestro sistema de auditoría es un decorador de Python que se aplica a los métodos de servicio. Esto permite separar la lógica de auditoría de la lógica de negocio, manteniendo el código limpio (Clean Code).
Funcionamiento del Decorador
Section titled “Funcionamiento del Decorador”El decorador @audited utiliza introspección de funciones para capturar argumentos, el usuario actual y el resultado de la operación.
def audited(action: str, entity: str): def decorator(func: Callable): @wraps(func) async def wrapper(*args, **kwargs): # Captura de db, usuario y argumentos de la función...
# Ejecución del servicio de negocio result = await func(*args, **kwargs)
# Si la ejecución fue exitosa, registramos la acción await audit_service.log( db=db, action=action, entity=entity, user_id=user_id, entity_id=getattr(result, "id", None), ) return result return wrapper return decoratorAutomatización y Bajo Acoplamiento
Section titled “Automatización y Bajo Acoplamiento”Al usar este enfoque, añadir auditoría a una nueva funcionalidad es tan sencillo como añadir una línea de código:
@audited(action="create_lead", entity="lead")async def create_lead(db: AsyncSession, lead_data: LeadCreate, current_user: User): # Lógica de creación del lead...El sistema se encarga automáticamente de persistir este evento en la tabla audit_logs con toda la información de contexto necesaria.
Los Audit Logs
Section titled “Los Audit Logs”Cada entrada en el log de auditoría captura una instantánea del evento:
- Action: El nombre semántico de la acción (ej.
activate_policy). - Entity: El tipo de objeto afectado (ej.
policy). - Entity ID: El identificador único del recurso.
- User ID: Quién realizó la acción (o
Nonesi fue un proceso automático del sistema). - Timestamp: Fecha y hora exacta del evento.
Flujo de Auditoría Automática
Section titled “Flujo de Auditoría Automática”