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

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

Что нового.

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

  1. · kamo-marketing

    Добавить / запросить прямые нав-ссылки, раздел домашней страницы и строку сравнения функций плана

    Заголовок: Запросы добавлены в качестве прямой связи на высшем уровне между ценообразованием и компанией Footer: Запросы, добавленные в колонку Продукта для прямой видимости Страница цен: пользовательский баннер вызова dev между пакетами и сравнением функций Страница функций: вызов запросов функций перед CTA Главная страница: новый раздел FeatureRequests между ценами и FAQ, показывающий доступ на уровне плана JumpToBar: добавлена связь между ценами и FAQ - DB: FEATURE REQUESTS посевной в категории поддержки с значениями текста по плану (Бесплатно: Общественное голосование, Стартер: Голосование и запрос, Бизнес: Приоритетные запросы, Предприятие: Пользовательский разработчик включен) - KamoCRMPricingLoader: обновлено определением функции FEATURE REQUESTS и отображением характеристик плана

  2. · kamo-internal

    Round-trip appConfigs + настройки прикладной модели поверхности + переключатель private-org

    BranchSetupManager: mapBackendModel теперь увлажняет сохраняющиеся конфигурации приложений возвращенный бэкэндом (доступность + разрешенные CommerceTypes за услугу) Тип) вместо того, чтобы сбрасывать их в недоступную нагрузку. Сохранить полезные грузы как для ребенка-модели, так и для магистра-модели потоки включают в себя AppConfigs Доступность для каждого приложения и ограничения типа торговли CRM в оба конца. мастер Редактор модели повторно использует mapBackendModel, поэтому он ведет себя одинаково. - использовать AppliedModel hook: расширенный тип отклика теперь несет примененный Скалярные настройки модели (позволяют владельцам просматривать другие организации, позволяют владельцам частные организации, позволяетSubChildOrgs, возрастные диапазоны, идентификаторы TeamMemberPayFeesSetting), карта AppConfigs и orgIsPrivate — так что любой Будущий редактор (менеджер функций, конфигурация OAuth, коммерческий рынок) Равномерно, без перенабора. - Переключатель Private-org: новый маршрут прокси **************** (PATCH) и карточка видимости, всплывшая на вкладке типов ветвей, закрытая Позволяет владельцам частных организаций. При включении другие владельцы организаций не увидят этого. Орг в списках. Оптимистический интерфейс примиряется со следующей прикладной моделью Освежи.

  3. · BillingService

    Enforce team-member pay-fees setting at Stripe customer creation

    Bumps kamo-shared-library dependency to 1.5.0 so BillingService can resolve the new AppliedModelEnforcementService, and wires team-member vs org pay-fees enforcement into **************** - teamMemberPayFeesSetting == NOT_AVAILABLE: creating a member-specific billing customer (self-pay) is rejected — the org must cover fees. - teamMemberPayFeesSetting == FORCE_ENABLE: creating an org-level customer that would cover team-member charges is rejected — team members must pay themselves. - OPTIONAL: either flow is permitted. Enforcement is best-effort when the org can't be resolved (tooling contexts, legacy data) — falls through to the legacy behavior instead of blocking.

  4. · SecurityService

    Wire applied-model enforcement across every controller

    Every non-role setting on the applied security model is now enforced at the exact controller boundary it governs, and the scalar settings round-trip cleanly through the master/child model editors so the UI can gate on them. - **************** when branchTypeID is set, look up the branch type to derive the parent org; call assertSubChildOrgAllowed and assertAgeRangeAllowed for both member and team-member age slots before committing. New PATCH /{id}/visibility endpoint lets owners flip Organization.isPrivate, gated by assertCanSetPrivate. getAllOrganizations applies filterVisibleOrgsForViewer so results respect both allowOwnersViewOtherOrgs on the viewer's model and the isPrivate flag on candidates. - **************** call assertAppEnableAllowed / assertAppDisableAllowed so NOT_AVAILABLE apps can't be enabled and FORCE_ENABLED apps can't be disabled. - OAuthConfigController POST/PUT: assertCanManageIdentityProvider blocks provider CRUD when identityProviderSetting == NOT_AVAILABLE. - CommerceMarketController POST/PUT: assertCommerceTypeAllowed rejects a commerce type not listed in the model's appConfig for CRM. - SecurityModelController + MasterModelController: round-trip appConfigs through create/update payloads and the GET responses. New processAppConfigs helper accepts the list form used by the frontend editor. - AppliedModelController: response now includes the full scalar settings block (allowOwnersViewOtherOrgs, allowOwnersPrivateOrgs, allowSubChildOrgs, age ranges, identityProviderSetting, teamMemberPayFeesSetting) and the appConfigs map so frontend editors can gate uniformly. Also surfaces orgIsPrivate so the privacy toggle stays in sync.

  5. · kamo-shared-library

    Обеспечить выполнение всех неролевых настроек на ChildOrgSecurityModel

    Добавляет сквозное правоприменение для оставшихся настроек на применяемой организации Модель безопасности. Все, что было прочитано ранее (или прочитано ранее). Save (сохранить) теперь имеет путь настойчивости, помощник по обеспечению выполнения и пользовательский интерфейс Крючок, чтобы потреблять его. Слой данных: - Organization.isPrivate (булевая колонка, по умолчанию ложная) - собственная организация Флаг видимости, установленный через новый PATCH MasterModelController Конечная точка. - Доступность сервиса Тип номера (OPTIONAL DEFAULT ENABLED/) OPTIONAL DEFAULT DISABLED / NOT AVAILABLE / FORCE ENABLED - ChildOrgSecurityModelAppConfig entity + repo + service - сохраняется per-app Доступность (и разрешенные CRMCommerceTypes) ранее снижалась. ********************** Обход нового предприятия. Режим выполнения: - AppliedModelEnforcementService объединяет все чеки, используемые абонентами: УтверждаетSubChildOrgРазрешено, утверждаетAgeRangeРазрешено, **************************** IdentityProvider Требуется, УтверждаетCanSetPrivate, filterVisibleOrgsForViewer, TeamMemberCanSelfPayFees, isTeamMemberPayFeesForced/Blocked appEnableAllowed, assertAppDisableAllowed, getAppAvailability, getDefaultEnabledAppsForChild, assertCommerceTypeРазрешено, Разрешенные коммерческие типы. Нуль-безопасность: «никакая прикладная модель» позволяет все. - ChildOrgTemplateSeedingService расширен также для семенного OrgFeature родительские дефолты AppConfig (FORCE ENABLED) OPTIONAL DEFAULT ENABLED) на новых детских оргах, так недавно представленных Придумайте правильную поверхность по умолчанию.

  6. · kamo-internal

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

    - PublicProvider: допускать филиал TypeID/masterModelID на входе Полезная нагрузка организации, так что вкладка типа ветви может надежно закрыть Кнопка «Edit Master Model» (ранее полагалась на сериализацию Джексона) Пропуск через проверку типа реквизита. RolesPermissionsTab: сетка флажков теперь обозначает требуемую систему Роль (ы) как проверенная и отключенная в зависимости от типа члена и флага владельца: * Члены-типы: «Члены» требуется. * Члены команды: «Члены команды» необходимы. * Владельцы типа Team-Member: «Администратор (полный доступ)» требуется. «Требуемый» чип и пояснительный намек делают ограничение видимым для Редактор. Попытка переключать обязательную роль — это не-оп; бэкэнд Контроллер безопасности в любом случае добавит его.

  7. · SecurityService

    Enforce system-role assignment and auto-admin for team-member owners

    MemberSecurityController now enforces the three assignment invariants defined in the brainstorm spec: - saveMemberSecurity: before persisting the caller's requested roleIds, augments the set with the mandatory system role(s) based on member type: Member-typed members always get roleMemberID; Team-Member-typed members always get roleTeamMemberID; Team-Member owners additionally always get roleAdminID. LinkedHashSet preserves caller ordering while deduping. - updateMemberAccess: when the owner flag toggles, the Administrator role is added or removed on the team-member to keep role assignments in sync with ownership. Rights-applied recalculation runs in the same transaction so downstream reads see the updated effective permissions immediately.

  8. · kamo-shared-library

    Применять шаблонные правила силы и некорректный возврат к резолюции о правах членов

    **************** теперь накладывает наложенные 4 шаблона по умолчанию поверх существующего каскада (орг-роли) → отдел → должность → член: FORCE GRANTED/FORCE NUKE побеждает на всех каскадных уровнях. Шаблон выбирается по типу участника: используются владельцы членов команды Члены команды используют TEAM MEMBER, простые члены используют MEMBER. Значения DEFAULT FORCE побеждают каскад, когда шаблон ролевого типа не имеет форс-мажорного правила для этого права (в случае Q7). Недобросовестные несиловые значения (GRANTED/NUKE) действуют в качестве последней линии защиты. права, которые не были определены после полного каскада. AppliedModelResolverService вводится как @Autowired (обязательно = ложно) Существующие проводки юнит-теста, которые строят только два конструктора-обязательных Репозитории продолжают работать, унижая путь непринужденных правил.

  9. · kamo-internal

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

    Поверхность новой модели безопасности типа ветви в UI: - вкладка типа ветви получает кнопку «Изменить основную модель» (скрыто, когда орг имеет выделенную ветвь TypeID), которая открывает редактор модели в мастере Режим: нет поля имен, нет чипа типа ветки, сохраняется хит/мастер-модель. - Редактор моделей (как модель-добавление, так и модель-редактор) получает новую Раздел «Роли безопасности по умолчанию» после «Разрешенные приложения», с вкладками для Администратор/Член команды/Член/ДЕФАЛТ и 5-значные настройки (Force GRANTED, GRANTED, NOT SPECIFIED, FORCE NUKE, NUKE). - Новое использованиеAppliedModel() hook fetches /api/security/appliedmodel once и разоблачает Forced (rightName, roleType) для потребления редакторов. - Роли безопасности, отделы, должности, и на каждого члена роли-разрешения Страницы скрывают права, заблокированные соответствующими шаблонами: • функции безопасности: системные роли используют соответствующий шаблон + DEFAULT; Настраиваемые роли используют только DEFAULT (ответ Q11 A). * Отделы + названия должностей: только DEFAULT (не-ролевые). * страница участника: шаблон типа участника (TEAM MEMBER vs MEMBER) + DEFAULT (Ответ Q8 С, порядок оценки первого типа). Новые прокси-маршруты: /api/security/master-model (GET/PUT), /api/security/applied-model (GET).

  10. · SecurityService

    Master-model + applied-model endpoints and template-aware org seeding

    Adds the controllers that surface the new branch-type security flow: - /api/security/master-model (GET/PUT) manages the current org's master model; only writeable when Organization.branchTypeID is null. - /api/security/applied-model (GET) resolves which model governs this org and returns per-template force-rule maps for frontend gating. - SecurityModelController round-trips the 4 default-role templates as part of its existing create/update payloads. - OrganizationController propagates the new branchTypeID from the request body and seeds the new org's 3 system roles from the applied model's templates via ChildOrgTemplateSeedingService.

  11. · kamo-shared-library

    Добавьте мастер-модель, шаблоны ролей по умолчанию и прикладной решатель моделей

    Внедряет уровень данных для нового потока модели безопасности типа ветви: - Организация получает обнуляемые разделы TypeID и masterModelID. - Новая настройка RoleRightTemplate Тип числа с 5 значениями (FORCE GRANTED), GRANTED, NOT SPECIFIED, FORCE NUKE, NUKE) для настроек шаблонного уровня. - Новый DefaultRoleType enum (ADMINISTRATOR, TEAM MEMBER, MEMBER, DEFAULT) 4 ролевых шаблона, прилагаемых к каждой модели безопасности ChildOrg. - Новые организации ******************* ****************, плюс их репозитории, сервис и DTO. - AppliedModelResolverService решает модель, которая управляет данной организацией (branchType-inherited или master) и разоблачает форс-правила. ChildOrgTemplateSeedingService сеет 3 системные роли новых детских организаций Значения GRANTED/NUKE из шаблонов прикладной модели; значения силы остаются в шаблоне и исполняются во время выполнения. Конечный пользователь OrgRoleRight продолжает использовать 3-значный RoleRightSettingType — Значения силы являются строго концепцией шаблона-слоя.

  12. · kamo-internal

    Добавить поле ввода чипа типа ветви в редактор модели безопасности

    - BranchTypeChipField с цветным переключателем точек, меткой редактирования на клике и удалением X - BranchTypeEditDialog для редактирования имени/описания - Автозаполнение выпадающих тянет из GET/api/security/branch-типов, исключает текущие типы моделей, показывает исходную модель для кросс-моделей - handleSaveModel отправляет branchTypes и удаленныеBranchTypeIds в полезной нагрузке PUT/POST - Таблица списка получает столбец типов ветвей с цветными точечными чипами - loadModels maps branchTypes from backend response

  13. · kamo-login

    Удалить MANAGE USERS из RoleRightType

  14. · kamo-register

    Удалить MANAGE USERS из RoleRightType

  15. · kamo-internal

    Удалите MANAGE USERS прямо со всех ссылок на интерфейс

  16. · kamo-shared-library

    Удалить MANAGE USERS right (id=19) из RoleRightType

  17. · kamo-internal

    Добавить ветви безопасности API маршрут

  18. · SecurityService

    Wire branch types into security model CRUD endpoints

  19. · kamo-shared-library

    Расширьте ChildOrgSecurityModelDTO с полными полями и ветвями

  20. · kamo-shared-library

    Добавить OrgBranchTypeService

  21. · kamo-shared-library

    Добавить OrgBranchTypeRepository

  22. · kamo-shared-library

    Добавить OrgBranchTypeDTO

  23. · kamo-shared-library

    Добавить OrgBranchType

  24. · kamo-internal

    Обновление подзаголовка BranchSetupManager для ссылки на динамическую этикетку типа ветви

  25. · kamo-internal

    Переименовать вкладку «Настройка ветви» в динамические типы {branchLabel} и обновить URL-адрес до типов ветвей

  26. · kamo-login

    Перезагрузка Capcha *** после каждой неудачной попытки входа

    Пользователи должны подтвердить, что они являются людьми после каждого неправильного пароля. Вызовы widget.reset() и очистка состояния CapchaVerified/payload Неисправности учетных данных и сетевые ошибки.

  27. · EmailService

    Auto-inject logoUrl, logoSimpleUrl, and orgName variables at send time

    EmailTemplateService now merges base variables (logoUrl, logoSimpleUrl, orgName) derived from the org's primary domain before rendering, so all transactional templates can reference {{logoUrl}} and {{logoSimpleUrl}} without callers needing to pass them explicitly. Caller-supplied vars still take precedence.

  28. · kamo-internal

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

  29. · kamo-internal

    Добавить шлюз доступа и защиту вкладки MANAGE MEMBER SECURITY на страницу настроек участников

  30. · kamo-internal

    Добавить change-password Next.js API прокси-маршрут

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

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

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