@praxisui/core 3.0.0-beta.9 → 4.0.0-beta.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 CHANGED
@@ -119,7 +119,7 @@ Observação: os IDs de widgets usados na página devem estar registrados via `C
119
119
 
120
120
  ## 📄 Documentacao Tecnica da Lib
121
121
 
122
- - `projects/praxis-core/docs/connection-editor.md`
122
+ - `projects/praxis-core/docs/connection-editor.md` (historico legado; fora do fluxo ativo)
123
123
  - `projects/praxis-core/docs/schema-flow.md`
124
124
 
125
125
  ## ⚙️ Global Config (bootstrap)
@@ -127,6 +127,47 @@ Observação: os IDs de widgets usados na página devem estar registrados via `C
127
127
  - Use `provideGlobalConfigTenant(...)` para definir o tenant e bloquear o bootstrap até a config remota ser carregada.
128
128
  - Se não houver tenant, use `provideGlobalConfigReady()` para apenas aguardar o carregamento remoto.
129
129
 
130
+ ## `resourcePath` vs `resourceKey`
131
+
132
+ No runtime Angular, os dois valores coexistem, mas cumprem papeis diferentes:
133
+
134
+ - `resourcePath` e o endereco operacional usado para CRUD, fetch de schema e submit
135
+ - `resourceKey` e a identidade semantica estavel recebida dos catalogos de discovery do backend
136
+
137
+ Na pratica:
138
+
139
+ - o backend publica links como `/schemas/surfaces?resource={resourceKey}` e `/schemas/actions?resource={resourceKey}`
140
+ - o `ResourceDiscoveryService` segue esses links HATEOAS e recebe `resourceKey` de volta nos payloads de surfaces, actions e capabilities
141
+ - os adapters de abertura preservam `resourceKey` no `context.resource` e o usam para gerar ids estaveis de runtime
142
+
143
+ Regra de leitura:
144
+
145
+ - se o problema for URL, submit, fetch ou schema, pense primeiro em `resourcePath`
146
+ - se o problema for discovery semantico, contexto de surface/action ou identidade estavel, pense primeiro em `resourceKey`
147
+
148
+ ## `x-ui.analytics` no runtime
149
+
150
+ O `@praxisui/core` trata `x-ui.analytics` como a projeção semantica analitica canonica vinda do backend.
151
+
152
+ - o backend publica `x-ui.analytics.projections[]` com `intent`, `source`, `bindings`, `defaults` e `preferredFamilies`
153
+ - o `AnalyticsPresentationResolver` escolhe a familia de apresentacao no runtime
154
+ - `praxis-charts` continua sendo apenas um renderer possivel; ele nao vira a semantica-base do contrato
155
+
156
+ Regra atual do resolver:
157
+
158
+ - se houver uma projection com `preferredFamilies` compativel, ela orienta a escolha
159
+ - chart automatico so acontece quando a semantica temporal for inequivoca
160
+ - `analytic-table` nao e a sobra do resolver; ela e uma familia canonica escolhida quando a projection continua valida, mas nao e chart inequivoco
161
+ - nos casos ambiguos, o fallback conservador e `analytic-table`
162
+ - se o host nao expuser `analytic-table` e a semantica continuar ambigua, o resolver falha em vez de forcar `chart`
163
+ - projections `timeseries` devem publicar `defaults.granularity` quando o renderer precisar executar `praxis.stats` sem heuristica local
164
+
165
+ Shape publico da decisao:
166
+
167
+ - `projectionId`: id da projection escolhida
168
+ - `family`: familia resolvida (`chart`, `analytic-table`, `kpi`, `summary-list`)
169
+ - `reason`: motivo explicito da decisao, util para debug e suporte
170
+
130
171
  ## 🌐 Global Actions (shell + widgets)
131
172
 
132
173
  O core agora suporta **ações globais** executadas por widgets e pelo Widget Shell, permitindo integrar navegação, dialog, toast, analytics, API e rotas dinâmicas de forma padronizada.
@@ -988,3 +1029,17 @@ Precedencia:
988
1029
  Observacoes:
989
1030
  - `valuePresentation` deve representar valor escalar de display/read-only; nao use para ranges, selections ou IDs semanticos
990
1031
  - contratos legados como `format`, `numericFormat`, `currency` e `numberFormat` continuam aceitos como bridge de compatibilidade interna, mas novos metadados devem preferir `valuePresentation`
1032
+
1033
+ ## Analytics Contract Client
1034
+
1035
+ `AnalyticsSchemaContractService` e o cliente canônico para hosts que precisam resolver `x-ui.analytics` a partir de `/schemas/filtered`.
1036
+
1037
+ Regras:
1038
+ - reutiliza `SchemaMetadataClient` + `fetchWithETag`
1039
+ - devolve `PraxisXUiAnalytics` tipado
1040
+ - falha explicitamente quando `x-ui.analytics.projections[]` nao foi publicado
1041
+
1042
+ Uso esperado:
1043
+ - `@praxisui/core` busca e valida o contrato semantico
1044
+ - bibliotecas verticais, como `@praxisui/charts`, especializam esse contrato para um renderer concreto
1045
+ - apps consumidores deixam de reimplementar fetch, cache, ETag e leitura manual de `x-ui.analytics`