Перейти к содержимому
KAMOUniverse

Журнал изменений

Что нового.

Каждое усовершенствование платформы, как только она появится.

  1. · kamo-internal

    Стратегия автоматического назначения и автоматическое открытие назначенного разговора

    Настройки тем получают четвертую стратегию. Список строк и диалог редактирования разделяйте одну и ту же этикетку, и ключ, отправленный в камо-переводческий словарь, сначала сообщения / гитигнорирован здесь и бросает ключ, отсутствующий в en.json, Таким образом, посадка этого перед словарем приведет к постройке, страница которой падает. AssignedTicketOpener поднимает окно билета в тот момент, когда работа становится такой члена, и снова на входе для чего-либо назначенного, пока они были в отъезде. Оба Пути выполняют один прием /назначенный-неоткрытый, поэтому "он прибыл, пока я был здесь" и «Он прибыл, пока меня не было» — это один случай, а не два механизма, которые имеют Согласиться — Назначенный толчок является ядром НАТС и просто теряется, если никто не Прослушивание, поэтому оно рассматривается как подсказка, и сервер держит запись. Не привязаны к доступности или к правилам акцепта-попапа: это не предложение Что может быть декодером, работа уже назначена. Всплывающее окно существует для Противоположная ситуация. В отличие от автоматического открытия NEW TICKET, удаленного в добавлении 9036, Подозреваемый достигает только одного агента, которого он касается, поэтому он не может открыть окно. на каждом экране в орг.

  2. · MediaService

    AUTO ASSIGNMENT, и поднять назначенный разговор на экране агента

    Запрос чата и представленный билет - это одна и та же единица работы. Стратегия — это единственное, что решает, как передать то или другое. The Специальный случай PRE TICKET исчез. AUTO ASSIGNMENT выбирает наименее занятого агента, который действительно находится в Интернете. WebSocket через PresenceService, никогда недоступность status, который только движется дальше login, logout и ручной переключатель, и поэтому читается неограниченно для любого Который никогда не подписывается. Никто не подключил к нему декодеры, вместо того, чтобы прикреплять работу отсутствующему агенту: назначенный билет оставляет заявляемую очередь, поэтому плохой выбор Застревает там, где никакое всплывающее окно не может достичь его. По той же причине AUTO ASSIGNMENT присоединяется к заявляемым стратегиям — билеты, которые они декодируют, являются именно теми, которые Это произошло, когда никто не был в сети, и они все еще должны связаться с кем-то. ADMIN ASSIGNS остается единственной стратегией, которая никогда не может быть востребована. Рабочая нагрузка включает в себя все живые статусы, включая PRE TICKET (человек, ожидающий своего часа). Чат - самая тяжелая вещь, которую держит агент, и не терминальная. Две конечные точки обратной передачи: GET/tickets/assigned-unopened. Клиент читает на входе, и POST ****************, который выходит на пенсию Один. Чтение существует, потому что ASSIGNED push является ядром NATS без повтора. Без него работа, назначенная в то время как агент был подписан, просто ждет в списке. Чтобы быть замеченным. Надпись распространяется на цессионария и марки только один раз, поэтому два Гонки на вкладках - это не операция, а конфликт.

  3. · kamo-shared-library

    Стратегия AUTO ASSIGNMENT и длительный отчет о невидимой передаче

    AUTO ASSIGNMENT(3) прилагается к SupportAssignmentStrategyType — присваивается немедленно агенту, который действительно находится в сети, предпочитая того, кто владеет Наименьшее количество работы, чем строгая ротация ROUND ROBIN. Добавлено, Никогда не переупорядочены: колонка @Enumerated (ORDINAL). Колонка также несет числовой диапазон CHECK Hibernate, излучаемый на CREATE TABLE. И никогда не пересматривает. Потому что этот пункт содержит И это не список, Так что SchemaCleanupRunner's generic dropStaleEnumWhitelistChecks() sweep пропускает его И в этом случае все меняется, и все меняется, и все меняется. Вставить с использованием нового значения не удается. SupportTicket получил название ASSIGNMENT OPENED AT. Назначение объявлено по ядру НАТС без переигровки, поэтому агент, который был подписан, когда работа приземлилась, никогда не слышит об этом. Нулевой от назначения до тех пор, пока клиент фактически не поставит разговор на экран, это делает "назначенный мне и никогда не видел" серверная сторона факт, что Выживает после выхода из строя, аварии, передислокации или другой машины. Два запроса на репозиторий: countOpenForAgent (разрыв рабочей нагрузки) и найдите неоткрытые подписи для агента (догоняющий вход).

  4. · kamo-internal

    Чип прикрепленного приложения запускает приложение, а не его настройки

    Ведущий чип прикрепленной полосы связывался с посадкой настроек приложения — То же самое место, где уже находится его первый вход. Теперь он заимствует это приложение опцион оптом, поэтому он несет собственный значок приложения и ведет себя точно так же, как Nav dos: CRM открывает / ведет под болт Leads, AI Support открывает помощника Windows, Support и Mail, а также Docs и Phone раскрывают меню суб-опций. Чат открывает центр взаимодействия, Встречи открывает приглашение на новую встречу. Chat and Meetings - это фиксированный nav-хром без возможности регистрации, поэтому группа Открывает их сам — центр взаимодействия через оконное событие NavTop Слушает, так как там живет его открытое государство. Участник, который может настроить приложение, но не может его использовать, не имеет для него навигационной опции. И эта полоса сохраняет старый чип посадки настроек, а не вручается Дверь, которая откажет. Также фиксирует бровь полосы, которая наследовала операторские чернила. для светлых поверхностей и исчезающих в полосе орга.

  5. · EmailService

    Синхронизируйте организационный календарь с телефонами, не открывая дыры

    У общего календаря нет владельца, поэтому листинг DAV, связанный с учетной записью, может Никогда не возвращайте его: события компании были явно в Интернете и невидимы. На каждом телефоне. Домашняя коллекция теперь объединяет собственные календари счета. с общей организацией. Причина, по которой это требовало ухода, а не одного дополнительного запроса: аутентифицирует учетную запись, а не членство, поэтому просто разоблачает календарь Это сделало бы его написанным любым, чей телефон мог бы до него дотянуться. Вокруг публикации право веб-путь обеспечивает. PUT и DELETE решили членство в DAV и применять то же правило: CREATE ORG CALENDAR EVENTS для записи в общий календарь, право собственности на Напишите личному, 403 иначе. Доступ к чтению остается намеренно шире, чем к письму. Общий календарь является предназначена для того, чтобы быть видимой для всех в организации; Это. Ограничивается только публикация. Тесты охватывают обход конкретно: нет права, нет членства в этом. организации, а в общем календаре каждой организации отказано, При этом правообладатель допускается.

  6. · InitializerService

    Добавьте и заполните счета. date созданный

    Hibernate не может добавить это сам: ddl-auto излучает его НЕ НУЛЬНО. CockroachDB отказывается на столе, который уже имеет ряды. При этом он добавляется нулевой Здесь, забитый, затем ограниченный. Backfill декодирует уникальный rowid() первичный ключ каждой учетной записи, который упаковывает время вставки в высокие биты, которое восстанавливает реальный счет каждого Время создания вместо сглаживания всех 23 существующих рядов на миграцию временная метка, которая сделала бы порядок восходящей даты списка бессмысленным Именно для счетов, которые были самыми длинными. Этот макет является Детали реализации CockroachDB, поэтому декодер сначала проверяется на соответствие члены, имеющие как уникальный ключ rowid(), так и записанную дату создания; Он применяется только в том случае, если он воспроизводит их. На производственном цикле он совпал 62 из 62 и восстановили все 23 счета, ни один из которых не попал в резерв. Порядок 0, опережающий любой другой бегун: сущность отображает столбец как только Эта сборка начинается, поэтому любой бегун, который загружает учетную запись, выдает ее в своем SELECT. Заказанный поздно, этот никогда не бегал вообще - LeadContactPointSeedRunner умер на "column a1 0.date created не существует" и взяла на себя ответственность.

  7. · kamo-shared-library

    Когда был создан аккаунт

    Учетная запись вообще не имела метки времени создания — ни нулевой колонки, ни колонки. Список аккаунтов имеет колонку Date Created и заказы по ней, так что колонка С тех пор, как была создана таблица, все счета были пустыми. Источник из базы данных, а не СПМ, согласно правилу дома для временные метки. Соответствующая колонка и заполнение для существующих строк находятся в KamoInitializer’s AccountDateCreatedMigration, который уже запущен.

  8. · kamo-internal

    Pin Enabled App для домашней стартовой площадки

    Каждая тема Enabled Apps теперь имеет переключатель контактов в подварианте «Настройки» меню и в заголовке его раздела на целевой странице настроек. Прикрепленное приложение получает собственный горизонтальный ярлык на домашней стартовой площадке — выбранный участник аналог панели администратора, несущий каждый экран, который открывает приложение. Пин - это предпочтение дисплея, никогда не право: прикрепленный список - это пересекается с живыми воротами участника на каждом рендере, поэтому отозванное право или приложение, которое выключает орг, немедленно удаляет полосу и сохраняет Предпочтение обрезается, чтобы соответствовать, а не врать бездействующий. Дерево настроек за меню и полосами теперь происходит от одного Решитель (useSettingsTopics), поэтому они не могут дрейфовать.

  9. · kamo-internal

    Дайте Mobile Copilot создать свою собственную полноразмерную страницу

    Телефонная поверхность стала третьей вкладкой Центра взаимодействия выкат, который охватил его на рельсе 500px — слишком узко, чтобы показать установку код и код входа бок о бок, так что два шага были разрушены За переключателем и весь поток читается как столбец сложенных фрагментов. группа, чья ячейка входа в систему работает и отсчитывает код, а затем колоду панели, расширяющиеся с помощью видоискателя — две на планшете, три на ноутбуке, Четыре через 1800px. Оба кода имеют один кадр видоискателя со сканированием Это то, что заставляет два шага читаться как один инструмент. Поток OTK перешел в использованиеMobileSignIn, чтобы герой и панель входа Читайте в том же государстве. Навигационная железная дорога и домашняя стартовая площадка теперь направляются к страница вместо отправки центра открытого взаимодействия, который оставляет событие без диспетчера, так что он и первоначальный пропеллер панели исчезли.

  10. · kamo-internal

    Восстановить календарь вокруг текущего момента

    Страница была функциональной сеткой с хромом, говорящим: 3px Радужное правило под панелью инструментов, второе по содержанию, градиент Кнопки и четыре свободные кнопки значка для переключателя просмотра. Громко, где это было Неважно и тихо, где это было — на экране ничего не ответило на вопрос. Календарь открыт для ответа. Организующая идея сейчас: что дальше, и сколько осталось дня. NextUpBar сидит над сеткой со временем, следующим событием и живой жизнью Обратный отсчет, по линии волос, показывающей, как далеко в течение рабочего дня. NowSpine переносит текущий момент через недельную сетку со своим временем Жвачка, и PastVeil перенасыщает часы, которые уже прошли, так что же это такое? Сегодняшнее чтение с первого взгляда. Цвет зарезервирован для них: Это единственная живая вещь на странице, поэтому это единственное, что разрешено. Цвет жильца в полную силу. ViewSwitcher заменяет четыре кнопки значка. Четыре иконы читаются как четыре несвязанные действия; сегментированный контроль читается как одна настройка с четырьмя Позиции, что это такое. Выбранные таблетки скользят между ними через Общий макет вместо кроссфейдинга. Время устанавливается в Geist Mono с табличными фигурами в течение всего времени — часовой рельс, часы, часы. обратный отсчет, цифры даты — поэтому столбцы времени являются прямым краем и цифрами Не дрогните, как они тикают. CalendarThemeScope отражает консоль контактов: альфа() MUI не может разобрать var(), поэтому окрашенные свойства переопределены и цветовая смесь обеспечивает Шторы. Каждый токен происходит от - цвет первичный, так что это читается как разработано Под брендом любого арендатора, а не под его именем. Чипы событий месяца становятся тонированной землей с твердым передним краем вместо этого. белый текст на насыщенном заполнении, который был неразборчив при 11px. Недельные ряды это фиксированная высота, потому что позвоночник преобразует время в пиксели — ряд, который вырос Оставил бы его указывающим в неподходящее время; вместо этого свитки переполненного часа. Уменьшенное движение соблюдается: пульс и слайд останавливаются, часы делают Нет. Его положение — информация, и остановленные часы были бы неверны. чем спокойствие. Также исправлены два реальных бага, найденных во время работы здесь: забег календаря UUID идентификаторы через число (), поэтому каждое значение было NaN, и он предлагал календари. Депутат не может писать. Теперь в нем перечислены только написанные, и именно так Календарь организации остается только для чтения без права публикации.

  11. · InitializerService

    Переместите календари на членства и дайте каждой организации общий

    Календарь и события находились в собственности учетной записи и не имели организации. Это прикрепляет каждого к самому раннему членству его владельца - организации, которую он возглавляет. Учетная запись принадлежала самой длинной, которая на практике там, где был календарь. сделанный — так календарь попадает в одну организацию, а не в одну дублируется по всем из них. Счета, где этот выбор был существенным отсчитываются в журнале, потому что для них календарь перестает быть видимым из других их организаций. События следуют календарю, на котором они живут, а не их собственному пользователю. Событие никогда не может закончиться в другой организации, чем календарь. Показать его. DROP DEFAULT на user id - это несущее заявление. Эта колонка Предшествовало этому изменению и содержало DEFAULT unique rowid() от User.id all Безобидно, потому что оно не было НУЛЬНЫМ и всегда было написано явно. Сделать его недействительным, чтобы общий календарь мог существовать без владельца. превратил его в смертельный: INSERT, который опускает user id, запускает по умолчанию, изобретает Идентификатор пользователя никому не принадлежит, и подводит иностранный ключ к пользователям. Это Как в первом запуске были предусмотрены нулевые организационные календари. The Теперь предприятия прикрепляют тип колонки, поэтому ddl-auto не может восстановить его. Idempotent all: backfills только трогают строки без члена, и Общий календарь вставляется только в том случае, если у организации его нет.

  12. · kamo-shared-library

    Соберите календари для члена и добавьте право публикации в масштабе всей организации

    UserCalendar и CalendarEvent отключились от USER ID и не организации. Пользователь является глобальным, а член — это пользователь внутри одного пользователя. Счет, принадлежащий нескольким организациям, имел одну кучу Календарь, видимый со всех сторон. Обе организации получают MEMBER ID и ORGANIZATION ID, а также календарные прибыли. IS ORG CALENDAR — единственный общий календарь, который есть у организации, читаемый Каждый участник и пишется только с новым правом. USER ID остается населенным и аннулируемый: CalDAV и рабочие места внешнего синхронизации аутентифицируют учетную запись Вместо подписки, они законно читаются пользователем. Это просто перестает быть областью авторизации. Каждый новый соединительный столбец контакты столбец Определение = "INT8", включая уже существующих пользователей. Оставленный неподкрепленным, Hibernate копирует упомянутый ключ INT8 DEFAULT unique rowid() на FK; вставка, которая опускает колонку Затем изобретает идентификатор, не принадлежащий ничему, и подводит иностранный ключ. Это Это не гипотетически, это то, что остановило первую миграцию. Создание единого организационного календаря. Новые права CREATE ORG CALENDAR EVENTS (196) Читать календарь остается ВИДЕО КАЛЕНДАР; этим управляет только тот, кто может поместить что-то в календарь. Вся организация видит. findByOrganizationMemberId переименован в findByUserId. Он никогда не ограничивался член — запрос есть и был c.user.id = :userId — и имя то, что Пригласил этот класс жуков. FindVisibleToMember и его эквивалент события Просмотров-участников.

  13. · InitializerService

    Ручные контакты с адресной книгой обратно их владельцам

    EmailService теперь охватывает все контакты читать на contact books.owner id оставляет контакты уже сидящими в бесхозной организации-дефолте Книга недоступна. CONTACT.OWNER ID НЕ НУЛЬНЫЙ и был заселён Каждая строка с тех пор, как путь создания начал устанавливать его, поэтому участник, который добавил Каждый контакт точно известен — ничего не предполагается. Эти положения a Личная книга на человека (организация, владелец) и переносит каждый контакт в свою собственного владельца. Две вещи преднамеренно застревают и учитываются в журнале, а не вынужденный: - Столкновения UID. uk contact uid book является уникальным (UID, CONTACT BOOK ID), Таким образом, контакт, UID которого уже существует в пункте назначения, потерпит неудачу. Обновить и ничего не перемещать. Эти строки остаются на месте; переписывание UID будет Сломать клиента CardDAV, который его выдал. - Группы со смешанной собственностью. У строки contact groups есть книга, но нет владельца. группа, члены которой принадлежат нескольким лицам, не может быть отнесена к одного из них. Перемещаются только группы, члены которых имеют одного владельца. Сама бесхозяйная книга сохранена: ее контрольное ограничение - это то, что делает ее Законно, и падение его будет каскадом в группы и членства. Проверка контактов и групп, а не только контактов. А. Группа присваивается через владельцев ее членов, а не через Эти члены живут, поэтому группы остаются подвижными после каждого контакта. Перемещались; только подсчет контактов пропускал их во второй раз.

  14. · VOIPService

    Точка в YugabyteDB и используйте PostgreSQLDialect

    CockroachDB был заменен на YugabyteDB. Связные струны движутся от cockroachdb-public:26257 to yb-tserver-service:5433, и диалект Hibernate От **************** до PostgreSQLDialect.

  15. · SecurityService

    Точка в YugabyteDB и используйте PostgreSQLDialect

    CockroachDB был заменен на YugabyteDB. Связные струны движутся от cockroachdb-public:26257 to yb-tserver-service:5433, и диалект Hibernate От **************** до PostgreSQLDialect.

  16. · RAGService

    Точка в YugabyteDB и используйте PostgreSQLDialect

    CockroachDB был заменен на YugabyteDB. Связные струны движутся от cockroachdb-public:26257 to yb-tserver-service:5433, и диалект Hibernate От **************** до PostgreSQLDialect.

  17. · MediaService

    Точка в YugabyteDB и используйте PostgreSQLDialect

    CockroachDB был заменен на YugabyteDB. Связные струны движутся от cockroachdb-public:26257 to yb-tserver-service:5433, и диалект Hibernate От **************** до PostgreSQLDialect.

  18. · MCPGatewayService

    Точка в YugabyteDB и используйте PostgreSQLDialect

    CockroachDB был заменен на YugabyteDB. Связные струны движутся от cockroachdb-public:26257 to yb-tserver-service:5433, и диалект Hibernate От **************** до PostgreSQLDialect.

  19. · KBService

    Точка в YugabyteDB и используйте PostgreSQLDialect

    CockroachDB был заменен на YugabyteDB. Связные струны движутся от cockroachdb-public:26257 to yb-tserver-service:5433, и диалект Hibernate От **************** до PostgreSQLDialect.

  20. · kamolos

    Точка в YugabyteDB и используйте PostgreSQLDialect

    CockroachDB был заменен на YugabyteDB. Связные струны движутся от cockroachdb-public:26257 to yb-tserver-service:5433, и диалект Hibernate От **************** до PostgreSQLDialect.

  21. · ESigService

    Точка в YugabyteDB и используйте PostgreSQLDialect

    CockroachDB был заменен на YugabyteDB. Связные струны движутся от cockroachdb-public:26257 to yb-tserver-service:5433, и диалект Hibernate От **************** до PostgreSQLDialect.

  22. · EmailService

    Точка в YugabyteDB и используйте PostgreSQLDialect

    CockroachDB был заменен на YugabyteDB. Связные струны движутся от cockroachdb-public:26257 to yb-tserver-service:5433, и диалект Hibernate От **************** до PostgreSQLDialect.

  23. · DocsService

    Точка в YugabyteDB и используйте PostgreSQLDialect

    CockroachDB был заменен на YugabyteDB. Связные струны движутся от cockroachdb-public:26257 to yb-tserver-service:5433, и диалект Hibernate От **************** до PostgreSQLDialect.

  24. · DaemonService

    Точка в YugabyteDB и используйте PostgreSQLDialect

    CockroachDB был заменен на YugabyteDB. Связные струны движутся от cockroachdb-public:26257 to yb-tserver-service:5433, и диалект Hibernate От **************** до PostgreSQLDialect.

  25. · ConversionService

    Точка в YugabyteDB и используйте PostgreSQLDialect

    CockroachDB был заменен на YugabyteDB. Связные струны движутся от cockroachdb-public:26257 to yb-tserver-service:5433, и диалект Hibernate От **************** до PostgreSQLDialect.

  26. · APIService

    Точка в YugabyteDB и используйте PostgreSQLDialect

    CockroachDB был заменен на YugabyteDB. Связные струны движутся от cockroachdb-public:26257 to yb-tserver-service:5433, и диалект Hibernate От **************** до PostgreSQLDialect.

  27. · BillingService

    Точка в YugabyteDB и используйте PostgreSQLDialect

    CockroachDB был заменен на YugabyteDB. Связные струны движутся от cockroachdb-public:26257 to yb-tserver-service:5433, и диалект Hibernate От **************** до PostgreSQLDialect.

  28. · AIService

    Точка в YugabyteDB и используйте PostgreSQLDialect

    CockroachDB был заменен на YugabyteDB. Связные струны движутся от cockroachdb-public:26257 to yb-tserver-service:5433, и диалект Hibernate От **************** до PostgreSQLDialect.

  29. · KlusterServices

    Unique rowid() shim и непубличные схемы в YugabyteDB

    Шим - это последовательность, посаженная на максимальном уровне производства плюс маржа. The Семя имеет два требования, а не одно: оно должно превышать каждый существующий идентификатор. Первая вставка после огранки сталкивается, и она должна превышать 2^53, потому что ids Кроме того, сериализуются как строки, и контракты API уже предполагают это. Проверено: возвраты > 2^53 и > максимальная производительность, 1000 вызовов различны, и «INT8 DEFAULT unique rowid()» работает дословно как столбец по умолчанию. точка, так как она позволяет все строки 520 столбца Определить в donotmodify Общая библиотека остается байт за байтом без изменений. Также предварительно создаются пять непубличных схем. Сибирь не создает schemas unless hbm2ddl.create namespaces=true, что KamoInitializerService Не устанавливается, поэтому без этих же 34 стола снова пропали бы.

  30. · KlusterServices

    Unique rowid() shim и непубличные схемы в YugabyteDB

    Шим - это последовательность, посаженная на максимальном уровне производства плюс маржа. The Семя имеет два требования, а не одно: оно должно превышать каждый существующий идентификатор. Первая вставка после огранки сталкивается, и она должна превышать 2^53, потому что ids Кроме того, сериализуются как строки, и контракты API уже предполагают это. Проверено: возвраты > 2^53 и > максимальная производительность, 1000 вызовов различны, и «INT8 DEFAULT unique rowid()» работает дословно как столбец по умолчанию. точка, так как она позволяет все строки 520 столбца Определить в donotmodify Общая библиотека остается байт за байтом без изменений. Также предварительно создаются пять непубличных схем. Сибирь не создает schemas unless hbm2ddl.create namespaces=true, что KamoInitializerService Не устанавливается, поэтому без этих же 34 стола снова пропали бы.

Ваша вселенная ждет.

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

Бесплатно навсегда — не требуется кредитная карта