변경 로그
무슨 일이야?
플랫폼에 대한 모든 개선 사항, 그것이 선적.
· kamo-internal
회원이 오픈한 그룹 채팅 세션 만들기Ids
ChatTool는 props.memberIds를 무시했습니다. 그룹이 빈으로 도착했습니다. userId 및 no sessionGuid, 그래서 1:1 createSession bailed 초기와 창은 세션을 얻지 못했습니다. 이제 memberIds가 ChatTool를 선물할 때 POST /sessions/chat/find-or-create { memberIds }를 통해 세션을 해결합니다. (같은 엔드포인트 ChatBox의 InitialMemberIds 경로 사용; 백엔드 추가 호출자 자체). 회원 목록은 안정된 정렬 문자열로 키 입력됩니다. 효력은 배열 ID에 재 불이 켜지지 않으며, 해결한 guid 교류 기존의 writeback을 통해 그룹 창은 GUID-anchored입니다. 관련 기사.
· APIService
이메일 OAuth 공급자 콜백을 위한 공개 passthrough
앞으로 GET *********** EmailService 세션에 대한 (strips auth, no redirect following), RingCentral OAuth 콜백 미러링. 이것은 Microsoft/Google/Zoho에 등록된 고정된 공중 리디렉션 URI입니다.
· EmailService
고정 공개 리디렉션 + Gateway-forwarded 콜백
플랫폼 이메일 OAuth (Microsoft 365 / Google / Zoho)는 유효 공개가 없습니다. 리디렉션 URI : 리디렉션은 요청 호스트에서 파생되었습니다. 클러스터 내부 서비스 주소이며, 콜백 핸들러는 POST 전용. 모두에 사용되는 단일 고정, publicly-reachable 리디렉션 URI 추가 권한 요청 및 토큰 교환 및 공개 GET 콜백 공급자가 브라우저를 리디렉션합니다 (org는 국가로 수행되므로 세션이 필요합니다. 자동 폐쇄 HTML 페이지를 반환합니다.
· kamo-internal
게이트 리드 연락처 정보 할당 + 새로운 개인 정보 보호 권리
3개의 새로운 CRM 권리를 미러링합니다. 리드 디테일 페이지에서, mask/lock the 주요 연락처, 우편 주소 및 부동산 주소 필드 리드 현재 회원에 할당되지 않는 한 그들은보기/편집을 붙들지 않는 연락처 권리 (및, 할당되지 않는 리드, VIEW UNASSIGNED LEADS); 상태 필드는 항상 볼 수 있습니다. 할당 판 reassign 게이트를 전환 ASSIGN LEADS에 대하여 /leads 그리드에서 할당 된 필터 옵션을 문 by VIEW UNASSIGNED LEADS, 지금 빈번한 이메일/거리 필터 및 이메일 열 값 및 플립을 통해 property-vs-mailing 상태를 보여줍니다.
· SecurityService
Enforce Lead contact-info 개인 정보 보호 정책
getAllLeads는 이제 린 LeadListDTO를 반환하고 지정된 리드를 숨깁니다. VIEW UNASSIGNED LEADS. getLeadById 마스크 연락처 정보 (보장된 상태)는 콜러에 할당되지 않습니다. VIEW LEAD CONTACT INFO OTHERS 및 403s는 그에 대해 할당되지 않는 리드를 보유합니다. VIEW UNASSIGNED LEADS가 부족합니다. updateLead 문 수동 재 할당 (ASSIGN LEADS) 및 연락처 정보 편집 *************** mortgage 속성 필드를 실제로 변경할 때만 계산합니다. 하나님 우회.
· kamo-shared-library
연락처 정보 개인 정보 보호 권리 + 린 목록 DTO
세 개의 CRM 권한 추가 (161-163): "다른 사람에게 지원: View/Edit Lead 연락처 정보 및 "보기 할당 된 리드". LeadListDTO에 추가하기 — a lean /leads 그리드에 대한 프로젝트는 연락처 정보를 제외하고 국가 분야. Add *********** 에 스트립 전화/ e-mail/mailing+property 주소 (국가 보존) 게이트 리더.
· kamo-register
/member 및 /team 경로에서 회원 유형 보내기
/team signups는 TEAM MEMBER (ProSPECT, pending admin 활성화); /member를 만듭니다. 가입은 MEMBER를 만듭니다. registerFlow는 각 경로에 의해 공급되는 memberType prop을 가지고 갑니다 래퍼는 등록 요청 몸에 포함; 백엔드는 일치를 만듭니다 회원 유형.
· SecurityService
/team는 TEAM MEMBER (PROSPECT)를 만들고, /member는 MEMBER를 만듭니다
공시 등록은 회원 유형 등록 사이트를 보내 (/회원에서) vs /team 경로): /team는 PROSPECT로 TEAM MEMBER를 만듭니다. 그래서 관리자는 활성화해야 합니다. 그들이 로그인 할 수 있기 전에 (그 로그인 게이트 당) - 및 / 회원은 기본 MEMBER를 만듭니다. 제품정보 createRegistrationMembership()을 통해 새로운 사용자 및 기존 사용자 재사용 경로 모두에. 더 보기 securityProvider 미러는 변경되지 않습니다 (베이스 MEMBER를 따라, org가 될 때 건너 뛰기 자체 보안 공급자). 너무 이른 모든 등록 가입은 기본 MEMBER를 만들었습니다, 그래서 /team 신청자는 착륙 MEMBER와 UI를 통해 팀 멤버로 추가 할 수 없습니다 (409 이미 회원).
· SecurityService
팀원 업무용 전화 확장
/leads Agent 필터는 라벨 옵션에 작업 전화 확장을 필요로 합니다. "이름 (8080)". TeamMember에 이미 확장 (getPhoneWorkExtension) 하지만 직렬화되지 않았다 — 단지 베어 번호는.
· kamo-internal
Request-support 팝업은 부모가 공유한 주제를 보여줍니다
Ticket-creation 항목 드롭다운을 새로운 점으로 /api/support/topics/available endpoint (own-org + 부모 공유 주제) 그래서 child-org 사용자는 부모 org의 지원을 통해 연락 할 수 있습니다 부모의 구성 항목.
· MediaService
Surface parent-org는 request-support 팝업 주제를 공유했습니다
Child-org 사용자는 부모 org의 공유 지원 주제를 볼 수 없습니다 (assignToOwnOrg=false) 지원 요청 시 팝업만 가능 fetched own-org 주제. GET /api/support/topics/available 추가(+) parent-shared, MANAGE SUPPORT 게이트 없음) 및 useParentOrgTopics 수정 올바른 AssignToOwnOrgFalse 쿼리. 부모 공유에 대하여 이미 createTicket을 통해 부모 org에 티켓을 경로를 지정합니다.
· SecurityService
새로운 아이 orgs 그들의 부모의 securityProvider를 상속
Kamo-internal에서 아이를 만들 때, 새로운 org의 securityProvider를 설정 org의 securityProvider (org는 아래에 생성 된) 대신 기본적으로 자기에. 모든 기존의 org를 점하는 데이터 백필과 쌍 SecurityProvider at the top-level KamoCRM org, 그래서 회원 미러링 참여 모든 orgs와 그들의 미래 아이들.
· kamo-login
계정 연결 공지 ?linked=1
등록이 새로운 org에 기존 계정을 연결하면 여기에서 리디렉션됩니다. ?linked=1. "당신은 이미 Kamo 계정을 가지고 - 우리는이 조직을 추가했습니다 그것은. 기존 비밀번호로 로그인하세요. 그리고 이메일을 미리 작성하세요. 기존의 미러 ?email verified 처리.
· kamo-register
기존 사용자에 대한 계정 연결 응답 처리
입력된 이메일이 이미 ACTIVE 계정에 속할 때, 백엔드 링크가 ACCOUNT LINKED를 반환합니다. 로그인하기 (?linked=1) 대신 이메일 검증 흐름 - 그들은 기존에 서명 비밀번호 새로운 사용자와 placeholder-claim signups는 검증 이메일 경로를 유지합니다.
· kamo-internal
회원/팀 회원 생성 + Prospect-gate UI
- 누락된 POST 프록시 경로 /api/security/members/create 및 추가 /create-team-member (이전 405'd, 그래서 백엔드에 도달하지 않았다). Status + JSON body pass through so the form's 409 "회원탈퇴" 재사용 처리 이름 * - MemberCreateForm: 플로팅 라벨이 중복되는 회원 상태 필드를 수정 "상태 선택" placeholder (shrink label + notched SummarydInput), 추가 "Active"팀 회원만 로그인할 수 있습니다.
· SecurityService
기존 사용자를 재사용, securityProvider에 미러, 게이트 팀 구성원 로그인
재사용 (같은 사람에 대한 중복 계정 없음): - MemberCreateController는 이제 개인 이메일으로 기존 사용자를 재사용합니다. case-INSENSITIVELY (케이스 감지, 누락된 레거시 혼합 케이스 이메일). - SecurityController.register는 항상 생성 대신 기존 계정을 재사용합니다. 새로운 사용자: 이미 org의 회원 -> 409 ALREADY MEMBER ("에서 서명하십시오); 기존 ACTIVE 계정 -> org를 연결하고 암호를 유지, ACCOUNT LINKED; unactivated placeholder (확인되지 않고 로그인하지 않음) -> 주장 비밀번호 공개 양식은 활성 계정의 글로벌 암호를 덮지 못할 수 있습니다. securityProvider 거울: - 내부 회원/팀 회원 작성 및 공개 등록은 이제 전화 *********** 그래서 모든 새로운 회원도 땅 org의 securityProvider org의 밑에 (기본 회원으로). 팀 회원 활성화 문: - 로그인은 멤버쉽 상태인 TeamMember를 차단합니다 != "당신의 계정으로 ACTIVE 존재하지만이 시간에 활성화되지 않습니다." 일반 회원 및 활동 팀 멤버 패스. Org-resolution 경화 (X-Forwarded-Host siblings) : - getExternalProviders 및 PortalController.resolveOrg는 alias-fallback 해결자를 사용합니다. and drop the getServerName() 실패 오픈 (플랫폼의 org를 누출 대신 종료).
· kamo-shared-library
SecurityProvider 회원 미러 + 재사용/패치 접지 워크
- *********** userId): 사용자를 org의 securityProvider org는 기본 회원으로 (deduped; no-op when org 자체 또는 사용자가 이미 있습니다. 모든 새로운 규칙을 다시 플랫폼 / 보안 - 프로바이더 org에 따라 회원도 토지. -********** 케이스 과민한, cross-org 계정 재사용을 위한 다중화 안전 이메일 조회 (email is not globally 독특하게, 그래서 단 하나 선택적인 측정기는 던질 것입니다). - *********** 보안을 재설정 중지 모든 org 편집 (문일 때 백필만), 그래서 아이 org는 그 링크를 유지 플랫폼 공급자는 거울에 달려 있습니다.
· kamo-internal
Wire Task 탭을 실제 백엔드 + delete action + live count
/leads/{id}/tasks[/{taskId}]에 대한 다음 프록시 경로 추가 (탭의 getTasks/ addTask/updateTask/completeTask 호출은 404ing이었다), deleteTask 동작에 작업 그리드 및 derives the 'Open Tasks' stat from a live task list 그래서 그것은 체재 TASK CHANGED 이벤트로 현재 작업을 재개합니다.
· SecurityService
리드 작업 REST API + 실시간 TASK CHANGED
/leads/view Tasks 탭이 이미 호출되었지만 존재하지 않는: GET/POST/PUT/DELETE *************** (LeadTaskController + LeadTaskService), 잠금 엔드포인트와 같은 org-guarded. 각 create/update/delete는 TASK CHANGED를 방출하므로 리드 뷰가 새로워집니다.
· kamo-shared-library
Lead follow-up 작업을 위한 LeadTask entity
Backs the /leads/view Tasks 탭 (이전에 프론트엔 전용 스텁 없음 지속). LeadTask (table LEAD TASK)는 frontend TaskItem 모양을 반영합니다. *************** + LeadTaskDTO 및 저장소. 작업 mutations 방송 TASK CHANGED 에 기존의 리드 실시간 채널.
· kamo-internal
실시간 datagrid + 라이브 리드 뷰 per-pane 편집 잠금
/leads 그리드는 이제 websocket (NATS→STOMP)에 완전히 살고 있습니다 : rows add/remove/update 활성 필터에 대한 자동 및 변경된 셀 blink 한 번 다른 회원의 편집; 죽은 새로 고침 버튼이 제거됩니다. /leads/view/[id]는 살아있는 적용 Lead/history/task/stats 업데이트 및 per-pane 독점 편집 잠금을 얻을 '현재 편집' 로스터, 라이브 카운트다운, 그리고 자동 저장 idle/disconnect. useLeadsRealtime Hook, leadLocksApi + 다음 프록시 루트 및 재사용 가능 MemberContactCard (이름 + 작업 확장, 클릭으로 호출 softphone / 오픈 채팅). 리드 업데이트는 null-preservingly 그래서 부분 페이로드 결코 빈 셀을 병합.
· MediaService
Org-guards/topic/leads/rt/{orgId} 실시간 구독
Cross-tenant SUBSCRIBE는 새로운 리드 실시간 주제에 대한 가시성, 미러링 기존 /topic/social/feed 가드: 회원은 본인에게만 구독할 수 있습니다. org의 리드 스트림. 기존 *********** 이미 릴레이 security.leads.rt.* 에 /topic/leads/rt/*, 그래서 릴레이 변화가 필요합니다.
· SecurityService
Per-pane 편집 자물쇠 REST API + 자동 득점 스위퍼
/api/security/leads/{id}/locks 추가 *********** 뒤로 LeadLockService: 독점적인 per-pane 예약, 초상화 심박수 5 분 idle TTL을 재설정하고 버퍼링 된 일정한 스위퍼 idle-expiry 또는 존재 추적 타이머에 초안 및 해제. Idle-expiry는 절대 epoch millis로 방출. Lead.lock.* (configmap)의 밑에 Config.
· kamo-shared-library
실시간 NATS 출판 + per-pane 편집 잠금 엔터
Security.leads.rt.{orgId}에 org-scoped 리드 이벤트 게시 (created/updated/ 변경된 필드 키로 삭제, 기록 추가) 그래서 /leads 그리드 및 /leads/view 페이지는 살아있는 갱신할 수 있습니다. *********** 지금 반품 UI blink를 구동하는데 사용되는 변경된 레지스트리 키. LeadPaneLock entity 추가(테이블 LEAD PANE LOCK, 고유(LEAD UID,PANE)) repository는 독점적인 per-pane 편집 자물쇠를 역행시킵니다; 발행인은 방출합니다 카운트다운을 위해 절대 epoch millis (timezone-safe number)로 idle-expiry.
· kamo-internal
기본 탭을 나머지 스타일 A 페이지에 헤더에 통합
스타일 A→B 스윕에 따라 경로가없는 페이지를 덮어 설정보기: - /kb : KbNavBar는 기사 / 리소스 / 리뷰 탭 통합 및 새 문서 작업 권리 정렬; 레이아웃 공유된 광선 배경을 가져옵니다. -********** 미니 백 화살표 헤더 + 일반 / 도메인 MUI 탭은 통합된 탭으로 gradient 영웅 헤더가됩니다. - /leads/view/[id]: 기본 기록 탭은 HeaderBar gradient로 이동 헤더; 인라인 상태/sub-status 편집기는 헤더에 추가됩니다. 오른쪽 정렬 작업 (Gradient에 대한 스타일), 별도의 교체 탭 카드.
· kamo-internal
소셜, 수입 탭을 통해 헤더에 하단 카운트 바를 찾습니다
CRM 설정 표면의 sibling에 공급 업체 탭 처리를 적용하므로 독립 "x • y"의 요약 표시 줄은 더 이상 페이지 부동산을 먹지 않습니다 : - 사회 연결 및 자동화 수입 : 헤더 작업 하단 정렬 및 새로 고침 + Add/Create 단추의 위 선 더미 직접. - 수동 수입품 sub-tabs (빠른 수입품, 수입품 템플렛): 조사는 움직입니다 lone의 왼쪽은 아이콘을 새로 고침 (space-between), 하단 바를 드롭.
· kamo-internal
Header 행동 위의 공급 업체 / 제품 카운트 이동, 하단 정렬 새로 고침 + Vendor 추가
페이지 부동산의 독립 바닥 요약 막대에 사용 occupy - "x 공급 업체 • x 제품"라인은 이제 작업 위에 스택 헤더의 버튼과 제목 블록의 버튼 하단 정렬.
· kamo-internal
기본 탭을 페이지 헤더(Style B)로 통합
각 gradient-hero 페이지는 별도의 카드에서 기본 탭을 렌더링 아래 헤더는 이제 글래드런 헤더 자체 내부를 렌더링, 일치 /account와 /support. - 설정보기 : 탭 바는 gradient 헤더로 이동 (모든 ~ 23을 변환) /settings/* 한 번에 페이지); 열, headerAction, backHref 및 도움 탭 아이콘/glow/alignRight extras 보존; hideTitle 여전히 탭을 유지. - /leads/reports: 보고서 탭은 헤더로 이동. - /commerce(PipelineView): per-market 탭(세로 아이콘)로 이동 header; 단 하나 시장/onboarding 국가 unchanged.
· kamo-internal
Back arrow in header 반환으로 /leads
흰색 렌더링 설정보기에 옵션 backHref/backTooltip 추가 제목의 왼쪽 화살표와 CRM 설정 페이지를 와이어 /leads로 다시 회원. Tooltip는 기존의 현지화를 재사용합니다. lead.view.header.backToBrowser ('Back to lead') 문자열.
· kamo-internal
Bold 'CRM Settings:' 접두사, 파이프 분리기, 탭 링크에서 hover-only underline
대담한 'CRM Settings:' 라벨과 CRM 설정 탭 링크를 Preface (새 *********** 키), 별도의 링크 '|' 바베큐 대신, 항상 기울기에서 링크를 전환 언더라인-오버.

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