Журнал изменений
Что нового.
Каждое усовершенствование платформы, как только она появится.
· kamo-shared-library
Заменить биллинг на уровне организации моделью BillingGroup
Представляет BillingGroup, BillingGroupMember, BillingGroupSubscription, BillingGroupLicense, BillingGroupPaymentMethod, BillingGroupInvoice Предприятия BillingGroupConfig (все в рамках совместной торговли / billing / billinggroup). Бросает старую подписку BillingSubscription / BillingCustomer / BillingConfig / BillingPaymentMethod / BillingInvoice / BillingCredit / BillingUsageSnapshot все организации — каждая организация теперь получает группу по умолчанию с бесплатной ошибкой Подписка KamoCRM в качестве базовой. Обновление SecurityModelCommerceMarket Связывание моделей безопасности с торговыми рынками с поддержкой каждого уровня.
· SecurityService
Линия участников Центра взаимодействия использует названия должностей
Замените название роли RBAC на jobTitleOfficial, вернитесь к JobTitle Название каталога для TeamMember и ярлык Member для базового участника Записи в поле полезной нагрузки отдела.
· kamo-internal
Официальное место работы для членов команды на моей карточке позиции
· kamo-shared-library
Добавить TeamMember.jobTitleОфициальная необязательная строковая колонка (60 залов)
· SecurityService
Разоблачать и сохранять jobTitleOfficial для членов команды по профилю и API безопасности членов
· KlusterServices
Используйте ECDSA P-256 для спецификаций сертификатов и мигрируйте RSA
· kamo-shared-library
Добавить findTeamMemberById для надежного разрешения TeamMember
· kamo-shared-library
Типы ветвей нагрузки с моделями безопасности от org id
· kamo-shared-library
Опциональный кэш-контроль для загрузки объекта
Используется для создания тем, поэтому globals.css и config.json инструктируют браузеры и прокси для повторной проверки вместо обслуживания устаревших кэшированных объектов.
· SecurityService
Тема: Пересмотр заголовков в конфигурациях и кэшах по тематическим активам
Emit themeRevision (epoch ms) в config.json на каждую запись; набор Cache-Control на config, globals.css и сайте. Webmanifest загружает так, чтобы кэши ревалидировались.
· kamo-shared-library
Добавить ******************* для очистки аватара
Используется при удалении аватара, поэтому член переопределяется, ссылаясь на ту же строку, может быть очищен перед удалением.
· kamo-internal
Clear wizard sessionХранение свежего создания через ?fresh=1
Навигация из Сети для создания с ?fresh=1, удаление запроса и использование короткоживущий замок, поэтому React Strict Mode не восстанавливает старый черновик Непрерывные бега. Wizard draft lives in sessionStorage (не локальное хранилище).
· kamo-shared-library
Политика соблюдения законов об алкоголе / табаке / огнестрельном оружии
- CHILD ORG SECURITY MODELS столбцы и сущности по умолчанию MEMBER SELECT - DTO и ChildOrgSecurityModelService создают/обновляют нормализацию - AppliedModelEnforcementService применяет политику в отношении флагов ATF детских организаций и возрастов одиночек
· SecurityService
Разоблачать политику соблюдения ATF в отношении моделей и типов создаваемых филиалов
Организационный контролер применяет типовое правоприменение до утверждения возраста SecurityModelController и MasterModelController проходят политические поля - BranchTypeController включает в себя политики в /branch-типах /креативных
· kamo-internal
Мастер соответствия из политик модели безопасности
API типов филиалов отображает политику алкоголя / табака / огнестрельного оружия в состояние волшебника Шаг динамического соответствия: опустить из nav, когда модель фиксирует все ATF и возрасты Возраст и ATF контролируются только тогда, когда MEMBER SELECT или несколько вариантов возраста - Обзор показывает только те поля, на которые был запрошен пользователь; Настройки соответствия заголовку Настройки: радиоприемники ATF в разрешенных возрастных диапазонах (модель безопасности) - Submit использует эффективное соответствие ForSubmit для принудительной ценности
· SecurityService
Align KnownAliases с DNS и авто-сертификатом (добавить почту, играть, приложения, знак; выбросить приложение, медиа)
· kamo-marketing
Показать живое состояние со ссылкой changelog и ежедневным счетом
Замените предварительный просмотр обратного отсчета и регистрационную копию компактным «Now LIVE» Callout, сохраняйте ссылку changelog и всегда покажите сегодняшний счет изменений от API после его загрузки. Обновите предварительный просмотр строк Баннера в разных местах.
· 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 — безопасный для повторного запуска. Добавление/удаление числовых значений теперь требует Только перезапуск службы безопасности.
· 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
· 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)
· 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 для себя
· 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
· kamo-internal
Скрыть кнопку отмены подписки для оригинальной организации пользователя на странице сети
· SecurityService
Настройте OrgOriginal на регистрацию и разоблачите IsOriginalOrg в моих сетях
· kamo-shared-library
Добавить ОргОригинальное поле Пользователю для отслеживания регистрации
· 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
· kamo-shared-library
Добавить права участника-запрашивающего (133-136)
Добавляет четыре новых права на поддержку для неагентов: **************** (133) - CREATE SUPPORT TICKET (134) - REQUEST WEBINAR (135) VIEW MY SCHEDULED WEBINARS (136)
· kamo-internal
Удалите фильтры столбцов из вкладок членов и членов команды
· kamo-internal
Добавить кнопку Sync Rights в SecurityRoleManager для организаций верхнего уровня
Кнопка видна только тогда, когда сайт organization.hasParent является ложным. Звонки POST/api/security/roles/sync-rights перезагружает таблицу ролей.
· SecurityService
Извлечь RoleRightsSyncService и добавить конечную точку синхронизации прав
RoleRightsSyncService: централизует логику синхронизации прав на роль для обеих сторон ************************* Таблицы; Стартап и по требованию DataLoader: делегаты на RoleRightsSyncService.syncAll() SecurityRoleController: POST / синхронизация прав без перезапуска

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