@trismegisto/spine 2.1.2 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/README.md +74 -17
  2. package/fesm2022/trismegisto-spine-audit.mjs +264 -10
  3. package/fesm2022/trismegisto-spine-audit.mjs.map +1 -1
  4. package/fesm2022/trismegisto-spine-auto-service-apps.technical-dKM4fG42.mjs +89 -0
  5. package/fesm2022/trismegisto-spine-auto-service-apps.technical-dKM4fG42.mjs.map +1 -0
  6. package/fesm2022/trismegisto-spine-auto-service-apps.usage-VMrCG5o3.mjs +91 -0
  7. package/fesm2022/trismegisto-spine-auto-service-apps.usage-VMrCG5o3.mjs.map +1 -0
  8. package/fesm2022/{trismegisto-spine-auto-service-audit.technical-C901aIIQ.mjs → trismegisto-spine-auto-service-audit.technical-B75d4mh2.mjs} +6 -5
  9. package/fesm2022/trismegisto-spine-auto-service-audit.technical-B75d4mh2.mjs.map +1 -0
  10. package/fesm2022/{trismegisto-spine-auto-service-audit.usage-GIJ2RwuH.mjs → trismegisto-spine-auto-service-audit.usage-IdXMruv5.mjs} +9 -8
  11. package/fesm2022/trismegisto-spine-auto-service-audit.usage-IdXMruv5.mjs.map +1 -0
  12. package/fesm2022/trismegisto-spine-auto-service-auto-service-audit.component-BNtNWfiu.mjs +37 -0
  13. package/fesm2022/{trismegisto-spine-auto-service-auto-service-audit.component-CCiz-q8o.mjs.map → trismegisto-spine-auto-service-auto-service-audit.component-BNtNWfiu.mjs.map} +1 -1
  14. package/fesm2022/{trismegisto-spine-auto-service-auto-service-client-picker.component-Z0wCANF6.mjs → trismegisto-spine-auto-service-auto-service-client-picker.component-DdtDk_xl.mjs} +3 -3
  15. package/fesm2022/{trismegisto-spine-auto-service-auto-service-client-picker.component-Z0wCANF6.mjs.map → trismegisto-spine-auto-service-auto-service-client-picker.component-DdtDk_xl.mjs.map} +1 -1
  16. package/fesm2022/{trismegisto-spine-auto-service-auto-service-client.component-C7SPavrX.mjs → trismegisto-spine-auto-service-auto-service-client.component-DXl1y6Sx.mjs} +123 -27
  17. package/fesm2022/trismegisto-spine-auto-service-auto-service-client.component-DXl1y6Sx.mjs.map +1 -0
  18. package/fesm2022/trismegisto-spine-auto-service-auto-service-delete-B1tXgMvi.mjs +88 -0
  19. package/fesm2022/trismegisto-spine-auto-service-auto-service-delete-B1tXgMvi.mjs.map +1 -0
  20. package/fesm2022/trismegisto-spine-auto-service-auto-service-groups.component-C4iQ2GPX.mjs +599 -0
  21. package/fesm2022/trismegisto-spine-auto-service-auto-service-groups.component-C4iQ2GPX.mjs.map +1 -0
  22. package/fesm2022/trismegisto-spine-auto-service-auto-service-login-attempts.component-B87vibNB.mjs +37 -0
  23. package/fesm2022/trismegisto-spine-auto-service-auto-service-login-attempts.component-B87vibNB.mjs.map +1 -0
  24. package/fesm2022/trismegisto-spine-auto-service-auto-service.component-DV88Uger.mjs +941 -0
  25. package/fesm2022/trismegisto-spine-auto-service-auto-service.component-DV88Uger.mjs.map +1 -0
  26. package/fesm2022/{trismegisto-spine-auto-service-client.technical-BHWhpyWv.mjs → trismegisto-spine-auto-service-client.technical-DP5G8i3o.mjs} +24 -3
  27. package/fesm2022/trismegisto-spine-auto-service-client.technical-DP5G8i3o.mjs.map +1 -0
  28. package/fesm2022/{trismegisto-spine-auto-service-client.usage-CM2WB2e2.mjs → trismegisto-spine-auto-service-client.usage-CcJANb20.mjs} +15 -6
  29. package/fesm2022/trismegisto-spine-auto-service-client.usage-CcJANb20.mjs.map +1 -0
  30. package/fesm2022/trismegisto-spine-auto-service-groups.technical-D05838rU.mjs +69 -0
  31. package/fesm2022/trismegisto-spine-auto-service-groups.technical-D05838rU.mjs.map +1 -0
  32. package/fesm2022/trismegisto-spine-auto-service-groups.usage-ChGMgYU3.mjs +80 -0
  33. package/fesm2022/trismegisto-spine-auto-service-groups.usage-ChGMgYU3.mjs.map +1 -0
  34. package/fesm2022/{trismegisto-spine-auto-service-home.component-vl3BPFnk.mjs → trismegisto-spine-auto-service-home.component-5_aji1hf.mjs} +5 -4
  35. package/fesm2022/trismegisto-spine-auto-service-home.component-5_aji1hf.mjs.map +1 -0
  36. package/fesm2022/trismegisto-spine-auto-service-login-attempts.technical-CasKIIws.mjs +37 -0
  37. package/fesm2022/trismegisto-spine-auto-service-login-attempts.technical-CasKIIws.mjs.map +1 -0
  38. package/fesm2022/trismegisto-spine-auto-service-login-attempts.usage-BMgLNu7W.mjs +60 -0
  39. package/fesm2022/trismegisto-spine-auto-service-login-attempts.usage-BMgLNu7W.mjs.map +1 -0
  40. package/fesm2022/trismegisto-spine-auto-service.mjs +49 -29
  41. package/fesm2022/trismegisto-spine-auto-service.mjs.map +1 -1
  42. package/fesm2022/trismegisto-spine-layout.mjs +1698 -156
  43. package/fesm2022/trismegisto-spine-layout.mjs.map +1 -1
  44. package/fesm2022/trismegisto-spine-shell.mjs +17 -1
  45. package/fesm2022/trismegisto-spine-shell.mjs.map +1 -1
  46. package/fesm2022/trismegisto-spine.mjs +1175 -85
  47. package/fesm2022/trismegisto-spine.mjs.map +1 -1
  48. package/package.json +6 -6
  49. package/types/trismegisto-spine-audit.d.ts +180 -5
  50. package/types/trismegisto-spine-audit.d.ts.map +1 -1
  51. package/types/trismegisto-spine-auto-service.d.ts +100 -7
  52. package/types/trismegisto-spine-auto-service.d.ts.map +1 -1
  53. package/types/trismegisto-spine-layout.d.ts +833 -13
  54. package/types/trismegisto-spine-layout.d.ts.map +1 -1
  55. package/types/trismegisto-spine-shell.d.ts +8 -0
  56. package/types/trismegisto-spine-shell.d.ts.map +1 -1
  57. package/types/trismegisto-spine.d.ts +506 -32
  58. package/types/trismegisto-spine.d.ts.map +1 -1
  59. package/fesm2022/trismegisto-spine-auto-service-apps.technical-ClMKB9cK.mjs +0 -48
  60. package/fesm2022/trismegisto-spine-auto-service-apps.technical-ClMKB9cK.mjs.map +0 -1
  61. package/fesm2022/trismegisto-spine-auto-service-apps.usage-Cf5SG-oQ.mjs +0 -55
  62. package/fesm2022/trismegisto-spine-auto-service-apps.usage-Cf5SG-oQ.mjs.map +0 -1
  63. package/fesm2022/trismegisto-spine-auto-service-audit.technical-C901aIIQ.mjs.map +0 -1
  64. package/fesm2022/trismegisto-spine-auto-service-audit.usage-GIJ2RwuH.mjs.map +0 -1
  65. package/fesm2022/trismegisto-spine-auto-service-auto-service-audit.component-CCiz-q8o.mjs +0 -37
  66. package/fesm2022/trismegisto-spine-auto-service-auto-service-client.component-C7SPavrX.mjs.map +0 -1
  67. package/fesm2022/trismegisto-spine-auto-service-auto-service-delete-6Bk46MOf.mjs +0 -39
  68. package/fesm2022/trismegisto-spine-auto-service-auto-service-delete-6Bk46MOf.mjs.map +0 -1
  69. package/fesm2022/trismegisto-spine-auto-service-auto-service-groups.component-CqIVe2LU.mjs +0 -357
  70. package/fesm2022/trismegisto-spine-auto-service-auto-service-groups.component-CqIVe2LU.mjs.map +0 -1
  71. package/fesm2022/trismegisto-spine-auto-service-auto-service.component-BLN49F4a.mjs +0 -502
  72. package/fesm2022/trismegisto-spine-auto-service-auto-service.component-BLN49F4a.mjs.map +0 -1
  73. package/fesm2022/trismegisto-spine-auto-service-client.technical-BHWhpyWv.mjs.map +0 -1
  74. package/fesm2022/trismegisto-spine-auto-service-client.usage-CM2WB2e2.mjs.map +0 -1
  75. package/fesm2022/trismegisto-spine-auto-service-groups.technical-jQlwaQPn.mjs +0 -39
  76. package/fesm2022/trismegisto-spine-auto-service-groups.technical-jQlwaQPn.mjs.map +0 -1
  77. package/fesm2022/trismegisto-spine-auto-service-groups.usage-Bh7ig2zZ.mjs +0 -54
  78. package/fesm2022/trismegisto-spine-auto-service-groups.usage-Bh7ig2zZ.mjs.map +0 -1
  79. package/fesm2022/trismegisto-spine-auto-service-home.component-vl3BPFnk.mjs.map +0 -1
