Saltar a contenido

Extensiones

La tienda de extensiones (Admin → Extensiones) instala extensiones firmadas por el proveedor que añaden capacidades específicas del cliente — contenido adicional del metamodelo, integraciones, tareas en segundo plano e incluso páginas nuevas — sin cambiar el núcleo de Turbo EA (principio «clean core»).

Las extensiones se instalan de dos maneras: con un clic desde la Tienda integrada (si la instancia tiene acceso a Internet) o subiendo los archivos directamente — la extensión es un paquete .teax firmado y la licencia un archivo de texto firmado, ambos enviados normalmente por correo electrónico. El flujo basado en archivos no requiere cuenta de tienda ni conexión saliente, por lo que funciona igual en instancias aisladas (air-gapped).

La página tiene dos pestañas: Tienda explora el catálogo de extensiones de tu proveedor con instalación en un clic, e Instaladas gestiona licencias e instala desde archivos.

Las extensiones las crea y firma Turbo EA — no son de creación propia ni están abiertas a terceros. Si necesitas una funcionalidad adaptada a tu organización, podemos crearla y licenciarla para ti. Consulta la consultoría de Turbo EA.

Guías de cada extensión

Cada extensión publicada en la tienda tiene su propia guía de usuario: qué hace, cómo configurarla y cómo utilizarla en el día a día. Véase Extensiones.

Cómo funciona la confianza

Dos comprobaciones independientes protegen su instancia:

  1. Procedencia (firma). Cada paquete lleva una firma Ed25519 de la clave del proveedor. Turbo EA la verifica al subirlo y de nuevo en cada arranque del backend. Los paquetes sin firma, manipulados o de terceros se rechazan — una extensión instalada es exactamente lo que el proveedor construyó.
  2. Activación (licencia). Un archivo de licencia firmado enumera sus derechos — uno por extensión, cada uno con su propia caducidad. Una extensión instalada solo funciona mientras exista un derecho utilizable. Las licencias están vinculadas al ID de su instancia — una licencia emitida para otra instancia se rechaza.

Extensiones gratuitas

Algunas extensiones son gratuitas y no requieren ninguna licencia. Se instalan y se ejecutan de inmediato: no hay paso de compra ni archivo de licencia que pegar. Las extensiones gratuitas se marcan con una insignia Gratis en las pestañas Tienda e Instaladas, y las acciones Comprar y Renovar quedan ocultas para ellas. La comprobación de firma se sigue aplicando igual que en las extensiones de pago (una extensión gratuita también está firmada por el proveedor), por lo que la procedencia está garantizada en cualquier caso. Como no necesitan ninguna licencia, las extensiones gratuitas nunca caducan ni entran en un periodo de gracia.

El ID de su instancia

Cada instalación genera una única vez un ID de instancia (TEA-XXXX-XXXX-XXXX), visible en la parte superior de Admin → Extensiones con un botón de copia. Es su identidad de licencia: indíquelo al comprar (la Tienda integrada lo envía automáticamente; el pago de la tienda en línea lo solicita) para que cada extensión comprada para esta instancia — por cualquier administrador, con cualquier correo — termine en una única licencia combinada. Solo identifica su instancia; nunca es una credencial, así que puede compartirlo con su proveedor sin riesgo.

Extensiones — pestaña Instaladas con el ID de instancia

El ID viaja con una transferencia de espacio de trabajo, por lo que mudarse a un nuevo servidor mantiene la licencia válida. Tras una reinstalación completa, la instancia recibe un ID nuevo — pida a su proveedor que vuelva a emitir su licencia para él (un rápido «re-key» por su parte).

La pestaña Tienda

