Package br.com.xadm.comum.web


package br.com.xadm.comum.web
Infra web compartilhada da casa (ADR 0019, raiz/001 Fase 2). A borda HTTP repetida nos apps Micronaut: corpo de erro RFC-7807/9457 (ProblemDetail), o UnifiedErrorResponseProcessor que renderiza todo erro do framework nesse formato, o /health de liveness (HealthController) com a versão em runtime (VersaoInfo), a init do Sentry/Bugsink (SentryInitializer) e a hierarquia de exceção HTTP genérica (BadRequest/Conflict/NotFound/Forbidden).

Reconciliação de nome/local antes da subida (o inventário divergia entre os 4 apps): canônicos fixados por maioria/RFC — ProblemDetail (sobre Problema), VersaoInfo (sobre VersaoProvider), /health com status=UP e @Secured anônimo. Ver .ia/002-comum-web-plan.md (T1). Config por-app: a versão vem do version.properties gerado no build de cada app; a lib não fixa tenant nem versão.

  • Class
    Description
    Parâmetro ou conteúdo inválido — HTTP 400.
    Conflito de negócio (ex.: recurso já existente) — HTTP 409.
    Operação não permitida no recurso atual — HTTP 403.
    Health check com a versão em runtime — shape plano {status, versao} (norma X-Adm de versionamento e health).
    Recurso não encontrado — HTTP 404.
    Corpo de erro no formato RFC 7807 / 9457 (application/problem+json) — o padrão da casa para erros de API.
    Inicializa o SDK do Sentry apontando para o Bugsink self-hosted — o Bugsink fala o protocolo do Sentry, então usa-se o SDK Java do Sentry sem alteração.
    Renderiza todo corpo de erro da API no formato RFC 7807 (ProblemDetail, application/problem+json), substituindo o HateoasErrorResponseProcessor default (que emitia {message, _links, _embedded}).
    Expõe a versão do app (de version.properties, gerado no build de cada app a partir de project.version) no endpoint /info, e oferece VersaoInfo.versaoAtual() estático para o /health e o log de startup.