Закладка Resolve Members показывает пустой из-за проблемы базового класса Hibernate TYPE
TYPE(m) Hibernate = :type JPQL filter возвращает 0 результатов при связывании Параметром является базовый класс участника (JOINED наследование). Это влияет на К...
Включить Hibernate SQL loging для диагностики возвращающихся запросов участников 0
Временно включенный org.hibernate.SQL=DEBUG, чтобы увидеть, что такое SQL JPQL-запрос генерирует конечную точку подписчиков.
Показать флаг посетителя, страну и IP в заголовке билета
- Добавить VisitorIpAddress, VisitorCountryCode, VisitorCountryName для поддержки - Render flag emoji + название страны + строка IP-адреса в TicketHeader
Показать флаг посетителя и местоположение в заголовке билета поддержки
Введите PublicChatVisitorRepository и GeoLiteLocationRepository в службу поддержки Заселить посетителяIpAddress, VisitorCountryCode, VisitorCountryName в toDTO(...
Добавить диагностическое ведение журнала, чтобы получить конечную точку участника и подписчика
Logs orgId, подсчет результатов запроса и статус на члена активен, чтобы помочь Диагностировать, почему на вкладке «Члены» отображается пустой список.
Отметьте сообщения посетителей как тип VISITOR MESSAGE, добавьте имя отправителя в сообщения GET
- PublicChatService: установите messageType=VISITOR MESSAGE, чтобы интерфейс мог различать Посетитель перекликается с ответами агентов на тему STOMP - MediaCont...
Относитесь к типу VISITOR MESSAGE как к всегда от них в TicketChat
Сообщения посетителей, опубликованные через PublicChatService, содержат сообщение Тип = VISITOR MESSAGE. Явно пометьте их как автора = «они» независимо от участ...
Отголоски Skip VISITOR MESSAGE в LiveSupportPanel STOMP
Сообщения посетителей теперь помечены тэгом messageType=VISITOR MESSAGE. Пропустите их в подписке STOMP, чтобы собственные сообщения посетителя не Повторно появ...
Заменить нативный WebSocket на STOMP/SockJS в LiveSupportPanel
- Добавить пакеты @stomp/stompjs и sockjs-client Подключение к медиа.{domain}/ws/public-chat через SockJS+STOMP WebSocket to api.{domain} - неправильный хост и ...
Исправьте сквозной публичный чат в режиме реального времени через STOMP/NATS
- Удалить требование внутреннего аудита от PublicChatWebSocketInterceptor Таким образом, посетители могут подключаться напрямую, используя только свой сессионны...
Добавить имя отправителя в ChatMessageDto для поддержки имен отображения чата
Проводите фильтр состояния и автоматические шаблоны в списке
- EmailTemplateController.list() теперь принимает ?status= param и фильтры используя существующий запрос репозитория findByOrgIdAndStatus - Автосемена требовали...
Автооткрытая поддержка всплывающих билетов в уведомлении NEW TICKET NATS
Когда приходит новый билет поддержки, бэкэнд теперь отправляет NEW TICKET STOMP в дополнение к PENDING COUNT. Контекст поддержки обрабатывает его с помощью инст...
Three support/chat issues — NATS relay, auto-popup, topic fallback
1. Switch SupportNotificationService and SupportStompRelayController from JetStream to core NATS — the CHAT_MESSAGES stream only covers chat.> so JetStrea...
Allow god-mode users to provision ownerless orgs; prefer FQDNs in domain resolution
Всегда запускайте тему резервирования на сохранение брендинга; пусть backend разрешает серверную часть домена
Add @Transactional to provision-theme for lazy domain loading; remove hardcoded domain from provision request
Используйте URL вместо href в BreadcrumbJsonLd для контактного подтверждения
Write contact form description as chat message on public ticket creation
The description was only stored on the ticket entity and never appeared in the chat window. Added writeTextMessage() helper and call it after the system event s...
Отдельный номер билета / ряд значков от названия в TicketHeader
Титул делил гибкий ряд с номером билета и двумя бейджи, в результате чего его отрезают. Теперь номер билета и значки занимают Их собственный компактный ряд, и н...
Добавить /подтвержденную связь страницу с анимированным героем, временной линией и CTA
Замените сообщение об успехе в контактной форме выделенной премией Страница подтверждения: анимированная галочка SVG с разрывом частиц, Что происходит Следующая...
Обработка ключа билетов в ответ на список поддержки
MediaService возвращает {билеты: [...], TotalElements } но интерфейс Проверяется только на данные. Содержание, в результате чего список всегда становится пустым...
Используйте PATCH /org/{id}/colors для сохранения бренда, чтобы избежать сбоя нулевого булевого ограничения
Добавить конечную точку PATCH/org/{id}/colors для безопасного обновления только полей цветовой палитры
Правильный порт MEDIASERVICE URL от 443 до 80 для контактной формы
Служба ClusterIP разоблачает только порт 80; использование 443 с http Ошибка ConnectTimeout в каждой контактной форме.
Добавить раздел настроек (timezone, age req, флаги контента, описание, псевдоним); удалить кнопки Preview/AddDomain
Redesign LabelManager — редактирование встроенного раздела, исправление сломанного сохранения, по умолчанию только для чтения
Переписывает LabelManager.tsx с рисунком чтения/редактирования. Исправляет сломанное спасение кнопка (validateForm заблокирована, потому что поля контактов и ко...
Добавить валидатор домена KamoMail для блокировки адресов электронной почты перекрестных арендаторов
Вводит компонент KamoMailDomainValidator, который проверяет на уровне обслуживания соответствует ли представленный домен электронной почты проверенному домену п...
Ограничение домена KamoMail на почтовый ящик, псевдоним и создание общего почтового ящика
Когда KamoMail является поставщиком электронной почты, пользователи могут создавать только почтовые ящики. псевдонимы и общие почтовые ящики с использованием пр...
Прочитайте logoFullExt от config.json для динамического расширения логотипа
Прочитайте logoFullExt с config.json; исправить site.webmanifest путь в подкаталог favicon
Прочитайте logoFullExt от config.json для динамического расширения логотипа
Add theme provisioning — NATS publisher, provision-theme endpoint, logo upload
Добавить логотипFullExt в организационную структуру; добавить список объектов в MinIOStorageService
Замените иконки смайликов на твердые иконки SVG для создания шага мастера
Скрыть предложение модели безопасности для членов, исправить перекрытие значка на карточках типа ветки
Use memberID session key and include creatorType in creatable branch-types response
Добавить findByBranchTypeID производный запрос в OrganizationRepository
Поддерживает новую конечную точку /branch-types/{id}/usages в SecurityService для проверки того, имеет ли тип ветви активные детские организации перед удалением...
Add GET /branch-types/creatable and /{id}/usages endpoints
/creatable returns branch types filtered by the caller's creator-type (OWNERS/TEAM_MEMBERS/MEMBERS) via AppliedModelEnforcementService. /{id}/usages returns th...
Удаление типа защитной ветви против использования активных организаций
Прежде чем удалить чип типа ветви, интерфейс теперь вызывает **************************** Если существуют какие-либо орги, это показывает информационный диалог,...
Use correct session key 'memberID' instead of 'MID'
KSessionService stores member ID under key 'memberID' but both **************** and OrganizationController were reading session.get("MID") which always returned...
Live support ticket badge on NavTop — SupportCountContext подписывается на NATS через STOMP, показы значков ожидают подсчета
Live pending support ticket count via NATS — notify org owner on new tickets, add pending-count REST endpoint
Set org owner usernameAlias on creation and fix website-contact member alias
Как вы видите судоходство?
Каждое из этих обновлений автоматически попадает в ваше рабочее пространство. Начните бесплатно и смотрите, как он растет неделю за неделей.