Changelog
O que há de novo.
Cada melhoria para a plataforma, como ele envia.
· SecurityService
Implement hash-based file storage for avatars
- Generate SHA-256 hash from avatar ID after persistence - Store hash in database fileHash field - Upload files to MinIO using hash-based naming: {hash}.{fileExtension} - Update all URL generation to use hash instead of ID - Add backward compatibility: generate hash for old avatars without hash - Update photo upload, Avatar Creator creation, update, and delete operations - Prevents enumeration attacks by making file names unpredictable
· kamo-shared-library
Adicionar campo de arquivoHash à entidade Avatar para armazenamento seguro de arquivos
- Adicionar arquivoHash coluna para armazenar SHA-256 hash de avatar ID - O Hash é usado para nomear arquivos MinIO para evitar ataques de enumeração - Formato: {hash}. {fileExtension} em vez de {id}. {fileExtension}
· kamo-internal
Reconstruir avatar UI - moderno, interativo, polido. Infra- Estrutura retorna URLs diretamente
· SecurityService
Rebuild avatar system - backend generates presigned URLs directly like backgrounds
· kamo-internal
Adicionar credenciais MinIO ao mapa de configuração do k8s
· kamo-internal
Gerar URLs pré-assinadas em Next.js usando MinIO SDK com domínio de tema
· kamo-shared-library
Adicionar getPresignedUrlWithEndpoint method for custom endpoint presigned URLs
· kamo-internal
Adicionar criação Avatar Creator avatar, gerenciamento de fundo com reordenação e suporte completo à biblioteca avatar/fundground
· SecurityService
Add avatar and background management endpoints
· kamo-shared-library
Adicionar AvatarPhoto e AvatarAvatar Creator classes, refactorar estrutura de herança Avatar
· SecurityService
Organize MinIO storage with folder structure and add Avatar Creator SVG support
- Updated storage paths to use organized folder structure: * members/avatars/photos/ for photo avatars * members/avatars/vector/ for Avatar Creator SVG avatars * members/backgrounds/ for background images - Added SVG file generation and storage for Avatar Creator avatars - Avatar Creator avatar creation/update now accepts SVG string and saves to MinIO - All presigned URL generation updated to use new folder paths - SVG files are saved when Avatar Creator avatars are created or updated
· SecurityService
Add avatar, background, and member profile management endpoints
- Added AvatarController with CRUD operations for avatars (photo and Avatar Creator) - Added UserBackgroundController for managing user background images - Extended MemberController with GET/PUT endpoints for member profile data - All endpoints support MinIO uploads to 'internal' bucket with presigned URL generation - Avatar endpoints support photo uploads and Avatar Creator avatar creation - Background endpoints support member-specific backgrounds - Member profile endpoints support updating avatar selection from user's collection
· kamo-shared-library
Adicionar repositórios Avatar e UserBackground e suporte a URL pré-assinado
- Adicionado AvatarRepositório com métodos para encontrar avatares pelo usuário - Adicionado UserBackgroundRepositório com métodos para encontrar fundos por usuário/membro - Adicionado métodos getPresignedUrl para MinIOStorageService para gerar URLs de acesso temporário - URLs pré-assinados padrão para 7 dias de validade, tempo de validade configurável
· kamo-shared-library
Adicionar UserPhoto e UserBackground entities with User/Member relations
- entidade UserPhoto criada para armazenar fotos de perfil de usuário e membro - Criada entidade UserBackground para armazenar imagens de fundo de usuário e membro - Ambas as entidades suportam associações de nível de usuário (member=null) e de nível de membro (member set) - UserPhoto includes isSet field to indica qual foto está atualmente ativa - UserBackground inclui campo sortId para encomendar vários fundos - Ambas as entidades usam EmbRecordState incorporado para rastrear criação, atualizações e status ativo - Adicionados índices de banco de dados adequados para otimização de desempenho
· kamo-internal
Adicionar componente do MemberHeader compartilhado com sobreposições de avatar/background de nível de membro
- Componente MemberHeader compartilhado criado com imagens de fundo e avatar display - Adicionadas opções de sobreposição de nível de membro para avatar e background (use usuário padrão vs membro específico) - Updated ProfileTab to use shared MemberHeader component - Updated MembershipPermissionsTab to use shared MemberHeader component - Cabeçalho agora aparece nas abas perfil e permissão de adesão - Adicionado interruptores para "Usar Avatar de Usuário Padrão" e "Usar Fundo do Usuário Padrão" - Suporta URL de imagem de fundo personalizada quando não usa o fundo do tema padrão
· kamo-marketing
Adicionar suporte touch ao codificador magnético para dispositivos móveis
· kamo-internal
Mudar a grade para a disposição AutoHeight para mostrar todos os registros sem barra de rolagem
- Definir domLayout para autoAltura para que a grade se expanda para caber em todas as linhas - Remover o transbordamento: escondido das caixas de contentores da grelha - Remover altura: 100% restrição da caixa de embalagem grade - Grelha agora mostra todos os registros na página atual sem barra de rolagem vertical
· kamo-internal
Substituir a coluna Endereço por colunas Estado e Rua
- Remover coluna de endereço e AddressRenderer - Adicionar coluna Estado após Contato (mostra subdivisão/código Estado) - Adicionar coluna de rua após Estado (mostra o formato 'rua, cidade') - Substituir endereçoFilterValue com stateFilterValue e streetFilterValue - Adicionar filtro dropdown Estado com todos os estados dos EUA - Adicionar campo de filtro de texto de rua - Atualizar a lógica de filtragem para colunas de estado e rua - Remover filtragem de endereço do resetFilters
· kamo-internal
Atualizar as larguras das colunas para valores especificados
- Mudar a largura da coluna do ID do chumbo de 300px para 245px - Coluna de contato permanece flexível: 1 para ocupar a largura restante - Mudar a largura da coluna Estado de 200px para 65px - Alterar a largura da coluna do Sub Status de 200px para 120px - Mudar a largura da coluna do agente de 150px para 120px - Atualizar as larguras correspondentes do recipiente de campo de filtro para combinar com colunas - Adicionar restrições de largura min e maxWidth explícitas onde necessário
· kamo-internal
Atualizar IDs de lead simulados para a coluna alfanumérica aleatória e definir endereço para 170px
- Adicionar a função gerarRandomLeadId para criar cadeias alfanuméricas aleatórias de comprimento 13 - Mudar IDs de lead simulados de números sequenciais para alfanumérico aleatório (por exemplo, '34FDK69HWGPPK') - Atualizar a largura da coluna do endereço de 250px a 170px com min/max explícito - Atualizar a largura do recipiente do filtro do endereço para corresponder a 170px
· kamo-internal
Atualizar a largura da coluna de data e substituir os botões de ação
- Alterar as larguras da coluna da data de 155px para 170px (Criado e Atribuído) - Atualizar data filter field containers para combinar 170px largura - Substituir os botões 'Exportar selecionado', 'Compartilhar' e 'Excluir selecionado' com: - 'Reatribuir Selecionado ({amount selected})' com o ícone Pessoas - 'Alterar status do selecionado ({amount selected})' com o ícone SwapHoriz - Importar pessoas e trocar íconesHoriz de Material-UI - Os botões mostram dinamicamente a contagem seleccionada nos rótulos
· kamo-internal
Adicionar o fundo de borda cinza claro fino às abas secundárias
- Adicionar fronteiraBottom: '1px solid rgba( 0, 0, 0, 0. 12)' ao recipiente de tabulações de estado - Corresponde ao estilo encontrado na página /leades/view/ - Cria separação visual entre tabulações e conteúdo abaixo
· kamo-internal
Adicionar fundos cinzentos aos campos restantes do filtro e alinhar para baixo
- Mudar o alinhamento da linha do filtro do centro para a extremidade flex (alinhamento inferior) - Adicionar fundo cinzento (# f8fafc) a todos os restantes recipientes de campo filtrante - Adicionar raio de borda e enchimento para combinar estilo de filtro de data - Os campos de filtro regulares alinham-se ao fundo, altura correspondente do campo de data inferior - Campos de data permanecem mais altos com layout empilhado - Todos os campos de filtro agora têm tratamento de fundo cinza consistente
· kamo-internal
Stack campos de filtro de data verticalmente com fundo cinza isolado
- Alterar campos de filtro de data da disposição horizontal para vertical (flexDireção: coluna) - Adicionar fundo cinzento (# f8fafc) apenas às caixas de filtro de data, não a linha inteira do filtro - Definir largura explícita de 220px para campos de filtro de data - Remover fundo cinza do recipiente principal filtrante - Adicionar raio de borda a caixas de filtro de data para uma melhor separação visual
· kamo-internal
Melhore o layout da interface e aumente os dados simulados
- Tornar o texto menor para campos de filtro de data (fontSize: 0.75rem para entrada, 0.7rem para etiquetas) - Mover a Pesquisa Rápida para a mesma linha que as páginas de status, alinhadas à direita - Aumentar pistas simuladas de 50 para 250 - Remover coluna Ações da grade - Limpar o layout removendo a seção da barra de pesquisa duplicada
· kamo-internal
Adicionar componentes de filtro de intervalo de datas para colunas criadas e atribuídas
- Adicionar variáveis de estado para filtros de intervalo de datas Criados e Atribuídos (datas de início/fim) - Criar componentes de filtro de gama de datas com campos Data de início e Data de fim - Adicionar componentes de filtro de gama de datas à linha de filtro personalizada para colunas criadas e atribuídas - Atualizar a lógica filtradaRowData para filtrar por intervalos de datas - Campos de data vazios significam nenhuma restrição (todas as datas para esse fim) - Atualizar a função de resetFilters para limpar filtros de intervalo de datas - Os filtros de data suportam intervalos parciais (apenas início, apenas fim, ou ambos)
· kamo-internal
Faça contato nomes links clicáveis e adicione duplo-clique para abrir o lead
- Atualizar ContactRenderer para exibir primeiro e último nome como links clicáveis sublinhados - Adicionar noClique no manipulador aos nomes de contato que abrem o lead via noViewLead ou navega para /leads/view/:id - Adicionar onRowDoubleClicked handler to AgGridReact to open lead when row is double-clicked - Nomes de contato agora têm cor primária, sublinhado e efeito hover - Duplo-clique em qualquer lugar em uma linha abre a liderança
· kamo-internal
Adicionar ícones ao filtro suspenso do sub- status e atualizar contratos enviados
- Atualizar 'Contratos Assinados' para 'Contratos Enviados' para corresponder ao Java enum - Alterar ícone para contratos enviados da atribuição para enviar ícone - Adicionar ícones aos itens do menu dropdown do sub- status - Importar Enviar ícone do Material- UI - Ícones exibidos ao lado de cada sub-status no filtro suspenso
· kamo-internal
Adicionar ícones únicos para cada sub- estado com cores de status pai
- Adicionar ícones únicos e relevantes para cada sub-status (por exemplo, PersonAdd for New Lead, Message for Left Message) - Ícones manter a cor do status pai (verde para Fresco, azul para Reckoning, laranja para Fazenda, vermelho para Grim, cinza para Vazio) - Importar ícones adicionais de Material-UI para sub-status - Atualizar getSubStatusIcon para mapear cada sub-status para o seu ícone único - Fresh: PersonAdd, Mensagem, Evento, Agenda, PlayArrow, Descrição, Carrinho de Compras, Pagamento - Reconhecimento: Sincronização, atribuição, atribuiçãoTurnedIn, compilação, expedição local - Fazenda: Florista Local, Polegar Baixo, Telefone Desabilitado, Negócios, AnexarMoney, AcessibilidadeNovo, Bloco - Grim: Print, SignalWifiOff, PersonOff, Aviso, Não Perturbar, RestaurarDeTrash - Vazio: Ciência, ContentCopy
· kamo-internal
Adicionar ícones às cores de status pai da coluna de sub- status
- Adicionar a função de ajuda getSubStatusIcon para determinar o ícone com base no status pai - Ícones de substatus usam os mesmos ícones e cores que seu status pai - Subestatutos frescos: Ícone NewLançases verde - Reconhecido como substatus: ícone Gavel azul - Sub-estatutos agrícolas: ícone da agricultura laranja - Substatus sombrios: ícone corvo vermelho - Vazio sub- estatísticas: ícone cinza Cancelar

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