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