mirror of
https://github.com/melgarafael/DeskcommCRM.git
synced 2026-10-02 01:28:34 +08:00
O Sentry 11 trocou `sendDefaultPii` por `dataCollection`, com default AMPLO (IP, cookies, corpo de requisição/resposta, entrada/saída de IA, dados de query, filas). Omitir a opção, que era o conserto óbvio para o TS2353, faria o DSN da comunidade receber dado de titular de terceiros (issue #100). - lib/sentry/privacidade.ts: ponto único com `dataCollection` restritivo explícito (base "v10" do MIGRATION.md + stackFrameVariables: false) e os hooks de scrub; espalhado nos 4 Sentry.init (server, edge, client, worker). - lib/sentry/scrub.ts: beforeSendSpan no formato streamed (name/attributes), limpando também `sentry.segment.name`, headers-credencial/IP, corpo, user.* e client.address; beforeSend apaga request.data, request.cookies e user e passa a mensagem por scrubUrl (o token do path saía na mensagem do erro); beforeSendTransaction removido (no-op no 11, confirmado pelo guia). - lib/sentry/privacidade.sdk.test.ts: prova pelo envelope do SDK real, com transporte de captura e controles positivos; 4 sabotagens ficam vermelhas. - withSentryConfig de @sentry/nextjs/config; enableLogs removido; AGENTS.md cita Sentry 11; fragmento em .changes/. Substitui #1743. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
35 lines
1.4 KiB
TypeScript
35 lines
1.4 KiB
TypeScript
// This file configures the initialization of Sentry on the server.
|
|
// The config you add here will be used whenever the server handles a request.
|
|
// https://docs.sentry.io/platforms/javascript/guides/nextjs/
|
|
|
|
import * as Sentry from "@sentry/nextjs";
|
|
import { resolveSentryDsn, isCommunityDsn, DEFAULT_SENTRY_DSN } from "./lib/sentry/dsn";
|
|
import { opcoesDePrivacidade } from "./lib/sentry/privacidade";
|
|
|
|
const sentryDsn = resolveSentryDsn(process.env.SENTRY_DSN);
|
|
const community = isCommunityDsn(sentryDsn);
|
|
|
|
Sentry.init({
|
|
dsn: sentryDsn,
|
|
|
|
// No Sentry da comunidade, só erro (issue #100). Ver isCommunityDsn().
|
|
tracesSampleRate: community ? 0 : 1,
|
|
|
|
// Coleta restrita + scrub, num ponto só (Sentry 11 coleta amplo por default).
|
|
...opcoesDePrivacidade,
|
|
});
|
|
|
|
// Transparência de telemetria: uma linha no boot dizendo o que está ativo e como
|
|
// desligar. Evita "telemetria silenciosa" num projeto open source self-host.
|
|
if (!sentryDsn) {
|
|
console.info("[telemetria] Desligada (SENTRY_DSN=off) — nenhum erro é enviado.");
|
|
} else if (sentryDsn === DEFAULT_SENTRY_DSN) {
|
|
console.info(
|
|
"[telemetria] Relatórios de erro anonimizados ATIVOS (Sentry da comunidade). " +
|
|
"Sem rastreamento de performance nem replay de sessão. " +
|
|
"Desligue com SENTRY_DSN=off, ou envie pro seu com SENTRY_DSN=<seu-dsn>.",
|
|
);
|
|
} else {
|
|
console.info("[telemetria] Erros sendo enviados ao Sentry configurado em SENTRY_DSN.");
|
|
}
|