Журнал изменений
Что нового.
Каждое усовершенствование платформы, как только она появится.
· kamo-internal
LabelManager Software ID UI + название внутренней вкладки
- Информация о компании: имя программного обеспечения / короткое имя + имя входа / регистрации + селекторы заголовков вкладок - Брендинг: программное обеспечение полные / простые загрузки логотипа, переопределение переключателей и на поверхности селекторы идентификации (watermark, navpri, login/register logos) - вынужденно-правовые поверхности, сообщаемые как всегда-компания (документы/электронная почта/счета-фактуры/и т.д.) - макет: внутренний заголовок вкладки браузера решается через внутренний TabBrandSource
· kamo-internal
3-ступенчатая форма бортового наведения (создать → закончить DNS → ввести)
Обобщите героя первого класса в единую панель руководства с ключом на счетчике принадлежащих доменов участника + статус DNS (из /api/security/org/my-networks): Создать — не владеет детской организацией → запустить первую бело-маркированную организацию (/network/create) dns — владеет 1 DNS, не проверенным → конечная настройка домена (/setup/dns?orgId=..) enter — владеет 1 DNS complete → enter it (входит как OTK → внутренний.<domain>) Как только они владеют второй организацией, ни одна панель не показывает — они знают веревки. DNS-расход точно отражает правило сетевой страницы (таможенный домен & & domainSetupComplete ====ложный); *.kamocrm.com не нуждается в DNS. Каждый этап имеет свою акцентную семью. (people/work/crm), иконка и копия; CTA - это ссылка для создания/dns и aync Вступайте в действие на готовой стадии. Безопасный (без панели) при любой ошибке извлечения.
· kamo-internal
Двойной разрешитель компании / программного обеспечения + доставка + потребление
Organization.ts: доставить идентификатор программного обеспечения + селекторы на поверхности через OrgContext - brand.ts: **************** (+ очевидцы, 8 случаев) - ThemeLogo: logoSoftware/logoFullSoftware NavPri: логотип navpri + текст следуют за селектором внутреннего логотипа программного обеспечения BackgroundWatermark + Backdrop: водяной знак чествует идентичность программного обеспечения (оба пути)
· SecurityService
Типы загрузки логотипа программного обеспечения + config.json Bake
- uploadLogo: явный переключатель объектного ключа **************** с отклонением по умолчанию, поэтому загрузка программного обеспечения никогда не может подавить логотип компании. - copyFolder: сохранить загруженные логотипы программного обеспечения на шаблоне повторной копии - config.json: идентификация программного обеспечения для выпечки + селекторы для входа в систему / регистрации - тесты: UploadLogoObjectKeyTest, buildConfigJson
· kamo-shared-library
Добавьте в Организацию колонки с белыми ярлыками
· kamo-shared-library
Поля брендинга программного обеспечения Persist через белый список patchOrganization
· kamo-internal
Герой First-org CTA для участников платформы
Покажите героя на борту в верхней части домашней стартовой площадки, приглашая KamoCRM-платформенный член (не член команды), который еще не создал детская организация, чтобы создать свою первую организацию белых мечей. Выдающийся Кнопка CTA и встроенный «click here» связывают оба маршрута с /network/create. И копия указывает на «Мои ветви» выше. Получено на userInfo.memberType === MEMBER + organization.isTopLevel; остается Скрытые, если /api/security/org/my-сети не подтверждают, что у них нет ребенка и не скрывает (скрыто) от любых ошибок. Следуя инструменту Язык дизайна панели (человеческий акцент, кглас, оператор-лейбл, дом) Смягчение, пониженное движение. Струны под домом. Первый орган.
· VOIPService
Конечная точка TURN-REST для мобильного софтфона
GET/api/voip/turn/credentials mints ephemeral coturn creds (HMAC-SHA1 over) "<expiry>:<memberId>" с общим статико-ауто-секретным) таким родным/клеточным WebRTC может передавать данные через 47.181.8.84:3478. Auth через тот же X-***-Token Используется конечная точка; возвращается сконфигурированный: ложный (только STUN), когда секрет отсутствует. Провода KAMO TURN SECRET из существующего *** (факультативно).
· SecurityService
Экспозиция per-org PrimaryColor + URL логотипа в /my-сетях
Каждая строка теперь несет первичный цвет (Organization.colors.colorPri, '#'-prefixed) для соответствия config.json и производному logoUrl/logoSimpleUrl (тема.<domain>/public/) Логотипы и шестиглавые граничные цвета per-org.
· MediaService
Интеграция с веб-чатом Snapshot для поддержки посетителя + билет
Решает интеграцию WebChat, создавая KeyHash (с возможностью фильтрации). в соответствии с разрешением bootstrap()/AI-prompt СоздаетSupportSession и штамповывает свой идентификатор на PublicChatVisitor и SupportTicket для атрибуции на сайте. Null/lank keyHash Никакое согласование с включенной интеграцией не оставляет колонки нулевыми.
· AIService
Per-integration public AI prompt + атрибуция сеанса
Обновить общедоступный чат-система-быстрый водопад от per-org до per-integration: PublicAiChatController теперь читает Заголовок X-Public-Chat-Key-Hash (отменяется) пересылается APIService и *************************************************************** WebChatИнтеграция по хэшу и предпочитает свою систему AiOrgSettings по умолчанию, возвращаясь к общей подсказке. The AiChatSession также имеет штамп WebChatIntegrationId для Стабильная атрибуция, которая выживает при вращении ключей. Извлеченный водопад в статическое, проверенное единицей разрешение помощник (интеграционные выигрыши / org-fallback / generic-fallback / blank) управление.
· APIService
GET/api/public-chat/bootstrap шлюз
Добавьте конечную точку bootstrap, которая повторно использует существующий трубопровод proxyWithAuth. (ключевая валидация + опция происхождения + область применения PUBLIC CHAT + предел скорости +) X-Public-Chat-Key-Hash) и прокси для конечной точки загрузки MediaService.
· MediaService
Public-chat bootstrap config resolver
Добавляет внутренний GET ****************, который разрешает WebChatIntegration by X-Public-Chat-Key-Hash и возвращает свой разрешенный Конфигурация дизайна/поведения (заполняется по умолчанию через WebChatDefaultConfig.merge) Таким образом, ключ без строки интеграции по-прежнему отображается как сегодняшний виджет. Возвращение в активную организацию PublicChatApiKey без интеграции 404s, когда хеш ключа не решается вообще.
· MediaService
WebChatIntegration CRUD (mints key + integration, org-scoped)
Org-facing management API для вкладки настроек веб-чата Фазы-2. На Создание, мяты лежащий в основе PublicChatApiKey (один и тот же ключевой подход) как PublicChatKeyController) наряду с строкой WebChatIntegration и Один раз возвращает ключ. Список/получить/обновить/удалить являются собственностью организации Проверено; обновление разбивает кэш (Task-5) бутстрапа при разработке Config или разрешенных изменений.
· kamo-shared-library
Добавить столбцы атрибутов WEB CHAT INTEGRATION ID для посетителя/билета/ай-сессии
· kamo-shared-library
WebChatIntegration entity + repo + DTO + конфигурация дизайна по умолчанию
· kamo-internal
Добавить «Доступное мобильное приложение Copilot» точки входа на дом + NavPri
Обе поверхности отправляют событие «центр открытого взаимодействия», которое слушает NavTop. для открытия Центра взаимодействия на вкладке «Настройка мобильного приложения». Домашний показывает маркированная таблетка под контролем обоев; NavPri показывает значок логотипа ниже пробная таблетка (маркировка при расширении, подсказка при коллапсе). Обоих завораживает ALLOW MOBILE ACCESS.
· kamo-internal
Пароль-ворот QR, однострочная вкладка, логотип-левый заголовок, 10-минутный код
- Участник должен повторно ввести свой пароль (проверенный сервером через /api/mobile-access-otk, Который печатает ОТК только на успехе) до того, как раскрывается QR - мешает кому-то на уже подписанном компьютере от его захвата. QR/OTK теперь живет 10 минут (600 секунд); обратный отсчет времени затем блокируется. - ярлык вкладки, вытесненный на одну линию; логотип перемещается слева от названия, чтобы сохранить вертикальное пространство; Удалите таблетку «Конфигурация для».
· SecurityService
Пост ******************* — мобильный телефон
Проверяет собственный пароль абонента (passwordEncoder). матчи против своей сессии пользователя, ничего не меняя. Используется маршрутом BFF mobile-access-otk Настройка QR производится только после повторного подтверждения пароля.
· kamo-internal
Настройка вкладки Mobile Access — QR для установки + автоконфигурация Mobile Copilot
Новая 3-я вкладка в NavTopPanel (справа ALLOW MOBILE ACCESS): показывает фирменный QR кодирует короткоживущую глубокую ссылку OTK (камокопилот: / / настройка), которая подписывает входит в их телефон и по умолчанию приложение к текущей организации. автоматическое восстановление OTK до истечения срока действия; полированный макет MUI с основным цветом организации. Добавить
· kamo-shared-library
Добавить ALLOW MOBILE ACCESS (167)
Новый RoleRightType (serviceType=null → General group) Вкладка "Взаимодействие-центр". RoleRightsSyncService заполнит его на все роли на перезапуске службы безопасности; появляется под общими разрешениями в редакторе ролей.
· AIService
Per-org public prompt, человеко-рукопожатие без провайдера, ежедневная кепка сообщений
· kamo-shared-library
Добавить запрос на использование anon для публичной квоты веб-чата
· APIService
Проверить *** PoW на краю создания публичной сессии (при наличии полезной нагрузки)
· MediaService
Bust APIService ключ кэш немедленно на чат ключ переключения / удаления
· MediaService
Настойчивое создание ключевого хэша на посетителе публичного чата + билет для атрибуции
· kamo-shared-library
Добавить publicDailyMessageCap в AiOrgSettings для квоты онлайн-чата
· kamo-shared-library
Добавить колонки атрибутов для создания ключей к хэшу в PublicChatVisitor + SupportTicket
· kamo-shared-library
Добавить findOrganizationOwners для каждого участника системы публичных чатов
· MediaService
Мобильная push-отправка (FCM-данные + прямые APN) с наличием шлюза
входящий чат (MediaController), билет поддержки (SupportNotificationService), SMS/voicemail (VoipStompRelayController), социальный **************** Присутствие, например, пользователь электронной почты с пропущенным сообщением (пропустите, когда есть розетка) вверх. Android = высокоприоритетный FCM только для данных; iOS = прямой APN HTTP/2 через Pushy (нет) Firebase на iOS; APNS VOIP зарезервировано для будущего пути CallKit. Переговоры лимит ставки. POST/api/internal/push/dispatch (X-Internal-Auth) Потоки. Отправители не работают до тех пор, пока не будет предоставлен сервисный счет FCM + APNs .p8.

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