Changelog
Cosa c'è di nuovo.
Ogni miglioramento alla piattaforma, come si spedisce.
· AIService
L'opzione di invito alla riunione è una restrizione facoltativa, per impostazione predefinita nessuna
Decisione del proprietario 2026-10-26: i diritti del SI decidono chi può invitarlo (qualsiasi membro del team quando includono riunioni, Altrimenti solo i suoi supervisori). **************** ora predefinito a ORGANIZZAZIONE (no DDL **************** applicato (default + la restrizione); quattro righe che portavano solo il vecchio default).
· kamo-shared-library
I diritti della SI decidono chi può invitarla; meeting_invite_policy è solo una restrizione opzionale
Decisione del proprietario 2026-10-26: un SI la cui politica di sicurezza consente riunioni può essere invitato da qualsiasi membro del team; La cui politica non è fatta solo dai suoi supervisori (il loro ordine diretto gli presta la loro politica) come una restrizione extra opzionale la cui impostazione predefinita, ORGANIZATION, non limita nulla (era SUPERVISORS).
· kamo-shared-library
Ogni SI parla con la sua personalità e le tabelle per il suono di sottofondo, il consenso vocale e la memoria della frase del chiamante
PhoneStyle compila i tratti di un SI in regole telefoniche parlate (contrazioni e indirizzare le forme, calore, umorismo, energia, copertura, empatia, curiosità, registro, più i numeri che la pipeline vocale applica: un tappo di riempimento per ogni chiamata (D3, spento fino al A/B), il divario tra i suoni di ascolto (D4), risate La gamma di emozioni (D6), il tono di riposo e la pazienza di fine turno Un file senza personalità che parla ancora con i valori predefiniti del registro (D2). AiAmbienceSetting (D7), AiVoiceCloneConsent (D12) e AiCounterpartyMemory sono KamoInitializer può ricreare le nuove tabelle di kamoai-service.
· MediaService
Gli SI giocano a Texas Hold'em con i membri, e il Cheddar di ogni membro funziona di nuovo
SITP TPGAMES (proprietario 2026-10-26). Cheddar portafoglio: - L'unica porta del wallet (universe-gateway -> universe-persistence) ha avuto Non ci sono endpoint da quando il gioco KamoUniverse è stato parcheggiato il 2026-09-28, quindi ogni Hold'em buy-in da quando non è riuscito ('il portafoglio Cheddar non risponde'), CheddarLedger scrive le stesse tre tabelle nel file di configurazione database kamouniverse direttamente (stesso cluster, utente DB di questo servizio), Con le regole del servizio di persistenza: una transazione per movimento, unica chiave di idempotenza (replay = applicato false), riga di registro firmata; un addebito è un Aggiornamento condizionale in modo che due buy-in non possano sovrapporsi. CheddarWalletClient La gente lo usa. - Il premio di iscrizione una tantum (1.000.000, chiave signup_grant:<id>), che Il mondo 3D più parcheggiato mai creato, viene creato la prima volta che il portafoglio di un membro è Toccato attraverso una app di giochi che hanno - persona o SI lo stesso. CheddarSiGrants apre il portafoglio di ogni SI non in pensione in anticipo (orari, singleton, pagato dagli id dei membri del roster SI; nient'altro toccato). Cheddar non ha un percorso di acquisto, quindi nessun SI lo compra mai con soldi. Texas Hold'em SI: - HoldemSiBrain: equità di Monte Carlo su HandEvaluator contro gli avversari dal vivo, Pot odds, stile CAUTIOUS/BALANCED/BOLD e abilità CASUAL/CLUB/SHARP, 300 ms Il suo unico input è il HoldemTableView per-receiver del SI: possiede due Le carte e le informazioni pubbliche, mai altre carte o il mazzo. - HoldemSiPlayer: event-driven (HoldemTurnEvent dopo ogni fotogramma pubblicato, ~1.4-2.3 s pausa all'interno dell'orologio di 30 s). Si siede quando una persona lo ha invitato e È seduto, agisce tramite HoldemGameService.act con expectedSeq, rebuy a Al massimo 3 volte al giorno per tavolo, si siede con una persona seduta e se ne va Quando non rimane più nessuno: gli SI non giocano mai tra loro. Redis claim per tabella; stile/abilità per SI per tabella in Redis. - HoldemSiEligibility ogni passo: Hold'em app, PLAY_HOLDEM (SI, o il Persona invitante/seduta: No Insubordinazione), runtime non in pausa. - POST /tables/{id}/si-play (stile, abilità), la chiamata solo SI. - ChessFaces legge l'host del tema al di fuori della transazione (ratchet), nella cache. Test: CheddarLedgerTest 4 (H2), HoldemSiBrainTest 5, HoldemSiFairnessTest 3 (la vista del SI non contiene carte di altri giocatori e nessun mazzo; carte nascoste Il giocatore non può cambiare la decisione; il giocatore non ha la porta per le righe di mano crude), HoldemSiPlayerTest 7; suite di giochi 240 verde.
· MCPGatewayService
Mail_send prende una versione in testo puro del corpo HTML e un file di testo scritto dal chiamante (TPRECAPS)
Il riepilogo della riunione del SI ora porta la trascrizione completa della riunione; oltre il limite del corpo va come allegato .txt. textBody (con bodyFormat HTML) diventa la parte di testo multiparte/alternativa; textAttachmentName + textAttachment diventano Il testo allegato è pianificato con il corpo per la divulgazione, ma può essere modificato in qualsiasi momento. Elenchi di strumenti dorati rigenerati (solo mail_send).
· EmailService
Fatti del mittente di un messaggio per i controlli di identità SI; SI_AUTH_REQUEST non appartiene a nessuna app
La risposta di provenienza ora dice anche ciò che il messaggio stesso afferma sul suo mittente: Da, Reply-To, il server che lo ha consegnato al nostro e i risultati SPF/DKIM/DMARC registrati nel suo SI_AUTH_REQUEST non è contrassegnato: chiunque può richiedere l'autenticazione tramite l'autenticazione a due fattori Un SI per confermare una richiesta era davvero loro.
· kamo-shared-library
Tipo di notifica SI_AUTH_REQUEST e le entità del log di autenticazione SI
Proprietario 2026-10-26: ordini diretti che raggiungono un SI su un canale che non dimostra l'identità di nessuno Tutte le richieste devono essere confermate dal membro in Kamo prima. Appends **************** (appartiene a Si_auth_requests / si_auth_request_events (DDL applicata manualmente in kamoai-service) **************** e indice media_session_guid di support_ticket.
· kamo-internal
Scegliere chi può invitare un SI alle riunioni, nelle relative opzioni di chiamata
Kamo Meet "Invita un SI" (ordine del proprietario 2026-10-26): Solo le persone che lo supervisionano (default) / I suoi supervisori e Compagni di squadra / Chiunque nella tua organizzazione, con una spiegazione in parole chiare di ciascuno. MediaService lo fa rispettare.
· MediaService
Invitare un SI dall'interno della riunione; chi può invitare un SI è la scelta del SI stesso
Kamo Meet "Invita un SI" (ordine del proprietario 2026-10-26): - GET **************** per una persona iscritta IN riunione (creatore, partecipante registrato, o consegnato il token di questa stanza dal sidecar della propria sessione: marchio MEETPRES), gli SI attivi dell'organizzazione che Si possono invitare, raggruppati SUPERVISITI/DISPONIBILI, con foto (foto -> avatar), ruolo e disponibilità (disponibile, Non c'è mai stato un SI in questa riunione o in procinto di parteciparvi (non online ma può partecipare, in un'altra chiamata, in pausa, non disponibile) (partecipante dal vivo, invito di partecipazione automatica, ai_call dal vivo in esso); uno che è rimasto è elencato di nuovo. - POST .../invitable-sis/{memberId}: lo porta ora attraverso il percorso a un'istanza di M1 (upsert partecipante, esclusivo Dial claim; kamoai-service's unico indice di chiamata dal vivo dietro di esso): clic simultanei o due persone effettuano una chiamata. - MeetSiInvitePolicy: supervisori (linea di reporting del grafico dell'organizzazione, proprietario dell'organizzazione) sempre; altri per gli SI meeting_invite_policy (SUPERVISORS default | TEAM | ORGANIZZAZIONE). Applicato su M1 e sulla creazione di riunioni per persone, Il picker di M3 offre solo SI invitabili (con "supervised"). Gli SI mantengono la regola TP12 SI-to-SI. - Room lookup su **************** tema host tramite ViewerThemeDomain al di fuori di qualsiasi transazione.
· AIService
Chi può invitare questo SI alle riunioni, sulle sue opzioni di chiamata
Kamo Meet "Invita un SI" (ordine del proprietario 2026-10-26): meetingInvitePolicy (SUPERVISORS default | TEAM | ORGANIZZAZIONE) letta e modificata insieme alle altre opzioni di chiamata e riunione dell'SI, stessi diritti; memorizzata in **************** (DDL **************** MediaService lo fa rispettare.
· kamo-shared-library
MeetingInvitePolicy — chi può invitare un SI in una riunione; dichiarare ai_member_call_options
Kamo Meet "Invita un SI" (ordine del proprietario 2026-10-26). I supervisori di un SI (la sua linea di reporting sul manager e Il proprietario dell'organizzazione) può sempre invitarlo; la sua meeting_invite_policy dice chi altro può: SUPERVISORS (predefinito), TEAM (team con nome, stesso manager, i suoi rapporti) o ORGANIZATION (organizzazione). AiMemberCallOptionsRow dichiara la tabella ai_member_call_options fatta a mano (e la nuova colonna) così KamoInitializer Si può costruire dal codice.
· MCPGatewayService
Giochi_* - un SI gioca a scacchi con i membri
SITP TPGAMES. Undici strumenti sugli endpoint scacchistici di MediaService, La tavola del membro è (App Scacchi + PLAY_CHESS, ancora a valle): games_list, games_get_state (diagramma, FEN, mosse legali, testo della mossa, record), games_invite (abilità opzionale), games_join, games_decoder, games_move (SAN o quadrati, (convalidato lato server), games_offer_draw, games_decoder_draw, games_resign, games_rematch, games_set_skill. Le mosse del SI sono altrimenti giocate per esso da Il motore di MediaService; il modello parla. Scritture interne: no Classe di approvazione, NOT_DISCLOSING; legge NOT_CONTENT. chat_read nomina il gioco su Frasi di approvazione + CHESS_GAME sostantivo; games_ prefisso; goldens Rigenerato (11 aggiunti). Test: GamesPackTest 7, ChatPackTest +1; full suite 1968 green.
· EmailService
Una versione in testo normale accanto all'HTML, e una lettera di riepilogo dell'SI per un supervisore quando l'SI non ha una casella di posta (TPRECAPS)
/api/email/send prende un textBody facoltativo: il corpo è quindi multipart/alternative (testo, poi l'HTML), all'interno misto POST **************** (KamoAI segreto, multipart come /api/email/send) - invia un messaggio di posta elettronica a un destinatario Invia una lettera il suo chiamante costruito come posta transazionale dell'organizzazione: NoReply@ il suo dominio solo quando quel dominio è SPF ci autorizza, altrimenti la piattaforma è sotto il suo nome, con la versione testuale e fino a due file.
· kamo-shared-library
Dichiarare ai_call_recap e ai_member_recap_options per l'email di riepilogo delle chiamate SI (TPRECAPS)
Una riga per ogni telefonata di SI che ha avuto una conversazione, quindi il suo riepilogo raggiunge il supervisore una volta; e un riepilogo di SI due volte DDL applicata a mano (kamoai-service ****************) è una delle opzioni disponibili, entrambe attivate di default Questa proprietà è stata dichiarata qui in modo che KamoInitializer possa ricrearla.
· MCPGatewayService
Ogni SI ha un orologio: time_now, time_convert, time_calc
Rapporto del proprietario 2026-10-26: chiesto l'ora su una chiamata, un SI ha detto che non aveva l'orologio Ogni persona ha il proprio calendario: l'ora attuale nella zona SI o in qualsiasi altra (con il giorno della settimana) Settimana), un tempo detto in un'altra zona, e data aritmetica. Legge, nessun diritto, nessun record.
· MCPGatewayService
L'email provata di un compagno di squadra a un SI è la sua richiesta e il suo ordine
Report del proprietario 2026-10-26: il proprietario ha inviato una e-mail al loro SI per chiamarli; l'e-mail non è mai stata un Ordine ([ORDINE] nessun ordine) e ogni successivo check-in lo ha letto come posta esterna e ha chiesto Mail EmailService dimostra che la cassetta postale di un compagno di squadra inviata al SI è ora valida all'interno di una mail (sentByTeammate, internal taint) e una wake o una citazione come un messaggio di chat: L'autore, la data, la provenienza e la macchia sono stati tutti controllati.
· MediaService
Un membro SI gioca a scacchi con altri membri, le sue mosse sono scelte dal motore di Kamo
SITP TPGAMES (proprietario 2026-10-26: un SI chiesto di giocare a scacchi non sapeva come). - ChessSiPlayer: event-driven (ChessTurnEvent dopo ogni modifica effettuata). Invito di un membro: il SI si unisce e la sua mente viene svegliata una volta (una chat Una notifica sulla conversazione della carta) per salutarli Offerta: accettata a meno che il SI non sia in vantaggio di più di mezzo pedone. ChessAi (alpha-beta + quiescenza, tempo-budgeted) sceglie la mossa al Il livello di SI e viene giocato come il SI attraverso ChessGameService.move, il ~0.7 s di pausa, un compito in sospeso per partita, 100% delle operazioni eseguite 200 per pod, Redis rivendicazioni tra i pod, FEN ricontrollato prima della scrittura. - ChessSiEligibility, ogni mossa: Chess app on, PLAY_CHESS applicato, runtime Non in pausa / bloccato / ritirato. - Recupero sweep (singleton, 30 s) per un turno un riavvio o pausa mancata. - Nessuna scheda SI-vs-SI (invito rifiutato; non si gioca per nessuno). - Abilità per partita (CASUAL/CLUB/MASTER, default CLUB) in Redis, nessun DDL; POST /games/{id}/si-level; mosse scritte (SAN o e2e4) su /move. - La scheda mostra la foto dell'avversario (opponentAvatarUrl era sempre null), opponentIsSi e siLevel. - Correzione: uno ChessAi condiviso da ogni richiesta correva i propri campi di scadenza. Test: ChessSiPlayerTest 11, ChessSiRulesTest 15, query parse 1; scacchi e Giochi suite verde (100).
· EmailService
Dimostrare che un compagno di squadra ha inviato un'email di un SI, in modo che una richiesta inviata via email possa contare come il loro ordine
Un endpoint interno risponde se un messaggio nella cassetta postale di un membro è stato inviato da un teammate: il suo From raggiunge un membro della stessa organizzazione, e la cartella Sent di quel membro contiene Un From falsificato non passa mai; è di sola lettura.
· kamo-internal
La pipeline mostra quando ogni accordo e prestito è stato aperto e ordinato in base ad esso
Le offerte e i prestiti mostrano "Aperto <data, ora>" nell'area dei membri importato da Arive che è il tempo di creazione di Arive — prima, ogni importazione L'operazione viene ordinata come aperta il giorno dell'importazione.
· SecurityService
I prestiti in pipeline aperti in Arive portano il tempo di creazione di Arive, non l'importazione
· kamo-shared-library
I riepiloghi dei prestiti vengono eseguiti quando un prestito MLOS viene realmente aperto (openedAt)
· kamo-internal
Prospettive: gli accordi pre-applicazione lasciano la pipeline aperta
Un accordo i cui prestiti sono tutti in entrata, qualificazione o pre-approvazione (no L'applicazione (non ancora presa) mostra sotto la propria vista e il conteggio delle prospettive I suoi KPI e il binario di fase ora contano solo le applicazioni in corso; Kamo Le proprie bozze rimangono in Open. Nulla cambia per i prestiti.
· kamo-internal
Pipeline mostra le fasi di pre-applicazione, ogni risultato e prestiti archiviati
- stati: Ricezione della domanda, Qualificazione, Pre-approvato; Approvato Non Accettato, chiuso per incompletezza, annullato, pre-approvazione negata / Non accettato: un elenco condiviso invece di due copie codificate - board e deal: i prestiti archiviati lasciano la pipeline aperta (mostrata sotto passato, Archiviato); i risultati non finanziati vengono considerati annullati - "inviato" non è più statusId >= 2 (id sono identità, non ordine) - Arive mappa di fase offre gli stati di pre-applicazione
· SecurityService
Kamo detiene ogni Arive prestito, allo stato Arive lo ha davvero
- gli eventi di importazione e di ingresso adottano ogni prestito - aperto, finanziato, avverso o Archiviati — invece di solo quelli "attivi" - nessun timbro Get Loan o crmReferenceId per prestito: ciascuno è un Zapier task sul Piano del cliente (20.000+ per un'importazione); il GUID riconosce il prestito - Le date di Arive vengono applicate come sistema di registrazione (cancellate dove Arive ha nessuno, ad esempio una data di applicazione su un file di pre-applicazione) - una tappa dietro Kamo è riallineata, sul record, invece di essere rifiutata - Copertura delle guardie di bozza (modifiche del mutuatario, invio proprio, SI credit pull / AUS) Le fasi di pre-applicazione; "inviato" non è più statusId >= 2
· kamo-shared-library
Stati di pre-applicazione, ogni risultato HMDA, archivio e date reali di Arive
Arive prestiti sono stati mappati solo dai nomi delle fasi: ogni fase di pre-applicazione diventato Applicazione Presa, ogni prestito archiviato Ritirato (anche quelli finanziati), Ogni azione avversa è stata rifiutata e le date sono state timbrate con il giorno dell'importazione. - LoanFileStatus (aggiunto — colonna ordinale): APPLICATION_INTAKE, QUALIFICAZIONE, PRE_APPROVED; risultati APPROVED_NOT_ACCEPTED, INCOMPLETE, RESCINDED, PREAPPROVAL_DENIED, PREAPPROVAL_NOT_ACCEPTED - stato macchina: frecce opzionali di pre-applicazione; ogni risultato solo dal Stati che può seguire - LoanFile.archivedAt: archivio è un flag accanto allo stato, non un risultato - Arive: stadio AVVERSO + mappa AriveAdverseReason al proprio esito (entrambi Setup del prestito = Applicazione presa, Divulgata = In elaborazione; date da Arive (data TRID, documenti firmati, wire di finanziamento, date di fase), mai oggi - realignToExternal: il MLOS esterno è il sistema di registrazione per lo stadio - Azione HMDA presa dal risultato reale; i file in corso non ne hanno nessuno - commercio / rollup transazioni / chiudere l'orizzonte gestire i nuovi stati
· kamo-internal
MLOS esterno vive sul mercato ipotecario e su ogni prestito
- Impostazioni → mercati POS → mercato ipotecario: nuova scheda "MLOS esterni" (Arive via Zapier, MeridianLink) con connessione, mappa delle fasi, transazione L’importazione di prestiti attivi; il picker MLOS del mercato principale è Sostituito da un puntatore ad esso - applicazione di prestito: una barra di stato che mostra il posto del prestito nel database esterno MLOS (campi collegati / inviati / necessari / rifiutati), reinvio e apertura in MLOS; Le sezioni di proprietà del MLOS sono in sola lettura con una nota che dice dove modificarle - pipeline deal card: chip MLOS esterno - pagina iniziale: Arive/MeridianLink azioni rimosse - le rotte proxy si spostano su ****************
· DaemonService
Il sondaggio MeridianLink si applica alle richieste di prestito, non ai lead
I prestiti modificati vengono abbinati tramite MLOS_LOAN_LOS_LINKS e inviati a Servizio di sicurezza per connessione; prestiti sconosciuti sono adottati solo dove il Le unità LO vengono mappate a una singola organizzazione.
· SecurityService
Rispecchiare ogni richiesta di prestito al MLOS esterno del mercato, in entrambe le direzioni
Arive e MeridianLink si collegano al mercato MORTGAGE (MLOS) invece di un Lead market e sincronizzare le richieste di prestito invece dei lead. - LoanLosSyncService: coda + 20s singleton tick; crea il prestito nel MLOS esterno una volta che i suoi campi richiesti esistono, spinge i cambiamenti di fase, Off in caso di errore, offre resend / open-in-MLOS / una visualizzazione dello stato per prestito - LoanLosSyncInterceptor: sezioni di proprietà del MLOS esterno (prelevatori, Proprietà, termini di prestito per Arive) risposta 409 in Kamo; salva la coda di una sincronizzazione - LosLoanApplyService cammina la pipeline in avanti allo stadio del MLOS (mai (all'indietro), contrassegnando la mossa in modo che non venga ripetuta o inviata via email - LosLoanAdoptionService: un prestito creato nel MLOS diventa un prestito Kamo Applicazione sul conto del mutuatario, raggruppati in una transazione con Gli altri prestiti del mutuatario aperti entro la finestra di connessione (30 giorni) - Arive inbound: prestiti riconosciuti da Kamo riferimento, GUID, quindi numero di prestito; Importazione paged di prestiti attivi (Find Loans / Get Loan zaps) - gli endpoint di connessione vengono spostati su **************** - LOS controllers e servizi a livello di lead rimossi
· kamo-shared-library
Sincronizza MLOS esterno (Arive, MeridianLink) al prestito, non al lead
Il collegamento LOS a livello di lead viene sostituito da un collegamento a livello di prestito: ogni richiesta di prestito è rispecchiato nel MLOS esterno del mercato e viceversa, collegato uno a uno da MLOS_LOAN_LOS_LINKS e guidato dal MLOS_LOS_SYNC_QUEUE. - LoanLosProvider SPI (creare / spingere / campi mancanti / sezioni bloccate / aperto link) con Arive (tramite Zapier) e MeridianLink implementazioni - AriveLoanMapper: prestito completo -> Crea prestito (94 ingressi, co-prestatario), fase Trova prestiti / Ottieni prestito, e il testo della riga di Zapier Torna in una patch di prestito - LoXmlFieldMapper mappa l'applicazione di prestito, non il piombo - AriveConnectionConfig: mappa di fase per lo stato del prestito, finestra di transazione (30d), Progresso di sincronizzazione e importazione - le transizioni della pipeline portano un syncSource in modo che gli echi non vengano ri-inviati e I mutuatari non vengono inviati via e-mail per una mossa guidata da MLOS - adattatori a livello di piombo, patch e ganci LeadService LOS rimossi
· SecurityService
Terminologia codificata — RxNorm, ICD-10-CM, CVX e HCPCS caricati dai rispettivi editori; selezionatori, controlli di codice reali e schermata di interazione ad alta priorità ONC
RxNorm Current Prescribable Content (NLM, MD5 verificato contro i dati NLM) Pagina; **************** farmaco->ingrediente risolto attraverso componenti/generici/pacchetti, modulo farmaco->dose, programma DEA da DCSA), file di ordine ICD-10-CM (fatturabile Bandiera, titoli brevi/lunghi, chiusura del prefisso), CVX + gruppi vaccinali (CDC), HCPCS Livello II trimestrale (CMS; Rilascia l'URL di origine del record, la versione dell'editore, le date di entrata in vigore e la checksum; solo le release COMPLETE rispondono; la sostituzione termina una release dove inizia la successiva Scritture batch JDBC; aggiornamento giornaliero alle 09:30 UTC nell'ambito del contratto di locazione della flotta; carico su richiesta per gli amministratori della piattaforma. Ricerca: indice token-prefisso (no trigram/GiST su Yugabyte), regole di classificazione fissate dai test; /status, /farmaci, /diagnosi, /vaccini, /procedure, /ricerca. Convalida: ClinicalCodeChecker rifiuta i codici a cui manca una release caricata (ICD per data di servizio; intestazione codici rifiutati sui reclami, avvertiti altrove; CVX deve essere attivo per una dose indicata qui; RxCUI deve esistere; Le prescrizioni devono nominare un prodotto esatto quando RxNorm è caricato e prendere il programma di RxNorm quando Più rigoroso), ripiegando sul formato-solo — e dicendo così — quando nessun rilascio copre la data. Interazioni: la lista ad alta priorità di 15 coppie ONC (Phansalkar et al., JAMIA 2012) come dati con le sue Citazione, membri risolti per contenere RxCUIs dal RxNorm caricato; 14 coppie selezionate (il QT I risultati sono avvertimenti ad alto rischio che richiedono la sovrascrittura dei dati Il gap DRUG_INTERACTION rimane aperto con una frase 'Screened only against ...', quindi Le allergie codificate in RxNorm ora corrispondono anche in base all'ingrediente.

Il tuo universo ti sta aspettando.
Aggiungi i prodotti quando sei pronto: nessuna migrazione, nessun nuovo login, nessuna richiesta di pagamento.
Gratis per sempre — nessuna carta di credito richiesta