구독 계획 ID 배열을 위한 JSON 파싱 workaround 제거
Backend 이제 JSON 문자열 대신 적절한 배열을 반환합니다. try/parse/catch fallback 논리는 더 이상 add-on, 뭉치에서 필요로 하지 않습니다, and Promotion 그리드 셀 렌더링.
Use List<String> instead of manual JSON strings for promotion plan/cycle IDs
Update KamoCRMPricingLoader to use List.of() for applicablePlanIds and applicableBillingCycles, matching the shared library's migration from JSON strings to ent...
엔터프라이즈 기반 @ManyToMany 관계로 JSON 필드를 마이그레이션
Jsonb 문자열 열을 대체 (compatiblePlanIds, includeInPlanIds, 적용 가능한PlanIds, 적당한 JPA @ManyToMany가 테이블과 @ElementCollection에 참여한 적용 가능한BillingCycles). serializing JSON 대신...
Redesign 웹 세미나 설정에서 하위 페이지 탐색을 기반으로
팝업 대화 상자를 대체하고 2단계로 별도의 accordion 섹션 inline 항법 교류: - 레벨 1: 클릭-to-navigate를 가진 깨끗한 웹 세미나 유형 테이블 - Level 2 : 탭 인터페이스 (Details, 선물, 알림, 가용성 슬롯) 모든 형태는 인라인입니다 — 더 m...
회원 레벨 지원 페이지의 별도 지원 설정 전용 설정 페이지
- /support 페이지에서 설정 탭을 제거하고, 티켓 및 분석만 유지 - Analytics에 하위 태그 추가 : 개요 및 상태 및 응답 시간 (설정에서 이동) - Topics, 분석, 계획된 지원 탭을 가진 /settings/features/support 구축 - Update Set...
계정 엔드포인트는 직접 연락처 필드를 사용하며, 요구되는 사용자 없음
POST /customers는 지금 firstName, lastName, 이메일, 전화, 주소를 직접 저장합니다 계정으로 PUT /customers/{uid} 모든 직접 필드를 업데이트합니다. 표시 이름, 이메일, 전화 해상도는 사용자 fallback과 직접 필드를 우선화합니다. 계정...
TeamMemberManager의 별도 계정 관리자 /account 페이지
3 페이지 수준 탭: 클라이언트 & 고객, 회원, 팀 구성원. - 탭 0: 새로운 AccountManager 구성 요소 — 독립, fetches 실제 계정 accountApi, ag-grid 테이블, 검색, 클릭 /account/view/{uid} - 탭 1/2: 기존 TeamMembe...
계정을 사용하려면 고객 엔드포인트를 업데이트하십시오 (Long uid), 주소 엔드포인트를 제거
고객/그룹 @PathVariable은 UUID에서 Account entity에 맞게 변경됩니다. Address endpoints 제거 - 주소는 계정의 1 차 회원 (Member entity)에서 제공됩니다.
계정 기반 고객 모델로 RetailCustomer 교체
Account.java는 이미 커머스 고객 기업이지만 너무 최소한이었습니다. RetailCustomer는 이 개념을 복제합니다. 이 커밋: - 상업 분야의 계정 강화 : 회사, 메모, acceptsMarketing, taxExempt, 총주문, 총통화, 통화, ExternalId/Pr...
사이트 전반에 걸쳐 브랜드 이름 지정 — Kamo → KamoCRM / KamoCRM 주요사업.
법적 페이지 (terms, privacy, GDPR, footer저작권) 지금 사용 "KamoCRM Inc." 법인 법인. 제품/브랜드 참조 마케팅 복사, 메타데이터, FAQ, 블로그, 가격, 페이지 자막은 이제 "KamoCRM"을 사용합니다. 캐주얼 UI 컨텍스트 (chat 위젯, K...
CommerceMarketApi에서 commerceApi의 모든 파이프라인 구성 요소
삭제 된 대신 commerceApi에서 직접 가져올 10 파일 업데이트 시장 정보 호환성 shim 및 죽은 CommerceMarketManager 제거 구성 요소 (1117 라인, 더 이상 수입).
Deterministic 배치 엔진을 가진 HexHead 배치 체계를 씁니다
버그 충돌 방지 시스템 교체 (spiralSearch, resolveCollisions, flyToHomeRow, 단 하나 deterministic 썰물 () 기능을 가진 선창/그룹 RAF 반복. 도구 창 뒤에 나타나는 hexheads 수정 (z:100→250), 각 다른 overlap...
Strip SchemaCleanupRunner to only post-Hibernate fixups
Hibernate ddl-auto: update handles all table/column creation from JPA entities. Removed all redundant CREATE TABLE/ADD COLUMN statements that duplicated what Hi...
Split mailboxes tab into sub-tabs for primary, aliases, shared
Primary Mailboxes, Email Aliases, and Shared Mailboxes are now each under their own sub-tab within the Mailboxes settings page, matching the existing sub-tab pa...
Remove notes code, moved to KBService
Notes management (controller, service, encryption) has been relocated to KBService where it better aligns with knowledge and content management responsibilities...
Update internal entity ID types from number to string for UUID migration
Updates TypeScript types, hooks, and components to use string IDs for entities converted to UUID on the backend. User-facing entity IDs (User, Organization, Mem...
Update commerce product and market ID references from Long to UUID
Update version ID references from Long to UUID
Article IDs remain Long. Version IDs now use UUID.
Update KB media and version ID references from Long to UUID
Article IDs (KbArticle) remain Long. Version, media, pin, and review IDs now use UUID for improved CockroachDB write performance.
Update AI entity ID references from Long to UUID
Updates all controllers, services, and WebSocket handler to use UUID for AI entity IDs (providers, models, sessions, messages, folders, policies, MCP configs). ...
Update controllers and services for UUID entity IDs
Updates all controller @PathVariable and service method signatures to use UUID instead of Long for internal entity IDs (avatars, backgrounds, roles, departments...
Long/unique rowid()에서 UUID/gen random uuid()로 내부 법인 ID를 변환합니다
CockroachDB는 무작위로 분산 된 UUID를 사용하여 성능을 작성합니다. sequential unique rowid() 값 대신 내부 엔티티티티 키에 사용됩니다. User-facing entities (사용자, 조직, 회원, 계정, 리드, 연락처, ContactBook, 응용 프...
연락처 소스를 관리하기 위한 소스를 바꾸기
- 이름 AddSourceDialog → ManageSourcesDialog 전체 CRUD (리스트) 상태의 기존 소스 + 제거, 플러스 인라인 추가 양식) - 왼쪽 패널의 하단에 "Manage Contact Sources"버튼을 이동, 핀 위에 sync footer (또는 소스가 존재...
Remove Client ID and Secret fields from RingCentral UI
These are platform-level credentials set once in the K8s secret. Customers only need to provide their JWT Key and main phone number.
Read RingCentral client-id/secret from platform config, not per-org DB
Client ID and Secret identify the Kamo app on RingCentral's platform — they are shared across all orgs. Inject them from Spring Boot properties (backed by the K...
VoipProviderConfig에서 clientId/clientSecret 제거
이 플랫폼 수준의 자격은 모든 orgs에서 공유됩니다. jwtKey 및 mainPhoneNumber는 per-org입니다.
Extract resolveUserId helper, add ETag comment in KamoGroupwareProvider
Move AI to Enabled Apps section and remove settings slideout search/recents
Remove the search bar and recent items section from the settings slideout panel. Move Artificial Intelligence from main topics to the Enabled Apps section so it...
사용 가능한/입력 탭 및 목록 만보기로 앱 페이지를 단순화
통계 배너 제거, 검색 바, 범주 필터, 그리드 / 목록 토글 및 기능 대화 상자. 앱은 이제 두 탭으로 구성되며 "Adjust Features"는 /settings/features/{key}로 이동합니다.
Extract useOperatorLabels hook shared between useFilters and Funnel
Integrate New Message composer into tool window system
Replace the standalone fullscreen/mini composer windowing with the shared tool window infrastructure (minimize, maximize, hexheads). MessageSystem.openNewMessag...
Remove theme query param — Docs derives it from WOPISrc
Docs now has its own getThemePath() logic ported from kamo-internal's Theme.tsx, so DocsService no longer needs to pass the theme URL.
Migrate JPA entities and repos to kamo-shared-library
Entities and repositories moved to **************** in the shared library. All imports updated to reference shared lib.
Compact pipeline tab layouts for more datagrid vertical space
- Remove page titles from all pipeline tab components (tab already serves as title) - Remove market ID/label chips from tab headers - Move toolbar (filters, sea...
Replace hardcoded organization/network labels with dynamic branch labels
Use **************** from useUserInfo hook so the /network and /network/create pages respect the branch label configured on ****************
Remove Notes tabs from all pipeline detail pages
Notes functionality is replaced by the Communications component which is auto-appended by PipelineRecordLayout. Removed notes-related state, handlers, types, an...
Split ageReqType 및 회원/팀 등록 경로 추가
- ageReqTypeMember와 ageReqTypeTeamMember를 대체하십시오 - Page.tsx에서 registerFlow 구성 요소 추출 - 별도의 등록 흐름에 대한 /member 및 /team 경로 추가 - 회원 vs 팀 가입을 제공하는 랜딩 페이지로 홈 페이지를 대체
Split ageReqType into member and team member fields
Update Organization type, PublicProvider, route schema, and BranchSetupManager with separate member/team member age requirement sections.