@trismegisto/spine 2.1.1 → 3.0.0
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.
- package/README.md +105 -19
- package/fesm2022/trismegisto-spine-audit.mjs +264 -10
- package/fesm2022/trismegisto-spine-audit.mjs.map +1 -1
- package/fesm2022/trismegisto-spine-auto-service-apps.technical-BAKdkVdz.mjs +84 -0
- package/fesm2022/trismegisto-spine-auto-service-apps.technical-BAKdkVdz.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-auto-service-apps.usage-CAXMP5r8.mjs +87 -0
- package/fesm2022/trismegisto-spine-auto-service-apps.usage-CAXMP5r8.mjs.map +1 -0
- package/fesm2022/{trismegisto-spine-auto-service-audit.technical-C901aIIQ.mjs → trismegisto-spine-auto-service-audit.technical-B75d4mh2.mjs} +6 -5
- package/fesm2022/trismegisto-spine-auto-service-audit.technical-B75d4mh2.mjs.map +1 -0
- package/fesm2022/{trismegisto-spine-auto-service-audit.usage-GIJ2RwuH.mjs → trismegisto-spine-auto-service-audit.usage-IdXMruv5.mjs} +9 -8
- package/fesm2022/trismegisto-spine-auto-service-audit.usage-IdXMruv5.mjs.map +1 -0
- package/fesm2022/{trismegisto-spine-auto-service-auto-service-audit.component-CCiz-q8o.mjs → trismegisto-spine-auto-service-auto-service-audit.component-BIL8tH1I.mjs} +4 -4
- package/fesm2022/{trismegisto-spine-auto-service-auto-service-audit.component-CCiz-q8o.mjs.map → trismegisto-spine-auto-service-auto-service-audit.component-BIL8tH1I.mjs.map} +1 -1
- package/fesm2022/{trismegisto-spine-auto-service-auto-service-client-picker.component-Z0wCANF6.mjs → trismegisto-spine-auto-service-auto-service-client-picker.component-CBt_0Uli.mjs} +3 -3
- package/fesm2022/{trismegisto-spine-auto-service-auto-service-client-picker.component-Z0wCANF6.mjs.map → trismegisto-spine-auto-service-auto-service-client-picker.component-CBt_0Uli.mjs.map} +1 -1
- package/fesm2022/{trismegisto-spine-auto-service-auto-service-client.component-C7SPavrX.mjs → trismegisto-spine-auto-service-auto-service-client.component-DAxhZC-a.mjs} +123 -27
- package/fesm2022/trismegisto-spine-auto-service-auto-service-client.component-DAxhZC-a.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-auto-service-auto-service-delete-CoJYTtBU.mjs +87 -0
- package/fesm2022/trismegisto-spine-auto-service-auto-service-delete-CoJYTtBU.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-auto-service-auto-service-groups.component-UVMGF7-B.mjs +544 -0
- package/fesm2022/trismegisto-spine-auto-service-auto-service-groups.component-UVMGF7-B.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-auto-service-auto-service-login-attempts.component-Boi-kG0G.mjs +37 -0
- package/fesm2022/trismegisto-spine-auto-service-auto-service-login-attempts.component-Boi-kG0G.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-auto-service-auto-service.component-DmLafUkX.mjs +943 -0
- package/fesm2022/trismegisto-spine-auto-service-auto-service.component-DmLafUkX.mjs.map +1 -0
- package/fesm2022/{trismegisto-spine-auto-service-client.technical-BHWhpyWv.mjs → trismegisto-spine-auto-service-client.technical-DP5G8i3o.mjs} +24 -3
- package/fesm2022/trismegisto-spine-auto-service-client.technical-DP5G8i3o.mjs.map +1 -0
- package/fesm2022/{trismegisto-spine-auto-service-client.usage-CM2WB2e2.mjs → trismegisto-spine-auto-service-client.usage-CcJANb20.mjs} +15 -6
- package/fesm2022/trismegisto-spine-auto-service-client.usage-CcJANb20.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-auto-service-groups.technical-BlktCM70.mjs +65 -0
- package/fesm2022/trismegisto-spine-auto-service-groups.technical-BlktCM70.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-auto-service-groups.usage-Cz5sCKgn.mjs +81 -0
- package/fesm2022/trismegisto-spine-auto-service-groups.usage-Cz5sCKgn.mjs.map +1 -0
- package/fesm2022/{trismegisto-spine-auto-service-home.component-vl3BPFnk.mjs → trismegisto-spine-auto-service-home.component-5_aji1hf.mjs} +5 -4
- package/fesm2022/trismegisto-spine-auto-service-home.component-5_aji1hf.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-auto-service-login-attempts.technical-CasKIIws.mjs +37 -0
- package/fesm2022/trismegisto-spine-auto-service-login-attempts.technical-CasKIIws.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-auto-service-login-attempts.usage-BMgLNu7W.mjs +60 -0
- package/fesm2022/trismegisto-spine-auto-service-login-attempts.usage-BMgLNu7W.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-auto-service.mjs +49 -29
- package/fesm2022/trismegisto-spine-auto-service.mjs.map +1 -1
- package/fesm2022/trismegisto-spine-layout.mjs +1850 -217
- package/fesm2022/trismegisto-spine-layout.mjs.map +1 -1
- package/fesm2022/trismegisto-spine-shell.mjs +28 -8
- package/fesm2022/trismegisto-spine-shell.mjs.map +1 -1
- package/fesm2022/trismegisto-spine.mjs +1163 -87
- package/fesm2022/trismegisto-spine.mjs.map +1 -1
- package/package.json +6 -6
- package/types/trismegisto-spine-audit.d.ts +180 -5
- package/types/trismegisto-spine-audit.d.ts.map +1 -1
- package/types/trismegisto-spine-auto-service.d.ts +100 -7
- package/types/trismegisto-spine-auto-service.d.ts.map +1 -1
- package/types/trismegisto-spine-layout.d.ts +885 -22
- package/types/trismegisto-spine-layout.d.ts.map +1 -1
- package/types/trismegisto-spine-shell.d.ts +11 -2
- package/types/trismegisto-spine-shell.d.ts.map +1 -1
- package/types/trismegisto-spine.d.ts +496 -34
- package/types/trismegisto-spine.d.ts.map +1 -1
- package/fesm2022/trismegisto-spine-auto-service-apps.technical-ClMKB9cK.mjs +0 -48
- package/fesm2022/trismegisto-spine-auto-service-apps.technical-ClMKB9cK.mjs.map +0 -1
- package/fesm2022/trismegisto-spine-auto-service-apps.usage-Cf5SG-oQ.mjs +0 -55
- package/fesm2022/trismegisto-spine-auto-service-apps.usage-Cf5SG-oQ.mjs.map +0 -1
- package/fesm2022/trismegisto-spine-auto-service-audit.technical-C901aIIQ.mjs.map +0 -1
- package/fesm2022/trismegisto-spine-auto-service-audit.usage-GIJ2RwuH.mjs.map +0 -1
- package/fesm2022/trismegisto-spine-auto-service-auto-service-client.component-C7SPavrX.mjs.map +0 -1
- package/fesm2022/trismegisto-spine-auto-service-auto-service-delete-6Bk46MOf.mjs +0 -39
- package/fesm2022/trismegisto-spine-auto-service-auto-service-delete-6Bk46MOf.mjs.map +0 -1
- package/fesm2022/trismegisto-spine-auto-service-auto-service-groups.component-CqIVe2LU.mjs +0 -357
- package/fesm2022/trismegisto-spine-auto-service-auto-service-groups.component-CqIVe2LU.mjs.map +0 -1
- package/fesm2022/trismegisto-spine-auto-service-auto-service.component-BLN49F4a.mjs +0 -502
- package/fesm2022/trismegisto-spine-auto-service-auto-service.component-BLN49F4a.mjs.map +0 -1
- package/fesm2022/trismegisto-spine-auto-service-client.technical-BHWhpyWv.mjs.map +0 -1
- package/fesm2022/trismegisto-spine-auto-service-client.usage-CM2WB2e2.mjs.map +0 -1
- package/fesm2022/trismegisto-spine-auto-service-groups.technical-jQlwaQPn.mjs +0 -39
- package/fesm2022/trismegisto-spine-auto-service-groups.technical-jQlwaQPn.mjs.map +0 -1
- package/fesm2022/trismegisto-spine-auto-service-groups.usage-Bh7ig2zZ.mjs +0 -54
- package/fesm2022/trismegisto-spine-auto-service-groups.usage-Bh7ig2zZ.mjs.map +0 -1
- package/fesm2022/trismegisto-spine-auto-service-home.component-vl3BPFnk.mjs.map +0 -1
package/README.md
CHANGED
|
@@ -51,12 +51,12 @@ 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"
|
|
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
|
|
58
|
-
históricos são apagados; os favoritos ficam. Logout próprio do app:
|
|
59
|
-
|
|
58
|
+
históricos são apagados; os favoritos ficam. Logout próprio do app: use `SpineLogoutService.logout()` (veja
|
|
59
|
+
"Sair (logout)" abaixo).
|
|
60
60
|
- **`APP_ROUTES`** traz login, callback, saída e as rotas privadas sob o `spine-layout`
|
|
61
61
|
(`LayoutComponent`). O `/callback` usa o `handleCallback()` do `@orfeu/angular`: confere state/verifier, volta
|
|
62
62
|
para a URL pedida antes do login e, no `login_required` da reautorização silenciosa, segue sozinho para o login
|
|
@@ -84,6 +84,35 @@ export const components: ComponentRoute[] = [
|
|
|
84
84
|
];
|
|
85
85
|
```
|
|
86
86
|
|
|
87
|
+
### Sair (logout)
|
|
88
|
+
|
|
89
|
+
Todas as saídas do spine (item "Sair" do menu do perfil, botão "Sair" do painel de configurações, atalho
|
|
90
|
+
`Mod+Shift+L` e a ação da tela `/blocked`) passam pelo **`SpineLogoutService`** (`@trismegisto/spine/layout`). O app não
|
|
91
|
+
precisa de código próprio:
|
|
92
|
+
|
|
93
|
+
- **Falha no Argos** (`@orfeu/angular` 1.3.x: o `logout()` repete uma vez e, falhando de novo, mantém a sessão e emite
|
|
94
|
+
`logoutFailed$`): o serviço assina `logoutFailed$` uma vez e mostra um aviso de erro (`hm-alert` de erro,
|
|
95
|
+
`role="alert"`, pelo `NotificationService`) com `SpineMessages.session.logoutFailed` — "Não foi possível sair agora.
|
|
96
|
+
Verifique a conexão e tente de novo." A pessoa fica na tela, a sessão continua e os botões voltam ao normal para
|
|
97
|
+
tentar de novo. Vale também para um `AuthorizationService.logout()` chamado direto pelo app.
|
|
98
|
+
- **Sucesso**: só então os históricos (recentes e buscas recentes) são apagados; o `@orfeu/angular` navega para o
|
|
99
|
+
`/logoff`. Com falha, nada é apagado.
|
|
100
|
+
- `logout()` devolve `Promise<boolean>` (`true` = saiu; nunca rejeita) e `pending` (signal) fica `true` durante a
|
|
101
|
+
saída: o painel de configurações mostra o botão carregando, o item do menu fica desabilitado e o painel só fecha
|
|
102
|
+
quando a saída deu certo. Cliques repetidos reaproveitam a mesma tentativa.
|
|
103
|
+
- **`@orfeu/angular` 1.0.x** (sem `logoutFailed$`, `logout()` sem retorno): funciona como antes — a saída conta como
|
|
104
|
+
concluída e os históricos saem.
|
|
105
|
+
|
|
106
|
+
Logout num botão do próprio app:
|
|
107
|
+
|
|
108
|
+
```ts
|
|
109
|
+
const saiu = await inject(SpineLogoutService).logout(); // false: o aviso já apareceu; a pessoa continua aqui
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
O `spine-layout` também monta os avisos: o `spine-notification` (`NotificationService`) e um `hm-toast-stack`
|
|
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
|
+
montar, os avisos não aparecem em dobro (só uma pilha desenha).
|
|
115
|
+
|
|
87
116
|
## Logo e favicon
|
|
88
117
|
|
|
89
118
|
O spine não traz marca nenhuma: o logo do cabeçalho e o favicon são arquivos do app.
|
|
@@ -117,14 +146,71 @@ provideUi({
|
|
|
117
146
|
- **Marca em componente:** `{ provide: SPINE_BRAND, useValue: MarcaComponent }` (`@trismegisto/spine/layout`) tem
|
|
118
147
|
prioridade sobre a imagem (ex.: SVG inline com `currentColor`). Ele fica dentro do link — sem link/botão dentro.
|
|
119
148
|
|
|
120
|
-
##
|
|
149
|
+
## Painel de configurações: seções
|
|
150
|
+
|
|
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
|
+
```
|
|
121
191
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
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.
|
|
128
214
|
|
|
129
215
|
- **API**: a área da conta do Argos com Bearer, `{authority}/api/realms/{realmId}/account/*` (`security`, `reauth`,
|
|
130
216
|
`mfa/*`, `recovery-codes`, `sessions`), com o access token da sessão do `@orfeu/angular` no `Authorization` — o
|
|
@@ -132,9 +218,9 @@ Argos guarda essa prova por 5 minutos.
|
|
|
132
218
|
a sessão pelo `sid` do token. Token vencido renova uma vez e repete.
|
|
133
219
|
- **Configuração**: nenhuma além do `provideAuth`. A origem do app precisa estar nas `redirect_uris` do client no
|
|
134
220
|
Argos (é o que o CORS do Argos libera — o login já exige isso). Sem `authority`/`realmId` (ou com `CHANGE_ME`) a
|
|
135
|
-
seção não
|
|
221
|
+
seção MFA e a linha "Sessões e dispositivos" não aparecem.
|
|
136
222
|
- **Versão do Argos**: precisa da área da conta por Bearer (`/realms/{realm}/account`). Num Argos anterior a seção
|
|
137
|
-
|
|
223
|
+
MFA e a linha de sessões mostram o erro de carregamento.
|
|
138
224
|
- A mesma API sai de `SpineAccountSecurityService` / `argosAccountApi(authority, realm)` (`@trismegisto/spine/layout`),
|
|
139
225
|
para outra tela do app.
|
|
140
226
|
|
|
@@ -145,12 +231,12 @@ Argos guarda essa prova por 5 minutos.
|
|
|
145
231
|
| `@trismegisto/spine` | `provideUi`, `SpineConfig`, `ThemeService`, `DensityService`, `SpinePreferencesService`, `provideSpineNews`, textos (`SPINE_MESSAGES`, `provideSpineMessages`) |
|
|
146
232
|
| `@trismegisto/spine/shell` | `APP_ROUTES`, `PUBLIC_ROUTES`, `PRIVATE_ROUTES`, `provideShell`, telas de login e de estado |
|
|
147
233
|
| `@trismegisto/spine/routing` | `ComponentRoute`, `COMPONENT_ROUTES`, `ViewGuard`, `RouteIdInterceptor`, resolução de rota |
|
|
148
|
-
| `@trismegisto/spine/layout` | `LayoutComponent` (`spine-layout`), cabeçalho, menu lateral, onboarding, atalhos, configurações, novidades, documentação |
|
|
234
|
+
| `@trismegisto/spine/layout` | `LayoutComponent` (`spine-layout`), cabeçalho, menu lateral, onboarding, atalhos, configurações, novidades, documentação, `SpineLogoutService` |
|
|
149
235
|
| `@trismegisto/spine/modal` | `ModalService` (`open(config)` devolve um `Observable` com o resultado), `ModalContent` |
|
|
150
236
|
| `@trismegisto/spine/side-panel` | `SidePanelService`, `SidePanelContent` |
|
|
151
237
|
| `@trismegisto/spine/notification` | `NotificationService` (`addNotification`) |
|
|
152
|
-
| `@trismegisto/spine/auto-service` | `provideAutoService({ adminApi })`: telas prontas de autosserviço (início, grupos, aplicações, cliente,
|
|
153
|
-
| `@trismegisto/spine/audit` |
|
|
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** |
|
|
154
240
|
| `@trismegisto/spine/graphql` | `provideGraphql({ endpoints })`: um cliente Apollo nomeado por backend |
|
|
155
241
|
|
|
156
242
|
## Auditoria (`@trismegisto/spine/audit`)
|
|
@@ -171,10 +257,10 @@ component: async () => (await import('./admin-audit-page.component')).AdminAudit
|
|
|
171
257
|
// …e no template da página: <spine-audit scope="admin" [adminApi]="environment.adminApi" />
|
|
172
258
|
```
|
|
173
259
|
|
|
174
|
-
- **No auto-serviço:**
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
`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`.
|
|
178
264
|
- **Conteúdo:** período rápido (1h/6h/24h/7d/30d; as datas da faixa de filtros vencem), "Atualizar" + atualização
|
|
179
265
|
automática opcional (30 s), filtros (datas, aplicação — multisseleção —, usuário, operação, método, resultado, só
|
|
180
266
|
ações do usuário, nível, permissão, tipo de ator, status HTTP, trace, ID do usuário; filtros salvos por escopo),
|