La pestaña Tienda funciona sin configuración alguna y lista las extensiones publicadas por el proveedor como una cuadrícula de fichas compactas: logotipo, nombre, estado de licencia y precio. Haga clic en cualquier ficha para abrir una ventana de detalles grande: a un lado, una galería de capturas de pantalla — recórrala con las flechas o las miniaturas y haga clic en una captura para verla a tamaño completo — y, junto a ella, la descripción completa, las etiquetas de categoría, los créditos de origen y licencia y las acciones. Cuando la tienda publica notas de versión de la extensión, las dos versiones más recientes aparecen bajo Novedades, con un enlace Registro de cambios completo a la página de la extensión en la tienda. Las extensiones que no incluyen imagen muestran una ficha generada con sus iniciales.

Extensiones — pestaña Tienda

  • Comprar abre la página de pago en una pestaña nueva del navegador. En cuanto se confirma el pago, tu licencia se aplica automáticamente (también llega una copia por correo).
  • Algunas ofertas se venden con dos planes: mensual y anual, normalmente el anual con descuento. Su ventana de detalles muestra entonces Comprar mensual y Comprar anual en lugar de un único botón; ambos llevan al mismo pago.
  • Instalar (o Actualizar cuando se publica una versión más reciente) comprueba primero tu licencia — si la extensión aún no tiene licencia, un diálogo ofrece comprarla o pegar una licencia y luego continúa automáticamente — y descarga el paquete con exactamente la misma verificación de firma y vista previa de simulación que una carga manual. Las extensiones con demo muestran un enlace Verlo en acción. El botón dice Actualizar solo en una extensión que ya tienes instalada; en las demás es un simple Instalar que descarga la versión publicada.

El catálogo se organiza en cinco secciones — Estrategia, planificación y transformación, Gobernanza y automatización, Integraciones, Regulaciones y Servicios — cada una con su propio encabezado, para ver de un vistazo de qué tipo de oferta se trata; lo que el catálogo no ha clasificado aparece bajo Otras al final. Dentro de las secciones, las píldoras de etiquetas (gratuita o comercial, más temas como integración) funcionan como filtro: aparece una barra de filtros sobre la lista, pulsar píldoras la acota (varias píldoras se combinan), las secciones sin coincidencias desaparecen y Todas restablece la vista.

Una oferta de servicio — algo que no se instala, como una suscripción de soporte — se vende y licencia como una extensión, pero sin paquete. Su ficha y su ventana de detalles solo ofrecen Comprar, no muestran versión y lo indican claramente; una vez confirmada la compra, el mismo chip de licencia (Se renueva el …) aparece en la ficha, y el correo de confirmación explica cómo usar lo que ha comprado.

La pestaña Tienda es de solo lectura y anónima: sin cuenta, sin token, y no se envía nada sobre tu instancia — solo se lee el catálogo público del proveedor. Las instancias aisladas no necesitan configuración — la pestaña muestra entonces simplemente un aviso amable — y usan el flujo basado en archivos de abajo; el sitio web de la tienda del proveedor ofrece las mismas compras y descargas desde cualquier navegador con conexión a Internet. Si algo entre su instancia y la tienda bloquea la solicitud — un proxy, un cortafuegos o una protección anti-bots delante de la tienda —, la pestaña lo indica y muestra el estado HTTP recibido, de modo que una instancia bloqueada nunca se confunda con una aislada.

La instancia también comprueba el catálogo una vez al día e informa de los cambios, para que una extensión nueva —o una corrección de seguridad de alguna que ya utiliza— no espere a que alguien abra esta página por casualidad. Los administradores (cualquiera cuyo rol conceda admin.manage_extensions) reciben una notificación en la campana cuando se publica una extensión nueva en la tienda, y otra cuando una extensión instalada tiene una versión más reciente. Cada cambio se anuncia una sola vez, y un día de lanzamientos intenso llega como una notificación por tipo en lugar de una por extensión. No se descarga ni se instala nada: la notificación simplemente le trae hasta aquí. La comprobación diaria puede desactivarse por completo en Admin → Configuración → Notificaciones de actualización.

