Журнал изменений
Что нового.
Каждое усовершенствование платформы, как только она появится.
· SecurityService
Извлечь RoleRightsSyncService и добавить конечную точку синхронизации прав
RoleRightsSyncService: централизует логику синхронизации прав на роль для обеих сторон ************************* Таблицы; Стартап и по требованию DataLoader: делегаты на RoleRightsSyncService.syncAll() SecurityRoleController: POST / синхронизация прав без перезапуска
· kamo-shared-library
Сделайте права на роль DTO управляемыми и добавьте синхронизацию прав модели безопасности
- SecurityRoleDTO.fromOrgRole(): перечислить все права Типовые значения с DB Настройки как поиск - новые права появляются с NOT SPECIFIED автоматически ********************** аналогичный подход Модель безопасности для ролей по умолчанию - OrgRoleRight.type: добавьте явную аннотацию @Enumerated (EnumType.ORDINAL) **************** Добавить вставку IfAbsent native Запрос для запуска и синхронизации по требованию
· kamo-internal
Разрешить несколько окон поддержки билетов с дедупликацией ticketId
· kamo-internal
Добавьте чип типа членства и продвигайте / удаляйте карту статуса членства, удалите поле тайм-аута сеанса
· SecurityService
Добавить конечную точку PATCH / членства для продвижения / понижения члена
· kamo-shared-library
Добавить нативное обновлениеMemberType и обеспечить запросы TeamMemberRow в MemberRepository
· kamo-shared-library
Добавить ALLOW PROMOTING MEMBERS (id 132)
· kamo-internal
Продвижение POS и ESIG от планирования к завершению
· kamo-shared-library
Продвижение POS и ESIG от планирования к завершению
· kamo-internal
Показать город и подразделение посетителя билета гео ряд
Дисплей как «Город, Регион, Страна (IP)» — нули фильтруются таким образом Уменьшается, когда доступны только данные по странам
· MediaService
Экспозиция города и подразделения в гостевом геопоиске
- Расширение георезультатной записи с полями города и подразделения - Switch SupportTicketService.toDTO() для использования GeoLookupService (IP-уровень) Поиск) вместо геолокации только по стране, так что город и Подразделение населено из соответствующего блока GeoLite
· kamo-shared-library
Добавить VisitorCity и VisitorSubdivision для поддержки TicketDTO
· kamo-internal
Добавьте парам URL вкладки на страницу /account для глубоких ссылок и повышения настойчивости
Состояние вкладки теперь синхронизировано с ****************, поэтому ссылки для конкретной работы вкладок и правильная вкладка остается выбранной на обновлении страницы.
· kamo-internal
Показать флаг посетителя, страну и IP в заголовке билета
- Добавить VisitorIpAddress, VisitorCountryCode, VisitorCountryName для поддержки - Render flag emoji + название страны + строка IP-адреса в TicketHeader
· kamo-shared-library
Добавьте геополя для посетителей в службу поддержкиTicketDTO
· MediaService
Показать флаг посетителя и местоположение в заголовке билета поддержки
Введите PublicChatVisitorRepository и GeoLiteLocationRepository в службу поддержки Заселить посетителяIpAddress, VisitorCountryCode, VisitorCountryName в toDTO() через геопоиск GeoLookupService уже заселяет посетителя.countryCode при создании сессии
· kamo-marketing
Заменить нативный WebSocket на STOMP/SockJS в LiveSupportPanel
- Добавить пакеты @stomp/stompjs и sockjs-client Подключение к медиа.{domain}/ws/public-chat через SockJS+STOMP WebSocket to api.{domain} - неправильный хост и неправильный протокол После подключения STOMP подпишитесь на /topic/chat/session/{guid} и уведомлять backend через /app/chat/subscribe для активации реле NATS JetStream - Агентские ответы теперь текут: MediaController -> NATS -> ChatWebSocketКонтроллер -> Брокер STOMP -> LiveSupportPanel посетителя в режиме реального времени
· MediaService
Исправьте сквозной публичный чат в режиме реального времени через STOMP/NATS
- Удалить требование внутреннего аудита от PublicChatWebSocketInterceptor Таким образом, посетители могут подключаться напрямую, используя только свой сессионный маркер. Включите имя посетителя в качестве имени отправителя в ChatMessageDto Узнать, кто посылает сообщения в TicketChat Включите имя отправителя в STOMP messageMap, пересылаемый по подписке NATS Агент и посетитель видят имена отправителей в сообщениях в реальном времени
· kamo-shared-library
Добавить имя отправителя в ChatMessageDto для поддержки имен отображения чата
· kamo-internal
Автооткрытая поддержка всплывающих билетов в уведомлении NEW TICKET NATS
Когда приходит новый билет поддержки, бэкэнд теперь отправляет NEW TICKET STOMP в дополнение к PENDING COUNT. Контекст поддержки обрабатывает его с помощью инструмента отправки: откройте, чтобы всплывало окно чата билета Автоматически без необходимости переключаться на/поддерживать.
· kamo-marketing
Добавить /подтвержденную связь страницу с анимированным героем, временной линией и CTA
Замените сообщение об успехе в контактной форме выделенной премией Страница подтверждения: анимированная галочка SVG с разрывом частиц, Что происходит Следующая 3-ступенчатая временная шкала и CTA-карты «While You Wait». Все 23 локальных файла Подтвержденные ключи i18n.
· kamo-internal
Добавить раздел настроек (timezone, age req, флаги контента, описание, псевдоним); удалить кнопки Preview/AddDomain
· kamo-internal
Redesign LabelManager — редактирование встроенного раздела, исправление сломанного сохранения, по умолчанию только для чтения
Переписывает LabelManager.tsx с рисунком чтения/редактирования. Исправляет сломанное спасение кнопка (validateForm заблокирована, потому что поля контактов и компаний никогда не были заполнены) от API. Удалить глобальную форму, отправить, проверить форму, состояние ошибок, режим предварительного просмотра и Разбросанные кнопки Save. Каждый раздел теперь загружает данные из API на монтировку, показывает чистоту Строки только для чтения по умолчанию и имеют встроенный поток Edit/Save/Cancel. Все семь разделов (Информация о компании, брендинг, фоновые изображения, контактная информация, пользовательские этикетки, социальные ссылки) сохранять самостоятельно без блокировки проверки поперечного поля.
· EmailService
Добавить валидатор домена KamoMail для блокировки адресов электронной почты перекрестных арендаторов
Вводит компонент KamoMailDomainValidator, который проверяет на уровне обслуживания соответствует ли представленный домен электронной почты проверенному домену по умолчанию KamoMail является активным поставщиком. Вводится в MailboxProvisioningService, AliasService и SharedMailboxService — звонят до того, как произойдет какое-либо предоставление. Возвращает 403, если домен не совпадает.
· kamo-internal
Ограничение домена KamoMail на почтовый ящик, псевдоним и создание общего почтового ящика
Когда KamoMail является поставщиком электронной почты, пользователи могут создавать только почтовые ящики. псевдонимы и общие почтовые ящики с использованием проверенного домена по умолчанию. Обеспечение соблюдения на трех независимых уровнях: интерфейс интерфейса (префикс + заблокированный домен) Ввод с отключенным состоянием, когда домена нет, Next.js proxy (параллельный провайдер) + проверка домена безопасности перед пересылкой) и уровня обслуживания Java.
· kamo-marketing
Прочитайте logoFullExt от config.json для динамического расширения логотипа
· kamo-register
Прочитайте logoFullExt с config.json; исправить site.webmanifest путь в подкаталог favicon
· kamo-login
Прочитайте logoFullExt от config.json для динамического расширения логотипа
· kamo-internal
Обеспечение тематики организации - крюк WebSocket, панель обеспечения, проводка LabelManager, триггер DNS, размер bg, контекст ThemeConfig
· MediaService
Relay NATS theme provision progress to STOMP WebSocket

Ваша вселенная ждет.
Начните бесплатно через несколько минут. Добавляйте продукты, когда будете готовы — без миграции, без новых логинов.
Бесплатно навсегда — не требуется кредитная карта