- Verschifft
- 27. August 2026 um 20:06 UTC
- Autor
- Kamo
- Ausschuss
- 4260460
Schließt die TODO-Task 2, die zurückgelassen wurde. Bis diese Commit-Verpflichtung ein verifiziertes eingehendes STOP erreicht BulkTextInboundController, wurde erkannt, wurde protokolliert, und war dann DROPPED - der Endpunkt akzeptierte Opt-outs und unterdrückte nichts. SmsKeywordService ist der einzelne Schreiber: Er fügt das WORM ConsentRecord an und aktualisiert die AgentContactState-Reihe, die das ausgehende Tor bereits liest, in einem Transaktion (Plan Entscheidung M2 - Ledger plus abgeleitete Projektion, nicht zwei Quellen der Wahrheit; MS2 macht das Tor lesen ConsentRecord direkt, nach dem die Projektion wird zu einem Cache). Bestellen: normalisieren oder ablehnen; interpretieren; die idempotenz Quittung einfügen; dann STOP / START / HELP. UNKNOWN kehrt sofort zurück und schreibt nichts, also Die normale Nachricht fällt in den normalen Umgang mit. Entscheidungen, mit denen es sich zu streiten lohnt. * Schreibt AgentContactState direkt, anstatt AIService anzurufen. ************ ist bereits ausgesetzt bei POST **************** und ist von hier aus noch unbrauchbar für drei unabhängige Gründe: VOIPService hat keinen Client für AIService; AIService authentifiziert diese Oberfläche mit einem DIFFERENT-Geheimnis **************** nicht intern.auth.secret); und der Endpunkt akzeptiert keine nackte E.164, nur **************** und eine nackte Die Nummer ist genau das, was ein eingehender STOP ist. * Kontaktschlüssel ist "tel:<e164". AGENT_CONTACT_STATE ist einzigartig auf (ORGANIZATION_ID, CONTACT_KEY) und hat keine Telefonspalte, also gibt es nirgendwo sonst kann eine nackte Nummer gehen. CONSEQUENCE, NOT CLOSED BY MS1: diese Zeile nicht fusionieren mit einem späteren "Lead:<uid" Reihe für den gleichen Menschen, so eine Torberatung die bleierbehaftete Reihe sieht keine Opt-out-Mögage. MS2 schließt es, indem es das Tor lesen lässt ConsentRecord, das Nummern-keyed ist. * Ein nackter STOP setzt alle vier Kanäle. Es sagt nicht "SMS nur", und es zu lesen auf diese Weise lässt der Mieter per E-Mail jemand, der sie gesagt, zu stoppen. START re-grants SMS NUR - ein START-SMS auf eine Kampagnennummer getextet ist Beweis für SMS und nichts anderes. * Eine Null org zeichnet die Quittung und NICHTS anderweitig auf. Keine Zustimmungsreihe, nein Projektion: Ein ConsentRecord mit einer Null-Organisation ist die globale Unterdrückung Haltung C1 verbietet, und ************ ist nullbar = falsch sowieso. Beweise, dass ein STOP angekommen ist, schlägt immer noch das heutige Schweigen. * consentedAt bevorzugt die Ereigniszeit und Aufzeichnungen des Trägers, die verwendet wurden. Twilios inbound Webhook trägt überhaupt keinen Zeitstempel, also ist das Entity javadoc's "App-Set von der Veranstaltung, nie jetzt()" ist nicht zufrieden damit. Flowroute tut senden Sie "Zeitstempel", so InboundSms gewann eine "carrierEvent"-Komponente und die Flowroute parser liest es (Instant / OffsetDateTime / nackt lokal, normalisiert zu UTC; alles Unlesbare ist null, niemals eine Vermutung). Die Zustimmungsreihe der ProofBlob trägt "consentedAtSource": "Träger" | "Receipt". Eine Empfangszeit ist Vertretbar und fabriziert ist es nicht; die beiden sind ununterscheidbar danach ist das, was nicht überleben würde Überprüfung. * handle() nimmt einen Datensatz, nicht die sechs positionellen Parameter des Plans. Der Plan ist Signatur konnte nicht die Eingangszeit, die Träger Veranstaltungszeit oder die rohe tragen Proof Nutzlast, und vier seiner Parameter waren benachbarte Strings Die Nummer des Mieters stellt still und "von" kompiliert leise und unterdrückt die eigene Nummer des Mieters. VOIPServiceApplication gewinnt ************ **************** braucht keinen Eintrag: basePakete passt sub-packages und com.kamo.z.shared.comms ist bereits gelistet. VoipRepositoryScanTest treibt Spring Data's JpaRepositoriesRegistrar über die gleiche Paketliste und behauptet, dass die drei Repositories SmsKeywordService injiziert Bohnen-Definitionen erhalten. Ein vollständiger @SpringBootTest ist NICHT in diesem Service verfügbar - keine Testdatenbank, keine Testressourcen, kein vorhandener Kontexttest - so übt dies den Registrar aus dass das Ergebnis tatsächlich ohne DataSource entscheidet. TDD - beobachtete Fehler, wörtlich. Rot vor der Umsetzung: [ERROR] SmsKeywordServiceTest.java kann Symbol nicht finden [ERROR] Symbol: Klasse SmsKeywordService [ERROR] Symbol: Klasse InboundKeywordEvent [ERROR] Lage: Klasse ************ [INFO] BUILD FAILURE [ERROR] **************** nicht finden Symbol [ERROR] Symbol: method carrierEventIn() Grün nach: SmsKeywordServiceTest 17/17; volle Suite 314/314. Mutation 1 - entfernt die Org aus der ConsentRecord schreiben: [ERROR] Testlauf: 17, Ausfälle: 2, Fehler: 0 <<< FAILURE! voraussichtlich: 100L aber war: null [ERROR] **************** [eine Zustimmungszeile mit einer Null org IS globale Unterdrückung - die Haltung C1 verbietet] [ERROR] **************** Mutation 2 - entfernt die Quittungsbeilage: [ERROR] Testlauf: 17, Ausfälle: 3, Fehler: 0 <<< FAILURE! Gesucht, aber nicht aufgerufen: [ERROR] **************** [ERROR] **************** [ERROR] **************** HINWEIS: Der Plan besagt, dass diese Mutation den RETRY-Test rot schalten sollte. Das ist nicht der Fall. ************ stubs die existiert() Pre-Check zu true, so es kurz-Zircuuits vor dem Einsatz und bleibt GRÜNEN unter dieser Mutation. Die Plan benannte den falschen Test. Mutation 2b unten ist die, die die Retry deckt Pfad, und ohne es zu laufen, würde die M1 idempotency Anspruch auf einem geruht haben Mutation, die etwas anderes beweist. Mutation 2b entfernt die existiert() Pre-Check statt: [ERROR] Testlauf: 17, Ausfälle: 2, Fehler: 0 <<< FAILURE! **************** Nie gewollt: [ERROR] **************** [ERROR] **************** Mutation 3 - sich nur anstelle aller vier Kanäle per SMS abgemeldet: [ERROR] Testlauf: 17, Ausfälle: 1, Fehler: 0 <<< FAILURE! Der erwartete Wert wahr ist, war aber falsch [ERROR] **************** Mutation 4 - fallengelassen ************ aus dem gescannten Pakete, d.h. der CrashLoop selbst: [ERROR] Testlauf: 3, Ausfälle: 2, Fehler: 0 <<< FAILURE! [ERROR] **************** [ConsentRecordRepository hat keine Bohnen-Definition . **************** wird nicht von @EnableJpaRepositories abgedeckt. Dies ist keine Laufzeit Null: die Kontext REFUSES TO START und die pod CrashLoops.] [ERROR] **************** [Die Sonde dieses Tests ist von der echten Anmerkung von VOIPServiceApplication abgedriftet] Alle kehrten um. Komplette Suite nach Retour: Testslauf: 314, Ausfälle: 0, Fehler: 0. DDL HAT NICHT LANDED. Dies hängt von Kamo-Shared-Bibliothek ab comms_sms_inbound_receipt und **************** Keines derer existiert in der Datenbank noch. Lokal gegen ein Shared-lib-Glas in einem PRIVATE gebaut -Dmaven.repo.local; das 1.6.0-Glas von 1.6.0 wurde vor und nach (md5 ****************