La pestaña también muestra cuándo se leyó la tienda por última vez y un botón Comprobar ahora que ejecuta la comprobación de inmediato e informa de lo que encontró, de modo que puede confirmar que la comprobación diaria funciona sin esperar un día. Si una comprobación falló, aquí se muestra el motivo en lugar de quedar en silencio.

Pruebas

Algunas extensiones de pago ofrecen una prueba gratuita de 30 días — busque el botón Iniciar prueba de 30 días en la pestaña Tienda (o la opción de prueba en el sitio web de la tienda). Iniciar una prueba funciona como una compra sin pago: no se necesita tarjeta de crédito, su licencia se actualiza automáticamente (también llega una copia por correo electrónico para instalaciones aisladas) y la extensión funciona con toda su funcionalidad durante 30 días.

  • Cada instancia de Turbo EA puede probar una extensión determinada una sola vez.
  • Una prueba termina exactamente en su fecha de finalización — no hay período de gracia. La extensión deja entonces de funcionar hasta que se suscriba; sus datos nunca se eliminan, y todo vuelve en cuanto se aplica una licencia de suscripción.
  • La pestaña «Instaladas» muestra los derechos de prueba como Prueba hasta ….
  • Las pruebas terminan por sí solas — no hay nada que cancelar y nunca se factura nada.

Instalar una extensión

  1. Si aún no lo ha hecho, aplique primero su licencia (véase más abajo).
  2. Abre Admin → Extensiones, pulsa Instalar desde archivo… encima del catálogo en la pestaña Tienda o encima de la lista en la pestaña Instaladas (y dentro del aviso que aparece cuando no se puede acceder a la tienda) y sube el archivo .teax recibido.
  3. Turbo EA verifica la firma y abre un diálogo de instalación con una vista previa: para extensiones con contenido es una simulación de cada tipo de tarjeta, grupo de etiquetas, tarjeta y relación que la extensión crearía o actualizaría — todavía no se escribe nada.
  4. Revise la vista previa —se desplaza dentro del diálogo— y pulse Instalar extensión al pie del diálogo, donde el botón permanece por larga que sea la vista previa.
  5. Si la extensión incluye código de backend, un aviso pide reiniciar el contenedor del backend (docker compose restart backend). Las extensiones de contenido y de interfaz quedan activas de inmediato: los usuarios ven la nueva interfaz al recargar la página.

Subir el mismo paquete otra vez es seguro — la vista previa muestra todo como «omitido» y aplicarlo no cambia nada.

Actualizar una extensión

Cuando la tienda publica una versión más reciente de una extensión instalada, la pestaña Instaladas muestra un distintivo Actualizar a X junto a la versión (y el botón de la pestaña Tienda se convierte en Actualizar). Al pulsarlo se verifica la firma y se descarga el paquete, y a continuación se le muestra qué incluye la versión — las notas de la versión de la extensión, con un enlace Registro de cambios completo al resto — con Instalar y Cancelar. No se escribe nada hasta que pulse Instalar; Cancelar descarta la descarga. Una primera instalación no tiene una versión anterior con la que comparar, así que sigue aplicándose con un solo clic. Mientras se ejecuta una instalación o una actualización, el botón (o el distintivo) muestra un indicador de progreso y permanece deshabilitado hasta que termina, y el diálogo de instalación muestra la ejecución desde donde sea que la hayas iniciado. Se aplican dos salvaguardas:

  • Actualizar una extensión que usted ha desactivado deliberadamente la mantiene desactivada: la nueva versión se instala en el disco, pero su contenido permanece oculto y nada se ejecuta hasta que la vuelva a activar.
  • Instalar un paquete más antiguo que la versión instalada pide primero una confirmación explícita: una versión anterior puede no entender los datos escritos por la más reciente. En ningún caso se elimina nada.

Cuando la actualización se aplica, todas las personas que pueden usar la extensión reciben una notificación Extensión actualizada en la campana y pueden abrir desde ella las mismas notas de la versión. Está activada de forma predeterminada y nunca se envía por correo electrónico; cada persona puede silenciarla en sus preferencias de notificación.

