변경 로그
무슨 일이야?
플랫폼에 대한 모든 개선 사항, 그것이 선적.
· kamo-marketing
/requests 직접 nav 링크, 홈페이지 섹션 및 계획 기능 비교 행
- 헤더 : 가격과 회사 간의 최고 수준의 직접 링크로 추가 - Footer: 직접 가시성을 위한 제품 열에 추가되는 요구 - 가격 페이지: 묶음과 특징 비교 사이 주문 dev 외침 기치 - 특징 페이지: CTA의 앞에 요구 외침 - 홈페이지: 새로운 기능계획 계층 접근을 보여주는 가격과 FAQ 사이 섹션 - JumpToBar : 가격 및 FAQ 사이에 추가 된 점프 링크 요청 - DB: FEATURE REQUESTS는 per-plan 텍스트 값으로 지원 범주에 시드 (무료: 커뮤니티 투표, 스타터: 투표 및 요청, 비즈니스: 우선 요청, 기업: 사용자 정의 dev 포함) - KamoCRMPricingLoader : FEATURE REQUESTS 기능 정의 및 계획 기능 매핑 업데이트
· kamo-internal
Round-trip appConfigs + 표면 적용 모델 설정 + private-org toggle
- BranchSetupManager : mapBackendModel는 이제 지속된 appConfigs를 수화합니다. 백엔드에 의해 반환 (availability + allowedCommerceTypes per service type) 대신 로드에 NOT AVAILABLE로 다시 설정한다. 결제 옵션 어린이 모델과 마스터 모델 모두는 appConfigs를 포함 per-app 가용성 및 CRM 커머스 유형 제한 왕복. 주 메뉴 model editor reuses mapBackendModel 그래서 그것은 동일하게 행동. - useAppliedModel Hook: 확장된 응답 유형은 지금 적용을 나릅니다 모델의 사기 설정 (allowOwnersViewOtherOrgs, AllowOwnersPrivateOrgs, AllowSubChildOrgs, 연령대, identityProviderSetting, teamMemberPayFeesSetting), appConfigs 지도, 그리고 orgIsPrivate — 그래서 어떤 미래의 편집기 (feature manager, OAuth config, 상거래 시장)는 게이트 할 수 있습니다 re-fetching 없이 균등하게. - Private-org toggle: 새로운 프록시 경로 *********** (PATCH) 및 분기 유형 탭에 표면의 가시 카드, 문에 의해 AllowOwnersPrivateOrgs를 허용한다. 활성화되면 다른 org 소유자가 이것을 볼 수 없습니다. org 목록. 다음 적용 모델에 대한 Optimistic UI reconciles 지원하다.
· 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.
· 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.
· kamo-shared-library
ChildOrgSecurityModel의 모든 비선형 설정을 강화합니다
Org의 적용에 남아있는 설정에 대한 최종 업데이트 추가 보안 모델. 이전에만 읽은 모든 설정 (또는 떨어졌다) 저장) 이제는 지속 경로, 런타임 실행 돕기 및 UI가 있습니다. 그것을 소비하는 걸이. 자료 층: - Organization.isPrivate (boolean column, default false) - org의 소유 새로운 MasterModelController-gated PATCH를 통해 설정된 가시성 플래그 끝점. - 서비스 유형 enum (OPTIONAL DEFAULT ENABLED / OPTIONAL DEFAULT DISABLED / NOT AVAILABLE / FORCE ENABLED). - ChildOrgSecurityModelAppConfig entity + repo + 서비스 - persists per-app 가용성 (및 CRM's allowedCommerceTypes) 이전에 저장에 떨어졌다. -********** 새로운 단체를 왕복합니다. 실행 시간 시행: - AppliedModelEnforcementService는 호출자에 의해 사용되는 모든 체크를 통합합니다: assertSubChildOrgAllowed, assertAgeRange모든, *************** isIdentityProvider필수, assertCanSetPrivate, 필터VisibleOrgsForViewer, assertTeamMemberCanSelfPayFees, isTeamMemberPayFeesForced / 차단, assertAppEnableAllowed, assertAppDisableAllowed, getAppAvailability, getDefaultEnabledAppsForChild, assertCommerceTypeAllowed, getAllowedCommerceTypes. Null-safe: "응용 모델"은 모든 것을 허용합니다. - ChildOrgTemplateSeedingService는 종자 OrgFeature 행으로 확장되었습니다. 부모의 appConfig 기본값 (FORCE ENABLED 및 OPTIONAL DEFAULT ENABLED) 새로운 아이 orgs에, 그래서 새로 만들어진 orgs 오른쪽 기본 표면으로 올립니다.
· kamo-internal
회원 역할 할당 UI의 필수 시스템 역할
- PublicProvider: 들어오는 것에 분기 TypeID/masterModelID를 인정합니다. 조직은 이렇게 분지 유형 탭을 믿을 수 있는 문 할 수 있습니다 "Edit Master Model" 버튼 (이전 Jackson serialization에 의존) prop 유형 체크를 통해서 흐르는). - RolesPermissionsTab : 역할 체크 박스 그리드는 현재 필요한 시스템을 표시 역할(s)는 회원의 유형과 소유자 플래그를 기준으로 검사하고 비활성화합니다. * 회원 유형 회원 : "회원"이 필요합니다. * 팀-회원 유형 회원: "팀 회원"이 필요합니다. * Team-Member-typed 소유자 : "Administrator (Full Access)"가 추가됩니다. 참고사항 "필수" 칩과 방사성 힌트는 제약이 눈에 띄게 만듭니다. 편집. toggle에 필수 역할은 no-op입니다; backend memberSecurityController의 재구성은 어쨌든 다시 추가 할 것입니다.
· 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.
· kamo-shared-library
템플릿의 힘 규칙 및 DEFAULT fallback을 회원 권한으로 적용
**************** 이제 적용된 오버레이 모형의 4개의 기존하는 폭포의 정상에 과태로 템플렛 (org 역할 → 부 → 일 제목 → 일원): - 역할 유형 별 FORCE GRANTED/FORCE NUKE는 모든 폭포 수준에 이깁니다. 템플릿은 회원 유형에 의해 선택됩니다: 팀 구성원 소유자 사용 ADMINISTRATOR, 팀 구성원은 TEAM MEMBER, 일반 회원은 MEMBER를 사용합니다. - DEFAULT 템플릿 FORCE 값은 역할 유형 템플릿이 될 때 캐스케이드 승리 그 권리에 대한 힘 규칙이 없습니다 (Q7 선행 당). - DEFAULT non-force 값 (GRANTED/NUKE)는 마지막 선 손실으로 행동합니다. 전체 폭포 후 NOT SPECIFIED에 해결 된 권리. AppliedModelResolverService는 @Autowired(required=false)로 주입됩니다. 기존의 Unit-test 배선은 두 개의 constructor-mandatory를 구성합니다. repositories는 계속 일하고, 레거시 no-force-rules 경로에 degrading.
· kamo-internal
마스터 모델 편집기, 역할 템플릿 및 힘-rule gating 추가
UI의 새로운 분기 유형 보안 모델 표면: - 분지 형 탭은 "Edit Master Model"버튼을 얻습니다 (숨겨진 경우 org는 master의 모델 편집기를 엽니다. 형태: 이름 분야 없음, 분지 유형 칩 없음, 득점방해/master 모형을 저장하십시오. - 모델 편집기 (both add-child-model 및 edit-master-model)는 새로운 이득 "기본 보안 역할"섹션 후 "Allowed Apps", 탭 Administrator / 팀 멤버 / 회원 / DEFAULT 및 5-value 설정 (FORCE GRANTED, GRANTED, NOT SPECIFIED, FORCE NUKE, NUKE). - 새로운 useAppliedModel() 후크 fetches /api/security/applied-model 그리고 노출 isForced(rightName, roleType) 구성 편집기. - 보안 역할, 부서, 직책, 회원 역할 권한 페이지는 해당 템플릿에 의해 권한 강제 잠금을 숨깁니다: * Security-roles : 시스템 역할은 일치하는 템플릿 + DEFAULT를 사용합니다. 사용자 정의 역할만 사용 DEFAULT (Q11 대답 A). * 부서 + 직업 제목 : DEFAULT 만 (non-role-specific). * 회원 페이지: 회원 유형 템플릿 (TEAM MEMBER vs MEMBER) + DEFAULT (Q8 대답 C의 유형 첫번째 평가 순서). 새로운 프록시 경로: /api/security/master-model (GET/PUT), /api/security/applied-model (GET).
· 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.
· kamo-shared-library
마스터 모델 추가, 기본 역할 템플릿 및 적용 모델 해결
새 분기 유형 보안 모델의 데이터 레이어를 소개합니다: - 조직은 nullable branchTypeID와 masterModelID 열을 얻습니다. - 새로운 역할RightTemplateSetting 5 값 (FORCE GRANTED, 템플릿 레이어 설정을위한 GRANTED, NOT SPECIFIED, FORCE NUKE, NUKE). - 새로운 DefaultRoleType enum (ADMINISTRATOR, TEAM MEMBER, MEMBER, DEFAULT) 각 ChildOrgSecurityModel에 부착된 4개의 역할 템플릿을 위해. - 새로운 필수품 *********** 및 *********** 그들의 재포, 서비스 및 DTOs 플러스. - AppliedModelResolverService는 주어진 org를 지배하는 모델을 해결합니다. (branchType-inherited 또는 master)와 힘줄 보기를 노출합니다. - ChildOrgTemplateSeedingService 씨 새로운 아이 orgs의 3 시스템 역할 적용된 모델의 템플릿에서 GRANTED/NUKE 값; 힘 값은 유지 템플릿에서 실행됩니다. End-user OrgRoleRight는 3-value RoleRightSettingType을 사용하는 것을 계속합니다. 힘 가치는 엄격히 템플렛 층 개념입니다.
· kamo-internal
보안 모델 편집기에 분기 유형 칩 입력 필드를 추가
- BranchTypeChipField 색상 도트 토글, 편집 클릭 라벨 및 X 삭제 - name/description 편집을 위한 BranchTypeEditDialog - Autocomplete dropdown는 GET /api/security/branch-types에서, 현재 모형 유형을 제외하고, 십자가 모형 유형을 위한 근원 모형을 보여줍니다 - handleSaveModel는 PUT/POST 탑재에 있는 분지형 및 deleteBranchTypeIds를 보냅니다 - List table gets branch typess 열 와 착색된 도트 칩 - loadModels maps branchTypes from backend 응답
· kamo-login
RoleRightType에서 MANAGE USERS를 제거
· kamo-register
RoleRightType에서 MANAGE USERS를 제거
· kamo-internal
모든 frontend 참조에서 MANAGE USERS를 제거
· kamo-shared-library
MANAGE USERS right (id=19)를 RoleRightType enum에서 제거하십시오
· kamo-internal
분기 유형 보안 API 경로 추가
· SecurityService
Wire branch types into security model CRUD endpoints
· kamo-shared-library
ChildOrgSecurityModelDTO를 전체 필드와 분기형으로 확장
· kamo-shared-library
OrgBranchType서비스 추가
· kamo-shared-library
OrgBranchTypeRepository 추가
· kamo-shared-library
OrgBranchTypeDTO 추가
· kamo-shared-library
OrgBranchType에 추가하기
· kamo-internal
BranchSetupManager 자막을 참조 동적 지점 유형 라벨
· kamo-internal
분기 설정 탭을 동적 {branchLabel} 유형 및 분기 유형에 URL을 업데이트
· kamo-login
재설정 Capcha *** 모든 실패한 로그인 시도 후
사용자는 각 부정확한 암호 후에 인간을 재확인해야 합니다. Calls widget.reset() 및 CapchaVerified/payload 상태에 대한 clears credential 실패와 네트워크 오류 모두.
· 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.
· kamo-internal
MyAccountTab에서 user-level 필드 및 비밀번호 변경 섹션에 대한 권한 게이트 추가
· kamo-internal
액세스 게이트 및 MANAGE MEMBER SECURITY 탭 가드를 멤버 설정 페이지로 추가
· kamo-internal
Change-password Next.js API 프록시 루트 추가

당신의 우주는 기다리고 있습니다.
몇 분 안에 무료로 시작하세요. 준비가 되면 언제든지 제품을 추가할 수 있습니다.
영원히 무료 - 신용 카드 필요 없음