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

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

Что нового.

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

  1. · kamo-shared-library

    Заменить биллинг на уровне организации моделью BillingGroup

    Представляет BillingGroup, BillingGroupMember, BillingGroupSubscription, BillingGroupLicense, BillingGroupPaymentMethod, BillingGroupInvoice Предприятия BillingGroupConfig (все в рамках совместной торговли / billing / billinggroup). Бросает старую подписку BillingSubscription / BillingCustomer / BillingConfig / BillingPaymentMethod / BillingInvoice / BillingCredit / BillingUsageSnapshot все организации — каждая организация теперь получает группу по умолчанию с бесплатной ошибкой Подписка KamoCRM в качестве базовой. Обновление SecurityModelCommerceMarket Связывание моделей безопасности с торговыми рынками с поддержкой каждого уровня.

  2. · SecurityService

    Линия участников Центра взаимодействия использует названия должностей

    Замените название роли RBAC на jobTitleOfficial, вернитесь к JobTitle Название каталога для TeamMember и ярлык Member для базового участника Записи в поле полезной нагрузки отдела.

  3. · kamo-internal

    Официальное место работы для членов команды на моей карточке позиции

  4. · kamo-shared-library

    Добавить TeamMember.jobTitleОфициальная необязательная строковая колонка (60 залов)

  5. · SecurityService

    Разоблачать и сохранять jobTitleOfficial для членов команды по профилю и API безопасности членов

  6. · KlusterServices

    Используйте ECDSA P-256 для спецификаций сертификатов и мигрируйте RSA

  7. · kamo-shared-library

    Добавить findTeamMemberById для надежного разрешения TeamMember

  8. · kamo-shared-library

    Типы ветвей нагрузки с моделями безопасности от org id

  9. · kamo-shared-library

    Опциональный кэш-контроль для загрузки объекта

    Используется для создания тем, поэтому globals.css и config.json инструктируют браузеры и прокси для повторной проверки вместо обслуживания устаревших кэшированных объектов.

  10. · SecurityService

    Тема: Пересмотр заголовков в конфигурациях и кэшах по тематическим активам

    Emit themeRevision (epoch ms) в config.json на каждую запись; набор Cache-Control на config, globals.css и сайте. Webmanifest загружает так, чтобы кэши ревалидировались.

  11. · kamo-shared-library

    Добавить ******************* для очистки аватара

    Используется при удалении аватара, поэтому член переопределяется, ссылаясь на ту же строку, может быть очищен перед удалением.

  12. · kamo-internal

    Clear wizard sessionХранение свежего создания через ?fresh=1

    Навигация из Сети для создания с ?fresh=1, удаление запроса и использование короткоживущий замок, поэтому React Strict Mode не восстанавливает старый черновик Непрерывные бега. Wizard draft lives in sessionStorage (не локальное хранилище).

  13. · kamo-shared-library

    Политика соблюдения законов об алкоголе / табаке / огнестрельном оружии

    - CHILD ORG SECURITY MODELS столбцы и сущности по умолчанию MEMBER SELECT - DTO и ChildOrgSecurityModelService создают/обновляют нормализацию - AppliedModelEnforcementService применяет политику в отношении флагов ATF детских организаций и возрастов одиночек

  14. · SecurityService

    Разоблачать политику соблюдения ATF в отношении моделей и типов создаваемых филиалов

    Организационный контролер применяет типовое правоприменение до утверждения возраста SecurityModelController и MasterModelController проходят политические поля - BranchTypeController включает в себя политики в /branch-типах /креативных

  15. · kamo-internal

    Мастер соответствия из политик модели безопасности

    API типов филиалов отображает политику алкоголя / табака / огнестрельного оружия в состояние волшебника Шаг динамического соответствия: опустить из nav, когда модель фиксирует все ATF и возрасты Возраст и ATF контролируются только тогда, когда MEMBER SELECT или несколько вариантов возраста - Обзор показывает только те поля, на которые был запрошен пользователь; Настройки соответствия заголовку Настройки: радиоприемники ATF в разрешенных возрастных диапазонах (модель безопасности) - Submit использует эффективное соответствие ForSubmit для принудительной ценности

  16. · SecurityService

    Align KnownAliases с DNS и авто-сертификатом (добавить почту, играть, приложения, знак; выбросить приложение, медиа)

  17. · kamo-marketing

    Показать живое состояние со ссылкой changelog и ежедневным счетом

    Замените предварительный просмотр обратного отсчета и регистрационную копию компактным «Now LIVE» Callout, сохраняйте ссылку changelog и всегда покажите сегодняшний счет изменений от API после его загрузки. Обновите предварительный просмотр строк Баннера в разных местах.

  18. · SecurityService

    Сделайте RoleRightsSyncService полностью самовосстанавливающимся на каждом ботинке

    Добавление или удаление RoleRightType никогда не должно снова требовать запуска. KamoInitializerService. syncAll() теперь работает в три этапа на каждом стартапе: 1. Ограничения на исцеление — отбросьте каждое ограничение CHECK на каждом правом носителе Обеспечить наличие двух необходимых уникальных ограничений. Hibernate bakes enum значения в ограничениях CHECK на CREATE TABLE время и никогда не обновляет их, и @UniqueConstraint только вступает в силу На Творении Сказки, поэтому оба дрейфуют всякий раз, когда эволюционируют числа. @ Перечисленный Он уже использует действительные значения на уровне Java. 2. Удалить права сирот — Удалить, где право тип НЕ В (текущий список) На всех шести правых столах: Org role rights, **************** Member rights, Member rights applied, job title rights, dept rights. Обрабатывает как ORDINAL int, так и STRING enum-name storage. 3. Включить отсутствующие права — без изменений; опираясь на уникальные ограничения обеспечивается на этапе 1. Idempotent — безопасный для повторного запуска. Добавление/удаление числовых значений теперь требует Только перезапуск службы безопасности.

  19. · kamo-internal

    Добавить настройки администрирования платформы — гранты, события, каталог планов

    - Новые страницы в разделе /settings/platform (охраняемые HasPlatformAdminAccess): - /организации - список каждой организации, грант/изменить/отозвать планы COMP с причинами -/events - audit feed of ******************* - /plans - каталог только для чтения, включая внутренние (isPublic = ложные) планы - useUserInfo: выводит HasPlatformAdminAccess из GodModeActive() OR (teamMember.isOrganizationOwner И organization.isTopLevel) - billingApi: пространство имен платформы (listOrgs, grantPlan, changeGrant, revokeGrant, ListPlans, listEvents) + заголовок X-God-Mode-Active при установлении флага локального хранилища - /api/billing proxy: пересылает X-God-Mode-Active от клиента к BillingService Settings Hub + SettingsStatusWindow: новая группа «Администрирование платформы» BillingManager: баннер владельца платформы заменяет форму Stripe для организации верхнего уровня (проводится в /settings/account в качестве вкладки для выставления счетов) - FeaturesManager: заголовок «Владелец платформы — Внутренняя» и подавленное обновление CTA, когда орг является верхним уровнем, а текущая подгруппа - COMP - Класс организации / OrgNetwork / PublicProvider: добавить isTopLevel; удалить; мертвое поле «тип» и оставшиеся потребители на странице сети + отношения менеджер - Удалить устаревшие OrganizationType.ts

  20. · BillingService

    Добавить контроллер PlatformAdmin + сервис для грантов на комп-план

    - PlatformAdminController at /api/billing/platform (классовый уровень @PlatformAdminOnly) - GET/orgs, GET/orgs/{orgId} - POST/orgs/{orgId}/grants, PATCH |DELETE/orgs/{orgId}/grants/{subId} - GET/планы (включает в себя isPublic=false) GET/события - PlatformAdminService: грант создает COMP SubscriptionRecord, отменяет предыдущие активные Исполнитель: SubscriptionEvent **************************** 5s Идемпотенция - @PlatformAdminOnly + HandlerInterceptor: разрешите активную работу в режиме бога (TeamMember.isOrganizationOwner AND Organization.isTopLevel, перечитайте из DB) - SubscriptionRenewalScheduler: отделение COMP отменяется по истечении срока действия (COMP EXPIRED) И никогда не звонит Стрип - BillingAdminService: агрегация MRR/ARR исключает платежMethod=COMP - Длинные идентификаторы, открытые в виде струн (CockroachDB unique rowid precision)

  21. · InitializerService

    Seed Organization.isTopLevel для камокрома и OWNER UNLIMITED

    DataLoader: организация выпадения Type arg from createOrg, set isTopLevel=true on kamocrm KamoCRMAgeReqUpdateRunner + test: match on IS TOP LEVEL = TRUE вместо TYPE - OrganizationTypeRemovalRunner: идемпотентный тип ALTER TABLE DROP COLUMN PlatformOwnerPlanSeeder: Идеально обеспечить, чтобы принадлежащий компании kamocrm план OWNER UNLIMITED охватывал все функции и имел постоянную подписку COMP для себя

  22. · kamo-shared-library

    Добавить Organization.isTopLevel, PaymentMethod.COMP, COMP * типы событий; удалить Организацию Тип номера

    Организация: заменить мертвое поле "тип" флагом "isTopLevel" для идентификации владельца платформы - PaymentMethod: добавьте COMP для бесплатных грантов для администраторов платформ (без Stripe) - SubscriptionEventType: add COMP GRANTED, COMP REVOKED, COMP EXPIRED, COMP MODIFIED - OrganizationRepository: add findFirstByIsTopLevelTrue() - OrganizationService: drop setType() call; поля теперь управляются isTopLevel

  23. · kamo-internal

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

  24. · SecurityService

    Настройте OrgOriginal на регистрацию и разоблачите IsOriginalOrg в моих сетях

  25. · kamo-shared-library

    Добавить ОргОригинальное поле Пользователю для отслеживания регистрации

  26. · kamo-internal

    Участник-заявитель поддерживает права gating и двухрежимный вид билета

    NavTop: покажите кнопку поддержки для любого права поддержки (агента или участника) - SupportButton: шлюз каждого выпадающего элемента по праву - Создать / Просмотреть билеты, Запрос вебинара, Мои вебинары показываются только тогда, когда проводится право ПоддержкаTicketListTab: двойной режим — агенты видят полную таблицу с темой фильтрация и переключение по назначению; участники-запросники видят свои собственные Билеты только (созданы ByMe=true), упрощенные столбцы, Новый билет CTA - support/page.tsx: gate Tickets/My Webinars/Analytics tabs - Настройки страниц (аккаунт, отделы, интеграции, операции): Добавить CONFIGURE SYSTEM redirect guard; настройки панели управления My Account Раздел закрыт системой CONFIGURE SYSTEM

  27. · kamo-shared-library

    Добавить права участника-запрашивающего (133-136)

    Добавляет четыре новых права на поддержку для неагентов: **************** (133) - CREATE SUPPORT TICKET (134) - REQUEST WEBINAR (135) VIEW MY SCHEDULED WEBINARS (136)

  28. · kamo-internal

    Удалите фильтры столбцов из вкладок членов и членов команды

  29. · kamo-internal

    Добавить кнопку Sync Rights в SecurityRoleManager для организаций верхнего уровня

    Кнопка видна только тогда, когда сайт organization.hasParent является ложным. Звонки POST/api/security/roles/sync-rights перезагружает таблицу ролей.

  30. · SecurityService

    Извлечь RoleRightsSyncService и добавить конечную точку синхронизации прав

    RoleRightsSyncService: централизует логику синхронизации прав на роль для обеих сторон ************************* Таблицы; Стартап и по требованию DataLoader: делегаты на RoleRightsSyncService.syncAll() SecurityRoleController: POST / синхронизация прав без перезапуска

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

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

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