Extensões¶
A loja de extensões (Admin → Extensões) instala extensões assinadas pelo fornecedor que adicionam capacidades específicas do cliente — conteúdo adicional do metamodelo, integrações, tarefas em segundo plano e até novas páginas — sem alterar o núcleo do Turbo EA (princípio «clean core»).
As extensões instalam-se de duas formas: com um clique a partir da Loja integrada (se a instância tiver acesso à Internet) ou carregando os ficheiros diretamente — a extensão é um pacote .teax assinado e a licença um ficheiro de texto assinado, ambos normalmente enviados por e-mail. O fluxo baseado em ficheiros não requer conta de loja nem ligação de saída, pelo que funciona de forma idêntica em instâncias isoladas (air-gapped).
A página tem dois separadores: Loja percorre o catálogo de extensões do fornecedor com instalação num clique, e Instaladas gere licenças e instala a partir de ficheiros.
As extensões são criadas e assinadas pela Turbo EA — não são de criação própria nem abertas a terceiros. Se precisar de uma funcionalidade adaptada à sua organização, podemos criá-la e licenciá-la para si. Consulte a consultoria da Turbo EA.
Guias de cada extensão¶
Cada extensão publicada na loja tem o seu próprio guia: o que faz, como configurá-la e como utilizá-la no dia a dia. Ver Extensões.
Como funciona a confiança¶
Duas verificações independentes protegem a sua instância:
- Proveniência (assinatura). Cada pacote tem uma assinatura Ed25519 da chave do fornecedor. O Turbo EA verifica-a no carregamento e novamente em cada arranque do backend. Pacotes não assinados, adulterados ou de terceiros são rejeitados — uma extensão instalada é exatamente o que o fornecedor construiu.
- Ativação (licença). Um ficheiro de licença assinado lista os seus direitos — um por extensão, cada um com a sua validade. Uma extensão instalada só funciona enquanto existir um direito utilizável. As licenças estão vinculadas ao ID da sua instância — uma licença emitida para outra instância é recusada.
Extensões gratuitas¶
Algumas extensões são gratuitas e não exigem nenhuma licença. Elas são instaladas e executadas de imediato: não há etapa de compra nem arquivo de licença para colar. As extensões gratuitas são marcadas com um selo Grátis nas abas Loja e Instaladas, e as ações Comprar e Renovar ficam ocultas para elas. A verificação de assinatura continua a ser aplicada exatamente como nas extensões pagas (uma extensão gratuita também é assinada pelo fornecedor), portanto a procedência é garantida em qualquer caso. Como não precisam de nenhum direito, as extensões gratuitas nunca expiram nem entram em período de carência.
O ID da sua instância¶
Cada instalação gera uma única vez um ID de instância (TEA-XXXX-XXXX-XXXX), mostrado no topo de Admin → Extensões com um botão de cópia. É a sua identidade de licenciamento: indique-o na compra (a Loja integrada envia-o automaticamente; o checkout da loja online pede-o) para que cada extensão comprada para esta instância — por qualquer administrador, com qualquer e-mail — acabe numa única licença combinada. Apenas identifica a sua instância; nunca é uma credencial, pelo que pode partilhá-lo com o fornecedor sem risco.

O ID viaja com uma transferência de workspace, pelo que mudar para um novo servidor mantém a licença válida. Após uma reinstalação completa, a instância recebe um ID novo — peça ao fornecedor que reemita a licença para ele (um rápido «re-key» do lado dele).
O separador Loja¶
O separador Loja funciona sem qualquer configuração e lista as extensões publicadas pelo fornecedor como uma grelha de mosaicos compactos — logótipo, nome, estado da licença e preço. Clique num mosaico para abrir uma janela de detalhes ampla: de um lado, uma galeria de capturas de ecrã — percorra-a com as setas ou as miniaturas e clique numa captura para a ver em tamanho real — e, ao lado, a descrição completa, as etiquetas de categoria, os créditos de origem e licença e as ações. Quando a loja publica notas de versão da extensão, as duas versões mais recentes aparecem em Novidades, com uma ligação Registo de alterações completo para a página da extensão na loja. As extensões sem imagem apresentam um mosaico gerado com as suas iniciais.