Licencias y renovación

Aplica una licencia mediante Introducir licencia… en la pestaña Instaladas (pega el texto o sube el archivo); el botón también aparece en cada fila de extensión que la necesite. La página muestra entonces el titular y un distintivo por derecho con su fecha de caducidad.

Su instancia mantiene una sola licencia a la vez — aplicar una nueva sustituye a la anterior. Las licencias emitidas por la Store siempre contienen todas las compras realizadas para su instancia, por lo que sustituirla es seguro. Si además posee licencias emitidas manualmente, pida a su proveedor una licencia combinada en lugar de aplicar archivos por extensión; si una licencia aplicada eliminara derechos que la actual todavía cubre, Turbo EA los enumera y pide confirmación primero (en ningún caso se eliminan datos).

Cuando un derecho supera su caducidad entra en un periodo de gracia (30 días por defecto): todo sigue funcionando y los administradores ven un aviso. Tras la gracia, la extensión se desactiva suavemente — sus páginas desaparecen, su API rechaza peticiones y sus tareas en segundo plano se pausan. Nunca se borran datos. Aplicar una licencia renovada lo restaura todo al instante, sin reinicio.

Las licencias compradas en la Tienda se renuevan solas en las instancias conectadas: tras cada pago correcto, tu instancia obtiene automáticamente la licencia ampliada — nada que pegar. En una instancia aislada, la renovación consiste en pegar el archivo de licencia actualizado del correo de renovación (o pedirlo al proveedor) — nada más.

Estado de renovación automática y cancelación

Cada chip de titularidad indica qué ocurre en su fecha: Se renueva el {fecha} para una suscripción activa, o Expira el {fecha} — no se renovará tras una cancelación. La información procede de la propia licencia firmada, por lo que también es exacta en instancias aisladas — el archivo de licencia enviado por correo tras cualquier cambio de suscripción lleva el estado actualizado; péguelo y el chip queda al día.

Para ver la fecha de renovación, cancelar o restaurar la renovación automática, cambiar el método de pago o descargar facturas, use Gestionar suscripción junto al nombre del licenciatario (visible en licencias compradas en la Tienda). Abre su portal de facturación en una pestaña nueva — sin necesidad de cuenta. En una instancia aislada el botón no puede llegar a la tienda; use en su lugar el enlace Gestionar suscripción incluido en cada correo de licencia (solo su navegador necesita Internet, su instancia de Turbo EA no).

Cancelar nunca apaga nada de inmediato: la extensión sigue funcionando hasta el final del periodo pagado y después se aplica el flujo normal de gracia + desactivación suave. Sus datos nunca se eliminan, y volver a suscribirse lo restaura todo.

Habilitar, deshabilitar y desinstalar

  • El interruptor Habilitada desactiva una extensión inmediatamente de forma suave (sin reinicio) y puede revertirse en cualquier momento. Para los paquetes de contenido, esto oculta sus tipos de tarjeta del metamodelo — las tarjetas se quedan donde están.
  • Desinstalar elimina los archivos de la extensión y oculta sus tipos de tarjeta del metamodelo. Las tarjetas y las tablas propias de la extensión se conservan deliberadamente, y todo — tipos incluidos — reaparece si la reinstalas.

Permisos

Toda la página y sus rutas de API están protegidas por el permiso dedicado admin.manage_extensions (concedido al rol Admin integrado). Las extensiones pueden definir sus propias claves de permiso (ext.<nombre>.…), que aparecen en Admin → Usuarios y roles una vez cargada la extensión.

Funciones de campo avanzadas

Algunas extensiones habilitan formas avanzadas de describir tus datos que el núcleo no ofrece por sí solo:

  • Texto de ayuda del campo — una guía plegable que se muestra debajo de un campo durante la entrada de datos, para que un formulario se explique solo.
  • Tipos de campo personalizados — nuevos tipos más allá del conjunto integrado (por ejemplo, una valoración configurable de 1 a 5 o de 0 a 10).

