Conexão disponível/indisponível para backend e corrigir bug de presença OFFLINE
- Renomear o chip pausado/ativo para disponível/indisponível em NavTop - Obter disponibilidade inicial na montagem e persistir comuta através da nova API de eu/...
Aumente o TTL de 90s para 300s para evitar falsos OFFLINEs na frenagem de tabulações
Adicionar éDisponível para resposta de by-department e me/availability endpoints
Reescreva todas as consultas/mutações do GQL contra a introspecção do esquema ao vivo
Verifiquei cada nome e tipo de campo contra o esquema atual do FreePBX 17. Conjunto completo de correcções: Consultas: - obterAllExtensions: remover o campo 'v...
Passe selectedFolder to ThreadDetailView so email:folder- changed fires with a valid folder
conversation.folder é sempre indefinido porque o Java ConversationEntity tem folderIds (text[]) não um campo de string de pastas. Isto fez com que o loadThread ...
Correct GraphQL field name to fetchAsteriscoDetalhes
A API do FreePBX retorna "Você quis dizer fetchAsteriscoDetalhes?" — renomear a saúde verificar consulta e seu acessor caminho de dados em conformidade.
Adicionar cabeçalhos XHR/Accept e análise de resposta de String ao cliente GraphQL
O mesmo padrão do FreePBXTokenCache: adicionar X-Pedido-Com + Aceitar: aplicativo/json para suprimir respostas de redirecionamento HTML do FreePBX, e mudar todo...
Sincronizar o dropdown da caixa de correio primária ao carregar
O dropdown foi predefinido para o item da primeira lista porque a caixa de correio selecionada foi inicializada sem uma caixa de correio, fazendo com que o valo...
Aumentar o limite de tamanho de envio de arquivos para 500MB
Spring Boot padrão tampa várias partes em 1MB, causando imagem de fundo uploads para falhar com 500 em request.getParts(). Coincidir os Serviços de Segurança li...
Erros HTTP de superfície para que as falhas de upload sejam visíveis
Substituido console silencioso.warn com um erro lançado no status não-OK, assim o usuário vê a razão de falha real (status + corpo de resposta) em vez de proced...
Adicionar cabeçalhos Accept+XHR e análise de resposta de texto bruto para o endpoint do token
O FreePBX estava retornando texto/html quando chamado via DNS de cluster porque o O cabeçalho da máquina não correspondeu ao PBX HOSTNAME configurado. Adiciona...
Drive minimized-tab entrada através de controles de animação
A mudança de animação={...} para animar={tabControls} quebrou a entrada animation: tabControls não tem nenhum alvo em fila na montagem, então o botão ficou na s...
Correct OAuth2 scope strings for FreePBX API
Os escopos do FreePBX são identificadores de nível superior: 'gql' (todos GraphQL) e "Descanso" (todos os REST). O formato 'gql:read' significa GQL para um módu...
Live unread emblema + salto na nova mensagem do agente
- Mantém o LiveSupportPanel montado fora da tela enquanto o widget é minimizado (somente quando existe uma sessão de suporte) para que a subscrição STOMP perman...
Expor a porta 8088 diretamente no serviço ClusterIP
O serviço tinha apenas o mapeamento da porta 80→8088. Serviços internos que utilizam **************************** (por exemplo, token de API VOIPService requisi...
Confiar na infra- estrutura pendenteCount, soltar deslocamentos do cliente
Infraestrutura pendenteO Conta não foi lido agora (conta as sessões do SUPPORT TICKET com mensagens mais novas do que a última Vista do proprietário). Quando o ...
Contagem pendente de transmissão + não- lida na leitura do agente & envio do visitante
- * **************** agora delegados para Então, o conde... reflete sessões com mensagens e decrementos de visitantes não lidos quando o Agente chama MarkAsRead...
Contagem não lida + assistente de pesquisa por sessão
Então, o Navtop SuporteButton emblema pode contar tickets de suporte que realmente precisam atenção (ter mensagens de visitante não lidas) em vez de apenas PRE ...
Adicionar o Mapa de Configuração da Configuração de 2ban em falta para o k1m1
Referências de implantação falham2ban-config ConfigMap (jail.local + asterisco-security.conf) mas não existia, bloqueando o pod em MountVolume. Configurar e imp...
Reconstruir para obter a biblioteca mais recente do kamo
Apanha o novo... consultas e A filial do SUPPORT TICKET em
MarkAsRead after agent send so lastViewed advances
Nos tickets de suporte, as mensagens de visitante e agente são armazenadas sob o mesmo sistemaMembro, por isso a consulta não- lida é depende inteiramente da úl...
Os tickets de suporte precisam de contagens não lidas por membro- diagnóstico
Mensagens de visitantes em tickets de suporte são armazenadas no mesmo sistemaMembro que o agente autentica como, para que a sessão de CHAT existente não seja l...
Adicionar mídia à lista de provisionamento de certificados de subdomínios
Adicionar o registo ao Endpoint Antecedente
Log org/index, informações de arquivo, userId, decisões de autenticação e estadiamento MinIO chave para rastrear porque uploads de fundo não estão aparecendo no...
Adicionar o registo à rota 'proxy' de upload- background
Log org/index, nome do ficheiro/tamanho/tipo e estado de resposta a montante para diagnosticar por que uploads de fundo não estão atingindo APIService.
Adicionar coluna de localização à grelha de dados do ticket
Leituras **************************** diretamente fora do SupportTicketDTO (agora instantâneo na entidade do ticket em tempo de criação — nenhuma viagem de ida ...
Armazenar geo no ticket na criação, soltar GeoLite lê
**************** agora captura o geo do visitante uma vez (via GeoLookupService) e persiste ip/país/cidade/subdivisão em O próprio SupportTicket. SuporteTicket...
Imagem geo do visitante na entidade do ticket
Adiciona VISITOR IP ADDRESS, VISITOR COUNTRY CODE, VISITOR COUNTRY NAME, VISITOR CITY, VISITOR SUBDIVISION colunas. Capturado na criação de tickets por isso os ...
Visitantes em massa e ignorar a procura GeoLite na lista
O endpoint da lista /api/support/tickets foi executado, por página de 20 linhas: - 20 chamadas. - 20 chamadas para GeoLookupService.lookup, cada uma das quais é...
Adicionar findBySessionGuidIn para carregamento a granel
Usado pelo endpoint da lista de bilhetes de suporte para obter todos os visitantes para uma página em uma consulta em vez de N separado findBySessionGuid chamad...
Passar a pasta para carregar o botão de repetição do Thread
loadThread leva (threadId, pasta); o botão retry error- state somente passou threadId, quebrando a construção kamo-internal. Coincidir com a chamada A assinatur...
Reconstruir para pegar o membro JsonIdentity Resolução de informações da biblioteca compartilhada com kamo
correção da biblioteca compartilhada com kamo b57d156 @JsonIdentityInfo(propriedade = "uniqueId") → "id" no Membro, resolvendo 400 erros no PUT /api/security/or...
Correct JsonIdentity Info property de 'uniqueId' para 'id'
Entidade membro declarou @JsonIdentityInfo(propriedade = "uniqueId") mas o o campo de chave primária real é chamado 'id'. Jackson atirou "não foi possível encon...
Adicionar /ws/public-chat-native WebSocket endpoint ao lado de SockJS
Regista um segundo objectivo STOMP sem o SockJS em /ws/public-chat-native assim que o frontend pode se conectar com um WebSocket nativo (brokerURL) sem precisar...
Remova a proteção SSR causando descompasso de hidratação; solte SockJS para WebSocket nativo
- Hero.tsx: remover o tipo de janela em torno do campo de partículas — campo de partículas já tem ssr:false assim que o guard produziu um servidor/cliente árvor...
Por-ticket não lido emblema + filtro 'Só mensagens novas'
- A lista de tickets mostra um crachá de bate-papo com a contagem não lida ao lado de ticket# sempre que a sessão tiver mensagens mais novas que as do agente úl...
A transmissão não lida conta para o agente na mensagem do visitante
Depois de um visitante enviar uma mensagem de suporte, push the latest unread-counts Carga para a lista de bilhetes do agente. Emblema e atualização do contador...
Incluir sessões SUPPORT TICKET na consulta de membros não lida
findChatMembershipsByMemberId agora retorna afiliações para CHAT e Tipos de sessão SUPPORT TICKET, por isso a conta não lida existente por membro infraestrutura...
Limpar os indicadores não lidos ao abrir a conversa
ThreadDetailView agora envia e-mail:folder-changed after markConversationRead sucessos para que MailButton refetches a contagem de crachás navtop caixa de entra...
Move CORS to Traefik via kamo-middlewares, remove in-app CorsFilter
The CorsFilter @Bean in the Spring app was silently not applying headers after WebConfig.java was removed. CORS is now handled entirely at the Traefik layer by ...
Use /public/{mainDomain}-{tld} path matching actual MinIO bucket layout
The getThemePath() was generating /domain/{tld}/{split}/kamosite paths that don't exist in MinIO — theme files live in the public bucket under kamocrm-com/, bad...
Quebrar a cadeia min- w- 0 para conter apenas o rolagem de e- mail na coluna do corpo
Adicionar min-w-0 ao recipiente exterior e conteúdo principal flex div para crianças flex não pode expandir para e-mail min- conteúdo largura, o que estava caus...
Hoist provedores acima ToolProviders
A mesma causa raiz que o guincho ChatWebSocketProvider: SupportTicketWindow chamadas E o ChatBox chama useUnread().markAsRead(), mas ambas as janelas renderizam...
Adicionar supressãoHydrationAviso e corrigir imagens de placeholder quebradas
supressorHydrationAviso em <html> previne erro de reação #418 causado pelo navegador extensões (por exemplo, traduzir, modo escuro) mutando atributos html entre...
Permitir o prefixo de / domínio/ caminho no tema IngressRoute for CORS
A configuração do tema no theme.kamocrm.com/domain/... não foi regras de rota existentes (apenas /public/ e /internal/ foram permitidas), então Traefik retornou...
Remover o CorsFilter duplicado e remover os cabeçalhos CORS no gateway
WebConfig.java definiu um segundo feijão CorsFilter competindo com o CorsConfig. java's feijão, arriscando duplicar cabeçalho escreve. Excluído para que apenas ...
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.