Chiave della colonna vertebrale di comunicazione su un proprietario, non un piombo

Featurekamo-shared-library
Shipped
26 agosto 2026 alle ore 01:37 UTC
Author
Kamo
Commit
78d9861

La colonna vertebrale è stata costruita a forma di piombo — LEAD CONTACT POINTS.LEAD UID, LEAD COMMUNICATIONS.LEAD UID — e l'associazione di cui ha realmente bisogno è Più ampio. Un account possiede diversi lead, in genere condividendo lo stesso punto di contatto perché sono la stessa persona che chiede due volte. Un record di commercio blocca il conto piuttosto che qualsiasi pista. E una cartella paziente ha chiama e-mail su di esso e nessun piombo affatto. Chiavi di guida significavano ciascuno di quelli o preso in prestito una pista o crebbe una linea temporale parallela. Entrambe le tabelle ora portano il responsabile del documento (assoc type, assoc object id) coppia, con LEAD, ACCOUNT, PATIENT e COMMERCE RECORD come proprietari. LEAD UID è KEPT e ancora riempito per righe di piombo, così ogni esistente /leads query, indice e call site è intoccato — il repository chiave di piombo i metodi e il sovraccarico della timeline di piombo entrambi rimangono, e il nuovo proprietario-chiamato quelli seduti accanto a loro. Tre cose che dovevano andare bene, e una che ho quasi sbagliato. Il vincolo unico si sposta alla coppia proprietaria. (ORG ID, LEAD UID, CHANNEL, SOURCE ID) è ciò che rende l'ingestione idempotent — una chiamata RingCentral è vista due volte, una volta dal webhook e una volta dalla scansione di riconciliazione. Con LEAD UID null per un paziente, Postgres tratta ogni NULL come distinto e il secondo avvistamento inserisce un duplicato. La tabella dei punti di contatto conta più della linea temporale. Indicare una linea temporale a un nuovo proprietario cambia ciò che è READ; traffico in entrata solo LANDS su una proprietario che ha punti di contatto, perché è quello che il linker corrisponde contro. Un paziente il cui numero non è un punto di contatto riceve chiamate che a nessuno. Quello che ho quasi spedito: il linker de-duped partite di cp.getLeadUid(). Per un punto di contatto non-lead che è nullo, così vistoLeads.add(null) avrebbe lasciato esattamente un proprietario non-lead attraverso per messaggio in entrata — una chiamata a un numero due pazienti condividono raggiungerebbe uno di loro, silenziosamente. E ora dedupes su Il proprietario. assoc type è una STRING, mai un ordinale. Hibernate congela un CHECK (col TRA 0 E N) su una colonna enum ordinale a TABELLA CRETA e mai la rivisita, quindi l'aggiudicazione di un valore successivamente rifiuta ogni inserto che lo trasporta — silenziosamente, perché la dichiarazione di fallimento si trova all'interno di un metodo @Transactional il cui rollback rimuove le prove. Sette sono stati trovati pieni e già rompendo le cose su questa piattaforma in agosto. Un null memorizzato legge come LEAD, perché ogni riga scritta prima della colonna esistere è un piombo e di ritorno null per coloro che avrebbero vuoto la linea temporale questo cambiamento esiste per ampliare. Un valore UNKNOWN legge come nullo piuttosto che LEAD — collegare il traffico di qualcun altro a una linea temporale di piombo è quella risposta sbagliata peggio di nessuna. Anche in questo commit: il livello di scambio TEFCA (partner, la divulgazione ledger, cross-organizzazione del paziente corrispondente). I suoi codici sono ora i stesso HL7 v3 ActReason strings PhiPurposeOfUse già utilizza — un test catturato me inventando "T" per il trattamento dove la piattaforma dice "TREAT", e un scambio riga e una riga di audit descrivono la stessa divulgazione da due angoli, un rapporto che li unisce si unisce a quelle corde. 1932 test verdi.

All changes

Come quello che vedi la spedizione?

Ognuno di questi aggiornamenti atterra automaticamente nello spazio di lavoro. Inizia gratis e guardalo crescere settimana dopo settimana.

Inizia gratis per sempreVisualizza il prezzo