package/README.md CHANGED
@@ -51,7 +51,7 @@ export const appConfig: ApplicationConfig = {
51
51
  o tema no `<body>` e usa `clientId` como prefixo de **todas** as chaves salvas (tema, menu lateral, abas):
52
52
  apps diferentes na mesma origem não misturam preferências. Opções: `clientId`, `appName` (nome ao lado do
53
53
  logo no cabeçalho), `logo`, `showAppName` e `favicon` (ver "Logo e favicon" abaixo), `technicalDocs` (mostra a
54
- especificação técnica das telas e o botão "Copiar token de acesso" do painel de configurações; padrão
54
+ especificação técnica das telas e o botão "Copiar token de acesso" da seção Sessões das configurações; padrão
55
55
  `isDevMode()`).
56
56
  - **Recentes, buscas recentes e favoritos** ficam no `localStorage` por usuário (`SpineUserStorage`: chave
57
57
  `<clientId>_<lista>_<sub>`, com o `sub` do token). No logout (pelo spine ou vindo de outra aba, via `isAuth$`) os
@@ -110,7 +110,7 @@ const saiu = await inject(SpineLogoutService).logout(); // false: o aviso já ap
110
110
  ```
111
111
 
112
112
  O `spine-layout` também monta os avisos: o `spine-notification` (`NotificationService`) e um `hm-toast-stack`
113
- (`HermesToastService`, usado nas configurações, em Conta e segurança e no auto-serviço). O app não monta outro; se
113
+ (`HermesToastService`, usado nas configurações, inclusive em MFA e Sessões, e no auto-serviço). O app não monta outro; se
114
114
  montar, os avisos não aparecem em dobro (só uma pilha desenha).
115
115
 
116
116
  ## Logo e favicon
@@ -146,14 +146,71 @@ provideUi({
146
146
  - **Marca em componente:** `{ provide: SPINE_BRAND, useValue: MarcaComponent }` (`@trismegisto/spine/layout`) tem
147
147
  prioridade sobre a imagem (ex.: SVG inline com `currentColor`). Ele fica dentro do link — sem link/botão dentro.
148
148
 
149
- ## Conta e segurança (painel de configurações)
149
+ ## Painel de configurações: seções
150
150
 
151
- A seção **Conta e segurança** do painel (`?settings=seguranca`) gerencia a conta da pessoa no Argos sem sair do app:
152
- **Verificação em duas etapas** (adicionar o aplicativo autenticador com QR Code, adicionar o e-mail, trocar o aparelho,
153
- remover), **Códigos de recuperação** (gerar um lote novo, mostrado uma vez, com copiar e baixar) e **Sessões e
154
- dispositivos** (encerrar uma sessão ou todas as outras; a deste login vem marcada). Antes de qualquer alteração a
155
- pessoa confirma a identidade (senha, código do autenticador, código no e-mail cadastrado ou código de recuperação); o
156
- Argos guarda essa prova por 5 minutos.
151
+ Aberto pelo menu do perfil, por `Ctrl+,`, por `SpineSettingsService.open(chave)` ou por link com `?settings=<chave>`
152
+ (chaves em `SPINE_SETTINGS_KEYS`, de `@trismegisto/spine/layout`). As seções do app (`provideSettingsSection`) entram
153
+ antes de "Sobre".
154
+
155
+ | Seção | Chave (`?settings=`) | Conteúdo | Quando aparece |
156
+ | --- | --- | --- | --- |
157
+ | Conta | `conta` | Perfil, nível de acesso, Sair | Sempre |
158
+ | MFA | `mfa` | Conta no Argos, verificação em duas etapas, códigos de recuperação | Com `authority` e `realmId` do `AUTH_CONFIG` preenchidos |
159
+ | Sessões | `sessoes` | Token de acesso, Tokens de aplicação, Conectar um agente de IA, Sessões e dispositivos | Sempre (cada linha com a própria condição, abaixo) |
160
+ | Notificações | `notificacoes` | Tipos de aviso do app, aviso do navegador | Com `SpineConfig.features.notices` |
161
+ | Aparência | `aparencia` | Tema, cor, densidade, fonte, menu lateral | Sempre |
162
+ | Região | `regiao` | Idioma, fuso horário | Sempre |
163
+ | Atalhos | `atalhos` | Lista de atalhos, tour guiado | Sempre |
164
+ | Sobre | `sobre` | Aplicação, versão, build, ambiente, links, dependências, informações de suporte | Sempre |
165
+
166
+ Linhas da seção **Sessões**: "Sessão" sempre; "Token de acesso" só com `SpineConfig.technicalDocs` (sem configuração,
167
+ só em `isDevMode()`); "Tokens de aplicação" sempre (sem `SPINE_ADMIN_API` a linha explica que não está disponível);
168
+ "Sessões e dispositivos" só com a API da conta (a mesma condição da seção MFA). Sem nenhuma linha visível, a seção
169
+ não aparece.
170
+
171
+ **Chave antiga**: até a versão 2.1.2 a seção "Conta e segurança" (`seguranca`) reunia MFA e sessões, e "Sessão" e os
172
+ tokens ficavam em "Conta". `?settings=seguranca` (e `SPINE_SETTINGS_KEYS.security`, agora `@deprecated`) abre a seção
173
+ **MFA** (`SPINE_SETTINGS_ALIASES`, `resolveSettingsSection`); sem a API da conta, como qualquer chave sem seção, abre
174
+ a primeira. `?settings=conta` continua abrindo Conta.
175
+
176
+ ## Recursos opcionais do painel (`SpineConfig.features`)
177
+
178
+ Desligados sem configuração; o app liga cada um em `provideUi({ ..., features })`:
179
+
180
+ ```ts
181
+ features: {
182
+ aiAgent: { servers: [{ name: 'hefesto', url: '/hefesto/mcp', label: 'Hefesto', readScopes: 'deploy.*.read', writeScopes: 'deploy.*' }] },
183
+ accountActivity: true,
184
+ idleTimeout: { max: 60 }, // ou true; { min, max } em minutos
185
+ startPage: true,
186
+ defaultBadge: true,
187
+ notices: { types: [{ id: 'deploy-concluido', label: 'Deploy concluído' }] },
188
+ accountPreferences: true,
189
+ }
190
+ ```
191
+
192
+ | Recurso | Onde | O que faz | Depende de |
193
+ | --- | --- | --- | --- |
194
+ | `aiAgent` | Sessões › Conectar um agente de IA | Cria um token de aplicação pessoal (`x-app-token`) e mostra, uma única vez, o `.mcp.json` pronto para o Claude Code com os servidores do app; "Leitura e escrita" põe `writeScopes` em `x-mcp-scopes` (sem isso, `readScopes` ou nenhum header: o MCP já é só leitura). URL relativa vira absoluta pela origem da página. O token nunca vai para o console nem para o storage | `SPINE_ADMIN_API` |
195
+ | `accountActivity` | MFA › Atividade da conta | Entradas e tentativas que falharam desta conta, 90 dias, com IP, navegador, aplicativo, método e motivo; filtro "Só falhas" e "Carregar mais" | API da conta (`GET /activity`) |
196
+ | `idleTimeout` | Conta › Encerrar por inatividade | Nunca/5/15/30/60 min; aviso com contagem 60 s antes e saída pelo `SpineLogoutService`. Conta a atividade de todas as abas. `{ min, max }` limitam a escolha (com `max`, "Nunca" some) | — |
197
+ | `startPage` | Conta › Tela inicial | Início, última tela visitada ou um favorito, aplicada no `/callback` quando o login não pediu outra URL | — |
198
+ | `defaultBadge` | Conta › Crachá padrão | Crachá com que o login entra nesta aplicação, guardado no Argos (vale em qualquer navegador); aparece com mais de um crachá | API da conta (`GET/PUT /badges`) |
199
+ | `notices` | Notificações (`?settings=notificacoes`) | Liga/desliga cada tipo de aviso que o app declara e o aviso do navegador (Notification API, pede a permissão) quando a aba está em segundo plano. O app emite com `SpineNoticesService.notify(tipo, { title, body?, url?, intent? })` | — |
200
+ | `accountPreferences` | Dados do navegador › Preferências na conta | Espelha no Argos (`GET/PUT /preferences`, por usuário e aplicação, até 16 KB) tema, cor, densidade, fonte, menu lateral, idioma, fuso, relógio, semana, texto, animações, atalhos, inatividade, tela inicial, avisos e favoritos: lê e aplica no login, soma os favoritos, grava agrupado. As telas Aparência, Região etc. continuam iguais; sem a API (ou com Argos sem o endpoint) fica só no navegador | API da conta |
201
+
202
+ Serviços (todos de `@trismegisto/spine/layout`): `SpineIdleService`, `SpineStartPageService`, `SpineNoticesService`,
203
+ `SpineAccountPreferencesService`; preferências novas no `SpinePreferencesService` (`idleMinutes`, `startPage`,
204
+ `noticeTypes`, `browserNotices`).
205
+
206
+ ## MFA e Sessões (API da conta do Argos)
207
+
208
+ A seção **MFA** (`?settings=mfa`) gerencia a conta da pessoa no Argos sem sair do app: **Verificação em duas etapas**
209
+ (adicionar o aplicativo autenticador com QR Code, adicionar o e-mail, trocar o aparelho, remover) e **Códigos de
210
+ recuperação** (gerar um lote novo, mostrado uma vez, com copiar e baixar). Na seção **Sessões** (`?settings=sessoes`),
211
+ a linha **Sessões e dispositivos** encerra uma sessão ou todas as outras (a deste login vem marcada). Antes de
212
+ qualquer alteração de MFA a pessoa confirma a identidade (senha, código do autenticador, código no e-mail cadastrado
213
+ ou código de recuperação); o Argos guarda essa prova por 5 minutos.
157
214
 
158
215
  - **API**: a área da conta do Argos com Bearer, `{authority}/api/realms/{realmId}/account/*` (`security`, `reauth`,
159
216
  `mfa/*`, `recovery-codes`, `sessions`), com o access token da sessão do `@orfeu/angular` no `Authorization` — o
@@ -161,9 +218,9 @@ Argos guarda essa prova por 5 minutos.
161
218
  a sessão pelo `sid` do token. Token vencido renova uma vez e repete.
162
219
  - **Configuração**: nenhuma além do `provideAuth`. A origem do app precisa estar nas `redirect_uris` do client no
163
220
  Argos (é o que o CORS do Argos libera — o login já exige isso). Sem `authority`/`realmId` (ou com `CHANGE_ME`) a
164
- seção não aparece.
221
+ seção MFA e a linha "Sessões e dispositivos" não aparecem.
165
222
  - **Versão do Argos**: precisa da área da conta por Bearer (`/realms/{realm}/account`). Num Argos anterior a seção
166
- mostra o erro de carregamento.
223
+ MFA e a linha de sessões mostram o erro de carregamento.
167
224
  - A mesma API sai de `SpineAccountSecurityService` / `argosAccountApi(authority, realm)` (`@trismegisto/spine/layout`),
168
225
  para outra tela do app.
169
226
 
@@ -178,8 +235,8 @@ Argos guarda essa prova por 5 minutos.
178
235
  | `@trismegisto/spine/modal` | `ModalService` (`open(config)` devolve um `Observable` com o resultado), `ModalContent` |
179
236
  | `@trismegisto/spine/side-panel` | `SidePanelService`, `SidePanelContent` |
180
237
  | `@trismegisto/spine/notification` | `NotificationService` (`addNotification`) |
181
- | `@trismegisto/spine/auto-service` | `provideAutoService({ adminApi })`: telas prontas de autosserviço (início, grupos, aplicações, cliente, auditoria), sempre carregadas sob demanda (`AUTO_SERVICE_SCREENS`); as classes das telas não são exportadas. Cada tela já vem com a documentação (manual de uso e especificação técnica, em `AUTO_SERVICE_DOCUMENTS`, também sob demanda) no botão de documentação da página. `AutoServiceService` e o tipo `AutoServiceClient` são exportados |
182
- | `@trismegisto/spine/audit` | A tela de Auditoria (`SpineAuditComponent`, `spine-audit`), a mesma para o painel central (`scope="admin"`) e o auto-serviço (`scope="client"`), + `SpineAuditService` e os tipos/funções puras (`AuditEvent`, `AuditQuery`, `buildAuditQuery`, `auditApiBase`…). **Exporta o componente: importe só de código lazy** |
238
+ | `@trismegisto/spine/auto-service` | `provideAutoService({ adminApi })`: telas prontas de autosserviço (início, grupos, aplicações, cliente e, no menu Auditoria, ações e tentativas de login), sempre carregadas sob demanda (`AUTO_SERVICE_SCREENS`); as classes das telas não são exportadas. Cada tela já vem com a documentação (manual de uso e especificação técnica, em `AUTO_SERVICE_DOCUMENTS`, também sob demanda) no botão de documentação da página. `AutoServiceService` (com os tipos de grupo `AutoServiceGroup`, `AutoServiceGroupType`, `AutoServiceGroupCreate`, `AutoServiceGroupUpdate`) e o tipo `AutoServiceClient` são exportados |
239
+ | `@trismegisto/spine/audit` | As telas de auditoria — Ações (`SpineAuditComponent`, `spine-audit`) e Tentativas de login (`SpineLoginAttemptsComponent`, `spine-login-attempts`) —, as mesmas para o painel central (`scope="admin"`) e o auto-serviço (`scope="client"`), + `SpineAuditService` e os tipos/funções puras (`AuditEvent`, `AuditQuery`, `buildAuditQuery`, `auditApiBase`…). **Exporta o componente: importe só de código lazy** |
183
240
  | `@trismegisto/spine/graphql` | `provideGraphql({ endpoints })`: um cliente Apollo nomeado por backend |
184
241
 
185
242
  ## Auditoria (`@trismegisto/spine/audit`)
@@ -200,10 +257,10 @@ component: async () => (await import('./admin-audit-page.component')).AdminAudit
200
257
  // …e no template da página: <spine-audit scope="admin" [adminApi]="environment.adminApi" />
201
258
  ```
202
259
 
203
- - **No auto-serviço:** aba **Auditoria** na página de Aplicações (`import('@trismegisto/spine/audit')` só ao abrir
204
- a aba) e página própria ligada a `AUTO_SERVICE_AUDIT_TEMPLATE_ROUTER_ID` (`ad100004-…`), que aparece no menu
205
- "Administração" quando o template `auto-service` do banco tiver esse router. O app não configura nada além do
206
- `provideAutoService`.
260
+ - **No auto-serviço:** menu **Auditoria** (dentro de "Administração", no template `auto-service` do argos) com duas
261
+ páginas: **Ações** (`AUTO_SERVICE_AUDIT_TEMPLATE_ROUTER_ID`, `ad100004-…`, esta tela) e **Tentativas de login**
262
+ (`AUTO_SERVICE_LOGIN_ATTEMPTS_TEMPLATE_ROUTER_ID`, `ad100005-…`, `SpineLoginAttemptsComponent` com
263
+ `scope="client"`, `GET /auto-service/:clientId/attempts`). O app não configura nada além do `provideAutoService`.
207
264
  - **Conteúdo:** período rápido (1h/6h/24h/7d/30d; as datas da faixa de filtros vencem), "Atualizar" + atualização
208
265
  automática opcional (30 s), filtros (datas, aplicação — multisseleção —, usuário, operação, método, resultado, só
209
266
  ações do usuário, nível, permissão, tipo de ator, status HTTP, trace, ID do usuário; filtros salvos por escopo),