From b9a0c5571903b41bee07c90ffcbc480ec2000e26 Mon Sep 17 00:00:00 2001 From: Kevin_Ramirez Date: Tue, 21 Jul 2026 16:32:27 -0500 Subject: [PATCH] fix(observability): RequestLoggingMiddleware debe envolver a Tenant/License MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Estaba registrado antes que Tenant/License, así que su cronómetro arrancaba DESPUÉS de que ambos ya habían corrido — el Duration: en los logs nunca incluyó el costo de verify-license/auth-me contra el Hub, dando la falsa impresión de que todo respondía en 2-5ms. Reordenado para que sea el más externo de los tres (CORS sigue siendo el más externo de todos). --- backend/main.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/backend/main.py b/backend/main.py index 39676db3..d85c713c 100644 --- a/backend/main.py +++ b/backend/main.py @@ -60,12 +60,17 @@ async def on_startup(): # Agregar middlewares personalizados -if settings.DEBUG: - app.add_middleware(RequestLoggingMiddleware) - app.add_middleware(LicenseValidationMiddleware) app.add_middleware(TenantMiddleware) +# RequestLoggingMiddleware va después de Tenant/License (add_middleware() invierte +# el orden de ejecución: el último en registrarse corre primero) para que su cronómetro +# envuelva TODO, incluyendo las llamadas al Hub — si no, "Duration:" en los logs +# nunca reflejó el costo real de verify-license/auth-me, dando una falsa sensación +# de que todo respondía en 2-5ms. +if settings.DEBUG: + app.add_middleware(RequestLoggingMiddleware) + # CORS debe ser el último en añadirse para que sea el más externo # y cubra todas las respuestas, incluyendo las de los middlewares internos app.add_middleware(