콘텐츠로 건너뛰기
KAMOUniverse

변경 로그

무슨 일이야?

플랫폼에 대한 모든 개선 사항, 그것이 선적.

  1. · MediaService

    Return-nav JWT 서명 확인; tidy 토큰 새로 고침

    - CanvaJwtVerifier : correlation jwt의 Ed25519 서명을 확인 Canva의 JWKS (/connect/keys), 플러스 aud/exp/type; 아이에 의해 캐시된 열쇠. Return-nav는 이제 인증이 실패한 경우 수동 수입에 닫힙니다. - CanvaTokenService : 자체 호출에 @Transactional을 해제 새로 고침/markDown 도움자 (봄 자료의 per-call tx + 회원 자물쇠 이미 토큰 교체 수정); 코멘트를 명확하게합니다.

  2. · KlusterServices

    독립적으로 확장 가능 (HPA, 멀티 노드)

    단일 노드 핀을 제거하고 per-pod 모델 캐시로 전환하십시오. 그래서 pods는 할 수 있습니다. 노드의 일정은 HPA (min 1 / max 4, CPU 75%, deliberate Scale-up 주어진 느린 모형 찬 별). whisper-asr는 공유된 transcription입니다 회의 기록과 VOIP 기록/voicemails 둘 다를 위한 후원.

  3. · KlusterServices

    Rebrand Guacamole 클라이언트 연결 상태 텍스트 KamoDesktop

    더 보기 *********** 그래서 'Guacamole에 연결 ...'화면 (및 관련 상태)은 KamoDesktop을 읽습니다.

  4. · MediaService

    기록 ingest, 유지 / 할당, 저장 사용, 요약 파이프라인

    - MeetRecordingController: 내부 (X-Internal-Auth) ingest endpoints 지브리 finalize.sh 게시물은 기록을 완료했습니다. - MeetRecordingService: org MinIO (임시-메트 기록)에 업로드 기록, persists MeetingRecording metadata는, org 저장 할당량을 적용합니다 (가장 오래된), 그리고 — postMeetingSummaryEnabled — 요약 파이프라인 실행: transcribe (EmailService Meeting-summary Template). - MeetRecordingRetentionSweep : 과거 기록의 일정한 삭제. - MeetConfigController : 실제 설정 저장 미터의 /recording-usage를 가져옵니다. - application.yml: conversion/ai/email base URL + 내부 auth 비밀. Requires (ops) : KamoInitializer는 MEETING RECORDINGS를 만들 수 있습니다. *************** MediaService, jibri 및 변환서비스.

  5. · EmailService

    Meeting-summary 템플릿 미리보기에 대한 샘플 vars

    새 모임-summary 템플릿에 대한 sampleVariables 케이스를 추가하므로 스튜어드 미리보기 UI는 현실적인 콘텐츠를 렌더링합니다.

  6. · kamo-shared-library

    Meeting-summary canonical 템플릿

    "meeting-summary" 거래 템플릿 추가 (subject + 브랜드 HTML with {{roomName}} 및 원시 {{summaryHtml}})을 등록하여 CANONICAL KEYS에 등록하십시오. org 당 씨. 에 의해 사용하는 post-meeting AI 요약 배달. 또한 수정 장전기 시험의 stale 열쇠 조사.

  7. · KlusterServices

    Prosody Moderator 모듈, whisper-asr, 지브리 기록 업로드

    - Meet-prosody : 버전 제어 사용자 정의 플러그인 ConfigMap (캡쳐스 기존의 token verification no-op override는 out-of-band를 만들었습니다. canonical mod token moderation 모듈을 추가하여 활성화 *************** JWT `moderator` 주장 만들기 Authoritative — 회원은 소유자가 되고, 손님/ 익명은 소유자를 잡아볼 수 없습니다. - whisper-asr : 자체 호스팅 연설 - 텍스트 (빠른 - whisper CPU, 외부 키 없음) 게시물을 구독합니다. - Meet-jibri : Finalize.sh는 이제 MediaService에 완성 된 기록을 업로드합니다. *********** X-Internal-Auth와 함께 MinIO + 드라이브 유지 / 인용 + 요약. 비밀은 선택적 그래서 지브리 여전히 시작하지 않는 경우.

  8. · ConversionService

    Post-meeting summaries를 위한 기록 transcription endpoint

    POST /api/conversion/meet/transcribe (X-Internal-Auth): 업로드를 정상화 새로운 첨가제 FfmpegService 도우미를 통해 16kHz 모노 WAV에 녹음, 자체 호스팅 된 whisper-asr 서비스에 전달하고 { transcript}를 반환합니다. kamo.services.whisper.url에서 Whisper URL.

  9. · kamo-internal

    일정한 회의를 위한 달력 통합 + 진짜 기록 저장 미터

    - CalendarIntegrationEnabled : 때, 예정된 클럽 하우스 회의도 작성자의 달력 (현재 달력 시스템을 통해)에 추가 /meet/join 링크. 참가자의 알림은 처리됩니다. backend 스위퍼, 그래서 중복 출석 이메일. - 기록 설정: 저장 미터는 지금 REAL per-org 사용법을 보여줍니다 GET /api/meet/recording-usage (제거된 placeholder를 대체하십시오).

  10. · kamo-shared-library

    MeetingRecording entity + 캡처 된 기록 보관소

    새로운 MEETING RECORDINGS 테이블 (org, 회의 ref, 방, MinIO Bucket/object 키, 크기, 기간, 캡처/expiry 타임스탬프, 요약 상태) - 부모 기록 완료된 Jibri 기록 파일을 위해, 유지/쿼타를 몰고 포스트 meeting 요약 처리. 테이블은 다음 KamoInitializer 실행에 생성됩니다.

  11. · kamo-internal

    마케팅 앱, 설정 허브, Canva 재료

    마케팅을 일류의 org-enable 응용 프로그램을 만들고 Canva-powered를 발송 재료 경험. App 지원: - AppType.MARKETING 거울, Organization.isMarketing getter - 게이트 마케팅 nav (navRegistry) + 권리 섹션 (permissionAppSections, securityRoleManager) 조직에.isMarketing - FeaturesManager의 마케팅 카드 (/settings/account?tab=apps) 설정: - 새로운 /settings/features/marketing 허브 (일반 / 소셜 미디어 공급자 / Canva) - CRM 설정에서 Social Media Providers를 마케팅으로 이동 - 3 nav 위치 업데이트 ( 착륙 설정, 설정 메뉴, 설정 버튼 아이콘); repoint SocialTimeline 빈 상태 링크 모델 번호: - CanvaIntegrationManager 설정 탭 + canva ProviderDef 플랫폼 OAuth 레지스트리 (+ 로고) - /api/canva/* 프록시 (status, connect-start, 디자인, 수출, 수출 프록시, 차단) → MediaService - /marketing/materials: 라이브러리 그리드 (물품 assoc), 업로드, Create-in-Canva, 수입-from-Canva, 반품-nav 자동-import

  12. · ConversionService

    비디오 포스터 프레임 썸네일 마케팅 자료

    Canva MP4 수출 (모든 비디오 업로드) Docs PDF 경로를 건너 뛰고 실패 대신에 단일 ffmpeg 포스터 프레임 thumbnail ( thumb p0.png). -********** 비디오 카테고리 지점 -**********

  13. · MediaService

    Canva는 OAuth + 디자인 / 내보내기 연결

    - CanvaApiClient: PKCE, 토큰 교환/refresh/revoke, 사용자, 디자인 (create/list), 수출 일, 바이트 fetch - CanvaTokenService: 암호화된 토큰(PlatformSecretCipher), Single-flight proactive 새로 고침 (Canva 새로 고침 토큰은 단일 사용 / 회전) - CanvaOAuthController (permit-all) : intent → /start → /callback을 연결, 반환nav 착륙 - CanvaController (authed) : 상태, 연결 시작, create/list 디자인, 수출 (create+poll+cache), byte 수출 프록시, 분리

  14. · kamo-shared-library

    Canva 통합 + 마케팅으로 org-enable 앱

    -********** — 플랫폼 Canva Connect 클라이언트 등록 - ImageAssocType.MATERIALS(13, Imaging-materials) - org 마케팅 자산 버킷 -********** 아래 ServiceType.MARKETING - ServiceType.MARKETING(24) → COMPLETED/enabled 그래서 실제 앱이 됩니다. (FeatureController는 CRM과 같은 org 당 자동 감독,) - CanvaConnection entity + repo: 암호화된 회원(access+refresh) 토큰

  15. · KlusterServices

    Enable Guacamole json-auth SSO + KamoDesktop 브랜드

    - JSON SECRET KEY (선택 사항) 공유 데스크톱 sso 비밀에서 guacamole에서 번들 guacamole-auth-json 확장 신 SSO 링크에 대한 검증. - kamo-branding extension (title=KamoDesktop, kamocrm 로고 + favicon) 내장 desktop/guacamole/branding/ 에 .jar, 이진 configmap 및 묘종으로 배송 initContainer를 통해 GUACAMOLE HOME으로. - CI는 두 개의 네임스페이스(desktop-sso for guacamole, GUAC SIGNING KEY secret에서 SecurityService를 위한 guac-sso; 결코 투입하지 마십시오.

  16. · kamo-internal

    God-only KamoDesktop 아이콘 (Linux + Windows) 자동 연결 세션

    두 개의 nav 아이콘은 Analytics를 왼쪽으로, 오직 신-eligible 회원(isGod 추가 NavGateContext). SecurityService의 짧은 라이브 SSO 링크와 개방 새로운 창의 KamoDesktop Gateway는 인스턴스에 자동 연결됩니다. 자주 묻는 질문 *********** 마크.

  17. · SecurityService

    KamoDesktop SSO 토큰 엔드포인트

    감사합니다. (god-eligible only) 분 5 분 guacamole-auth-json 토큰 (HMAC-SHA256 + AES-128-CBC, 확장 당 와이어 형식) 및 KamoDesktop에 대한 자동 로그인 + 자동 연결 URL을 반환 게이트웨이 로그인 키 + RDP 암호는 guac-sso 비밀에서 주입; 결코 (blank-safe: SSO는 구성 될 때까지 사용 가능).

  18. · kamo-internal

    Org-scoped 룸 이름, 룸 이름 형식, 달력 카모 회의, 시작 알림; i18n 설정

    - useMeeting/MeetingDialog: 룸 이름은 이제 org 토큰에 의해 네임스페이스입니다. 그래서 두 orgs는 같은 Prosody 회의에 결코 collide 할 수 없으며 org의 명예 RoomNameFormat (RANDOM 대 DISPLAY NAME RANDOM 회원의 별명 사용). - MeetingComposer (calendar) : "Kamo Meeting"버튼은 org-scoped 방을 생성합니다. 이벤트 URL을 /meet/join click-time OTK 링크로 설정하므로 캘린더 + 알림 수신자는 확인된 회원으로 로그인됩니다. - MeetReminderPopup : /topic/meet/reminder/{memberId} (MediaService)에 가입하십시오. 스위퍼)와 함께 "시작 시작" 토스트를 보여줍니다; 에 장착 공유 채팅 WS에 PresenceWrapper. - 설정 탭을 충족: hardcoded English toast/error 문자열을 대체 다음 intl t() 키 ****************

  19. · MediaService

    스케줄링 시작 알림 + 게스트 링크 만료

    - MeetingReminderSweep : @Scheduled 스위퍼는 실시간 불 "미팅 시작"에 초대 된 회원에게 알림 (start − noticeerMinutesBefore) on *********** 다음 회의 SCHEDULED→ACTIVE 전환 dedupe에. 과거 시작 시간보다 더 많은 회의가 전환되지 않고 알림 (백필 스팸 없음). 클라이언트는 인증된 가입 링크를 구축 그것의 자신의 근원에서. - *********** 이제는 GuestLinkExpiryHours: 회의를 경청합니다 org의 구성 창보다 오래 (예정 시작, 다른 사람에 집중) 작성)는 가입하지 않고 처리됩니다 (0 = 결코 만료되지 않음).

  20. · kamo-internal

    채팅 목록의 회원 가용성을 표시; 디렉토리로 탭 이름을 변경

    1:1 채팅은 이제 반대의 라이브 출연 + 가용성을 표면 동일한 방법 디렉토리 탭 — 동일한 useAvailability/usePresence 소스 및 같은 색상/표본으로 MemberItem(dot + uppercase label, pulsing when 온라인, 오프라인 때 회색), 도구 팁. 그룹 채팅은 "체크's online" avatar dot; 사회/지원 행은 변하지 않습니다. 회원 탭은 "Directory"(i18n 값만)로 이름을 붙여 넣고, 채팅 "Members" sub-tab 그룹과의 교차 충돌.

  21. · KlusterServices

    경화 KubeVirt 원격 데스크톱 + Guacamole 게이트웨이

    배포 워크플로를 통해 전체 원격 데스크톱 스택을 추가합니다. - KubeVirt + CDI는 배치 시간에 설치 (pinned-stable release URL) - 데스크탑 1 : 쿠분투 24.04 VM, 8 vCPU / 16Gi / 500Gi Longhorn 구획 디스크, masquerade net (native cluster DNS), xrdp KDE 세션; 클라우드 init 설치 크롬, VS 코드, NetBeans, Temurin JDK 21+17, Headlamp, 케이트, LibreOffice Firefox 제거 - Apache Guacamole (guacamole + guacd + Postgres config DB)에서 desktop.kamocrm.com; guacd는 k1m1에 hostNetwork를 실행하므로 WoL-broadcast를 할 수 있습니다. 그리고 RDP는 192.168.4.0/22 LAN에 직접 VM에 도달하면서 클러스터FirstWithHostNet DNS - LAN 윈도우 PC (192.168.4.44, MAC f4:4d:30:62:8a:68) 연결 추가 Guacamole native Wake-on-LAN (연결에 magic 패킷, 30s 대기) - 가장자리 경화 : Traefik TLS + 꽉 데스크탑 - 제한 + 보안 헤더, 플러스 Guacamole 내장 per-IP brute-force 금지 - auto-cert : desktop.kamocrm.com STATIC DOMAINS + cross-ns 미러에 추가 cert-manager 문제/renews tls-desktop-kamocrm-com 데스크탑 ns - Credentials: 사용자 'sage'; CI 비밀 DESKTOP PASSWORD에서 암호 주입 배포 시간 (envsubst/sed + imperative secret) - 절대로

  22. · kamo-internal

    채팅 그룹을위한 하위 탭, 마지막 열림 탭을 기억

    채팅 목록은 멀티 선택 알약 칩의 행에 의해 필터링 Chats 탭 아래 위치. 단일 선택 sub-tab bar로 교체하십시오. (그룹별 한 탭: 팀 멤버 / 회원 / 사회 / 지원) 부모 회원 / 채팅 탭, 그래서 선택한 그룹 목록 전체를 작성 내용 영역. - ActiveBucket 대신 단일 ActiveBucket 버킷; 서버 fetch now 선택된 카테고리만 뽑습니다. - 팀 멤버에게 기본값, 회원당 마지막 열림 탭을 주장 (across) 장치) ui-preferences store (key chatsActiveBucket)를 통해, gating the 저장된 탭까지 첫번째 fetch는 이렇게 그것을 직접 적재합니다.

  23. · kamo-internal

    이메일이 설정되지 않을 때 설명; 문 compose

    /messages inbox는 이전에 org 때 전체 쉘을 렌더링했습니다. 이메일 공급자가 없었다 또는 회원은 mailbox가 없었다, 조용히 모든 실패 API 호출. 이메일 보내기 usable이고, 그렇지 않다면, 왜 (대를 형성하지 않는 경우. mailbox)와 현재 회원이 자신의 권리를 기반으로 수정할 수 있는지 여부. - MessageBrowser는 이제 우아한 EmailNotConfigured 패널을 보여줍니다. 빈 inbox, 사본 + CTA와 함께 이유와 회원의에 적응 권리 (ManAGE EMAIL SETTINGS에 대한 이메일 제공 업체 설정 링크, 또는 MANAGE EMAIL ACCOUNTS에 대한 자신의 사서함 탭; 그렇지 않으면 관리자에 기함). - MailButton은 이메일이 완전히 준비될 때까지 "Compose New Email"을 비활성화합니다. reason-specific tooltip; NavToolButton는 비활성화/tooltip 품목 지원을 얻습니다. - 'messages/` gitignore 규칙을 repo 루트에 고정하여 중지합니다. ignoring app/components/messages/ ( 침묵으로 새로운 파일을 삭제).

  24. · kamo-internal

    모든 유형 채팅 목록 + browser-tab 관심

    Chats sub-tab 이제 회원, 그룹, 지원 및 소셜 대화 함께, 가장 존경하는 첫 번째, 멀티 선택 필터 (팀 회원 / 회원 / 사회 / 지원; 첫번째 두 사용 org의 사용자 정의 라벨). Team-Members vs Member는 counterpart memberType으로 나뉩니다. 지원 행 다른 당사자가 대리인인지 여부를 보여줍니다; 각 행은 그것의 열을 엽니다 기본 도구 창 (chat / 지원 / 소셜). TabAttention 추가 : favicon 배지 + 번쩍이는 문서. 이름 * 모든 채팅 유형 (red count) 또는 pending accept-lead의 메시지가 없습니다. (amber nam bolt, 리드/CRM 아이콘 일치; 우선). 자세히보기 기존 UnreadContext + LeadAlertContext, 그래서 새로운 백엔드가 없습니다.

  25. · MediaService

    회원/지원/관계 세션에 따른 통합 채팅 피드

    GET /api/media/sessions/chat 이제는 '카테고리' 필터 (chat, 지원, 사회; 과태 모두) 과 반환 하나 globally most-recent-first, 다각적 쿼리의 병합. 각 행은 나릅니다: - 세션타입(CHAT|SUPPORT|SOCIAL) + 회원[].memberType so client Team-Members 대 회원으로 내부 채팅을 분할 할 수 있습니다, - TicketId + supportRole (AGENT|REQUESTOR - 지원은 양방향) 지원 행 및 공급자 + 연결 사회적 행의 제목, 그래서 각 행은 기본 도구 창을 엽니다.

  26. · kamo-shared-library

    지원 + 소셜 채팅 세션에 대한 Paged 쿼리

    통일 된 상호 작용 센터 채팅 목록은 모든 종류를 포함 할 수 있습니다 : - SUPPORT (TYPE ID=2) : 회원이 할당된 에이전트 또는 세션 requestor (또한 티켓 ID를 반환 + 행에 할당 된 에이전트 ID). - SOCIAL (TYPE ID=3) : 회원이 소유한 사회 연결 세션 조직.

  27. · kamo-internal

    끝 지도 전망 우두머리 활동 + callbacks

    - 헤더 : 전화 (Work) / 전화 (Personal)로 분할 (회원이 등록되지 않은 경우 숨겨져 있음), 이메일은 엽니다. 작곡가, 텍스트 -> comms/texts, Note는 규칙과 blinks로 왼쪽으로 이동 참고는 마지막 재 할당 이후 배치됩니다. 작업 버튼 제거. - 상태: 잘못된 변경 상태 메뉴와 깨진 편집 상태 버튼; STATUS > SUB-STATUS 행을 추가하면 하위 통계만 선택해야 합니다. 변경할 때 업데이트가 가능합니다. - 콜백: 대화 상자 (날짜/시간 + 시간대 + 코멘트), 종료/오류 목록 Mark-contacted/cancel 프롬프트를 가진 세부사항 탭 및 leadApi + 프록시 스케줄/list/resolve의 경로.

  28. · EmailService

    내부 엔드포인트는 회원의 캘린더 이벤트를 만들 수 있습니다

    POST /api/internal/calendar/events (X-Internal-Auth gated)는 회원을 해결합니다 -> user -> 1차 캘린더(기본값을 선택하면) 및 이벤트를 생성합니다. SecurityService가 회원 캘린더에 미러 리드 콜백에 사용됩니다.

  29. · SecurityService

    리드 콜백 엔드포인트(schedule/list/resolve)

    새로운 *********** 관제사 + 서비스: persists 콜백, 포스트 스케줄링/outcome 노트는 리드의 미디어 스트림으로, 이메일서비스를 통해 스케줄링 회원의 캘린더에 콜백을 미러링합니다. 내부 캘린더 엔드포인트 (best-effort).

  30. · kamo-shared-library

    LeadCallback entity, 상태 enum 및 저장소 추가

    Backs the lead-view 콜백 기능: 유명한 콜백 레코드 (PENDING/CONTACTED/CANCELED)는 연약한 참고로 LeadUid를 열쇠로 합니다 이메일서비스 캘린더 이벤트.

당신의 우주는 기다리고 있습니다.

몇 분 안에 무료로 시작하세요. 준비가 되면 언제든지 제품을 추가할 수 있습니다.

영원히 무료 - 신용 카드 필요 없음