Changelog
O que há de novo.
Cada melhoria para a plataforma, como ele envia.
· kamo-internal
AI auto-tag + legenda UI; configuração do nível de custos/visão do fornecedor (P3)
Configurações → IA → Fornecedores: cada provedor ganha uma camada de custo (Light/Medium/Heavy) selecionar e um Suporta a opção de visão (+ chips de lista). Gaveta de materiais: 'Sugere etiquetas com IA' (aceitar fichas para aplicar) e 'Generate description with AI' — ambos chamam os próprios provedores configurados da org via MediaService→AIService; encerrado com uma mensagem clara quando nenhum provedor de visão está configurado.
· AIService
Nível de custo/visão do fornecedor + Endpoint interno de visão de um tiro
AiProviderController lê/echoes costTier + supportsVision. ProviderRouting Ganhos de serviço selecioneVisionProvider(orgId, layer). **************************** executa um tiro único Complementação da visão reutilizando o provedor/adaptador do org (sem sessão/RAG/tools). Novo Controlador AiInternal POST /api/ai/internal/visão (X-Internal-Auth, OTK-isempt) para chamadas de serviço a serviço.
· MediaService
AI auto-tag + legenda via fornecedores de org (P3)
MaterialAiController POST **************************** Verifica a propriedade, menta um URL de material assinado de curta duração, e chama o endpoint de visão interna do AIService (org's fornecedores próprios, nível LIGHT) via AiVisionClient. Processamento de etiquetas lenientes; fechado por falha se não houver visão provedor configurado.
· kamo-shared-library
Nível de custo do AiProvider + bandeira de visão (dois eixos de capacidade ortogonal)
Adiciona costTier (LIGHT/MEDIUM/HEAVY via novo AiProviderTier enum) e suportaVision boolean para AiProvider, para que as integrações podem escolher o quão caro um provedor para usar e que suportar visão. Recuperador para provedores de visão ativa. Colunas adicionadas a AI PROVIDERS via ALTER.
· EmailService
Consentimento do lado do servidor "exibir imagens externas"
Substitui o cliente local (localStorage) recordando a escolha da imagem externa com um registo duradouro por membro. Novo RemoteImageConsentService (falha-soft lê assim mensagem buscar ainda funciona antes da tabela existir) + POST /api/email/remote-image-consent para registrar o consentimento. O DTO de mensagens completas agora carrega imagens remotas Permitido (procurado por membro + Message-ID), preenchido na mensagem única, thread e caixa de correio compartilhado obter caminhos para que o cliente semeie seu portão do servidor.
· kamo-shared-library
EmailRemoteImageConsent entity + repositório
Registo de membros que um membro escolheu para mostrar imagens externas (remotas) para uma mensagem específica, chaveada por member id + normalized RFC Message-ID (unique). Segue o padrão e-mail metadata member-scoped (FilterRuleEntity). Apoia o preferência "exibir imagens externas" do lado do servidor para que a escolha persista dispositivos e sessões. KamoInitializer cria a tabela em sua próxima execução.
· InitializerService
Adicionar coluna INVESTOR PRICE para rate locks + loan pricing snapshots
@Order( 80) idempotent ADD COLUNN SE NÃO EXISTE (DECIMAL( 9,4), correspondente ao preço- para- 100 quadrículas) para que o MLOS RCE possa registar o verdadeiro preço de execução do investidor não-par Obrigação do registo e sua citação ligada em vez de par-a-omissão. Aditivo nulo; espelhos GravaçãoTranscriptMigração.
· kamo-shared-library
Registre o verdadeiro preço do investidor não-par no RateLock + LoanPricingSnapshot
A taxa vinculativa-bloqueio-de-registro e sua cotação limitada transportaram apenas taxa + dias de bloqueio; os pontos de desconto/originação foram deixados nulos, de modo que as entidades centrais leram Número de preço real ************* preço de 100 com credor margem cozida em) viveu apenas no MLOS lateral-ledger MlosLockRecord.lockedPrice. Adicionar uma coluna INVESTOR PRICE (DECIMAL(9,4), correspondente às grades de preço-para-100 enviados) a ambas as entidades + seus DTOs + ********************** Está. o preço de execução INVESTOR, deliberadamente NÃO decomposto em pontos de mutuário (que A Comissão considera que, no caso em apreço, a medida em causa não constitui auxílio estatal. pontos, um erro de divulgação Reg-Z/ECOA). Os pontos permanecem nulos até que o modelo de taxa chegue; o preço bruto está agora preservado no cadeado-de-registro, não apenas o registro lateral. Populado pelo RCE (MLOSCapitalMarketsService) a partir do finalPrice; coluna materializada por KamoInitializer RateLockInvestorPriceMigration (ADD COLUNN SE NÃO EXISTE).
· kamo-internal
Deixe os administradores conectar RingCentral em nome de um membro
Nas configurações de telefone de outro membro, um administrador com direitos de gerenciamento-VOIP (canManageVoipConfig) agora vê Conectar/Reconectar/Desconectar para o membro RingCentral conta em vez de uma leitura-somente "eles devem conectá-la eles mesmos" mensagem — para o caso comum em que um sysadmin detém o RingCentral do membro credenciais. A cópia do connect deixa claro que você entra com aquele membro credenciais, e o memberID alvo é passado através (servidor obriga à direita).
· VOIPService
Permitir que os administradores conectem RingCentral em nome de um membro
O fluxo do RingCentral por membro era apenas auto-serve, então um administrador gerenciando o perfil de outro membro viu "eles mesmos devem conectá-lo". Sysadmins comumente criar a conta RingCentral do membro e manter suas credenciais, assim Devem poder ligar-se em nome do membro. - O membro do OAuthController start/status/desconnect agora aceita um alvo opcional membroId. Agir em outro membro requer MANAGEM EXTENSIONS ou GERÊNCIA VOÍP SETTINGS (espelha o perfil-edição portão); auto é sempre permitido. - iniciar também verifica o membro-alvo é realmente atribuído a essa instância (o a instância é org-scoped, então isso confirma o mesmo-org). - Quem completa o login RingCentral ainda determina a identidade; o O guarda de extensão ligado a Vs indica uma incompatibilidade.
· kamo-internal
Análise de uso + Visão Insights (P2)
Registos **************************** eventos e um diálogo Insights com os totais de org + materiais mais utilizados (por downloads + pré-visualizações).
· MediaService
Material AnalyticsController — eventos recordes + agregados
* ******************************* (registro) + GET /analytics (contagem por material por Tipo + totais de org).
· kamo-shared-library
MaterialEvent entity+repo (usage analytics)
Anexar apenas os eventos de uso **************** com um per-(imgld,tipo) Consulta agregada. Tabela MATERIAL EVENTS (DDL CRDB direcionado; KI auto- scans).
· kamo-internal
Fluxo de trabalho de aprovação UI + filtragem de carga-tudo (P2)
Controle de status na gaveta **************** Status Emblema em azulejos, e um filtro de estado na barra de ferramentas. Também carrega todas as páginas de material na frente (capped) para pesquisar/etiquetar/ os filtros campanha/status cobrem toda a biblioteca, não apenas a primeira página.
· MediaService
MaterialReviewController — mapa de estado + estado definido
GET /api/media/materials/reviews (org-wide imgId→status map) + POST para definir o status de um material (validada, revisor-faixada, upsert).
· kamo-shared-library
MaterialReview entity+repo (status side-table)
PROJECTO/PENDAÇÃO/APROVAÇÃO/ARCHIVED por material, chaveado por imgld (imagem do esquema intocado). Quadro MATERIAL REVISÕES (DDL; KI com o alvo).
· kamo-internal
Por membro RingCentral connect + softphone web-phone v2 correções
Correcções SDK do softphone (o ringcentral-web-phone é v2.4.0, não o v0.x o adaptador alvo — o uso antigo do wp.userAgent.* lançado no init): - Reescrever RingCentralPhoneSdk para a API v2: único sipInfo objeto, start()/call()/dispose(), inboundCall/outboundCall events, outbound inicial cabeamento, sintetizado mudo/hold/mudou/não mutado, e adoção do SDK per-call elemento de áudio como #rc-remote-audio para que o volume de AV / dispositivo de roteamento funciona. - PhoneSdk.SipInfo: adicionar saídaProxyBackup + stunServers. - useSoftphone: limpar o banner de chamada de entrada preso em um desligamento remoto durante anel; não derrube o SDK no meio da chamada na atualização credencial; auto-resposta + chamada-antecipação dupla-aceitação. Ligação central por membro: - PhoneSettingsTab: auto-serve o cartão "Connect RingCentral" por conta própria perfil (administra obter status somente leitura), OAuth redirecionar o manuseio, e um aviso de extensão-missmatch. - voipApi: membro OAuth start/status/desconnect. - useSoftphone + SoftphonePanel: needsMemberConnection gating with a "Connect sua conta RingCentral" prompt em vez de um erro de registro.
· VOIPService
RingCentral OAuth identidade + softphone SIP correções
Correcções de credencial SIP do Softphone: - getSipCredentials: map outboundProxyBackup + stonServers (necessidades de telefone web v2 eles para WSS failover + ICE/media); lançar ProviderException (502) em vez de um RuntimeException (500) que a captura de SipController perdeu; Identidade SIP de extensão errada. Ligação central por membro: - RingCentralTokenResolver: resolver/atualizar o próprio token de um membro com voo único (RC roda fichas de atualização), necessidade-reconectar em um token morto, e revogar a ligação. - OAuthController: somente (self-serve), VoipCalling escopo, PKCE; connect callback registra o Extensão ligada. - SipController + PhoneProviderFactory: o softphone registra como o membro Extensão própria; retorna um discriminador de 200 necessidadesMembroConnection quando desconectado. - MemberVoipConfigController: expor o status da conexão; revogar na reatribuição. - Nova tabela lê degradar graciosamente se member voip oauth token ainda não for migrado.
· kamo-shared-library
Adicionar o MemberVoipOAuthToken para conexões RingCentral por membro
Por membro OAuth token chaveado (memberId, provedor, installId) backing RingCentral de extensão – softphone sip-provision mais a registro de chamada pessoal do membro / correio de voz / presença. Distinto da org/instance OrgOAuthToken (conta-scopado). Requer uma execução do KamoInitializer para criar ****************************
· kamo-internal
Colecções/campanhas UI (P2)
Secção Colecções à esquerda (criar/selecionar/deletar), filtro de campanha na vista da colecção, e um editor de coleções na gaveta de detalhes (add/remove material, create-and-add). Fios através de /api/materiais/campanhas/* + materiaisCampanhasApi; espaço de trabalho junta o mapa do item do lado do cliente como etiquetas.
· MediaService
MaterialCampaignController — CRUD + mapa de itens + adicionar/remover
/api/media/materials/campanhas: list/create/update/delete, GET/items (org-wide imgId↔campaignId map), POST /add + /remover com verificações de propriedade de org.
· kamo-shared-library
MaterialCampanha + entidades/repos do item (coleções)
Coleções de primeira classe denominadas agrupando materiais entre pastas. Tabelas MATERIAL CAMPAIGNS + MATERIAL CAMPAIGN ITEMS (segmentada CRDB DDL; KI auto- scans na próxima execução).
· kamo-internal
Tags UI + controle de nível de acesso (P2)
Etiquetas (org-scoped, corte transversal): fichas de etiquetas nas peças, uma barra de filtro de etiquetas (AND através de selecionado), e um editor de etiquetas na gaveta de detalhes (atribuir/remover existente, criar-e-atribuir novo). Fios através de /api/materiais/tags/* proxies + materiaisTagsApi. Adiciona também uma Visibilidade (nível de acesso) controlo da gaveta utilizando o endpoint existente no nível de acesso.
· MediaService
MaterialTagController — tag CRUD + atribua/dessinal + mapa de atribuição
/api/media/materials/tags: list/create/delete tags, GET/atribuições (org-wide imgId↔tagId mapear o espaço de trabalho se une ao lado do cliente), POST /atribuir + /unassign com verificações de propriedade de org.
· kamo-shared-library
MaterialTag + entidades/repos de atribuição (marcas com foco em org)
Plano, eixo de etiqueta transversal sobre pastas para materiais de marketing. Tabelas MATERIAL TAGS e MATERIAL TAG ASSIGNMENTS (criado via CRDB DDL; KI auto- scans na próxima execução).
· kamo-internal
Ligações públicas geridas UI (P1) — create/expiry/revoke/view-count
Gaveta de detalhes ganha um painel 'Links públicos' (ShareLinkManager): criar um link durável com um rótulo opcional e expiração (1h/1d/7d/30d/nunca), copiá-lo, ver a sua contagem de visualização, e revogá-lo. Apoiado pelos novos endpoints de registro do MediaService via /api/materials/links proxies. A one-shot link de cópia rápida permanece para compartilhamento rápido social/email.
· MediaService
Endpoints de ligação pública gerenciados (criar/lista/revoke) + service rastreado
Adiciona POST/GET /api/media/materials/links e DELETE /links/{id} apoiado pelo MaterialShareLink, e resolve os tokens gerenciados no público GET primeiro (verificando revogação/expiração e colisão viewCount) antes de voltar ao verificador HMAC legado. Tokens opacos aleatórios, org- scoped Controlos de propriedade, TTL fixado a <=1y.
· kamo-shared-library
MaterialShareLink entidade de registro + repo (ligações públicas gerenciadas/tracked)
Revólveres revogáveis, expirantes e view-contados links públicos para materiais de marketing — persistiu assim os links podem ser listados, revogados e contados (vs. the stateless HMAC one-shot tokens). Auto- digitalizado por KI (@ EntityScan com. kamo) e MediaService; precisa de uma execução KI para criar o MATERIAL SHARE LINKS tabela.
· kamo-internal
Adicionar o menu de contexto do botão direito / long-press para as linhas de conversação- visualização
Completa o menu de ação da lista em ambos os modos de visualização. Linhas de conversação agora abertas o mesmo menu compartilhado no botão direito do mouse e toque em long-press com ações de nível de thread: Responder / Responder Tudo / Avançar (operando na última mensagem do tópico, obtida em demanda e composto da caixa de correio ativa), Relatório Spam / Não Spam e Excluir (aplicado em toda a linha), Mark read, e Star / Unstar.
· kamo-shared-library
DecisãoGate.aplicado Limiar expõe a barra de confiança real
O portão aplica internamente max( sobreposição do inquilino, segurançaFloor, piso de palco) mas As chamadas só tinham a parede do inquilino. aplicado Limiar retorna o verdadeiro Para que uma decisão de registo possa persistir no limiar reprodutível) em vez de um valor que o portão eleva silenciosamente. Aditivo; assessment () inalterado. DecisãoGateTest 14/14 pass.

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