Changelog
O que há de novo.
Cada melhoria para a plataforma, como ele envia.
· kamo-shared-library
SalesAgent entidade + atribuição de agente por canal
Agentes de vendas de IA configuráveis por org: um agente nomeado para uma indústria de vendas, programado com um contexto de treinamento os autores de org (de um modelo ou à mão), aos canais para conduzir a IA desse canal. Kamo serve todas as indústrias — hipoteca é Só um modelo. - SalesAgent entity (dao/beans/ai) + SalesAgentRepository + SalesAgentDTO - WebChatIntegration.salesAgentId (ligação suave nula) + Campo DTO
· SecurityService
Conversa automática gerenciada pela plataforma MLOS + chave do site do serviço pelo host
- ManagedChatIntegrationService: lazily ment the org's platform-managed ESPECIFIC AGENT WebChatIntegração no primeiro acesso. KamoMLOS é de primeira parte: org resolvido pela máquina, a chave do site público é de propriedade da plataforma e nunca gerenciada pelos administradores de org. - PortalChatConfigController **************************** resolver org por máquina, get-or-criar a integração gerenciada, devolver a chave do site público para <kamo-chat>. (O ponto final de roteamento-token menta + chatRoutingForGuid + atribuiçãoLoanOfficer chat-routing evento pousou em 67974fd através de um push interleaved; isso adiciona o lado config/provisioning e requer lib-compartilhado 6b161b5.)
· MediaService
Verifique o token de roteamento, persista no leadUid, reatribua o chat em movimento de lead
- createSupportSession toma um roteamento assinadoToken (não preferidoAgentMemberId); verificado via ChatRoutingTokenCodec + cluster internal.auth.secret, aplica token.orgId == org, routes only when integration.atribuction Modo == ESPECIFIC AGENT. Corte duro do caminho de membro-id fornecido pelo navegador. - Persistir no leadUid no SupportTicket + PublicChatVisitor (ligação durável de líder do mutuário) - ChatRoutingConsumidor: em security.chat.routing.>, reatribua o mutuário em aberto ticket(s) por leadUid para o novo oficial (reusa a atribuiçãoToPreferredAgent) - lo-presence org-scoped: cross-org/unknown member -> online:false (sem vazamento) - WebChatIntegração CRUD/bootstrap carregar atribuiçãoMode; armazenar públicoSitekey for Integração ESPECÍFICA AGENT
· kamo-shared-library
Sinal de roteamento do agente assinado + propagação do chumbo-reatribuição
Fundação para tornar o widget de chat público reutilizável manusear o KamoMLOS Variante mutuário->empréstimo-oficial com segurança, e para propagar a reatribuição de chumbo numa conversa aberta. - WebChatAssignmentMode (TOPIC QUEUE por omissão / ESPECIFIC AGENT); WebChatIntegration ganha atribuiçãoMode + publicSiteKey (chave gerenciada pela plataforma para o MLOS resolvido pelo host) - ChatRoutingTokenCodec: token HMAC de curta duração sobre o segredo do cluster que prova o agente alvo; substitui o navegador fornecido preferidoAgentMemberId - SuporteTicket.leadUid + PublicChatVisitor.leadUid (ligação durável de líder do mutuário) + **************************** - Está bem. -> security.chat.routing. {orgId}, emitido a partir de reatribuições de chumbo (LeadService.updateLead) e reconvocações de pool (aceiteNextLead) - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
· SecurityService
Expor a capacidade de visão para que o console possa explicar um provedor em falta
Folhas de taxa PDF são lidas pelo provedor de visão configurado da org. Quando nenhum é configurou a chamada de IA falha da mesma forma que um erro de modelo, então o console não tinha como para distinguir "nada é configurado para ler isso" de "a folha estava em branco". - Está bem. proxies sonda de capacidade do AIService sob o portão de hospedeira existente, o servidor org-samped, para que a UI possa nomear o problema e apontar onde consertá-lo.
· AIService
Visão de imagem em linha + recuo de camada que prefere mais forte sobre mais fraco
Dois limites tornaram a visão configurada por org inutilizável para classes inteiras de chamadas. 1. A visão era URL-ONly. Todos os ouvintes tinham de levantar-se em serviço público, provedor-fetchable infra-estrutura — um sinalizador, um endpoint de serviço não autenticado, uma entrada. Um ClusterIP serviço não poderia usar visão em tudo, não importa o que o org tinha configurado. Adaptadores agora é rigoroso — um dado malformado: URI volta ao tratamento de URL, para que uma URL comum possa nunca ser transformado em uma parte em linha quebrada. Chamadores com uma URL pública assinada são não afectado. 2. Seleção de níveis apenas distinguiu "correspondência exata" de "tudo mais", então uma LUZ ou um fornecedor não nivelado poderia ser superior a um HEAVY configurado puramente em prioridadeOrdenar — um MEDIUM O pedido poderia ler silenciosamente um documento com um modelo demasiado fraco para ele. A ordem é agora. nível -> níveis mais fortes (primeiro mais fortes) -> níveis mais fracos. Subservidor é o fracasso que produz respostas erradas, então over-serving é preferido a ele. O nível permanece uma preferência, nunca um filtro, e a ordem de prioridade ainda quebra laços. Compartilhado por visão e seleção de texto, que tinha duplicado o antigo comparador. Também acrescenta GET ******************* resolvido através do roteamento real caminho: MlosAiClient colapsa cada falha em uma Opcional vazia, então "nenhum provedor configurou" é indistinguível de "o modelo errou" e nada pode dizer Membro que. Isto é o que uma UI diz.
· kamo-internal
Dividir dispositivos em "Sistema(s) de telefone" + "Dispositivos móveis"
A aba Dispositivos agora tem dois sub-tabs. A tabela de hardware PBX/softphone existente move-se em "Sistema(s) de telefone" inalterado; a nova aba "Dispositivos móveis" Os dispositivos móveis permitem um conjunto de administradores: - a política de DEFAULT ORGANIZAÇÃO (dispositivos pessoais permitidos vs empresa-gerido necessário), salvo através do patch de campo org existente, e - uma sobreposição por memória (ou "utilizar org default"), com o resultado eficaz política mostrada por membro, ao lado dos dispositivos cada membro foi inscrito (nome, plataforma, último IP usado). Um membro da EMPRESA MANAGED REQUIRED só pode chegar à org de uma empresa gerida (Android Proprietário do dispositivo matriculado) telefone — o aplicativo esconde a org inteiramente em qualquer outro dispositivo; dispositivos gerenciados também atualizam silenciosamente e permanecem em execução. A sub-selecção utiliza o seu próprio `?dispositivoView=` param para nunca colidir com ConfiguraçõesView's `?tab=`. Apoiado pelo novo *******************************. Nota: as novas etiquetas são strings literais — o catálogo de mensagens do próximo intl vive em o dicionário de tradução separado, então chaves devem ser adicionadas lá em um acompanhamento.
· SecurityService
Endpoints Org-admin para a política de dispositivos móveis + dispositivos matriculados
Apoia o novo sub-tab "Dispositivos móveis" em Configurações → Funcionalidades → Telefone → Dispositivos (seu irmão "Sistema(s) de telefone" permanece em VOIPService e cobre - Está bem. org default policy + uma linha por membro ativo: sua substituição, o eficaz política, e os dispositivos que eles atualmente se inscreveram (não UserDeviceTokens: nome, plataforma, último IP usado, expiração). - PATCH define ou limpa o cancelamento por membro; null herda o padrão org. Gated on MANAGEME VOIP SETTINGS (o direito que já abre as configurações do telefone página) mais o mesmo-org, ou modo deus. O próprio padrão org-wide é escrito através o patch de campo PUT /api/security/org/{id} existente.
· kamo-internal
Painel de ingestão aceita planilhas, não apenas CSV
O extrator agora lê .xlsx/.xls e cheira o formato do próprio arquivo, então o O catador já não se restringe ao CSV e a cópia diz claramente o que é legível — incluindo que os PDFs não são, em vez de deixar um mordomo carregar um e obter uma falha confusa.
· kamo-internal
Página de Ingestão do Steward + as rotas proxy de catálogo/identificador que estavam faltando
A ingestão de folha de taxa existia de ponta a ponta na infra-estrutura e nada dela era alcançável. Isso adiciona a única superfície que percorre toda a cadeia: carregar a folha de um investidor -> ingerir -> ver exatamente o que o extrator leu, célula por célula com sua proveniência -> Aprovar/rejeitar -> publicar as linhas aprovadas como uma versão de folha de taxa de preço. O painel é honesto sobre o que ele realmente vai fazer: ele visualiza quantas linhas aprovadas ter ambos uma taxa e um preço (apenas aqueles publicar) e diz claramente que uma meia linha é Saltou em vez de adivinhar. Nada chega ao catálogo antes da aprovação. Também adiciona o proxy /api/security/mlos/catalog e /api/security/mlos/identifiers rotas. Ambos os painéis enviados sem um, então cada chamada deles 404'd no próximo camada e nunca chegou ao Serviço de Segurança em tudo.
· kamo-shared-library
CATALOG SOURCE assoc type for MLOS catalog source documents
Folhas de taxa de investidores / LLPA + matrizes de elegibilidade / políticas de bloqueio precisam de algum lugar para live: os extratos de ingesta do blob, e os pontos da versão da folha de taxa publicada De volta a ele como origem. Nenhum tipo de assoc existente se encaixa — MY DOCS é a área de uma pessoa e o balde do SYSTEM WIDE são modelos de e-sign. CATALOG SOURCE é org-scoped e deliberadamente NÃO deletável ou sobregravável: um live preço cita este arquivo, então substituir ou removê-lo iria silenciosamente reescrever a evidência atrás de uma versão publicada. Avançou por último, por isso não há mudanças ordinais existentes.
· SecurityService
Gateway para revisão de candidatos + promoção de folha de taxa
Expo as duas novas promoções de catálogo escreve para o console de mordomo sob o existente Porta do servidor MLOS, com o servidor organizationId marcado a partir da sessão do operador: * ******************************* * *******************************
· kamo-shared-library
MobileDevicePolicy — org por omissão + sobreposição por member
telefone pessoal ou deve estar em uma empresa-gerida (Android Proprietário de Dispositivos matriculados) dispositivo: - MóvelDispositivoPolítica enum: PERSONAL ALOXADO - Organization.mobileDevicePolicy — o padrão de org-wide (NOT NULL, defaults to PERSONAL LOWED assim que orgs existentes não são afetados). - Membro.mobileDevicePolicy - nullable per member sobreset; NULL herda a org padrão, que é como a política é configurada "por membro". O valor EFICAZ por membro é o que o aplicativo móvel A política eficaz é COMPANY MANAGED REQUIRED está escondida do interruptor de org em um dispositivo que não está inscrito como gestor da empresa. Colunas aplicadas através do KamoInitializer.
· SecurityService
Gateway de mesa para ingestão (intake + área de estadiamento foram inalcançáveis)
MLOSIngestion Serviço não tinha presença de porta de entrada, então nenhum inquilino poderia entregar uma folha de taxa para o extrator e os candidatos que estagios não tinham leitor em qualquer superfície alcançável. Adiciona-se o número de apis na segurança. multipart taxa-folha ingesta relé mais as duas leituras de estadiamento (um documento fonte candidatos, histórico de admissão de um investidor). organizationId é SERVER-STAMPED da sessão de operador em cada chamada, para que um mordomo só toca o seu próprio inquilino Área de preparação. Tempo limite de leitura é 120s — uma análise é trabalho de CPU, não uma pesquisa. imgDatId fica necessário: é a âncora de origem de conteúdo endereçado A chave de entrada-deedup, assim que a bolha é armazenada através do pipeline de imagem primeiro.
· kamo-internal
Página dos identificadores de mesa — resolver um número externo do seu empréstimo
Nova guia Identificadores no console mortgage steward: cole um número externo (número de empréstimo, MERS MIN, Arquivo de caso DU/LP/GUS, envelope de e-sign...) e resolvê-lo de volta ao seu empréstimo — o mesmo portão o fornecedor de entrada roteador webhook usa, para que um administrador possa perseguir um callback não roteado — mais um livro de identificação por empréstimo e Visão do ciclo de vida. Falha-fechado: desconhecido, ambíguo, ou outro número de inquilino todos leram UNRESOLVED. Liga o novo /api/security/mlos/identifiers proxy. Rótulos simples (follow-up i18n).
· SecurityService
Gateway identificador — administrador pode resolver um número externo ao seu empréstimo
MLOSIdentifierService não tinha gateway, então o plano identificador digitado (o portão de roteamento cada entrada O fornecedor/agencia/AUS/e-sign callback usa) foi inacessível a partir do console. Novo MlosIdentifierClient + MlosIdentifierController **************************** resolver um número externo, e ler um empréstimo Registo identificador + eventos do ciclo de vida. Isolamento de inquilinos: o per-empréstimo lê passar a própria org do operador como o doc-11 §6.5 cross-org guard; /resolve não carrega org a jusante, então uma resolução de pouso em OUTRA org é reportado como UNRESOLVED aqui em vez de vazar que o número existe. Portão de serviço de bordo, elegível para Deus. configuração: mlos.identifier.url.
· kamo-shared-library
Arquivo de caso AUS com chave de valor + localizadores de envelope com sinal eletrónico para a delegação do proprietário do identificador
Completa as pesquisas do proprietário-coluna que o plano identificador da MLOS precisa para encaminhar retornos de chamadas de entrada: **************************** (du/LP/GUS) e **************************** Tanto org-agnóstico e LIST-retorno para que um re-run colapse e uma colisão cruzada ambígua falha fechada em vez de desviar. Aditivo @Query finders; sem esquema.
· kamo-shared-library
Identificadores de identificação de empréstimo com chave de valor para identificação de titularidade-delegação
O plano identificador MLOS resolve uma chamada de retorno de fornecedor/agencial de entrada para um empréstimo; para os tipos ONDED ELSEWHERE o valor autoritário vive na coluna do proprietário. Adiciona localizadores com chave de valor (org-agnóstico) retornando uma LISTA (então uma colisão cruzada ambígua falha fechada em vez de desviar): **************************** E... / findByLenderLoanNumber / findByMersMin. Aditivo em @Query o donotmodify repos; nenhuma alteração de esquema.
· kamo-shared-library
Modelos de e-mail canónicos CONDITION ADDED / CONDITION CLEARED
A metade face ao mutuário do lacete de condições: dois modelos genéricos de lista de verificação para a nova condição consumidores de notificação. Adicionado ao CANONICAL KEYS com seus recursos json+html; Semente do EmailServiceForOrg auto-cura-los em qualquer org no primeiro envio (idempotente), e ele auto-injeta orgName/logoUrl. Copiar é deliberadamente genérico (um novo item / um item completo — abra o seu portal) — o email nunca incorpora um condição específica; o portal é a fonte da verdade.
· SecurityService
Endpoint público pré-auth teste-status para login / pílula registro
- Está bem. resolve a org por hostname (alias- fallback) e informa se sua conta está em um ativo julgamento nativo, reutilizando ******************* (agora público) Então a pílula combina com a faixa de teste da aplicação. Falhas fechadas para inTrial:false para domínios desconhecidos.
· kamo-register
Mostrar o uso do julgamento APENAS pílula acima Powered-by para orgs de teste
Refactors PoweredByKamo em uma pilha de coluna fixa e auto-fetches /api/trial-status/{host} (proxy to SecurityService public trial-status endpoint), renderizando uma pílula de âmbar acima da pílula Powered-by quando as org's A conta está num ensaio activo nativo. Falha aberta ao oculto.
· kamo-login
Mostrar o uso do julgamento APENAS pílula acima Powered-by para orgs de teste
Self-fetches /api/trial-status (proxy to SecurityService public trial-status endpoint, resolvido pela máquina de login) e renderiza uma pílula de âmbar acima da Pílula alimentada quando a conta da org está num teste nativo activo. Falha aberto ao oculto.
· kamo-internal
Ver documentos de terceiros (empréstimo) na revisão de requisitos de administrador
Um administrador que reveja um requisito de TERCEIRO PARTE (avaliação/título/enchimento) pode agora abrir o documento satisfatório. Novo binário A rota Next.js transmite o endpoint de conteúdo per-loan authz'd; imagingApi.viewLoanDocument blob-fetches + abre inline / downloads; AppRequirementView superfícies o (já-projetado) satisfierImgId + empréstimoFileUid; DocumentsSection mostra um botão Ver em linhas de terceiros com um satisfier. Apoia o novo Serviço de Segurança Endpoint do conteúdo do LOAN-doc por empréstimo. Rótulo simples (seguimento i18n).
· SecurityService
Visualizador de documentos de terceiros por empréstimo (LOAN) — avaliação/título/enchimento
Completa o caminho do bytes doc-review iniciado com o visualizador do cofre. REPARTIÇÃO DE EMPRÉSTIMOS são recusados pelos endpoints genéricos de imagem (bloqueio PII por empréstimo), por isso um administrador que reveja um terceiro Satisfier não conseguiu abri-lo. Novo GET ************* *** *** Operador LOS (LOS VIEW PIPELINE) OU um membro que é parte no pedido deste empréstimo, e confuso-deputado ancorado pela assocObjectId do LoanDocLoader==LoanFileUid check (um LOAN img tem o seu próprio empréstimo em assocObjectId). Bytes fluxo em processo a partir do balde de empréstimos de imagem, então o portão de arquivo de empréstimo é o compartimento (não a autorização CONFIDENCIAL). ?download=true attages; inline padrão. Fecha o residual do lado do empréstimo ****************************
· kamo-internal
Ver/Baixar documentos de cofre na página de documentos da conta
Transforma o estágio de condições/docs em um loop real de revisão. A rota proxy dos documentos- membros passa agora respostas non-JSON (binário) upstream em vez de text()- decodificando- as; memberDocsApi.viewDocument obtém o por partido / bytes de conteúdo com a sessão *** e abre o blob inline (ou downloads); AccountDocumentsTab gets View + Baixar ações por documento de cofre. Apoia o novo endpoint de conteúdo do SecurityService por partido. Rótulos simples (follow-up i18n).
· SecurityService
Visualizador de documentos de cofre por partido — os bytes eram somente para escrita, agora podem ser revistos
Documentos de cofre enviados (stub pay / Gov ID / extrato bancário) foram apenas escritos: o byte genérico de imagem Endpoints recusar CONTA MEMBER VAULT (fechamento PII por parte), então um mordomo aceitou/rejeitou um requisito sem nunca abrir o doutor, e um mutuário não poderia rever uma submissão. Endpoint do novo byte authz'd GET **************** espelhos o extrato guard: requirePartyAccess (powering member OU an LOS right) + um documento-pertence a este-partido confuso-deputado verificar, em seguida, serve bytes IN-PROCESS via VaultDocLoader (Minio) - assim que o portão por parte é o compartimento PII, não o nível de depuração CONFIDENCIAL (que falharia mesmo para o proprietário). ?download=true attages; padrão Em linha. Fecha o resíduo registado em:
· kamo-internal
Página do catálogo Steward — semear um pacote de preços + inspecionar o catálogo
Novo guia de catálogo no console mortgage steward: semeie o primeiro pacote de preço de um inquilino com investidor real + identidades de produtos (unblocks pricing), e inspecionar os investidores da org -> produtos -> versões de folha de taxa. Liga o novo proxy /api/security/mlos/catalog via catálogoApi. Fecha a lacuna #1 da auditoria — um inquilino real catálogo era inseedable/inalcançável, por isso nada a jusante poderia preço. IU de cadeia simples (follow-up i18n).
· SecurityService
Gateway de catálogo — o proxy em falta que bloqueou o preço do inquilino
O catálogo foi o contexto limitado da SÓ MLOS sem gateway SecurityService, então o catálogo de um inquilino nunca poderia ser criado/semeado a partir do console e emprestadorQuoteService retornado NO CATALOG para cada org real (pricing Estágio morto). Novo proxy MlosCatalogClient + MlosCatalogController (/api/security/mlos/catalog) do catálogo leituras **************** + os escritores de versão-espinho (sementes caríssimos, Publicar, boletim. org é SERVER-STAMPED em cada escrita do operador sessão (um cliente-fornecido org é substituído); deus-elegível portão mordomo. configmap: mlos.catalog.url.
· kamo-internal
Substâncias perigosas
EmpréstimoSaleDeskPanel no Capital & Risk Command Center: listar compromissos de entrega de investidores (filtro de status), abrir um compromisso *******************eporcompromissoalocar empréstimos, entrega, compra (fundos os empréstimos FECHADOS -> FUNDADOS), conselho, e emparelhar alocações fora. Fios Enviado por: proxy via capitalMarketsApi. Substitui a lacuna do roteiro anotado na auditoria como o maior ecrã de bordo desaparecido.
· DaemonService
Consumidor duradouro encaminha a compra do investidor para o processo de empréstimo FINANCIADO
O MlosLoanFundedConsumer assina **************************** (durável daemon-mlos-empréstimo-financiado) e encaminha cada compra para o endpoint de pipeline do SecurityService /financiado via SecurityPipelineClient, avançando o empréstimo FECHADO -> FUNDADO (fase de origem terminal). Reusa o compartilhado IdempotentEventProcessor core (dedup + nak-retry + DLQ) exatamente como MlosClosingCompletedConsumer; idempotent server-side (já FUNDED = 200 noop). SegurançaPipelineClient generalized (closingConcluída + financiada, corpo key closeingPackageId -> contexto). configmap: daemon.jobs.mlos-loan-financiado habilitado, max-attempts 5.

Seu universo está esperando.
Comece gratuitamente em minutos.Adicione produtos sempre que estiver pronto — sem migração, sem novos logins.
Gratuito para sempre — não é necessário cartão de crédito