Changelog
O que há de novo.
Cada melhoria para a plataforma, como ele envia.
· KlusterServices
Requer a chave API e admite apenas RAGService
· EmailService
Envio de correio precisa de um lugar, para pessoas e membros de IA
Um membro sem assento licenciado é recusado com o corpo compartilhado 403 SEAT REQUIRED antes de qualquer coisa é enviado: POST /api/email/enviar, o envio de caixa de correio compartilhado, e os quatro encontrar-convidar rotas (enviar, atualizar, cancelar, responder). Um evento de calendário pede para assento apenas quando ele convida seus convidados por e-mail (enviarConvida true, notificarByEmail não false): a janela do calendário e o KamoMobile enviam notifiedByEmail true em cada gravação, por isso um a entrada do calendário simples permanece aberta a todos. As rotas internas nunca perguntam. A implantação também leva o login NATS do próprio serviço (nats-user-email), o Redis ACL login (redis-auth) e o segredo interno KamoAI.
· MediaService
Reuniões, bate-papo em grupo, anexos e chamadas precisam do assento que os inclui
· kamo-internal
O seletor de chat lista apenas os modelos que o membro pode escolher
O seletor leu a lista de modelos do administrador (403 sem MANAGEME AI MODELS) e ofereceu provedores, que nunca seleccionou um modelo. Agora lê-se GET /api/ai/models/selecionável através de uma nova rota BFF, deixa as opções do provedor, move uma conversa com o provedor de volta para o Auto, e mantém o ordem do provedor AIService envia (prioridade da organização) em vez de reordená-la pelo nome.
· InitializerService
Migração para org alias domínios, semeando a plataforma org's dois
Cria **************** e sementes da plataforma org (is top level) com kamouniverse.com (padrão, levando adiante o antigo hardcoded platform.mail.domain) e kontak.kamocrm.com (adicional, não padrão). Aplicado diretamente à produção antes deste compromisso — este serviço é executado manualmente contra o DB, não implantado — então a tabela já existe; esta é a fonte de registro para o próximo ambiente fresco ou re-run. Kamo-compartilhou-biblioteca saltou para 1.6.2 para
· EmailService
Leia o padrão de domínio do compositor em org alias domains
Usei um domínio codificado. (platform.mail.domain, kamouniverse.com) como um envio sintético como padrão, e Apenas para a plataforma de org ******************************************************************************************************************************************************************************************************************************************************************************************************************************* Leituras OrgAliasDomainRepository em vez disso: qualquer org pode registrar qualquer número de alias domínios agora, cada um oferecido como uma identidade de envio no caixa de correio, com a linha padrão da org ainda pré- definida como padrão do compositor exatamente como kamouniverse.com era. Kamo-compartilhou-biblioteca saltou para 1.6.2 para
· kamo-shared-library
Adicione org alias domínios, o formulário per-org do domínio de email da plataforma
Generaliza o único hardcoded platform.mail.domain (kamouniverse.com, e apenas para o org de plataforma) em uma tabela qualquer org pode conter qualquer número de linhas O EmailService's SendableMailboxService lê-o para oferecer cada domínio como um enviar-como identidade na caixa de correio primária de cada membro, o mesmo mecanismo que antes.
· SecurityService
O interruptor AI kill pode ser lido por quem segura o seu direito
· kamo-internal
AI Platform Services e AI Kill Switch rights
· kamo-internal
O aplicativo IA Workforce e seus quatro direitos; o app-mirror guard lê Java novamente
· AIService
Uma tabela de rota decide quem pode chamar cada rota AIService
· kamo-shared-library
Um prefixo de caixa de entrada privada para novos serviços, e o trabalhador webhook LOS é opt-in
· kamo-shared-library
Os serviços fazem login no Redis com um nome de usuário e senha quando indicado
· kamo-shared-library
Uma regra de assento para o console e cada serviço que o impõe
O resolvedor lê o membro com sua organização obtida e abre não transação própria, então um assento é decidido corretamente em um thread sem contexto de persistência (o AI WebSocket) e uma leitura falhada realmente falha em abrir em vez de jogar inesperadoRollbackException passado a captura.
· KlusterServices
Entrar em Redis como mail rspamd
rspamd lê sua senha do email secreto/rspamd-redis-auth, incluído em local.d/redis.conf. O pod ganha fsGroup 11333: a imagem funciona como 11333:11333 e um arquivo root:root 0440 Secret é uma Permissão fatal negada na carga de configuração.
· kamo-shared-library
Os serviços da plataforma de IA e os direitos de interruptor de kill, e a coluna do switch
· KlusterServices
Usuários ACL para a plataforma, rspamd e operadores (padrão ainda aberto)
· kamo-shared-library
Ver, supervisionar, aprovar e gerir o pessoal de IA (329-332)
· KlusterServices
Um login por carga de trabalho na conta KAMO, ao lado do kamo svc
· kamo-shared-library
Aplicativo AI Workforce, fora do limite PHI e nunca automático
· kamo-internal
Escolha como uma aplicação publicada faz suas perguntas
"Publicar esta aplicação" (Configurações → Características → CRM → Fornecedores e Produtos) agora carrega três opções ao lado do chat, cada um um par de cartas que dizem o que eles média: - Tipo: Normal (algumas perguntas relacionadas por etapa) ou Squeeze (uma pergunta por tela, cada explicado em palavras simples). - Informações de contato: Iniciar (nome, e-mail e telefone em primeiro lugar, salvo no momento em que são introduzido, então um aplicativo abandonado ainda é um lead) ou Last (o empréstimo primeiro, detalhes de contato pouco antes de enviar; nada salvo até então). - Campos: Completo ou Básico (apenas o que uma primeira chamada precisa). Uma visualização ao vivo ao lado deles redesenha a primeira tela, a ordem de seção (contato — quantas perguntas, E quando o chumbo for salvo. O diálogo é `md` então ambos cabem lado a lado. As escolhas viajam no PUT existente .../aplicação (serviço de segurança d345869), round-trip através da lista de fornecedores, e prefill quando a janela é reaberta. Reabrir uma página ao vivo agora diz "Salvar alterações" / "Configurações de aplicação salvas". em vez de publicá-lo novamente, e seu ícone de linha é uma barra de configurações em vez do que uma bolha de conversa, já que abre mais do que a conversa.
· kamo-apps
Opções de layout do credor — apertar, contato primeiro ou último, básico
O pedido de crédito hipotecário agora se estabelece como o produto foi publicado (Configurações → Funcionalidades → CRM → Publicar esta aplicação): NORMAL são os cinco passos agrupados como antes. SQUEEZE faz uma pergunta por tela: uma sobrancelha dizendo onde você está, a pergunta na tela face, uma linha de linguagem simples sobre o que significa e por que é perguntado, então um Responde. Os campos partilham uma tela apenas quando são partes de uma resposta (um nome, um endereço, um agente e a sua empresa). Tocar numa escolha passa depois de uma batida; o teclado seleciona com setas e se move com Enter. O carril preenche Pergunta por pergunta. - Informações de contacto. START pergunta quem é o mutuário primeiro, e salva a liderança momento há um nome e um e-mail — por trás de uma prova invisível de trabalho, o mesmo as necessidades do botão de envio — então adiciona cada resposta posterior a esse lead através um token, e o envio final termina-lo em vez de arquivar um segundo. A página diz isso ao lado das perguntas de contato. Últimos movimentos de contato para pouco antes consentimento, e nada é salvo até que o formulário seja enviado. - Campos. BASIC mantém nome, e-mail, telefone, propósito, como a casa será usada, estado e ZIP, preço ou valor, entrada ou saldo, e crédito. Texto de ajuda assume que o leitor não sabe de nada: entrada, crédito, HOA, impostos, seguros, os programas de empréstimo e os tipos de propriedade são explicados onde lhes é perguntado. Sem resposta sim/não perguntas permanecem nulas (escapadas ou não ainda atingido) em vez de chegar como "não". Também fixo, ambos vivem hoje: o parágrafo de consentimento nunca nomeado o credor ("você dar o seu consentimento expresso por escrito para entrar em contato com você" — uma função passada como O argumento da UTI não deu nada), e o recibo é "Uma cópia está a caminho de ." Deixou cair a morada da mesma forma. O consentimento já não começa com "Alguém" minúsculo. Proxies: **************************** (POST) e /progress/{token} (PUT), compartilhando o X-Forwarded-For para lidar com a submissão. Precisa de serviço de segurança d345869 para o layout e os pontos de progresso; um backend mais antigo o formulário é o agrupado, completo, primeiro contato e o primeiro cedo salvar 404s uma vez e pára.
· kamo-internal
A página de sessão para de usar o ícone do Guacamole
Uma guia de sessão é o documento de Guacamole, então seu próprio <link rel="icon" href="images/logo-64.png"> possui a guia, e um membro abrindo o computador de sua empresa observa o ícone se transformar em um De terceiros. Manter o controle sobre a origem de Kamo e enquadramento da sessão teria mantido o ícone da organização; o gateway responde a todos os computadores.* rota com X-Frame-Options: DENY, Portanto, isso não está disponível. O gateway responde por esses dois arquivos. Cujo Ícone é decidido pelo Host, e às vezes a resposta não é de ninguém. Um pedido de ícone é uma imagem simples GET emitido enquanto o navegador renderiza um terceiro Documento. Ele não carrega nenhuma sessão e nenhum token, então o host é o único sinal que existe. Numa os próprios computadores da organização.<domínio> isso é uma resposta completa. No host da plataforma compartilhada não é: resolvendo por host lá nomeia o PLATFORM, como layout. tsx já diz — "que é Ninguém é inquilino". Assim, o anfitrião da plataforma deliberadamente resolve para nenhuma organização e recebe um glifo sem marca. Cada organização cujo domínio ainda não está ao vivo compartilha esse anfitrião, e pinta a marca de KamoCRM na aba de um inquilino é a coisa exata que uma etiqueta branca existe para impedir — enquanto olha, de Aqui, indistinguível de trabalhar. É também indistinguível da resposta correta para Os próprios membros do KamoCRM, por isso não há exceção para eles. Nada tem de acontecer. mudança para uma organização obter seu próprio ícone: o momento em que seu host de computadores está vivo, o O anfitrião nomeia-o e a rota resolve-o. O glifo é um esboço de monitor simples em ardósia, nenhuma marca em tudo, nos dois tamanhos Guacamole declara. O próprio ícone de uma organização é resolvido alias -> config.json -> favicon set, o mesmo cadeia que o DynamicMetaLoader usa, e cada falha ao longo dele cai de volta ao glifo: um favicon é não vale a pena falhar uma página sobre, e uma marca errada é pior do que nenhuma marca. A VIA VIVE EM KAMO, NÃO PARA O RESTO DA GATEWAY EM computadores hospedados. Traefik executa com allowCrossNamespace e allowExternalNameServices ambos em seu padrão de false, então um O IngressRoute não consegue alcançar o serviço interno do kamoweb, e ligar qualquer uma das opções é uma mudança global para atingir um favicon. O certificado já está emitido neste espaço de nomes, por isso a rota fica ao lado do serviço para o qual se encaminha e o CI aplica-o com o código. temaO PublicBase é extraído para que o layout do balde seja escrito uma vez: Theme.tsx is "use cliente" e o servidor precisava da mesma forma.
· kamo-internal
Arrive nos mercados de CRM, na página principal e nos perfis dos membros
- Mercados: "Arive" junta- se ao menu suspenso da MLOS e a sua janela de Configuração mantém- se os quatro ganchos Zapier (somente escrita, mascarada), o Arive → Kamo endereços para colar em Zaps, o stage → mapa de status, a criação de chumbo e interruptores de passo, um guia de configuração e o registo de actividade da ligação. Configurar agora é uma lista de permissões: um provedor sem nada para configurar não mais tempo obtém um botão habilitado que não faz nada. - Página principal: LosHeaderActions renderiza os estados de cada provedor — MeridianLink inalterável; Arive criar → esperando por Arive (resendível após 15 min, com a confirmação) → abrir em Arive com seu estágio, converter para uma liderança Arive, e um chip de problemas de sincronização. Um link pendente re- lê a configuração do mercado a cada 10 s para que se transforma em "Abrir em Arive" sem uma recarga. - Perfil: o cartão de credenciais do Lender salva novamente (não pôde desde Reconstrução do perfil, c20bac57). Cada linha de mercado edita por conta própria: MeridianLink toma nome de usuário + secreto, Arive o e-mail de login do membro Arive. - MarketConfig.mlosProvider é o sindicato do provedor, não uma corda nua. Spec: ****************************
· SecurityService
Opções de layout, e salvar detalhes de contato à medida que eles vão
O diálogo de publicação agora escolhe como o pedido de hipoteca pública se coloca out (kamo-shared-library ac83bea1): NORMAL ou SQUEEZE, dados de contacto no INÍCIO ou ÚLTIMO, Perguntas completas ou básicas. - Põe-te a andar. Disposição, aplicativoContatoPasso e aplicativoFieldSet; um faltando mantém o que é armazenado, então aposentar uma página nunca redefiniu seu layout. A resposta ecoa-os. - GET /public/empréstimo-aplication/{p} respostas layout {tipo, contatoPasso, campoSet}, Sempre resolvido. - POST **************** - apenas para um produto START (404 caso contrário: *** falha-fechado, submissão IP orçamento, nome + e-mail necessário. Cria o lead com a fonte "Online Loan Application (infinished)" e respostas um token de 256 bits mantido em Redis por um dia, escrito dentro da transação A falha do Redis devolve o chumbo em vez de garantir uma duplicata. - Põe-te a andar. adiciona respostas a esse lead através do updateLead (ausente = inalterado). Token ligado ao produto. - POST /público/empréstimo-aplicação/{p} com progressToken termina que lidera (fonte "Online Loan Application", recibo como antes) em vez de arquivar um segundo; um arquivo token desconhecido ou expirado um novo lead como antes. - A propriedade do chumbo é verificada ANTES da atualizaçãoLead em vez de exceção: é @Transactional e marcaria o request rollback-only. Ratchet linha de base: startProgress e saveProgress adicionado com suas razões, e porHost (adicionado na principal por 81e0756 sem uma linha, que deixou a catraca vermelha).
· kamo-shared-library
Opções de disposição para um pedido de empréstimo publicado
Três colunas sobre LEAD VENDOR PRODUCTS, escolhidas na janela de publicação e lidas por Kamo-apps para estabelecer a forma de hipoteca pública: - PEDIDO LAYOUT NORMAL (passos agrupados) - PEDIDO CONTACT STEP START (contact first, saved as their go) - PEDIDO PAPEL SET CHEIO Textos simples, não @Enumerados, então nenhuma restrição de verificação automática ddl congela o valor Preparar. Null lê como NORMAL / START / FULL, a forma como era. O DTO carrega o valores resolvidos; setProductAplicação ganha uma sobrecarga tomando as opções, com membros nulos que significam "manter", e os antigos delegados de assinatura para ele inalterado. DDL já aplicado ao cluster como proprietário: TABELA ALTER public.leader vendor products ADD COLUNN SE NÃO EXISTE aplicação layout varchar(16); TABELA ALTER public.lead vendor products ADD COLUNN SE NÃO EXISTE aplicativo contact step varchar(16); TABELA ALTER public.leader vendor products ADD COLUNN SE NÃO EXISTE aplicativo field set varchar(16);
· InitializerService
As colunas e atividades registram os mapas de integração do Arive
**************************** (único), os campos de ligação Arive em lead los links (tipo, GUID, link profundo, estágio, pendente-desde, último erro) e los sync eventos. Tudo nulo, sem preenchimento posterior; @Order(0) porque as entidades Mapeá-los. Já aplicado a Yugabyte à mão (como o proprietário, kamo) antes do push bibliotecário compartilhado; isso mantém um ambiente fresco em passo.
· APIService
O endereço público Zapier posta eventos Arive para
Post **************** gatilho>para a frente para O Serviço de Segurança é o AriveInboundController, que é o dono do cheque. A string de consulta (o evento) cruza o hop, um corpo de formulário o recipiente já A análise é reconstruída a partir de seus parâmetros, e o status do SecurityService é passado através de as-is: Zapier mostra uma tarefa non-2xx como errorizada, que é onde o As pessoas que mantêm o Zap vão olhar. Um token malformado nunca sai da borda.
· SecurityService
Arrive através de Zapier — conexão, eventos de entrada e ações por liderança
Um mercado ligado a Arive recebe uma conexão (quatro ganchos de captura Zapier para create-loan, update-loan, update-lead e convert-lead, além de um URL de entrada cujo token é armazenado como um hash) Com um registo de actividade, rotação do símbolo e "enviar uma amostra" para que Zapier possa aprender os campos de cada gancho. O Arive aciona o posto para... JSON ou corpo forma (fault de Zapier), reconhecido pelo nosso crmReferenceId, o Arive GUID, o id de visualização, ou — para um chumbo convertido dentro da Arive — o mutuário E-mail. Registros reconhecidos aplicam Arive-wins; uma nova etapa move o Kamo status através do mapa de estágio da conexão; registros desconhecidos tornam-se leads atribuído ao membro Arive nomes como oficial, e nosso UID é enviado de volta. Cada resultado é registrado, e nada responde a um silencioso 200. A página principal cria/aberto despachos no mercado: Arive responde 202 PENDING (confirma assíncrona) e adiciona /convert. Mapa dos membros eles mesmos para o seu e-mail Arive (sem segredo, sem NMLS, um membro por e-mail Por mercado). O ponto final da aplicação LO-XML agora recusa o não-MeridianLink provedores em vez de aplicar um patch totalmente nulo.
· kamo-internal
Iniciar uma sessão de codificação na nuvem e mostrá- la na janela
que lista os git checkouts na máquina de dev (mais recentemente trabalhou em modelo de membro e esforço. A máquina constrói o comando, com CCR FORCE BUNDLE=1 para que a saída local seja enviada em vez de clonada de um comando GitHub que não temos. O terminal que abre carrega `nuvem: true` em seus adereços, e o título barra e aba maximizada desenhar uma nuvem sobre seu ícone de terminal (windowIcon). Um prop em vez de um nó de ícone, por isso sobrevive a uma recarga; reabrindo de a lista de terminais carrega a marca da máquina de volta para a janela.

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