Excluir membros não-ACTIVE da participação no chat e roteamento
Um membro não-ACTIVO não deve aparecer ou ser um participante de chat ao vivo. Gate cada caminho de conversação na lib compartilhada ***************************...
Tornar WebChatIntegration create() @Transactional (sem chave órfã na falha do salvamento de integração)
ID de integração de web-chat de instantâneo no visitante de suporte + ticket
Resolve o WebChatIntegration criandoKeyHash (inabilitado-filtrado, consistente com a resolução bootstrap()/AI-prompt) uma vez dentro createSupportSession e cari...
Resolução de configuração de bootstrap de conversas públicas
Adiciona um GET interno ************* que resolve um WebChatIntegração por X-Public-Chat-Key-Hash e retorna sua resolução configuração do design/comportamento (...
Fio opcional mediaservice-push secret para credenciais FCM / APNs
Monta a conta de serviço FCM JSON + APNs .p8 a partir de um 'mediaservice-push' opcional secreto em /etc/kamo/push e define o APNs chave-id/team-id do mesmo seg...
WebChatIntegração CRUD (chave de menta + integração, org-scoped)
API de gerenciamento voltado para org para a guia de configurações de web-chat da Fase 2. Ligado criar, conta o PublicChatApiKey subjacente (mesma abordagem cha...
Bust APIService cache de chaves imediatamente na chave pública-chat alternar/deletar
Persistir na criação de hash chave no visitante de bate-papo público + ticket para atribuição
Resolver o membro do sistema de chat público por-org (alias snadjafinia de código rígido)
createSupportSession, createPublicTicket e a notificação do proprietário helpers todos resolveram o "membro do sistema" da org através de um codificado nome de ...
Envio móvel de impulso (dados FCM + APNs diretos) com portão de presença
chat recebido (MediaController), ticket de suporte (SupportNotificationService), SMS/voicemail (VoipStompRelayController), social Presence-gated como o consumid...
Aceitar X-***-Token no REST; deslize TTL com o tempo- limite por sessão
OTKPreAuthFilter resolve X-***-Token quando nenhum X-OTK está presente (o mesmo Ligue para o MediaService REST sem o BFF. O KSessionService agora desliza o Redi...
Alcance o próprio oficial do mutuário diretamente, nenhum portão direito de apoio
Retirar o requisito ACCEPT SUPPORT TICKETS da atribuiçãoAgente Preferido: a O agente de empréstimo do mutuário é acessível independentemente de ser um configuro...
Roteamento direto para o OL + Endpoint de presença de LO
Powers the mutuário portal's fundiu LO/chat widget: - Está bem. Atribui directamente um chat público bilhete para um agente ESPECÍFICO (o gestor de empréstimos ...
Parar de colocar o conteúdo da mensagem em e-mails de mensagens perdidas
Remover a mensagemPreview computation, o livro de registros PREVIEW write, e o mensagemPreview template variable; solte a preferência includePreview. Os e-mails...
Notificações de e-mail de mensagem perdida (chat + support) com supressão por fonte
NaTS durável consumidor chat-email-notifier em chat.session.> alimentando um Registo de mensagens EMAIL NOTICES (PENDING/SENT, por mensagem para chat, por bilhe...
Reconstruir para GeoLite-lib compartilhado limitado olhar (2-4ms hit+miss)
Pega a biblioteca kamo-shared 011a73e — GeoLookupProcura de serviçoByIpInRange now LIMIT-1 ligado em vez de digitalização para exaustão em gap / IPs elevados (m...
Reconstruir o 'hotfix' do resolvedor de lib partilhado (queda de arranque: LenderProfileRepository)
Últimas datas possíveis + ponto final em massa
PRESENCE:{id} é excluído no momento em que um membro fica offline, então nada Gravados quando estiveram activos pela última vez. PRESENÇA RESID SEEN:{id} (orgId...
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 i...
Material AnalyticsController — eventos recordes + agregados
* ******************************* (registro) + GET /analytics (contagem por material por Tipo + totais de org).
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).
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 or...
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...
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 (verif...
Persistir bandeiras de polegar de material programado através de atualização direcionada
O mesmo órfão desvinculadoRemover o problema do oleoduto de conversão: a varredura sem cabeça realizou um ImgDat e save()/merge() em cascata na coleção de image...
Thumbnail materiais gerados programados em processo
Uma varredura sem cabeça não pode conduzir o oleoduto de miniatura OTK do ConversionService, então gerar uma página-0 PNG thumbnail via ImageIO logo após armaze...
Geração programada — varrer as receitas numa cadência
- CanvaScheduleController: CRUD para horários de org (receita + cadência + hora/dia + alvos sociais opcionais), calcula nextRunAt - CanvaGeneration Serviço: sem...
Receitas de preenchimento automático salvas CRUD (org- scoped)
CanvaRecipeController: GET/POST /api/media/canva/recipes + DELETE /{id} — salvar/lista/soft-delete um mapeamento de campo chamado marca-template +, escopo para ...
Dê ao MediaService internal.auth.secret (mlos-internal-auth) e-mails sumários
MediaService -> EmailService /api/email/templates/enviar (reunião-síntese) necessidades INTERNAL AUTH SECRET para combinar com o emailService's internal.auth.se...
Preenchimento automático empresarial — modelos de marca de fusão de dados
- CanvaApiClient: list brand templates (dataset=non empty), obter dataset, trabalhos de carga de ativos, criar/obter trabalhos de preenchimento automático - Can...
URLs públicas de curta duração assinadas para ativos de marketing
Permite aos provedores sociais (Meta) e e-mail obter um material específico para um limite janela sem expor o balde de material de imagem privado. - MaterialUr...
Importar um ficheiro para o Canva como um desenho editável
- Está bem. (importação de projecto binário) - CanvaController POST /importações (multipart) → criar+poll trabalho de importação → editor ligação profunda com c...
Quebrar o envio da gravação para que o MediaService compile
MinIOStorageService.upload lança uma exceção verificada que ingere () nenhuma das duas capturados ou declarados — construir ruptura em cima do isGuest fixar. En...
Verificar a assinatura JWT do nav- de- retorno; actualizar o 'token'
- CanvaJwtVerifier: verificar a assinatura Ed25519 da correlação jwt contra JWKS do Canva (/connect/keys), mais aud/exp/type; chaves em cache por kird. Return-n...
MeetingParticipant.isGuest() (foi getGuest, não compila); repoint transcription to generic endpoint
MeetingParticipant expos isGuest() (primitive boolean getter), não getGuest(). Aponte também a chamada sumária transcrita no /api/conversion/transcribe comparti...
Ingerir gravação, retenção/quota, uso de armazenamento, pipeline sumário
- MeetRecordingController: interna (X-Internal-Auth) ingere o ponto final do jibri finalize.sh posts terminou as gravações para. - MeetRecordingService: envia g...
Canva Connect OAuth + projeta/exportar infraestrutura
- CanvaApiClient: PKCE autorizar, troca de token/refresh/revoke, usuários, desenhos (criar/listar), trabalhos de exportação, obter byte - CanvaTokenService: tok...
Avisos de início de reunião agendados + expiração do link de hóspedes
- MeetingReminderSweep: @Scheduled varredor que dispara em tempo real Lembrete de "começar a reunião" para os membros convidados (iniciar - lembreteMinutesBefor...
Persistir participantes convidados, impor MANAGEM MEET SETTINGS, soltar caminho de dupla-convite
- createMeeting: os membros convidados são IDs numéricos de flocos de neve, não strings UUID - encaminha-os através de LongToUUID como o criador. Anteriormente ...
Alimentação de Chats Unificados em sessões de membros/suporte/sociais
GET /api/media/sessions/chat agora aceita um filtro de `categorias' (chat, suporte, social; padrão todos) e retorna um globalmente mais recente-primeiro, mescla...
Surface pai-org temas compartilhados no popup request-suport
Os usuários do Child-org não puderam ver os tópicos de suporte compartilhados de seus pais (atribuirToOwnOrg=false) ao solicitar suporte, porque o popup somente...
Org-guarda a subscrição /topic/leaders/rt/{orgId} em tempo real
Subscribe guarda Cross-tenant para o novo tópico líder em tempo real, espelhando o existente /topic/social/feed guard: um membro só pode subscrever o seu própri...
Infraestrutura de linha de tempo unificada (persistência de alimentação, adaptadores, relé ao vivo)
SocialFeedService persiste posts/comentários no esquema MediaSession/MediaObj (reusando o modelo de chat); SocialFeedMapper constrói o fio DTOs; SocialTimelineC...
X (Twitter) + Adaptadores de discórdia
- XAdapter: Webhook Atividade de Conta (recurso CRC + x-twitter-webhooks-assinature HMAC verificar), normalizeInbound (direct message events, echo-skip), OAuth ...
Reconstruir contra compartilhamento de lib MediaObjTransit date created fix (aceite-hook member join)
M4 Meta adaptadores + OAuth + 24h janela + M2 endurecimento
- Meta adaptadores (Messenger/Instagram): corrigir caption send inválido (caption now a follow-up mensagem), bytes-upload via Graph Attachment Upload API, URI ...
Reencaminhar eventos NATS de crédito/lead-atribuition para STOMP
Subscreve security.leades.> e security.credits.>, espelha cada um para /topic/... O front-end CRM atualiza a grade Leads-Disponível, os campos Gerenciar-Credits...
Como o que vês no transporte?
Cada uma dessas atualizações pousa automaticamente em seu espaço de trabalho. Comece grátis e veja crescer semana após semana.