O recibo da palavra-chave e o consentimento da chave por campanha (Tarefa MS1 3)

Featurekamo-shared-library
Navios
27 de agosto de 2026 às 19:32 UTC
Autor
Kamo
Enviar
788a236

Duas coisas que o livro de registros de consentimento precisa antes de uma entrada STOP pode ser registrado Inquilinos vigiados e exactamente uma vez. «SmsInboundReceipt» (comms sms inbound receipt) é a âncora de idempotência de Plano Decisão M1. Ambos os trilhos de entrada já dedupe e nenhum dedupe pode cobrir uma palavra-chave: *************Dedupes, perguntando se um `VoipMessage` existe para o ID da mensagem da operadora, mas uma mensagem de palavra-chave é interceptado e retorna ANTES que a linha é escrita — assim a segunda entrega de um O retry do portador não encontra nenhuma linha e é processado novamente. Sem esta tabela uma transportadora tentar novamente STOP três vezes adiciona três registros de revogação a um livro de registro WORM que nunca pode ser limpo. Único (ORG ID, CARRIER MESSAGE ID); WORM bloco total guardas copiados do consentimentoRecord, deliberadamente não de AgentOutboundTouch Só é uma convenção sem guarda. ORG ID é nulável, então uma STOP não atribuível ainda é registrada como evidência – e Restrições exclusivas SQL não restringem NULLs, então o repositório carrega uma separado **************************** Um nulo passado para o comum o localizador derivado renderiza como `= NULL`, que nunca é verdadeiro, então o reteste sem org O cheque teria passado silenciosamente todas as vezes. Este buraco está documentado no entidade; fecha quando ADD5/MS3 torna o org resolvível. `ConsentRecord` ganha UMA coluna nula, `campaign id', e UM índice, (organization id, raw number, escopo). Nada mais se mexeu: party-XOR-rawNumber `assertIdentified()` que o DB CHECK mlos consent one identity chk depende dos três índices pré-existentes e da nullable organization id estão todos inalterados, e `ConsentRecordCampaignKeyTest' é uma cerca de regressão em torno de cada um deles. Os novos localizadores org-scoped sentam-se ao lado do org-AGNOSTIC pré-existente **************************** Essa é correcta para o MLOS global-STOP leitura e errado para MS1, onde um proprietário que para Bob A canalização deve permanecer acessível pelo AVAC do Dave. Ambos estão documentados no declaração para escolher o errado é visível no local de chamada em vez de sendo uma supressão silenciosa de agentes cruzados. TDD — falhas observadas, verbatim. Vermelho antes de implementar (mvn -o -Dmaven.repo.local=<private> test): [ERROR] **************************** não foi possível encontrar o símbolo [ERROR] símbolo: classe SmsInboundReceipt Localização: classe. (9 ocorrências) [ERROR] **************************** não foi possível encontrar o símbolo [ERROR] **************************** não foi possível encontrar o símbolo [ERROR] **************************** não foi possível encontrar o símbolo Falha no edifício Verde depois: Testes executados: 19, Falhas: 0, Erros: 0 (com NotificationConsentTest). Mutação A — largada `única = true` do índice do recibo: Testes executados: 5, Falhas: 1, Erros: 0 < < < Falha! -- in **************************** java.lang. AsserçãoError: comms sms inbound receipt precisa de um índice UNIQUE — ele é a única coisa que impede um operador de tentar novamente anexando uma segunda revogação registro [ERROR] **************************** Mutação B — removeu o índice (organization id, raw number, escopo): [ERROR] Testes executados: 6, Falhas: 1, Erros: 0 < < < Falha! -- in **************************** [ERROR] **************************** [um índice (organization id, raw number, escopo) — o opt-out vigiado por inquilino lido] Ambos reverteram. Suíte completa após a reversão: Testes executados: 2295, Falhas: 0, Erros: 0 — incluindo SharedLibBeanSafetyTest, que as duas novas classes passam porque nem carrega um estereótipo de Primavera. A DDL não aterrou. comms sms inbound receipt não existe e mlos consent record não tem coluna de campanha id. Isto não deve ser enviado antes. O KamoInitializerService aplica-se tanto quanto REVOKES UPDATE/DELETE na nova tabela (plan Task 5) — callbacks de entidade não disparam para JPQL em massa ou SQL nativo.

Todas as alterações

Como o que vês no transporte?

Cada uma dessas atualizações pousa automaticamente em seu espaço de trabalho. Comece grátis e veja crescer semana após semana.

Começar Livre Para SempreVer Preços