Estas opciones aparecen en el editor de campos del metamodelo solo mientras la extensión que las proporciona esté instalada y con licencia. Si dicha extensión se deshabilita más tarde o su licencia caduca, los valores que ya capturaste se siguen mostrando como texto de solo lectura — nada se borra ni se elimina — y las opciones de edición simplemente desaparecen hasta que la extensión vuelva a estar activa.

Permisos de acceso a datos

La mayoría de las extensiones solo trabajan con sus propios datos. Una extensión que se integra con los datos del núcleo — por ejemplo, un conector que sincroniza los todos con un gestor de tareas externo como Jira o MS Planner (#921) — debe declarar grants en su manifiesto firmado:

  • core.todos.read / core.todos.write — leer o modificar todos a través del SDK de extensiones. La escritura incluye la lectura. En los todos del sistema (como las solicitudes de firma), una extensión de sincronización solo puede establecer la referencia externa mostrada como chip — nunca puede completarlos, editarlos, reasignarlos ni eliminarlos, y los todos de otra extensión siguen fuera de su alcance.
  • core.events.todo — recibir los eventos de cambio de los todos, para que un conector reaccione de inmediato en lugar de esperar al siguiente ciclo de sondeo.
  • core.users.read — consultar usuarios (solo nombre, correo y estado activo) para que un conector pueda emparejar responsables con cuentas de la herramienta externa. No se expone ningún dato de rol, inicio de sesión o preferencias, y las extensiones nunca pueden modificar usuarios.
  • core.cards.read — leer tarjetas, relaciones y el metamodelo, por ejemplo para que un conector pueda emparejar sus aplicaciones con registros de un sistema externo. Las tarjetas archivadas permanecen fuera de la vista.
  • core.cards.write — crear, actualizar o archivar tarjetas y añadir relaciones, con exactamente la misma validación que aplica el editor de la aplicación. Las actualizaciones fusionan los valores de los campos en lugar de reemplazarlos, de modo que una extensión nunca puede borrar datos que no gestiona, y no existe la eliminación permanente — archivar, con su ventana de restauración, es la única eliminación posible para una extensión.
  • core.events.card — recibir eventos de cambio de tarjetas y relaciones, para que un conector reaccione de inmediato a los cambios del inventario en lugar de esperar a su próximo ciclo de sondeo.
  • core.notifications.channel — entregar las notificaciones que usted active en un canal propio de la extensión, por ejemplo un mensaje de chat. La extensión recibe el título, el mensaje y el enlace de una notificación, además de su identificador de usuario; no recibe su dirección de correo salvo que declare también core.users.read, y nunca recibe un tipo que usted no haya activado para ella. Las notificaciones que permanecen solo en la campana nunca se envían a un canal de extensión. Cada canal de extensión empieza desactivado para todos los tipos de notificación, incluidos los avisos administrativos (nueva extensión, actualización de extensión, actualización de Turbo EA): abra sus preferencias de notificación desde la campana y active la columna del canal para los tipos que quiera recibir allí. Un aviso que ya apareció en la campana antes de activar el canal no se vuelve a enviar.
  • core.adr.read — leer las decisiones de arquitectura (referencia, título, estado, tarjetas vinculadas y los datos propios de la extensión sobre ellas).
  • core.adr.write — registrar una decisión de arquitectura en borrador y vincularla a tarjetas activas, por ejemplo una extensión que anota el resultado de un análisis como decisión a revisar. Escribir implica leer. Una extensión nunca puede firmar una decisión, enviarla a revisión ni cambiar su estado — eso queda en manos de sus usuarios — y solo puede guardar datos en el registro bajo sus propias claves ext.<key>.*. Cada registro queda anotado en Admin → Registro de auditoría como un lote ext:<key>.
  • core.risks.read — leer el registro de riesgos (referencia, título, categoría, nivel, estado, responsable, tarjetas vinculadas).
  • core.risks.write — registrar un riesgo y vincularlo a tarjetas, por ejemplo una regla que registra un riesgo cuando una aplicación sin responsable supera un umbral de coste. Escribir implica leer. Un riesgo registrado así muestra Extensión como origen en el registro, recibe su referencia de la misma secuencia que los demás y su responsable recibe el todo y la notificación habituales. Una extensión puede modificar después el título, la descripción, el responsable y la fecha objetivo de los riesgos que ella registró — nunca los de otros, y nunca el estado de un riesgo: avanzarlo, aceptarlo y cerrarlo quedan en manos de sus usuarios.
  • core.notifications.send — enviar una notificación a personas concretas, por ejemplo «una regla que configuró acaba de dispararse». Llega como el tipo Aviso de extensión, o como un tipo que la extensión declara por sí misma y que obtiene entonces su propia fila en las preferencias de notificación de cada persona (en la app activado, correo desactivado por defecto) — en ambos casos cada persona decide si llega a su campana, su bandeja o un canal de extensión, y puede desactivarla. Algunas de estas notificaciones abren sus detalles en la aplicación al hacer clic, ofreciendo la tarjeta relacionada y la página propia de la extensión solo a quienes pueden abrirlas. El enlace de una notificación así solo puede apuntar dentro de Turbo EA.
  • core.stakeholders.write — asignar o retirar roles de parte interesada en tarjetas, usando exactamente los roles que define el tipo de tarjeta. Es un grant separado de core.cards.write porque un rol de parte interesada otorga a la persona permisos sobre la tarjeta.
  • core.surveys.read — leer el nombre, el estado y el grado de respuesta de una encuesta.
  • core.surveys.write — enviar una encuesta de mantenimiento de datos a las partes interesadas de un conjunto de tarjetas, por ejemplo una regla programada que pide a los responsables de cada aplicación crítica por debajo del objetivo de calidad de datos que completen sus tarjetas — una solicitud por persona en lugar de un todo por tarjeta. Escribir implica leer. La encuesta aparece en Admin → Encuestas sin autor, sus campos son exactamente los que define el tipo de tarjeta y cada persona recibe la notificación de encuesta habitual. Una extensión nunca puede cerrar una encuesta ni aplicar sus respuestas — eso queda en sus manos — y revertir la ejecución que la envió (Admin → Registro de auditoría) cierra la encuesta y retira las solicitudes que nadie había respondido todavía.

Los grants forman parte del paquete firmado por el proveedor: quedan fijados al empaquetar y son visibles antes de instalar. Solo se aplican mientras la extensión está instalada, habilitada y con licencia — deshabilitarla o dejar caducar la licencia revoca el acceso de inmediato, sin reinicio. Cada cambio hecho por una extensión se registra en Admin → Registro de auditoría bajo el origen Extensión, y un todo reflejado desde un gestor externo muestra un chip con enlace al elemento externo.

Cada cambio realizado por una extensión aparece en Admin → Registro de auditoría como un lote ext:<clave> con diferencias campo a campo, y puede revertirse desde allí como cualquier otro lote. Los operadores tienen la última palabra: la variable de entorno EXTENSION_WRITES_ENABLED=false pausa al instante todas las escrituras de extensiones (las lecturas siguen funcionando, sin reinicio), y EXTENSION_MAX_WRITES_PER_BATCH / EXTENSION_MAX_BATCHES_PER_MINUTE limitan cuánto puede cambiar una extensión por lote y por minuto.

Dónde aparecen las páginas de extensión

Las páginas de extensión aparecen en la navegación una vez que la extensión está instalada y con licencia — normalmente como su propia entrada de menú de nivel superior, aunque algunas se colocan dentro de un menú del núcleo junto a las entradas integradas: los informes bajo Informes, y las páginas de gobierno, riesgo o cumplimiento bajo GRC. Una página agrupada vuelve a una entrada de nivel superior cuando su menú no está disponible — el módulo está desactivado o no tienes su permiso — de modo que nunca desaparece de la navegación.