Praxis Metadata Starter - Visao Arquitetural

Praxis Metadata Starter - Visao Arquitetural

A arquitetura atual do praxis-metadata-starter nao deve mais ser explicada como “DTO anotado gera CRUD”. O baseline canonico evoluiu para um sistema resource-oriented que publica:

1. O Que E Canonicamente Publicado

flowchart LR
    host["Spring Boot host"] --> auto["PraxisMetadataAutoConfiguration"]
    auto --> openapi["OpenAPI enriched with x-ui"]
    openapi --> filtered["/schemas/filtered"]
    openapi --> catalog["/schemas/catalog"]
    openapi --> surfaces["/schemas/surfaces"]
    openapi --> actions["/schemas/actions"]
    surfaces --> caps["/{resource}/capabilities"]
    actions --> caps
    filtered --> runtime["praxis-ui-angular runtime"]
    catalog --> docs["docs, examples, RAG"]
    caps --> semantic["semantic clients and assistants"]

O contrato estrutural e o discovery semantico tem papeis diferentes:

2. Baseline De Modelagem

Para aplicacoes novas, o baseline correto e:

O modelo esperado separa:

@UISchema continua relevante para metadados de campo, mas ele ja nao descreve sozinho a arquitetura publica do starter.

3. Camadas Principais

Auto-configuracao

Essas pecas registram controllers, resolvers, grouped OpenAPI e o suporte de docs/discovery.

Resolucao de contrato

Aqui o starter transforma DTOs, Bean Validation e metadata de recurso em OpenAPI enriquecido e grupos canonicamente resolvidos por path.

Publicacao de docs e discovery

Esses controllers nao sao equivalentes entre si:

Semantica de recurso

Aqui a arquitetura sai do antigo “CRUD com metadata” e passa para semantica de recurso, experiencia e acao de negocio.

4. Fluxo Estrutural

sequenceDiagram
    participant DTO as DTOs + validation
    participant Resolver as CustomOpenApiResolver
    participant OpenAPI as OpenAPI document
    participant Docs as ApiDocsController
    participant Runtime as Angular runtime

    DTO->>Resolver: field metadata, validation, resource semantics
    Resolver->>OpenAPI: persist x-ui and operation metadata
    Docs->>OpenAPI: resolve best group for the requested path
    Docs->>Docs: filter request or response schema
    Docs->>Docs: inject x-ui.resource and cache headers
    Docs-->>Runtime: structural payload for rendering

Esse fluxo ainda e o centro do runtime oficial.

O que mudou foi a semantica ao redor dele:

5. Fluxo Semantico

sequenceDiagram
    participant Resource as @ApiResource
    participant Surface as @UiSurface
    participant Action as @WorkflowAction
    participant Catalogs as surface/action catalogs
    participant Capabilities as capability resolver
    participant Client as semantic client

    Resource->>Catalogs: publish automatic resource surfaces
    Surface->>Catalogs: publish explicit UX surfaces
    Action->>Catalogs: publish explicit workflow actions
    Catalogs->>Capabilities: contribute semantic entries
    Capabilities-->>Client: aggregate current snapshot

Regras importantes:

6. Spring HATEOAS Faz Parte Da Arquitetura

HATEOAS nao e detalhe de serializacao.

Ele compoe a semantica publica em:

Quando o host desliga HATEOAS, a plataforma perde links, nao a semantica canonica de recurso e discovery.

7. Consumidores De Referencia

praxis-api-quickstart

E o host operacional de referencia. Ele prova:

praxis-ui-angular

E o runtime oficial. Ele consome:

Ele pode tambem usar discovery semantico novo, mas o contrato estrutural segue sendo a base do runtime.

8. O Que Nao Deve Ser Repetido Na Documentacao Publica

Nao explicar o starter como se ele fosse:

Essas leituras ficaram historicamente incompletas.

9. Referencias