Сделайте RoleRightsSyncService полностью самовосстанавливающимся на каждом ботинке
Добавление или удаление RoleRightType никогда не должно снова требовать запуска. KamoInitializerService. syncAll() теперь работает в три этапа на каждом стартап...
Отбросьте устаревшие ограничения CHECK на колонки enum прав по умолчанию
Hibernate autogenerates CHECK (колонка IN ('VAL1', 'VAL2', ...)) ограничения на CREATE TABLE for @Enumerated (EnumType.STRING) столбцы, замораживание номера Спи...
Добавить недостающие уникальные ограничения для поднятия ролей
**************************** + SyncSecurityModelRoleRights Использование «ON CONFLICT (role id, right type) НЕ НИЧЕГО» «ON CONFLICT (default role id, right type...
Добавить уникальное ограничение (role id, right type) в OrgRoleRight
Требуется для НА КОНФЛИКТ ничего не делать в ******************* Без этого ограничения синхронизирующий запрос терпит неудачу "без уникальности или исключения"....
Удалить звонки getType() от OrganizationController после Organization Удаление типа
Удалить устаревшую организацию Тип номера
В настоящее время список выходит на пенсию — идентификация организации-владельца платформы теперь определяется новой Организацией. флаг верхнего уровня, а остал...
Добавить настройки администрирования платформы — гранты, события, каталог планов
- Новые страницы в разделе /settings/platform (охраняемые HasPlatformAdminAccess): - /организации - список каждой организации, грант/изменить/отозвать планы COM...
Добавить контроллер PlatformAdmin + сервис для грантов на комп-план
- PlatformAdminController at /api/billing/platform (классовый уровень @PlatformAdminOnly) - GET/orgs, GET/orgs/{orgId} - POST/orgs/{orgId}/grants, PATCH |DELETE...
Seed Organization.isTopLevel для камокрома и OWNER UNLIMITED
DataLoader: организация выпадения Type arg from createOrg, set isTopLevel=true on kamocrm KamoCRMAgeReqUpdateRunner + test: match on IS TOP LEVEL = TRUE вместо ...
Прекратите перезаписывать аватар участника с аватаром зарегистрированного пользователя на просмотр профиля
fetchAvatars fetched /api/security/avatars (без использования MemberID; всегда возвращается) аватары зарегистрированного пользователя) и называется setActiveAva...
Добавить Organization.isTopLevel, PaymentMethod.COMP, COMP * типы событий; удалить Организацию Тип номера
Организация: заменить мертвое поле "тип" флагом "isTopLevel" для идентификации владельца платформы - PaymentMethod: добавьте COMP для бесплатных грантов для адм...
Также спрячьте кнопку отмены подписки для владельцев организаций на странице сети
Добавить пропущенный маршрут синхронизации прав
В POST/api/security/roles/sync-rights отсутствовал прокси-сервер Next.js. Кнопка Sync Rights в настройках ролей безопасности всегда выходит из строя.
Скрыть кнопку отмены подписки для оригинальной организации пользователя на странице сети
Настройте OrgOriginal на регистрацию и разоблачите IsOriginalOrg в моих сетях
Добавить ОргОригинальное поле Пользователю для отслеживания регистрации
Используйте PublicChatVisitor displayName для запроса Имя посетителя
Инициированный посетителем запрашивающий жёсткий код билетов члену системы org, поэтому DTO всплывало имя владельца организации в колонке Запросителя. падение Н...
Участник-заявитель поддерживает права gating и двухрежимный вид билета
NavTop: покажите кнопку поддержки для любого права поддержки (агента или участника) - SupportButton: шлюз каждого выпадающего элемента по праву - Создать / Прос...
Добавить права участника-запрашивающего (133-136)
Добавляет четыре новых права на поддержку для неагентов: **************** (133) - CREATE SUPPORT TICKET (134) - REQUEST WEBINAR (135) VIEW MY SCHEDULED WEBINARS...
Добавить кнопку Sync Rights в SecurityRoleManager для организаций верхнего уровня
Кнопка видна только тогда, когда сайт organization.hasParent является ложным. Звонки POST/api/security/roles/sync-rights перезагружает таблицу ролей.
Gate Support/Settings by rights, исправление сетевой копии, загрузка на переключатель вкладок, разделитель nav
- Сетевая карта: обновленное описание с использованием динамической метки заголовка ветки - Карта поддержки: фиксированная 404 с помощью изменения href /help → ...
Извлечь RoleRightsSyncService и добавить конечную точку синхронизации прав
RoleRightsSyncService: централизует логику синхронизации прав на роль для обеих сторон ************************* Таблицы; Стартап и по требованию DataLoader: де...
Сделайте права на роль DTO управляемыми и добавьте синхронизацию прав модели безопасности
- SecurityRoleDTO.fromOrgRole(): перечислить все права Типовые значения с DB Настройки как поиск - новые права появляются с NOT SPECIFIED автоматически ********...
Обратите плохие депсы заголовка и сканирование истории, которые показали имя агента в заголовке
Заголовок чат поддержки нулевой, распространение изменения имени из истории
Добавьте чип типа членства и продвигайте / удаляйте карту статуса членства, удалите поле тайм-аута сеанса
Добавить конечную точку PATCH / членства для продвижения / понижения члена
Добавить нативное обновлениеMemberType и обеспечить запросы TeamMemberRow в MemberRepository
Поддержка чата UX — обновления имен, заголовков, количества уведомлений, datagrid
TicketChat загорается на VisitorNameChanged, когда приходит событие NAME CHANGED WS - ПоддержкаTicketWindow отправляет инструмент: заголовок с запрашивающим име...
Отображайте системные события как дружественный текст в чате поддержки посетителей
События системы NAME CHANGED больше не показывают сырой JSON в пузыре чата. Они отображаются как центрированная курсивная таблетка («Изменяет имя на имя»). Друг...
Показать наложение загрузки AG Grid вместо пустого состояния на странице лидов
Инициируйте состояние загрузки, чтобы сетка показывала «Загрузка приводит ...» до тех пор, пока не завершится первый приём, предотвращая вспышку «Нет найденных ...
Используйте getOrganizationByIdWithFeatures в AppAvailability Перехватчик
Resolves LazyInitializationException on /api/security/leads and all Другие пути, связанные с CRM/POS. Перехватчик называется org.getFeatures(). после закрытия т...
Добавить findByIdWithFeatures, чтобы с нетерпением загрузить Organization.features
JOIN FETCH предотвращает LazyInitializationException доступ за пределами транзакции (например, в AppAvailabilityInterceptor).
Показать город и подразделение посетителя билета гео ряд
Дисплей как «Город, Регион, Страна (IP)» — нули фильтруются таким образом Уменьшается, когда доступны только данные по странам
Экспозиция города и подразделения в гостевом геопоиске
- Расширение георезультатной записи с полями города и подразделения - Switch SupportTicketService.toDTO() для использования GeoLookupService (IP-уровень) Поиск)...
Добавить VisitorCity и VisitorSubdivision для поддержки TicketDTO
Добавьте парам URL вкладки на страницу /account для глубоких ссылок и повышения настойчивости
Состояние вкладки теперь синхронизировано с ****************, поэтому ссылки для конкретной работы вкладок и правильная вкладка остается выбранной на обновлении...
Создайте ошибку в GeoLookupService и добавьте NATS для сообщений агентов
- Исправить несоответствие типа списка в **************** Введите NatsMessageService в MediaController Опубликовать на chat.session.{guid} после того, как агент...
Correct message sides in history and handle visitor name change events
- Use messageType=VISITOR_MESSAGE from API to determine left/right in history load - Add NAME_CHANGED system event rendering in SystemMessage and TicketChat
Real-time chat delivery, message sides, notifications, and name sync
- Keep NATS subscription alive on client unsubscribe to avoid breaking agent real-time delivery - Tag visitor messages with messageType=VISITOR_MESSAGE in getMe...
Как вы видите судоходство?
Каждое из этих обновлений автоматически попадает в ваше рабочее пространство. Начните бесплатно и смотрите, как он растет неделю за неделей.