@praxisui/editorial-forms 1.0.0-beta.61
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/LICENSE +6 -0
- package/README.md +421 -0
- package/fesm2022/praxisui-editorial-forms.mjs +2611 -0
- package/fesm2022/praxisui-editorial-forms.mjs.map +1 -0
- package/index.d.ts +438 -0
- package/package.json +46 -0
package/LICENSE
ADDED
package/README.md
ADDED
|
@@ -0,0 +1,421 @@
|
|
|
1
|
+
# @praxisui/editorial-forms
|
|
2
|
+
|
|
3
|
+
Lib dedicada ao runtime de formularios editoriais da plataforma.
|
|
4
|
+
|
|
5
|
+
## Documentacao principal
|
|
6
|
+
|
|
7
|
+
- `docs/architecture.md`
|
|
8
|
+
- `docs/continuation-plan.md`
|
|
9
|
+
- `docs/editorial-authoring-plan.md`
|
|
10
|
+
- `docs/event-registration-promotion-plan.md`
|
|
11
|
+
- `docs/employee-onboarding-promotion-plan.md`
|
|
12
|
+
- `docs/privacy-consent-promotion-plan.md`
|
|
13
|
+
- `docs/recovery-playbook.md`
|
|
14
|
+
- `docs/dynamic-form-hygiene-plan.md`
|
|
15
|
+
|
|
16
|
+
## Objetivo
|
|
17
|
+
|
|
18
|
+
Esta lib existe para tratar formularios editoriais como dominio proprio:
|
|
19
|
+
|
|
20
|
+
- jornadas
|
|
21
|
+
- presets
|
|
22
|
+
- blocos semanticos
|
|
23
|
+
- contexto editorial
|
|
24
|
+
- compliance
|
|
25
|
+
- runtime especializado
|
|
26
|
+
|
|
27
|
+
Ela nao deve usar `FormConfig` como modelo principal de authoring.
|
|
28
|
+
|
|
29
|
+
## Regra arquitetural principal
|
|
30
|
+
|
|
31
|
+
Permitido:
|
|
32
|
+
|
|
33
|
+
- `@praxisui/editorial-forms -> @praxisui/core`
|
|
34
|
+
- `@praxisui/editorial-forms -> @praxisui/dynamic-form` apenas em adaptador/provider opcional
|
|
35
|
+
|
|
36
|
+
Proibido:
|
|
37
|
+
|
|
38
|
+
- `@praxisui/core -> @praxisui/editorial-forms`
|
|
39
|
+
- crescimento do dominio editorial central em `@praxisui/dynamic-form`
|
|
40
|
+
|
|
41
|
+
## Adaptador opcional para `dataCollection`
|
|
42
|
+
|
|
43
|
+
O runtime central nao embute `PraxisDynamicForm`.
|
|
44
|
+
|
|
45
|
+
Para blocos `dataCollection`, a lib agora expoe:
|
|
46
|
+
|
|
47
|
+
- contrato raiz `EditorialDataBlockAdapter`
|
|
48
|
+
- token multi `EDITORIAL_DATA_BLOCK_ADAPTER`
|
|
49
|
+
- `provideEditorialDataBlockAdapter(...)`
|
|
50
|
+
- `EditorialDataBlockAdapterRegistry`
|
|
51
|
+
- outlet do renderer que resolve `formBlockId` e delega para o adaptador registrado
|
|
52
|
+
|
|
53
|
+
Para consolidacao do motor editorial, a lib agora expoe tambem:
|
|
54
|
+
|
|
55
|
+
- `EditorialRuntimeInput`
|
|
56
|
+
- `EditorialRuntimeHostConfig`
|
|
57
|
+
- `EditorialRuntimeSnapshot`
|
|
58
|
+
- `EditorialResolvedJourney`
|
|
59
|
+
- `EditorialResolvedStep`
|
|
60
|
+
- `EditorialResolvedBlock`
|
|
61
|
+
- `EditorialRuntimeDiagnostic`
|
|
62
|
+
- `EditorialRuntimeOperationalEvent`
|
|
63
|
+
- `resolveEditorialRuntimeSnapshot(...)`
|
|
64
|
+
|
|
65
|
+
Nesta fase, o `themePreset` entra no snapshot como preset efetivo de shell/metadados.
|
|
66
|
+
|
|
67
|
+
Ele ainda nao e tratado como origem de bloco nem materializa blocos por si so.
|
|
68
|
+
|
|
69
|
+
O snapshot resolvido agora tambem formaliza:
|
|
70
|
+
|
|
71
|
+
- proveniencia auditavel por bloco com `primarySource` e `trail`
|
|
72
|
+
- politica deterministica de override da instance (`append`, `insertBefore`, `insertAfter`, `replace`, `remove`)
|
|
73
|
+
- estado resolvido de `dataCollection` antes da engine concreta via `dataCollectionState`
|
|
74
|
+
|
|
75
|
+
O runtime atual distingue:
|
|
76
|
+
|
|
77
|
+
- erro global de runtime
|
|
78
|
+
- erro contextual de jornada/etapa/bloco
|
|
79
|
+
|
|
80
|
+
E aplica bloqueio coerente de avanço/navegacao lateral relevante quando existe erro estrutural bloqueador.
|
|
81
|
+
|
|
82
|
+
A politica de fallback operacional agora e derivada por helper central e reutilizavel:
|
|
83
|
+
|
|
84
|
+
- `normal`
|
|
85
|
+
- `warning`
|
|
86
|
+
- `degraded`
|
|
87
|
+
- `blocked`
|
|
88
|
+
|
|
89
|
+
Para hosts corporativos, `EditorialFormRuntimeComponent` e o outlet de `dataCollection` expõem `operationalEvent` com eventos leves de observabilidade, incluindo:
|
|
90
|
+
|
|
91
|
+
- diagnosticos emitidos
|
|
92
|
+
- fallback alterado
|
|
93
|
+
- erro bloqueador detectado
|
|
94
|
+
- conflito de override
|
|
95
|
+
- adapter de `dataCollection` resolvido, ausente ou invalido
|
|
96
|
+
|
|
97
|
+
## Contrato estavel para hosts
|
|
98
|
+
|
|
99
|
+
Inputs estaveis do `EditorialFormRuntimeComponent`:
|
|
100
|
+
|
|
101
|
+
- `solution`
|
|
102
|
+
- `instance`
|
|
103
|
+
- `runtimeContext`
|
|
104
|
+
- `hostConfig`
|
|
105
|
+
|
|
106
|
+
Outputs estaveis:
|
|
107
|
+
|
|
108
|
+
- `snapshotChange`
|
|
109
|
+
- `fallbackChange`
|
|
110
|
+
- `operationalEvent`
|
|
111
|
+
|
|
112
|
+
Politica de consumo para hosts de produto:
|
|
113
|
+
|
|
114
|
+
- `snapshotChange` e o sinal estavel para leitura de estado resolvido, auditoria e derivacao de UX de produto
|
|
115
|
+
- `fallbackChange` e o sinal estavel para status operacional exposto ao usuario (`normal`, `warning`, `degraded`, `blocked`)
|
|
116
|
+
- `operationalEvent` e telemetria tecnica leve para logs, monitoracao, debugging e runbooks do host
|
|
117
|
+
- hosts controlados e de produto nao devem depender de parse de DOM para observabilidade
|
|
118
|
+
- hosts de produto nao devem expor o stream bruto de `operationalEvent` na superficie principal da pagina
|
|
119
|
+
|
|
120
|
+
Politica de fallback para hosts de produto:
|
|
121
|
+
|
|
122
|
+
- `normal`: UX nominal; sem contingencia adicional
|
|
123
|
+
- `warning`: UX nominal com monitoramento; nao bloquear progressao
|
|
124
|
+
- `degraded`: UX com contingencia parcial; manter o fluxo quando possivel e encaminhar observabilidade interna
|
|
125
|
+
- `blocked`: UX indisponivel ou bloqueada; impedir progressao e acionar canal de suporte/rollback do host
|
|
126
|
+
|
|
127
|
+
`hostConfig` hoje controla:
|
|
128
|
+
|
|
129
|
+
- `emitOperationalEvents`
|
|
130
|
+
- `forwardAdapterOperationalEvents`
|
|
131
|
+
|
|
132
|
+
`operationalEvent` segue envelope estavel com:
|
|
133
|
+
|
|
134
|
+
- `eventType`
|
|
135
|
+
- `timestamp`
|
|
136
|
+
- `severity`
|
|
137
|
+
- `journeyId`/`stepId`/`blockId` quando aplicavel
|
|
138
|
+
- `payload` tipado por tipo de evento
|
|
139
|
+
|
|
140
|
+
Quando o host quiser reutilizar `@praxisui/dynamic-form`, o caminho e registrar o provider opcional:
|
|
141
|
+
|
|
142
|
+
```ts
|
|
143
|
+
import { provideEditorialDynamicFormAdapter } from '@praxisui/editorial-forms';
|
|
144
|
+
import { PraxisDynamicForm } from '@praxisui/dynamic-form';
|
|
145
|
+
|
|
146
|
+
providers: [
|
|
147
|
+
provideEditorialDynamicFormAdapter({ component: PraxisDynamicForm }),
|
|
148
|
+
];
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Decisao de superficie publica desta fase:
|
|
152
|
+
|
|
153
|
+
- factory `createEditorialDynamicFormAdapter(...)`
|
|
154
|
+
- provider `provideEditorialDynamicFormAdapter(...)`
|
|
155
|
+
- exportados pelo pacote raiz `@praxisui/editorial-forms`
|
|
156
|
+
- documentados assim para evitar ambiguidade sobre sub-entrypoint, que nao foi mantido nesta iteracao
|
|
157
|
+
|
|
158
|
+
Sem esse provider, blocos `dataCollection` degradam para fallback acessivel e informativo no runtime editorial.
|
|
159
|
+
|
|
160
|
+
Mesmo sem provider, o snapshot ja deixa claro:
|
|
161
|
+
|
|
162
|
+
- `formBlockId`
|
|
163
|
+
- `formConfigRef`
|
|
164
|
+
- se existe config inline
|
|
165
|
+
- origem da config resolvida
|
|
166
|
+
- prontidao do bloco (`requiresAdapter`, `missingConfig`, `invalid`)
|
|
167
|
+
|
|
168
|
+
Politica deterministica atual de resolucao de config para `dataCollection`:
|
|
169
|
+
|
|
170
|
+
1. `block.formConfig`
|
|
171
|
+
2. `instance.overrides.runtimeFormConfigs`
|
|
172
|
+
3. `instance.compatibilityFormConfigs`
|
|
173
|
+
|
|
174
|
+
Regras complementares:
|
|
175
|
+
|
|
176
|
+
- quando `formConfigRef` e `formBlockId` apontarem para candidatos diferentes, a primeira correspondencia valida na ordem acima continua sendo aplicada
|
|
177
|
+
- quando mais de uma fonte candidata for encontrada, o runtime nao falha silenciosamente: ele mantem a selecao deterministica e emite diagnostico `data-collection-config-ambiguous`
|
|
178
|
+
- `resolvedFormConfigSource` e `resolvedFormConfigLookupKey` continuam sendo a referencia auditavel para o host
|
|
179
|
+
|
|
180
|
+
## Validacao oficial no workspace atual
|
|
181
|
+
|
|
182
|
+
A lib possui specs automatizados para o resolvedor, para o componente de runtime e para os hosts controlados.
|
|
183
|
+
|
|
184
|
+
Comando oficial da suite da lib:
|
|
185
|
+
|
|
186
|
+
- `node ./node_modules/@angular/cli/bin/ng.js test praxis-editorial-forms --watch=false --progress=false --browsers=ChromiumHeadlessNoSandbox`
|
|
187
|
+
|
|
188
|
+
Validacao minima de retomada:
|
|
189
|
+
|
|
190
|
+
- `npm run build:praxis-core`
|
|
191
|
+
- `npm run build:praxis-editorial-forms`
|
|
192
|
+
- `npm run typecheck`
|
|
193
|
+
|
|
194
|
+
Criterio completo desta fase:
|
|
195
|
+
|
|
196
|
+
- suite da lib via `ChromiumHeadlessNoSandbox`
|
|
197
|
+
- specs dos hosts controlados no app
|
|
198
|
+
- Playwright do runtime editorial em host real
|
|
199
|
+
|
|
200
|
+
No workspace atual, a fase de runtime/integrations controladas foi fechada tambem com E2E reais de host:
|
|
201
|
+
|
|
202
|
+
- editor tecnico integrado em `/form-config-editor`:
|
|
203
|
+
- bateria Playwright consolidada com `22 passed`
|
|
204
|
+
- runtime editorial em host real:
|
|
205
|
+
- `/lab/editorial-runtime`
|
|
206
|
+
- `/experiments/editorial-runtime/privacy-consent`
|
|
207
|
+
- `/experiments/editorial-runtime/event-registration`
|
|
208
|
+
- `/experiments/editorial-runtime/employee-onboarding`
|
|
209
|
+
- bateria Playwright consolidada com `8 passed`
|
|
210
|
+
|
|
211
|
+
Cobertura complementar de pagina no host Angular:
|
|
212
|
+
|
|
213
|
+
- `privacy-consent-editorial-runtime.page.spec.ts`
|
|
214
|
+
- valida `solutionId`, jornada `privacy-consent-journey`, labels de step e `consent-form`
|
|
215
|
+
- valida degradacao com diagnostico `data-collection-adapter-missing`
|
|
216
|
+
- valida reativacao com evento `data-collection-adapter-resolved`
|
|
217
|
+
- `event-registration-editorial-runtime.page.spec.ts`
|
|
218
|
+
- valida `solutionId`, jornada `event-registration-journey`, labels de step e `registration-form`
|
|
219
|
+
- valida degradacao com diagnostico `data-collection-adapter-missing`
|
|
220
|
+
- valida reativacao com evento `data-collection-adapter-resolved`
|
|
221
|
+
- `employee-onboarding-editorial-runtime.page.spec.ts`
|
|
222
|
+
- valida `solutionId`, jornada `employee-onboarding-journey` e os dois blocos `dataCollection`
|
|
223
|
+
- valida `identity-form` e `operations-form` como blocos resolvidos no snapshot
|
|
224
|
+
- valida degradacao com diagnostico `data-collection-adapter-missing`
|
|
225
|
+
- valida reativacao com evento `data-collection-adapter-resolved`
|
|
226
|
+
|
|
227
|
+
## Harness tecnico interno
|
|
228
|
+
|
|
229
|
+
Para validar o motor sem depender do app principal, a lib agora possui:
|
|
230
|
+
|
|
231
|
+
- fixtures tecnicas em `src/lib/testing/editorial-runtime.fixtures.ts`
|
|
232
|
+
- harness interno em `src/lib/testing/editorial-runtime-technical-harness.component.ts`
|
|
233
|
+
|
|
234
|
+
Esse harness existe para specs e verificacao tecnica da lib:
|
|
235
|
+
|
|
236
|
+
- resolution de journey/snapshot
|
|
237
|
+
- diagnostics
|
|
238
|
+
- fallback
|
|
239
|
+
- adapter resolution de `dataCollection`
|
|
240
|
+
|
|
241
|
+
Ordem correta de build para retomadas e validacao local:
|
|
242
|
+
|
|
243
|
+
1. `npm run build:praxis-core`
|
|
244
|
+
2. `npm run build:praxis-editorial-forms`
|
|
245
|
+
3. `npm run typecheck`
|
|
246
|
+
|
|
247
|
+
## Integracao controlada no host Angular
|
|
248
|
+
|
|
249
|
+
Agora existe uma rota tecnica isolada no app do workspace para validar consumo real do host:
|
|
250
|
+
|
|
251
|
+
- path: `/lab/editorial-runtime`
|
|
252
|
+
|
|
253
|
+
Essa rota:
|
|
254
|
+
|
|
255
|
+
- nao e feature final
|
|
256
|
+
- nao e showcase publico de produto
|
|
257
|
+
- existe para validar integracao host-runtime em Angular real
|
|
258
|
+
|
|
259
|
+
Ela exercita:
|
|
260
|
+
|
|
261
|
+
- fixture saudavel
|
|
262
|
+
- fixture com warning
|
|
263
|
+
- fixture com erro global
|
|
264
|
+
- `dataCollection` sem adapter
|
|
265
|
+
- `dataCollection` com adapter opcional registrado
|
|
266
|
+
|
|
267
|
+
E expõe de forma tecnica:
|
|
268
|
+
|
|
269
|
+
- resumo do snapshot recebido via `snapshotChange`
|
|
270
|
+
- fallback recebido via `fallbackChange`
|
|
271
|
+
- stream recente de `operationalEvent`
|
|
272
|
+
|
|
273
|
+
Para validar localmente a integracao:
|
|
274
|
+
|
|
275
|
+
1. `npm run build:praxis-core`
|
|
276
|
+
2. `npm run build:praxis-editorial-forms`
|
|
277
|
+
3. `npm run typecheck`
|
|
278
|
+
4. `npm run build -- --configuration development`
|
|
279
|
+
|
|
280
|
+
## Primeiro caso experimental quase real
|
|
281
|
+
|
|
282
|
+
Agora existe tambem uma rota experimental isolada para o primeiro caso editorial real no novo runtime:
|
|
283
|
+
|
|
284
|
+
- path: `/experiments/editorial-runtime/privacy-consent`
|
|
285
|
+
|
|
286
|
+
`privacy-consent` foi escolhido primeiro porque:
|
|
287
|
+
|
|
288
|
+
- e o caso mais enxuto e regulatorio do catalogo editorial novo
|
|
289
|
+
- permite validar `dataCollection` com menor variabilidade de jornada
|
|
290
|
+
- reaproveita o catalogo editorial canonico sem recolocar `FormConfig` no centro do motor
|
|
291
|
+
|
|
292
|
+
Essa rota deixa explicito:
|
|
293
|
+
|
|
294
|
+
- rota antiga relacionada: `/legacy/privacy-consent-template`
|
|
295
|
+
- rota nova experimental: `/experiments/editorial-runtime/privacy-consent`
|
|
296
|
+
- a rota nova consome `getEditorialSolutionById('privacy-consent')`
|
|
297
|
+
- o host fornece `runtimeContext`, `hostConfig`, `snapshotChange`, `fallbackChange` e `operationalEvent`
|
|
298
|
+
- o adapter opcional de `dataCollection` pode ser ligado ou desligado localmente para validar o comportamento real do host
|
|
299
|
+
|
|
300
|
+
Essa pagina:
|
|
301
|
+
|
|
302
|
+
- nao substitui o demo legado
|
|
303
|
+
- nao representa UX final de produto
|
|
304
|
+
- nao substitui o laboratorio tecnico `/lab/editorial-runtime`
|
|
305
|
+
|
|
306
|
+
Primeira superficie tecnica da fase de authoring:
|
|
307
|
+
|
|
308
|
+
- `/lab/editorial-authoring`
|
|
309
|
+
|
|
310
|
+
## Terceiro caso experimental quase real
|
|
311
|
+
|
|
312
|
+
Agora existe tambem uma terceira rota experimental isolada para o fluxo mais complexo entre os casos canônicos atuais:
|
|
313
|
+
|
|
314
|
+
- path: `/experiments/editorial-runtime/employee-onboarding`
|
|
315
|
+
|
|
316
|
+
`employee-onboarding` foi escolhido como terceiro passo porque:
|
|
317
|
+
|
|
318
|
+
- possui dois blocos `dataCollection` (`identity-form` e `operations-form`)
|
|
319
|
+
- amplia a validacao do runtime em jornada multi-step com mais variabilidade operacional
|
|
320
|
+
- mantem comparacao simples com o demo legado `/demo/employee-onboarding-template`
|
|
321
|
+
|
|
322
|
+
Essa rota deixa explicito:
|
|
323
|
+
|
|
324
|
+
- rota antiga relacionada: `/demo/employee-onboarding-template`
|
|
325
|
+
- rota nova experimental: `/experiments/editorial-runtime/employee-onboarding`
|
|
326
|
+
- a rota nova consome `getEditorialSolutionById('employee-onboarding')`
|
|
327
|
+
- o host fornece `runtimeContext`, `hostConfig`, `snapshotChange`, `fallbackChange` e `operationalEvent`
|
|
328
|
+
- o host deriva dois `runtimeFormConfigs` locais a partir do template legado apenas para alimentar `identity-form` e `operations-form`
|
|
329
|
+
- o adapter opcional de `dataCollection` pode ser ligado ou desligado localmente para validar o comportamento real do host
|
|
330
|
+
|
|
331
|
+
## Estado de saida da fase
|
|
332
|
+
|
|
333
|
+
A fase de runtime/integrations controladas fica considerada concluida neste estado porque agora existe:
|
|
334
|
+
|
|
335
|
+
- runtime editorial com snapshot, fallback e telemetria operacional estaveis
|
|
336
|
+
- laboratorio tecnico isolado em `/lab/editorial-runtime`
|
|
337
|
+
- tres integracoes quase reais e isoladas:
|
|
338
|
+
- `/experiments/editorial-runtime/privacy-consent`
|
|
339
|
+
- `/experiments/editorial-runtime/event-registration`
|
|
340
|
+
- `/experiments/editorial-runtime/employee-onboarding`
|
|
341
|
+
- validacao E2E do editor tecnico que ainda serve de engine adaptada para `dataCollection`
|
|
342
|
+
- validacao E2E das rotas editoriais experimentais e do laboratorio tecnico
|
|
343
|
+
|
|
344
|
+
Esta conclusao de fase nao significa rollout de produto.
|
|
345
|
+
|
|
346
|
+
O que continua fora de escopo nesta etapa:
|
|
347
|
+
|
|
348
|
+
- promover as rotas experimentais para feature final
|
|
349
|
+
- substituir os demos legados
|
|
350
|
+
- criar o editor especialista de autoria editorial
|
|
351
|
+
|
|
352
|
+
O proximo salto arquitetural passa a ser:
|
|
353
|
+
|
|
354
|
+
- criterios de promocao dos experimentos
|
|
355
|
+
- endurecimento operacional residual
|
|
356
|
+
- editor especialista para autoria editorial
|
|
357
|
+
|
|
358
|
+
## Criterio de promocao dos experimentos
|
|
359
|
+
|
|
360
|
+
No estado atual, os tres fluxos integrados permanecem experimentais.
|
|
361
|
+
|
|
362
|
+
Promocao para migracao oficial exige, no minimo:
|
|
363
|
+
|
|
364
|
+
- build/typecheck do workspace verdes
|
|
365
|
+
- validacao Playwright do editor tecnico e do runtime editorial verdes
|
|
366
|
+
- `snapshotChange`, `fallbackChange` e `operationalEvent` observaveis em host real
|
|
367
|
+
- `dataCollection` validado sem adaptador e com adaptador
|
|
368
|
+
- ausencia de regressao para centralidade de `FormConfig`
|
|
369
|
+
- definicao de fallback/observabilidade da UX final
|
|
370
|
+
|
|
371
|
+
Leitura operacional atual:
|
|
372
|
+
|
|
373
|
+
- `privacy-consent`: primeiro candidato a promocao
|
|
374
|
+
- `event-registration`: segundo candidato
|
|
375
|
+
- `employee-onboarding`: caso de robustez antes de rollout
|
|
376
|
+
|
|
377
|
+
Primeiro host de promocao controlada ja criado:
|
|
378
|
+
|
|
379
|
+
- `/privacy-consent`
|
|
380
|
+
- `/controlled/editorial-runtime/privacy-consent`
|
|
381
|
+
|
|
382
|
+
Esse host:
|
|
383
|
+
|
|
384
|
+
- reaproveita o runtime editorial validado
|
|
385
|
+
- remove inspector e toggles manuais do experimento
|
|
386
|
+
- mantem observabilidade operacional discreta
|
|
387
|
+
- assume o caminho principal do fluxo
|
|
388
|
+
- mantem a rota experimental
|
|
389
|
+
- mantem o legado apenas como contingencia explicita em `/legacy/privacy-consent-template`
|
|
390
|
+
|
|
391
|
+
Essa pagina:
|
|
392
|
+
|
|
393
|
+
- nao substitui o demo legado
|
|
394
|
+
- nao representa UX final de produto
|
|
395
|
+
- nao substitui o laboratorio tecnico `/lab/editorial-runtime`
|
|
396
|
+
|
|
397
|
+
## Segundo caso experimental quase real
|
|
398
|
+
|
|
399
|
+
Agora existe tambem uma segunda rota experimental isolada para ampliar a validacao em um fluxo com mais narrativa e mais blocos semanticos:
|
|
400
|
+
|
|
401
|
+
- path: `/experiments/editorial-runtime/event-registration`
|
|
402
|
+
|
|
403
|
+
`event-registration` foi escolhido como segundo passo porque:
|
|
404
|
+
|
|
405
|
+
- continua tendo apenas um bloco `dataCollection`, reduzindo risco em relacao a `employee-onboarding`
|
|
406
|
+
- exercita melhor a combinacao de `hero`, `contextSummary`, `legalNotice`, `reviewSummary` e `footerLinks`
|
|
407
|
+
- mantem comparacao simples com o demo legado `/demo/event-registration-template`
|
|
408
|
+
|
|
409
|
+
Essa rota deixa explicito:
|
|
410
|
+
|
|
411
|
+
- rota antiga relacionada: `/demo/event-registration-template`
|
|
412
|
+
- rota nova experimental: `/experiments/editorial-runtime/event-registration`
|
|
413
|
+
- a rota nova consome `getEditorialSolutionById('event-registration')`
|
|
414
|
+
- o host fornece `runtimeContext`, `hostConfig`, `snapshotChange`, `fallbackChange` e `operationalEvent`
|
|
415
|
+
- o adapter opcional de `dataCollection` pode ser ligado ou desligado localmente para validar o comportamento real do host
|
|
416
|
+
|
|
417
|
+
Essa pagina:
|
|
418
|
+
|
|
419
|
+
- nao substitui o demo legado
|
|
420
|
+
- nao representa UX final de produto
|
|
421
|
+
- nao substitui o laboratorio tecnico `/lab/editorial-runtime`
|