Changelog
Cosa c'è di nuovo.
Ogni miglioramento alla piattaforma, come si spedisce.
· kamo-shared-library
SalesAgent entità + incarico agente per canale
Org-configurable AI agenti di vendita: un denominato agente per un settore di vendita, programmato con un contesto di formazione gli autori org (da un modello o a mano), assegnabili per guidare l'IA di quel canale. Kamo serve tutte le industrie — mutuo è solo un modello. - SalesAgent entità (dao/beans/ai) + SalesAgentRepository + SalesAgentDTO - WebChatIntegration.salesAgentId (collegamento morbido variabile) + campo DTO
· SecurityService
Auto-provisione piattaforma-gestito MLOS chat + servire il sito chiave da ospite
- ManagedChatIntegrationServizio: menta pigramente la piattaforma di org gestita SPECIFIC AGENT WebChatIntegration sul primo accesso. KamoMLOS è di prima parte: org risolto da host, la chiave del sito pubblico è di proprietà della piattaforma e mai gestito da amministratori di org. - PortalChatConfigController GET Non e' vero. risolvere org da host, ottenere-or-creare l'integrazione gestita, restituire la chiave del sito pubblico per <kamo-chat>. (The routing-token menta endpoint + chatRoutingForGuid + assegnareLoanOfficer chat-routing evento atterrato in 67974fd tramite una spinta interleaved; questo aggiunge il lato config/provisioning e richiede condiviso-lib 6b161b5.)
· MediaService
Verificare routing token, persist leadUid, riassegnare chat su lead move
- creareSupportSession prende un routingToken firmato (non preferitoAgentMemberId); verificato tramite ChatRoutingTokenCodec + cluster internal.auth.secret, esecuzioni token.orgId == org, percorsi solo quando l'integrazione.assegnamento Modalità == SPECIFIC AGENT. Taglio duro del percorso di utente-id fornito dal browser nudo. - persistere leadUid su SupportTicket + PublicChatVisitor (collegamento durevole del mutuatario-cassetta) - ChatRoutingConsumer: su security.chat.routing.>, riassegnare il mutuatario aperto biglietto(i) da leadUid al nuovo ufficiale (ricusi assegnaToPreferredAgent) - lo-presence org-scoped: cross-org/unknown member -> online:false (nessuna perdita) - WebChatIntegration CRUD/bootstrap assegnazioneMode; negozio publicSiteKey per Integrazioni SPECIFICHE
· kamo-shared-library
Token di routing dell'agente firmato + propagazione del lead-reassignment
Fondazione per rendere il widget riutilizzabile della catena pubblica gestire il KamoMLOS e per la propagazione delle dimissioni di piombo in una chat aperta. - WebChatAssignmentMode (TOPIC QUEUE default / SPECIFICHE); WebChatIntegrazione acquisizioni assegnazioneMode + publicSiteKey (chiave gestita da piattaforma per MLOS risolta dagli host) - ChatRoutingTokenCodec: token HMAC di breve durata sul segreto del cluster che dimostra il agente di destinazione; sostituisce il browser-fornito preferitoAgentMemberId - SupportoTicket.leadUid + PublicChatVisitor.leadUid (collegamento durevole del mutuatario) + E' il momento giusto. - No, no. - > security.chat.routing.{orgId}, emesso da riassegnare il piombo (LeadService.updateLead) e ri-claim della piscina (accetta NextLead) - E' un ricercatore di integrazione
· SecurityService
Esporre capacità di visione in modo che la console possa spiegare un fornitore mancante
I fogli di frequenza PDF sono letti dal fornitore di visione configurato dell'org. Quando nessuno è configurato la chiamata AI non riesce allo stesso modo in cui un errore di modello fa, quindi la console non aveva modo per distinguere "niente è impostato per leggere questo" da "il foglio era vuoto". E' il momento giusto. sonda di capacità di AIService sotto il cancello di steward esistente, org server-stamped, in modo che l'interfaccia utente può nominare l'attuale problema e punto a dove risolvere.
· AIService
Visione d'immagine in linea + tier fallback che preferisce più forte sopra più debole
Due limiti hanno reso la visione org-configurata inutilizzabile per intere classi di chiamante. 1. Visione era URL-ONLY. Ogni chiamante doveva alzarsi in piedi pubblico, fornitore-fetchable servizio infrastruttura — un firmatario, un punto finale non autorizzato, un ingresso. A ClusterIP servizio non poteva utilizzare la visione a tutti, non importa ciò che l'org aveva configurato. Adattatori ora è rigoroso — un dato malformato: URI torna alla gestione degli URL, quindi un URL ordinario può mai essere trasformato in una parte in linea rotta. I chiamanti con un URL pubblico firmato sono Non colpita. 2. La selezione del livello si distingue solo "incontro esatto" da "tutto il resto", quindi una LIGHT o fornitore non qualificato potrebbe outrank un HEAVY configurato puramente su prioritàOrdina — un MEDIUM richiesta potrebbe tranquillamente leggere un documento con un modello troppo debole per esso. Ordine è ora tier -> tiers più forti (strongest first) -> untiered -> tiers più deboli. Sotto-servare è il fallimento che produce risposte sbagliate, quindi over-serving è preferito a esso. Tier rimane una preferenza, mai un filtro, e prioritàOrdina rompe ancora legami. Condividi sia dalla visione che dalla selezione del testo, che aveva duplicato il vecchio comparatore. Aggiunge anche il GET. risolto attraverso il vero routing percorso: MlosAiClient crolla ogni guasto in un facoltativo vuoto, quindi "nessun fornitore configurato" è altrimenti indistinguibile da "il modello errato" e nulla può dire a membro che. Questo è ciò che fa sì che l'UI lo dica.
· kamo-internal
Dispositivi divisi in "Phone System(s) Dispositivi" + "Mobile Devices"
La scheda Dispositivi ora ha due sotto-tab. La tabella hardware PBX/softphone esistente si muove sotto "Phone System(s) Dispositivi" invariato; la nuova scheda "Mobile Devices" I dispositivi mobili consentono un set di amministratori: - la politica di ORGANIZZAZIONE DEFAULT (dispositivi personali consentiti contro la gestione aziendale richiesto), salvato attraverso la patch di campo org esistente, e - un override PER-MEMBER (o "uso org default"), con effetto risultante policy mostrata per membro, accanto ai dispositivi che ogni membro ha iscritto (nome, piattaforma, ultimo uso, ultimo IP). Un membro su COMPANY MANAGED REQUIRED può raggiungere solo l'org da una società gestita (Android Device Owner iscritta) telefono — l'applicazione nasconde l'org interamente su qualsiasi altri dispositivi; dispositivi gestiti anche aggiornare silenziosamente e rimanere in esecuzione. La sottoselezione utilizza il proprio `?deviceView=` param in modo che non collida mai con ImpostazioniVisualizza `?tab=`. Il nuovo E' un punto finale. Nota: le nuove etichette sono stringhe letterali — il catalogo dei messaggi successivo-intl vive in il dizionario di traduzione separato, quindi le chiavi devono essere aggiunte lì in un follow-up.
· SecurityService
Org-admin endpoints per la politica dei dispositivi mobili + dispositivi iscritti
Backs the new "Mobile Devices" sub-tab sotto Impostazioni → Caratteristiche → Telefono → Dispositivi (il suo fratellino "Sistema(i) Dispositivi)" rimane su VOIPService e coperture - E' una cosa da fare. org criterio predefinito + una riga per membro ACTIVE: il loro override, l'efficace politica, e i dispositivi che attualmente hanno iscritto (non votati UserDeviceTokens: nome, piattaforma, ultimo uso, ultimo IP, scadenza). - PATCH... imposta o cancella la per-member override; null eredita l'org predefinito. Gated su MANAGE VOIP SETTINGS (la destra che già apre le impostazioni del telefono pagina) più la stessa-org, o la modalità dio. La stessa impostazione org-wide è scritta attraverso la patch di campo PUT /api/security/org/{id} esistente.
· kamo-internal
Pannello di ingestione accetta fogli di calcolo, non solo CSV
L'estrattore ora legge .xlsx/.xls e sniffa il formato dal file stesso, quindi il il raccoglitore non limita più a CSV e la copia dice chiaramente che cosa è leggibile — compreso che i PDF non sono, piuttosto che lasciare uno steward caricare uno e ottenere un fallimento confuso.
· kamo-internal
Scheda Steward Ingestion + le tratte del proxy Catalog/Identifier mancanti
L'ingestione del foglio di calcolo esisteva end-to-end nel backend e nessuno di esso era raggiungibile. Questo aggiunge l'unica superficie che cammina tutta la catena: caricare un foglio di investitore -> ingerire -> vedere esattamente cosa l'estrattore letto, cella per cella con la sua provenienza -> approvare/rigettare -> pubblicare le righe approvate come una versione di listino prezzi. Il pannello è onesto su ciò che realmente farà: prevede quante righe approvate avere BOTH un tasso e un prezzo (solo quelli pubblicare) e dice chiaramente che una fila di mezzo è saltato piuttosto che indovinare. Niente raggiunge il catalogo prima dell'approvazione. Aggiunge anche il /api/security/mlos/catalogo e /api/security/mlos/identifiers proxy percorsi. Entrambi i pannelli spediti senza uno, così ogni chiamata da loro 404'd al Next strato e mai raggiunto SecurityService affatto.
· kamo-shared-library
CATALOG SOURCE assoc per documenti sorgente catalogo MLOS
Fogli di tasso di investimento / LLPA + matrici di eleggibilità / politiche di blocco hanno bisogno da qualche parte per live: gli estratti ingestibili del blob, e i punti di versione del foglio dei tassi pubblicati come prova. Nessun tipo di assoc esistente si adatta — MY DOCS è una zona propria di una persona e il secchio di SYSTEM WIDE è un modello e-sign. CATALOG SOURCE è org-scoped e deliberatamente NON eliminabile o sovrascrivibile: un live prezzo cita questo file, quindi la sostituzione o la rimozione sarebbe silenziosamente riscrivere le prove dietro una versione pubblicata. Ultimo allegato, quindi nessun cambiamento ordinale esistente.
· SecurityService
Gateway per la revisione del candidato + la promozione del foglio di tasso
Mostra i due nuovi cataloghi di promozione scrive alla console steward sotto l'esistente MLOS steward gate, con organizzazioneId server-stamped dalla sessione operatore: # POST # # POST #
· kamo-shared-library
MobileDevicePolicy — org default + override per membro
telefono personale o deve essere su una società gestita (Android Device Owner iscritto) dispositivo: - MobileDevicePolicy enum: PERSONAL ALLOWED | COMPANY MANAGED REQUIRED. - Organization.mobileDevicePolicy — il org-wide default (NOT NULL, default a PERSONAL ALLOWED in modo che gli org esistenti non siano colpiti). - Member.mobileDevicePolicy — nullable per-member override; NULL eredita l'org default, che è come il criterio è configurato "per membro". Il valore EFFECTIVE per appartenenza è quello che l'app mobile porta su: un org cui politica efficace è COMPANY MANAGED REQUIRED è nascosto dal commutatore di org su un dispositivo che non è iscritto come gestito dall'azienda. Colonne applicate tramite KamoInitializer.
· SecurityService
Portale steward per ingestione (ingresso + area di staging erano irraggiungibili)
MLOSIngestion Il servizio non aveva presenza di gateway, quindi nessun inquilino poteva consegnare un foglio di tasso all'estrattore e ai candidati che stadi non aveva alcun lettore su qualsiasi superficie raggiungibile. Aggiunge **************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** relè multipart rate-sheet ingest plus the two staging reads (un documento sorgente) candidati, la storia di assunzione di un investitore). organizzazioneId è SERVER-STAMPED dal sessione operatore su ogni chiamata, quindi uno steward tocca sempre il proprio inquilino zona di staging. Read timeout is 120s — una parse è il lavoro della CPU, non una ricerca. imgDatId rimane richiesto: è l'ancoraggio di prova con i contenuti e la chiave di presa-dedup, quindi il blob viene memorizzato attraverso la pipeline di imaging prima.
· kamo-internal
Scheda Identifiers Steward — risolvere un numero esterno al suo prestito
Nuova scheda Identifiers nella console di amministratore del mutuo: incollare un numero esterno (numero di prestito, MERS MIN, DU/LP/GUS caso file, e-sign busta...) e risolverlo di nuovo al suo prestito — lo stesso cancello il venditore in entrata webhook router utilizza, quindi uno steward può inseguire un callback non aggiornato — più un per-loan identificatore ledger e vista ciclo di vita. Fail-chiuso: sconosciuto, ambiguo, o il numero di un altro inquilino tutti letto UNRESOLVED. Fili il nuovo /api/security/mlos/identifiers proxy. Etichette in coulisse (i18n follow-up).
· SecurityService
Gateway Identifier — steward può risolvere un numero esterno al suo prestito
MLOSIdentifierService non aveva gateway, quindi il piano identificativo digitato (il cancello di routing ogni inbound vendor/agency/AUS/e-sign callback use) non era raggiungibile dalla console. Nuovo MlosIdentifierClient + MlosIdentifierController Non e' vero. risolvere un numero esterno e leggere un prestito identificatore ledger + eventi del ciclo di vita. Isolamento dell'inquilino: il per-loan legge passare il proprio org dell'operatore come il doc-11 §6.5 cross-org guard; /resolve non porta alcun org a valle, quindi una risoluzione che atterra in ANOTHER org è segnalato come UNRESOLVED qui piuttosto che perdere che il numero esiste. Dio-eleggibile steward gate. configmap: mlos.identifier.url.
· kamo-shared-library
Case-file AUS + cercatori di buste e-sign per identificatore proprietario-delegazione
Completa le ricerche proprietario-colonna il piano identificativo MLOS ha bisogno di instradare i callback in entrata: Non e' vero. (Maniglia di funzionamento I/LP/GUS) e E' il momento giusto. Sia l'org-agnostic che il LIST-ritorno in modo da una ri-corsa crolla e una collisione trasversale ambiguo fallisce chiuso piuttosto che scorrere. Trovatori @Query aggiuntivi; nessun schema.
· kamo-shared-library
Trovatori di credito-identità chiave per identificatore proprietario-delegazione
Il piano identificativo MLOS risolve un inbound vendor/agency callback ad un prestito; per i tipi OWNED ELSEWHERE il valore autorevole vive sulla colonna OWNER. Aggiunge cercatori di valore (org-agnostic) che ritornano un LIST (così una collisione cross-org ambigua fallisce chiuso piuttosto che mis-routing): E' il momento giusto. E poi... / findByLenderLoanNumber / findByMersMin. Ricercatori @Query aggiuntivi su il donotmodify repos; nessun cambiamento di schema.
· kamo-shared-library
CONDITION ADDED / CONDITION CLEARED modelli di email canoniche
La metà del ciclo delle condizioni: due modelli generici di checklist per la nuova condizione notifica del consumatore. Aggiunto a CANONICAL KEYS con le loro risorse json+html; seme di EmailServiceForOrg auto-guadagnali in qualsiasi org sul primo invio (idempotent), e si auto-inietta orgName/logoUrl. Copia è generico (un nuovo articolo / un oggetto completato — aprire il portale) — l'email non incorpora mai un le specifiche della condizione; il portale è la fonte della verità.
· SecurityService
Pre-auth pubblico trial-status endpoint per login/registra pillola
E' il momento giusto. risolve l'org hostname (alias-fallback) e segnala se il suo account è attivo E' un processo nativo, riuscendo a riutilizzare. (ora pubblica) quindi la pillola corrisponde al banner di prova in-app. Facce chiuse a inTrial:false per domini sconosciuti.
· kamo-register
Mostra TRIAL USE SOLO pillola sopra Powered-by per prova org
Refactors PoweredByKamo in uno stack di colonna fisso e auto-fetches /api/trial-status/{host} (proxy to SecurityService public trial-status endpoint), rendendo una pillola ambra sopra la pillola Powered-by quando l'org's account è in un processo nativo attivo. Non si apre a nascosto.
· kamo-login
Mostra TRIAL USE SOLO pillola sopra Powered-by per prova org
Self-fetches /api/trial-status (proxy to SecurityService pubblico trial-status endpoint, risolto da login host) e rende una pillola ambra sopra il Powered-by pillola quando il conto di org è in un processo nativo attivo. Faccine aperto a nascosto.
· kamo-internal
Visualizza documenti di terze parti (loan) nella recensione dei requisiti di steward
Uno steward che esamina un requisito THIRD PARTY (valutazione/titolo/flood) può ora aprire il documento soddisfacente. Il nuovo percorso binario Next.js trasmette il endpoint del contenuto per-loan authz'd; imagingApi.viewLoanDocument blob-fetches + apre in linea/downloads; AppRequirementVisualizza le superfici (progettato) soddisfarImgId + prestitoFileUid; DocumentsSection mostra un pulsante Visualizza su righe di terze parti con un soddisfatore. Il nuovo SecurityService per-loan LOAN-doc contenuto endpoint. Plain-string label (i18n follow-up).
· SecurityService
Per-loan terzo (LOAN) visualizzatore di documenti — valutazione/titolo/flood
Completa il percorso doc-review byte iniziato con il visualizzatore a volta. Imgs di raccolta LOAN (valutazione/titolo/flood) sono rifiutati dai generici endpoint di imaging (per-loan PII lockdown), quindi uno steward revisione di una terza parte non poteva aprirlo. Nuovo GET E' un'altra cosa. operatore LOS (LOS VIEW PIPELINE) O un membro che è un partito per l'applicazione di questo prestito, e confuso-deputato ancorato da LoanDocLoader's assocObjectId=loanFileUid check (un LOAN img trasporta il suo prestito in assocObjectId). Bytes stream in-process dal secchiello per immagini, in modo che il portone del prestito è il compartimento (non lo sdoganamento CONFIDENTIALE). ?download=true attacca; inline predefinito. Chiude il residuo lato LOAN di E' il momento giusto
· kamo-internal
Visualizza/Scarica documenti a volta nella scheda documenti del conto
Trasforma la fase delle condizioni/doc in un vero e proprio ciclo di revisione. Il percorso proxy dei documenti membri passa ora attraverso non-JSON (binary) risposte a monte invece di testo()-decodifica loro; membroDocsApi.viewDocument fatches the per-party /content bytes con la *** sessione e apre il blob inline (o download); AccountDocumentsTab ottiene Visualizza + Scarica azioni per documento a volta. Supporta il nuovo endpoint dei contenuti per parti di SecurityService. Etichette in coulisse (i18n follow-up).
· SecurityService
Per-partito il visualizzatore del documento del vault — i byte erano solo di scrittura, ora recensibile
Documenti a volte caricati (pay stub / Gov ID / dichiarazione bancaria) sono stati di sola scrittura: il generico byte di imaging i punti finali rifiutano ACCOUNT MEMBER VAULT (per partito PII lockdown), quindi uno steward ha accettato / respinto un requisito senza mai aprire il dottore, e un mutuatario non poteva rivedere una presentazione. Nuovo punto di arrivo # Specchio l'estratto # guardia: richiedonoPartyAccess (membro proprietario O un diritto LOS) + un documento-belongs-to-questo partito confuso-deputy controllare, poi serve byte IN-PROCESS via VaultDocLoader (MinIO) — quindi il cancello per partito è il compartimento PII, non il livello di sdoganamento CONFIDENTIALE (che fallirebbe anche per il proprietario). ?download=true attacca; default Inline. Chiude il residuo indicato in..
· kamo-internal
Scheda Catalogo Steward — seme un fascio conveniente + ispezionare il catalogo
Nuova scheda Catalogo nella console di prestito mutuo: seme primo pacchetto di un inquilino conveniente con investitore REAL + identità del prodotto (sblocca i prezzi), e ispezionare gli investitori dell'org -> prodotti -> versioni del tasso-foglio. Fili il nuovo /api/security/mlos/catalogo proxy tramite catalogoApi. Chiude il divario #1 dell'audit — un vero inquilino catalogo era insediabile / non raggiungibile, quindi niente a valle potrebbe prezzo. UI con corde di pianura (i18n follow-up).
· SecurityService
Catalogo gateway — il proxy mancante che ha bloccato i prezzi dell'inquilino
Catalogo era il contesto limitato SOLO MLOS senza gateway SecurityService, quindi il catalogo di un inquilino non poteva mai essere autorizzato / visto dalla console e BorrowerQuoteService ha restituito NO CATALOG per ogni reale org (precing stadio morto). Il nuovo MlosCatalogClient + MlosCatalogController (/api/security/mlos/catalogo) procura il catalogo leggi ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** "Pubblichiamo, bollettino". org è SERVER-STAMPED su ogni scrittura dell'operatore sessione (un org fornito dal cliente è sovrascritto); cancello di steward dio-eleggibile. configmap: mlos.catalog.url.
· kamo-internal
Loan-sale scrivania UI — il terminal capital-markets schermo steward
LoanSaleDeskPanel nel Capital & Risk Command Center: elenca gli impegni di consegna degli investitori (filtro di stato), aprire un impegno ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** mutui, consegna, acquisto (finanzi i prestiti CLOSED -> FUNDED), bordo, e coppia fuori assegnazioni. Fili il ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** procura tramite capitaleMarketsApi. Sostituisce il gap roadmap annotato nell'audit come il più grande schermo steward mancante.
· DaemonService
Durable consumatore inoltra l'acquisto degli investitori al file di prestito FUNDED
MlosLoanFundedConsumer sottoscritto Non e' vero. (durante) daemon-mlos-loan-funded) e inoltra ogni acquisto a SecurityService's /funded pipeline endpoint via SecurityPipelineClient, che avanza il prestito CLOSED -> FUNDED (fase di origine terminale). Riutilizza il condiviso IdempotentEventProcessor core (dedup + nak-retry + DLQ) esattamente come MlosClosingCompletedConsumer; idempotent lato server (già FUNDED = 200 noop). SecurityPipelineClient generalizzato (chiusuraCompleta + finanziata, corpo chiusura chiavePackageId -> contesto). configmap: daemon.jobs.mlos-loan-funded abilitato, max-attempts 5.

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