Changelog
Cosa c'è di nuovo.
Ogni miglioramento alla piattaforma, come si spedisce.
· kamo-internal
Riduzione dell'integrazione MLOS sul mercato modal
Aggiungi un dropdown di integrazione MLOS E' il momento giusto. al mercato Add/Edit modal, indicato solo per Servizio > Mortgage Residenziale mercati, più un pulsante Configura accanto a esso. La configurazione è disabilitata fino al mercato viene salvato; per MERIDIAN LINK si apre il nuovo per-market Configure finestra di dialogo, per KAMO MLS deep-links alla console interna MLOS esistente (il singolo POS commerceTipo: la scheda Integrazioni del mercato di MORTGAGE), e ENCOMPASS ICE rimane disabilitato con un tooltip "prossimo".
· kamo-internal
MeridianLink per-market Configura dialogo
Nuovo MeridianLinkConfigDialog, modellato sulla piattaforma OAuth EditDialog, portata alla connessione di un singolo LeadMarket tramite losConnectionApi (Phase 3 backend). Modifica E' il momento giusto. più un segreto di cliente di sola scrittura (lavello mantiene il testo cifrato memorizzato), con un Provare l'azione di connessione e caricare-on-open via losConnectionApi.get.
· kamo-shared-library
MarketLosConnection finder attivo
Addirittura, ******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** può trattare una connessione LOS morbida (isActive=false) come assente, rispecchiando il modello di lettura attivo-filtrato di SocialConnectionController. Nessun cambiamento di schema — is active già esiste tramite EmbRecordState.
· kamo-internal
MeridianLink fornitore client-id card sulla piattaforma Registro di sistema OAuth
Aggiunge un MeridianLink Mortgage ProviderDef alla piattaforma client OAuth2 Il registro e'... fornitore client id ("Vendor Client ID") + non-secret config.tokenUrl e config.environment. Nessun clientSecret a portata di piattaforma — il per-market segreto è la fase 3. Le schede del fornitore sono dichiarate FE (PROVIDERS array), non derivato dall'elenco GET del backend, quindi la voce è richiesta per la carta per rendere, anche se... era già attaccato lato server nella fase 2.
· kamo-internal
Mercato LOS connessione proxy + cliente
Fase 3 (Task 3.2) metà interna kamo: il proxy Next.js + client digitato per un connessione MeridianLink del mercato, sostenuta da SecurityService MarketLosConnectionController. - No, no. GET/PUT/DELETTA delega a.../perdita di connessione; Prox POST al backend dedicato .../los-connection/test endpoint (Azione di connessione Test, nessun separato Prossima rotta.js). Utilizza in avantiToApi, invio X-***-Token. - app/lib/los/types.ts: LosConnectionView (hasSecret only, never the ciphertext), LosConnectionUpsert (segreto di sola scrittura; mantiene vuoto/omesso il salvato), LosConnectionTestResult, MlosIntegration Valore. - app/lib/los/connectionApi.ts: E' una cosa da fare. npx tsc --noEmit passa.
· SecurityService
Servizio di connessione LOS di mercato/controller
Fase 3 (Tasks 3.1-3.2) dell'integrazione MeridianLink esterno-LOS: CRUD + Test-Connection per la connessione MeridianLink di un mercato. - MarketLosConnectionService: su MarketLosConnection, che rispecchia il segreto di MortgageProviderConfig convenzione (encrypt-on-write via PlatformSecretCipher, blank-keeps-existing segreto, haSecret-solo vista, non chiuso CipherNotConfiguredException quando il codice non ha chiave). testConnection round-trips a MeridianLink auth biglietto tramite l'adattatore condiviso-lib (MarketLosConnectionResolver + MeridianLinkAuthService) e non lancia mai. - MarketLosConnectionController... los-connection (GET/PUT/DELETE + POST /test), gated on MANAGE CRM SETTINGS + org-ownership del mercato (tramite LeadMarketService, stesso modello di LeadMarketController). - SecurityServiceApplication: aggiunto... @EnableJpaRepositories così MarketLosConnectionRepository inietta. Test focalizzati (prove dell'unità offline, senza chiamate live SOAP/HTTP — MeridianLink onboarding è ancora in sospeso): MarketLosConnectionServiceTest (10), E' un'altra cosa.
· kamo-shared-library
LO-XML campo mapper
LoXmlFieldMapper traduce Lead/LeadClaimMortgage <-> confermato MeridianLink LO-XML ids (sLAmtCalc, sPurchPrezzo, sApprVal, sLPurposeT, aBFirstNm, aBLastNm) con una tabella di traduzione LoanPurposeType 2=Refi-Cashout), più un contenuto stabile di SHA-256 Hash sopra il campo tracciato impostato per la soppressione dell'eco. LeadFieldPatch è il nullable parziale lead update consumato da LeadService.applyLosPatch (Phase 6). Ids rimanenti Sono parcheggiati in un unico esemplare. Blocco FIELD MAP come esplicitamente dipendenze Phase-0 (LOXmlFormatDefinition.xml).
· kamo-shared-library
MeridianLink modificato-prestiti + deeplink
Adds ListModifiedLoansByAppCode (parsa ArrayOfString -> nomi di prestito), E AppView. GetPmlLoanUrl (prefisso il parziale URL con l'host di origine derivato dall'istanza di connessione, predefinito A MeridianLinkSoapClient. Documenti il contratto di coda per-appCode scarico-e-clear nella classe Javadoc (i prestiti riconosciuti sono liquidati; i prestiti non riconosciuti sono lasciati in coda).
· kamo-shared-library
Il client MeridianLink SOAP crea/salva/carica
MeridianLinkSoapClient avvolge le operazioni Loan.asmx su un WebServiceTemplate di primavera-WS (nomespazio) Loan. Creare -> nome di prestito; Loan. Salva scrive solo i campi LO-XML modificati (scelto per un carico deterministico) e getta su uno stato di errore; Loan. Carico parses restituito <field id=.> elementi di nuovo in una mappa (tolerazione nidificata o scappato-string LO-XML). sTicket è fornito dal chiamante. Tutti i test mock il trasporto via MockWebServiceServer; nulla è live-callabile fino alla Fase 0.
· kamo-shared-library
MeridianLink auth cache dei biglietti
MeridianLinkAuthService mints and caches the sTicket per (instanceBaseUrl + sha256(clientSecret)) con un orologio del fornitore iniettato e un orologio configurabile TTL ************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** modalità oauth frames il token scambiato come "Bearer {token}"; modalità legacy (meridianlink.auth.mode) restituisce il biglietto GetPmlUserAuthTicket verbatim. Lo scambio di token è isolato dietro MeridianLinkTokenExchanger (default OAuth client credentials POST via Quindi il contratto di cache/TTL e' testabile con un falso.
· kamo-shared-library
MeridianLink creds risolutore
Aggiunge il pacchetto Phase 2 SOAP-adapter... con MeridianLinkCreds (registrazione segreta) + MarketLosConnectionResolver, che decifra il segreto del mercato tramite PlatformSecretCipher e legge il piattaforma fornitore client id tramite PlatformOAuthClientResolver. La Fase 5 e' pronta. costante (append-only id 8) dal momento che il risolutore dipende da esso. Addirittura... + test primaverile (test) per il trasporto SOAP utilizzato dalle attività successive della Fase 2.
· kamo-shared-library
LeadLosLink entità + repository
Traccia il link di un piombo in un file di prestito LOS esterno, una riga per (carta, fornitore). Cura la sincronizzazione di contabilità (contentHash, lastPushedAt, ultimoPulledAt) che la Fase 6 (pubblico in uscita) e la Fase 8 (poll in entrata) usano per sopprimere l'eco. Il piombo FK è fissato alla colonnaDefinizione="INT8" (non DEFAULT) per lo stesso motivo unico rowid backfill-orphan di MarketLosConnection. Stessa sostituta di repository-slice-harness come... (vedi Javadoc di quella classe) — il kamo-shared-library non ha l'imbracatura di prova DB, quindi questo è un test di compilazione/unità.
· kamo-shared-library
MarketLosConnection entità + repository
Per-market credenzialial/connessione di configurazione a un LOS esterno (MeridianLink / KamoMLS / Encompass), una riga per (mercato, fornitore). Vita segreta solo come AES-256-GCM colonna di testo cifrato (@JsonIgnore); le colonne di org/market FK sono incise a colonna INT8/UUID normaleDefinizioni in modo da non ereditare i riferimenti PK è DEFAULT ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** righe su un futuro KamoInitializer run. Nessuna imbracatura DB-backed repository-slice esiste ancora in kamo-shared-library (no @DataJpaTest/H2/Testcontainers, verificato dalla ricerca), così i sostituti di prova asserzioni a livello di compilazione/unità (comportamento di entrata + annotazioni + repository firme derivate-query tramite riflessione) per il DB persist+lookup prova il il piano specifica.
· kamo-shared-library
LeadMarket.mlosIntegrazione colonna + DTO giro
Aggiunge la colonna MLOS INTEGRATION (STRING-stored, default NO MLOS, null-guarded getter) plus DTO/create/update-request idraulico. LeadMarketService crolla il valore di nuovo a NO MLOS ogni volta che il SaleType risolto non è RESIDENTIAL MORTGAGE, in modo che solo i mercati di Servizio/Residential-Mortgage possono portare un legame LOS.
· kamo-internal
Console-background pref per-member in DB; errore di caricamento più chiaro
- useBackgroundMode ora persiste la scelta pianura/slideshow nel DB del membro ui-preferenze (segue il membro attraverso i dispositivi) invece di per-dispositivo localStorage. Rilassare la toggle "Questo dispositivo" -> "Console" e rilasciare il "non seguire ... ad altri dispositivi" didascalia. - Su un rifiuto di upload 4xx (il server non poteva elaborare l'immagine, ad esempio un formato non supportato come HEIC), mostrare "Impossibile elaborare questa immagine. Prova un JPEG o PNG." invece del generico "prova".
· kamo-internal
Flush 4-col layout (drop encasing card su scheda ipoteca); nudo Che-Se sandbox; pulsante posteriore accanto al nome, drop intestazione ridondante lead-ID
· kamo-internal
Sposta Calcolatore di affidabilità in cima alla colonna di uscita sinistra
· kamo-internal
Che-Se Studio come 3° modulo sub-tab; sandbox impilato per adattarsi colonna forma
· kamo-internal
Pannello uscite 2-col (Ammissibilità sinistra, menu corto a destra); goccia KPI/metri ora in intestazione
· kamo-internal
Mortgage KPI + LTV/DTI/Riepilogo completo nell'intestazione della pagina (solo schede, residenziale-mortgage)
· kamo-internal
Le azioni di intestazione si spostano alla riga di schede; aggiungere KPI + metri slot alla riga principale
· kamo-internal
Spaccare i campi in Mortgage Dettagli / Sottotitoli di indirizzo della proprietà; titolo della carta di goccia
· kamo-internal
Cosa-Se sovrascrive accanto al tavolo di confronto dal vivo; rimuovere morto LeadScenarioWorkspace
· kamo-internal
Side-by-side field|outputs layout; retire gradient ero band
· kamo-internal
MortgageOutputsPanel (colonna di uscite pulite, nessun gradiente)
· kamo-internal
I campi mostrano come le etichette in modalità visualizzazione, gli input in modalità di modifica
· kamo-internal
Mortgage Dettagli scheda cablaggio + Contatto Info rinomina; rimuovere blocco ipotecario in linea
· kamo-internal
MortgageDettagliTab contenitore (vivo cockpit)
· kamo-internal
ScenarioToolGrid per l'aumento
· kamo-internal
MortgageHeroBand con conteggio KPI + metri

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