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.
-
ClassDescriptionParâ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 de fallback com a versão em runtime — shape plano
{status, versao, flavor, commit}(norma X-Adm de versionamento e health)./infode fallback com a versão em runtime — shape plano{versao}, paralelo aoHealthControllerflat.Recurso não encontrado — HTTP 404.Interface marcadora que uma exceção implementa para carregar a taxonomia de domínio até o corpo de erro RFC 7807.Corpo de erro no formato RFC 7807 / 9457 (application/problem+json) — o padrão da casa para erros de API.Um campo rejeitado por Bean Validation, no membroinvalid-params.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 oHateoasErrorResponseProcessordefault (que emitia{message, _links, _embedded}).Expõe a versão do app (deversion.properties, gerado no build de cada app a partir deproject.version) no endpoint/info, e ofereceVersaoInfo.versaoAtual()estático para o/healthe o log de startup.