- Comprar abre a página de pagamento num novo separador do navegador. Assim que o pagamento é confirmado, a sua licença é aplicada automaticamente (uma cópia também chega por e-mail).
- Algumas ofertas são vendidas em dois planos: mensal e anual, normalmente o anual com desconto. A janela de detalhes passa então a oferecer Comprar mensal e Comprar anual em vez de um único botão; ambos levam ao mesmo pagamento.
- Instalar (ou Atualizar quando é publicada uma versão mais recente) verifica primeiro a sua licença — se a extensão ainda não tiver licença, um diálogo propõe comprá-la ou colar uma licença e depois continua automaticamente — e descarrega o pacote com exatamente a mesma verificação de assinatura e pré-visualização de simulação de um carregamento manual. As extensões com demonstração mostram uma ligação Ver em ação. O botão indica Atualizar apenas numa extensão já instalada; nas restantes é um simples Instalar que descarrega a versão publicada.
O catálogo está organizado em cinco secções — Estratégia, planeamento e transformação, Governança e automação, Integrações, Regulamentações e Serviços — cada uma com o seu próprio cabeçalho, para ver de relance de que tipo de oferta se trata; o que o catálogo não classificou aparece em Outras, no fim. Dentro das secções, as pílulas de etiquetas (gratuita ou comercial, mais temas como integração) funcionam como filtro: surge uma barra de filtros acima da lista, clicar nas pílulas restringe-a (várias pílulas combinam-se), as secções sem correspondência desaparecem e Todas repõe a vista.
Uma oferta de serviço — algo que não se instala, como uma subscrição de suporte — é vendida e licenciada como uma extensão, mas sem pacote. O seu mosaico e a janela de detalhes oferecem apenas Comprar, não mostram versão e dizem-no claramente; confirmada a compra, o mesmo chip de licença (Renova a …) aparece no mosaico e o e-mail de confirmação explica como usar o que comprou.
O separador Loja é só de leitura e anónimo: sem conta, sem token, e nada sobre a sua instância é enviado — apenas o catálogo público do fornecedor é lido. As instâncias isoladas não precisam de configuração — o separador mostra então simplesmente uma indicação amigável — e usam o fluxo baseado em ficheiros abaixo; o site da loja do fornecedor oferece as mesmas compras e transferências a partir de qualquer navegador com ligação à Internet. Se algo entre a sua instância e a loja bloquear o pedido — um proxy, uma firewall ou uma proteção anti-bots à frente da loja —, o separador indica-o e mostra o estado HTTP recebido, para que uma instância bloqueada nunca seja confundida com uma isolada.
A instância também verifica o catálogo uma vez por dia e comunica as alterações, para que uma extensão nova — ou uma correção de segurança de alguma que já utiliza — não fique à espera de que alguém abra esta página por acaso. Os administradores (qualquer pessoa cujo perfil conceda admin.manage_extensions) recebem uma notificação no sino quando é publicada uma nova extensão na loja e outra quando uma extensão instalada tem uma versão mais recente. Cada alteração é anunciada uma só vez e um dia de lançamentos intenso chega como uma notificação por tipo em vez de uma por extensão. Nada é descarregado nem instalado — a notificação limita-se a trazê-lo até aqui. A verificação diária pode ser desativada por completo em Admin → Definições → Notificações de atualização.
O separador mostra também quando a loja foi lida pela última vez e um botão Verificar agora que executa a verificação de imediato e comunica o que encontrou — pode assim confirmar que a verificação diária funciona sem esperar um dia. Se uma verificação falhou, o motivo é mostrado aqui em vez de ficar em silêncio.
Avaliações¶
Algumas extensões pagas oferecem uma avaliação gratuita de 30 dias — procure o botão Iniciar avaliação de 30 dias na aba Loja (ou a opção de avaliação no site da loja). Iniciar uma avaliação funciona como uma compra sem pagamento: não é necessário cartão de crédito, a sua licença é atualizada automaticamente (uma cópia também chega por e-mail para instalações isoladas) e a extensão funciona com todas as funcionalidades durante 30 dias.
- Cada instância do Turbo EA pode avaliar uma determinada extensão uma única vez.
- Uma avaliação termina exatamente na data de término — não há período de carência. A extensão deixa então de funcionar até que você assine; os seus dados nunca são excluídos, e tudo volta assim que uma licença de assinatura é aplicada.
- A aba «Instaladas» mostra os direitos de avaliação como Avaliação até ….
- As avaliações terminam por si mesmas — não há nada a cancelar e nada é jamais cobrado.
Instalar uma extensão¶
- Se ainda não o fez, aplique primeiro a sua licença (ver abaixo).
- Abra Admin → Extensões, prima Instalar a partir de ficheiro… acima do catálogo no separador Loja ou acima da lista no separador Instaladas (e dentro do aviso mostrado quando a loja não está acessível) e carregue o ficheiro
.teaxrecebido. - O Turbo EA verifica a assinatura e abre uma janela de instalação com uma pré-visualização: para extensões com conteúdo é uma simulação de cada tipo de cartão, grupo de etiquetas, cartão e relação que a extensão criaria ou atualizaria — nada é escrito ainda.
- Reveja a pré-visualização — desloca-se dentro da janela — e prima Instalar extensão no fundo da janela, onde o botão permanece por mais longa que seja a pré-visualização.
- Se a extensão incluir código de backend, um aviso pede o reinício do contentor do backend (
docker compose restart backend). Extensões de conteúdo e de interface ficam ativas de imediato — os utilizadores veem a nova interface no próximo carregamento da página.
Carregar o mesmo pacote outra vez é seguro — a pré-visualização mostra tudo como «ignorado» e aplicar não altera nada.
Atualizar uma extensão¶
Quando a loja publica uma versão mais recente de uma extensão instalada, o separador Instaladas mostra um selo Atualizar para X ao lado da versão (e o botão do separador Loja passa a Atualizar). Um clique verifica a assinatura e transfere o pacote e, em seguida, mostra-lhe o que a versão contém — as notas de versão da extensão, com uma ligação Registo de alterações completo para o resto — com Instalar e Cancelar. Nada é escrito até premir Instalar; Cancelar descarta a transferência. Uma primeira instalação não tem uma versão anterior para comparar, pelo que continua a ser aplicada com um só clique. Enquanto uma instalação ou atualização decorre, o botão (ou o selo) mostra um indicador de progresso e permanece desativado até terminar, e a janela de instalação mostra a execução independentemente de onde a iniciou. Aplicam-se duas salvaguardas:
- Atualizar uma extensão que você desativou deliberadamente mantém-na desativada: a nova versão chega ao disco, mas o seu conteúdo permanece oculto e nada é executado até que a reative.
- Instalar um pacote mais antigo do que a versão instalada pede primeiro uma confirmação explícita: um downgrade pode não compreender os dados escritos pela versão mais recente. Em nenhum caso algo é eliminado.
Quando a atualização é aplicada, todas as pessoas que podem usar a extensão recebem uma notificação Extensão atualizada no sino e podem abrir a partir dela as mesmas notas de versão. Está ativa por predefinição e nunca é enviada por e-mail; cada pessoa pode silenciá-la nas suas preferências de notificação.
Licenças e renovação¶
Aplique uma licença através de Introduzir licença… no separador Instaladas (cole o texto ou carregue o ficheiro); o botão também aparece em cada linha de extensão que precise dela. A página mostra então o titular e um distintivo por direito com a respetiva data de expiração.
A sua instância mantém apenas uma licença de cada vez — aplicar uma nova substitui a anterior. As licenças emitidas pela Store contêm sempre todas as compras feitas para a sua instância, pelo que a substituição é segura. Se também possuir licenças emitidas manualmente, peça ao seu fornecedor uma licença combinada em vez de aplicar ficheiros por extensão; se uma licença aplicada removesse direitos que a atual ainda cobre, o Turbo EA lista-os e pede primeiro confirmação (em nenhum caso são eliminados dados).
Quando um direito ultrapassa a validade entra num período de tolerância (30 dias por predefinição): tudo continua a funcionar e os administradores veem um aviso. Após a tolerância, a extensão é desativada suavemente — as suas páginas desaparecem, a sua API recusa pedidos e as suas tarefas em segundo plano ficam em pausa. Nunca são apagados dados. Aplicar uma licença renovada restaura tudo de imediato, sem reinício.
As licenças compradas na Loja renovam-se sozinhas nas instâncias ligadas: após cada pagamento bem-sucedido, a sua instância obtém automaticamente a licença prolongada — nada a colar. Numa instância isolada, a renovação resume-se a colar o ficheiro de licença atualizado do e-mail de renovação (ou pedi-lo ao fornecedor) — nada mais.
Estado da renovação automática e cancelamento¶
Cada chip de titularidade indica o que acontece na sua data: Renova em {data} para uma subscrição ativa, ou Expira em {data} — não será renovado após um cancelamento. A informação vem da própria licença assinada, pelo que também é exata em instâncias isoladas — o ficheiro de licença enviado por e-mail após qualquer alteração da subscrição traz o estado atualizado; cole-o e o chip fica atual.
Para ver a data de renovação, cancelar ou restaurar a renovação automática, alterar o método de pagamento ou descarregar faturas, use Gerir subscrição junto ao nome do licenciado (visível em licenças compradas na Loja). Abre o seu portal de faturação num novo separador — sem necessidade de conta. Numa instância isolada o botão não consegue chegar à loja; use antes o link Gerir subscrição incluído em cada e-mail de licença (só o seu navegador precisa de Internet, a sua instância Turbo EA não).
Cancelar nunca desliga nada de imediato: a extensão continua a funcionar até ao fim do período pago e depois aplica-se o fluxo normal de tolerância + desativação suave. Os seus dados nunca são eliminados, e voltar a subscrever restaura tudo.
Ativar, desativar e desinstalar¶
- O interruptor Ativada desativa uma extensão imediatamente de forma suave (sem reinício) e pode ser revertido a qualquer momento. Para pacotes de conteúdo, isto oculta os seus tipos de cartão do metamodelo — os cartões ficam onde estão.
- Desinstalar remove os ficheiros da extensão e oculta os seus tipos de cartão do metamodelo. Os cartões e as tabelas próprias da extensão são deliberadamente mantidos, e tudo — tipos incluídos — reaparece se a reinstalar.
Permissões¶
Toda a página e as suas rotas de API estão protegidas pela permissão dedicada admin.manage_extensions (atribuída ao papel Admin integrado). As extensões podem definir as suas próprias chaves de permissão (ext.<nome>.…), que aparecem em Admin → Utilizadores e papéis depois de a extensão ser carregada.
Recursos de campo avançados¶
Algumas extensões desbloqueiam maneiras avançadas de descrever seus dados que o núcleo não oferece sozinho:
- Texto de ajuda do campo — uma orientação recolhível exibida abaixo de um campo durante a entrada de dados, para que um formulário se explique sozinho.
- Tipos de campo personalizados — novos tipos além do conjunto integrado (por exemplo, uma avaliação configurável de 1 a 5 ou de 0 a 10).
Essas opções aparecem no editor de campos do metamodelo somente enquanto a extensão que as fornece estiver instalada e licenciada. Se essa extensão for posteriormente desativada ou sua licença expirar, os valores que você já registrou continuam sendo exibidos como texto somente leitura — nada é apagado ou excluído — e as opções de edição simplesmente desaparecem até que a extensão esteja ativa novamente.
Concessões de acesso a dados¶
A maioria das extensões trabalha apenas com os seus próprios dados. Uma extensão que se integra com os dados do núcleo — por exemplo, um conector que sincroniza os todos com um gestor de tarefas externo como o Jira ou o MS Planner (#921) — precisa declarar grants no seu manifesto assinado:
core.todos.read/core.todos.write— ler ou alterar todos através do SDK de extensões. Escrever inclui ler. Nos todos de sistema (como pedidos de assinatura), uma extensão de sincronização só pode definir a referência externa mostrada como chip — nunca pode concluí-los, editá-los, reatribuí-los ou eliminá-los, e os todos de outra extensão continuam fora do seu alcance.core.events.todo— receber os eventos de alteração dos todos, para que um conector reaja de imediato em vez de esperar pelo próximo ciclo de sondagem.core.users.read— consultar utilizadores (apenas nome, e-mail e estado ativo) para que um conector possa fazer corresponder responsáveis a contas da ferramenta externa. Não são expostos dados de função, início de sessão ou preferências, e as extensões nunca podem alterar utilizadores.core.cards.read— ler cartões, relações e o metamodelo, por exemplo para que um conector possa fazer corresponder as suas aplicações a registos de um sistema externo. Os cartões arquivados permanecem fora de vista.core.cards.write— criar, atualizar ou arquivar cartões e adicionar relações, com exatamente a validação que o editor da aplicação aplica. As atualizações fundem os valores dos campos em vez de os substituir, pelo que uma extensão nunca pode apagar dados que não gere, e não existe eliminação permanente — arquivar, com a sua janela de restauro, é a única remoção possível para uma extensão.core.events.card— receber eventos de alteração de cartões e relações, para que um conector reaja de imediato às mudanças do inventário em vez de esperar pelo próximo ciclo de consulta.core.notifications.channel— entregar as notificações que ativar num canal próprio da extensão, por exemplo uma mensagem de chat. A extensão recebe o título, a mensagem e a ligação de uma notificação, além do seu identificador de utilizador; não recebe o seu endereço de e-mail a menos que declare tambémcore.users.read, e nunca recebe um tipo que não tenha ativado para ela. As notificações que ficam apenas no sino nunca são enviadas para um canal de extensão. Cada canal de extensão começa desligado para todos os tipos de notificação, incluindo os avisos administrativos (nova extensão, atualização de extensão, atualização do Turbo EA): abra as suas preferências de notificação a partir do sino e ligue a coluna do canal para os tipos que quer receber aí. Um aviso que já apareceu no sino antes de o canal ser ligado não é enviado de novo.core.adr.read— ler as decisões de arquitetura (referência, título, estado, cartões vinculados e os dados próprios da extensão sobre elas).core.adr.write— registar uma decisão de arquitetura como rascunho e vinculá-la a cartões ativos, por exemplo uma extensão que regista o resultado de uma análise como decisão a rever. Escrever implica ler. Uma extensão nunca pode assinar uma decisão, enviá-la para revisão nem mudar o seu estado — isso fica com os seus utilizadores — e só pode guardar dados no registo sob as suas próprias chavesext.<key>.*. Cada registo fica anotado em Admin → Registo de auditoria como um loteext:<key>.core.risks.read— ler o registo de riscos (referência, título, categoria, nível, estado, responsável, cartões vinculados).core.risks.write— registar um risco e vinculá-lo a cartões, por exemplo uma regra que regista um risco quando uma aplicação sem responsável ultrapassa um limite de custo. Escrever implica ler. Um risco registado assim mostra Extensão como origem no registo, recebe a sua referência da mesma sequência que os outros e o seu responsável recebe o todo e a notificação habituais. Uma extensão pode depois alterar o título, a descrição, o responsável e a data-alvo dos riscos que ela registou — nunca os de outros, e nunca o estado de um risco: avançá-lo, aceitá-lo e fechá-lo ficam com os seus utilizadores.core.notifications.send— enviar uma notificação a pessoas indicadas, por exemplo «uma regra que configurou acabou de disparar». Chega como o tipo Aviso de extensão, ou como um tipo que a extensão declara para si e que obtém então uma linha própria nas preferências de notificação de cada pessoa (na app ligado, email desligado por predefinição) — em ambos os casos cada pessoa decide se chega ao sino, à caixa de correio ou a um canal de extensão, e pode desligá-la. Algumas destas notificações abrem os detalhes na aplicação ao clicar, oferecendo o cartão relacionado e a página própria da extensão apenas a quem os pode abrir. A ligação numa notificação destas só pode apontar para dentro do Turbo EA.core.stakeholders.write— atribuir ou remover papéis de parte interessada em cartões, usando exatamente os papéis que o tipo de cartão define. É um grant separado decore.cards.writeporque um papel de parte interessada dá à pessoa permissões sobre o cartão.core.surveys.read— ler o nome, o estado e a taxa de resposta de um inquérito.core.surveys.write— enviar um inquérito de manutenção de dados às partes interessadas de um conjunto de cartões, por exemplo uma regra agendada que pede aos responsáveis de cada aplicação crítica abaixo do objetivo de qualidade de dados que completem os seus cartões — um pedido por pessoa em vez de um todo por cartão. Escrever implica ler. O inquérito aparece em Admin → Inquéritos sem autor, os seus campos são exatamente os que o tipo de cartão define e cada pessoa recebe a notificação de inquérito habitual. Uma extensão nunca pode fechar um inquérito nem aplicar as suas respostas — isso fica consigo — e reverter a execução que o enviou (Admin → Registo de auditoria) fecha o inquérito e retira os pedidos a que ninguém tinha ainda respondido.
Os grants fazem parte do pacote assinado pelo fornecedor: ficam fixados no empacotamento e são visíveis antes da instalação. Só se aplicam enquanto a extensão está instalada, ativada e licenciada — desativá-la ou deixar a licença expirar revoga o acesso imediatamente, sem reinício. Cada alteração feita por uma extensão fica registada em Admin → Registo de auditoria sob a origem Extensão, e um todo espelhado de um gestor externo mostra um chip com ligação ao item externo.
Cada alteração feita por uma extensão aparece em Admin → Registo de auditoria como um lote ext:<chave> com diferenças campo a campo, e pode ser revertida aí como qualquer outro lote. Os operadores têm a última palavra: a variável de ambiente EXTENSION_WRITES_ENABLED=false pausa de imediato todas as escritas de extensões (as leituras continuam, sem reinício), e EXTENSION_MAX_WRITES_PER_BATCH / EXTENSION_MAX_BATCHES_PER_MINUTE limitam quanto uma extensão pode alterar por lote e por minuto.
Onde as páginas de extensão aparecem¶
As páginas de extensão aparecem na navegação assim que a extensão está instalada e licenciada — geralmente como seu próprio item de menu de nível superior, embora algumas sejam colocadas dentro de um menu do núcleo ao lado das entradas integradas: os relatórios no menu Relatórios, e as páginas de governação, risco ou conformidade no menu GRC. Uma página agrupada volta a ser um item de nível superior quando o seu menu não está disponível — o módulo está desativado, ou não tem a permissão correspondente — pelo que nunca desaparece da navegação.