fmatituy/selectospromanager
0
1from nicegui import ui
2from core.logger import logger
3
4class SelectosException(Exception):
5 """Base exception para el ERP."""
6 def __init__(self, message: str, code: str = "GENERIC_ERROR"):
7 self.message = message
8 self.code = code
9 super().__init__(self.message)
10
11class AuthError(SelectosException):
12 """Error de autenticación o permisos."""
13 pass
14
15class DatabaseError(SelectosException):
16 """Error en la capa de persistencia."""
17 pass
18
19def global_exception_handler(e: Exception):
20 """
21 Captura errores no manejados para prevenir el crash del servidor.
22 Muestra una notificación amigable al usuario y loguea el error técnico.
23 """
24 error_msg = str(e)
25 logger.error(f"CRITICAL ERROR CAPTURED: {error_msg}", exc_info=True)
26
27 # Si estamos en un contexto de UI de NiceGUI
28 try:
29 ui.notify(
30 "⚠️ Ha ocurrido un error inesperado. Por favor, contacte a Soporte IT.",
31 type='negative',
32 position='top',
33 close_button=True
34 )
35 except:
36 pass
37 