Reportes de fallo y recuperación: el consentimiento y la pantalla de repliegue

Cuando una pantalla de Senzoukria Desktop lanza un error al renderizar, un límite de error sustituye solo esa zona por una tarjeta Esta pantalla se ha detenido con Recargar y Copiar los detalles. El reporte de fallo solo se envía si has activado Reportes de fallo en la página Cuenta, y nunca contiene credenciales, posiciones ni P&L.

Senzoukria · Documentación · Actualizado en septiembre de 2026


Dónde encontrarlo

Dónde
Página Cuenta → Preferencias → Reportes de fallo (casilla Activado / Desactivado)
Por defecto
Desactivado. No se envía nada hasta que lo actives
Endpoint
POST https://senzoukria.com/api/crash, tiempo de espera 5 s, silencioso si falla
Carga útil
kind, message (máx. 1.000 caracteres), stack (máx. 4.000 caracteres), appVersion, platform, timestamp

Qué hace

Trabajan juntos dos mecanismos. El primero es un límite de error de React colocado alrededor de cada zona protegida de la aplicación. Si un componente de esa zona lanza un error al renderizar, React desmontaría todo el árbol y dejaría una ventana en negro; el límite lo captura, registra el error en la consola con la pila de componentes y renderiza una tarjeta en lugar de la zona. El resto de la aplicación sigue funcionando: el feed de datos y la conexión del bróker quedan intactos.

El segundo es el reportador de fallos. Cuando el límite captura un error de renderizado, o cuando un manejador global ve una promesa rechazada sin gestionar o un error no capturado fuera de React, se compone un reporte y se envía, pero solo si diste tu consentimiento. El ajuste se guarda en local bajo una única clave; si no está, no hay consentimiento. El envío es sin esperar respuesta: la pantalla de error nunca se retrasa por la petición, y un envío fallido falla sin ninguna ventana emergente.

Ajustes

La preferencia de reportes de fallo y los botones de la tarjeta de repliegue
ControlPor defectoQué cambia
Reportes de fallo (página Cuenta)DesactivadoActivado, un fallo envía la versión, la plataforma y la traza del error a senzoukria.com. Desactivado, nada sale de la máquina; la consola y el botón de copia siguen funcionando
RecargarRecarga la ventana (window.location.reload). Los almacenes guardados se rehidratan desde el almacenamiento local; la conexión del bróker vive en el backend y no se reinicia
Copiar los detallesCopia al portapapeles el mensaje de error, su pila y la pila de componentes de React; la etiqueta pasa a Copiado. Un fallo del portapapeles se ignora en vez de mostrarse

Qué contiene el reporte

La carga útil tiene seis campos: kind (panic para el lado Rust, render para un error de renderizado de React, unhandled para una promesa rechazada o un error no capturado), message, stack, appVersion, platform y la marca de tiempo. El mensaje se corta a 1.000 caracteres y la pila a 4.000, conservando los primeros marcos, que son los que llevan la información.

Antes de entrar en la carga útil, message y stack pasan por un depurador que enmascara claves de API de IA, tokens Bearer y Basic, rutas de usuario de Windows y Unix (acotadas en el separador de ruta, para que un nombre de cuenta de Windows de dos palabras no filtre su segunda mitad), direcciones de correo y pares clave/valor sensibles como password, token, api_key, user_id, unique_user_id, login o account. Un test fija estos patrones con las formas reales que toman en los mensajes de error de la aplicación. Las credenciales del bróker, el nombre de cuenta, las posiciones, el P&L, los símbolos operados y la clave de IA nunca forman parte del reporte.

Un limitador conserva un reporte por firma distinta (kind más los primeros 200 caracteres del mensaje depurado) y como mucho cinco firmas distintas por sesión, de modo que un bucle de renderizado que falla en cada fotograma no genere cientos de peticiones.

Cómo usarlo

  • Si una pantalla muestra Esta pantalla se ha detenido, pulsa primero Recargar. Si vuelve a ocurrir, pulsa Copiar los detalles y pega el texto en un reporte desde la pantalla Informar de un problema, que además adjunta automáticamente las últimas líneas de error.
  • Activa Reportes de fallo en la página Cuenta si quieres que los errores de renderizado y los no gestionados lleguen a los desarrolladores sin que hagas nada. La etiqueta junto a la casilla dice exactamente qué se envía y qué no.
  • La pantalla Informar de un problema es un canal aparte y voluntario, con sus propios mensajes de fallo visibles; el reportador de fallos es automático y silencioso por diseño.

Límites y trampas

  • El límite cubre los errores de renderizado de su zona. Los errores en callbacks de eventos, temporizadores e importaciones dinámicas los capturan los manejadores globales, que reportan pero no muestran la tarjeta.
  • El consentimiento es una única clave de almacenamiento local en esta máquina; un perfil nuevo, un almacenamiento borrado o uno que la aplicación no pueda leer equivalen a no consentir, así que no se envía nada.
  • El reporte se envía al dominio canónico con un tiempo de espera de 5 segundos; si la máquina está sin conexión, el reporte se descarta, no se encola.

Esta página en otros idiomas

Preguntas frecuentes

¿Un fallo de un panel se lleva por delante mi conexión de bróker?
No. La conexión la mantiene el proceso del backend. La tarjeta sustituye solo la zona que falló, y Recargar recarga la ventana mientras la conexión se queda como estaba.
¿Los reportes de fallo se envían automáticamente?
Solo después de que actives Reportes de fallo en la página Cuenta. El valor por defecto es Desactivado y sigue así hasta que lo cambies. Incluso activado, las credenciales, las posiciones, el P&L y las claves se eliminan antes del envío.
¿Qué diferencia hay entre un reporte de fallo y un reporte de problema?
Un reporte de fallo es automático, mínimo y silencioso si falla. Un reporte de problema lo escribes tú en la pantalla Informar de un problema, muestra lo que adjunta y te avisa si el envío no salió.