변경 로그
무슨 일이야?
플랫폼에 대한 모든 개선 사항, 그것이 선적.
· kamo-shared-library
Shared AusEngineClassifier — §8.2 에이전시 매핑을위한 진실의 한 소스
Program→engine, run→engine, decision→gate 매핑은 현지에서 *************** 자본 시장 잠금 단계 AUS 하드 스톱 동일한 분류를 필요로 하고, 공정한 문에는 2가 없습니다 drift 할 수있는 사본. 3 개의 순수한 매핑을 추출 *************** (정적, 소진 스위치 = 컴파일-forced 완료 / §8.2 드리프 가드). 가격의 해결사 이제 위임 그것; 자본 시장의 LockStageAusGate는 동일을 사용합니다. 첨가물, schema 없음.
· kamo-internal
AI 자동 태그 + 캡션 UI; 공급 업체 비용 계층 / 비전 설정 (P3)
Settings → AI → Providers: 각 공급자는 Cost tier (Light/Medium/Heavy)를 선정하고 선정합니다 비전 toggle 지원 (+ 목록 칩). 물자 서랍: AI를 가진 'Suggest 꼬리표 (칩을 받아들이십시오 적용) 및 AI와 'Generate description with AI' — 모두 org의 자체 구성 공급자를 호출 MediaService→AIService; 비전 공급자가 설정되지 않을 때 명확한 메시지로 실패했습니다.
· AIService
공급자 cost-tier/vision passthrough + 내부 원샷 비전 엔드포인트
AiProviderController reads/echoes costTier + supportVision. 계정 관리 서비스 이득 selectVisionProvider (orgId, 계층). *************** 원샷 실행 org의 공급자/adapter ( session/RAG/tools 없음)를 재사용하는 시각 완성. 새로운 AiInternalController POST /api/ai/internal/vision (X-Internal-Auth, OTK-exempt) 서비스-to-service 콜러.
· MediaService
AI 자동 태그 + org의 제공 업체를 통해 캡션 (P3)
자료AiController POST *************** 소유권을 확인합니다. 짧은 라이브 서명 된 자료 URL을 축소하고 AIService의 내부 비전 엔드포인트 (org's AiVisionClient를 통해 자체 공급자, LIGHT tier). Lenient 태그 파싱; 비전이 없다면 실패 설정된 공급자.
· kamo-shared-library
AiProvider 비용 층 + 비전 플래그 (2 개의 직각 기능 축)
새로운 AiProviderTier enum을 통해 CostTier (LIGHT/MEDIUM/HEAVY) 및 supportVision boolean을 추가하십시오. AiProvider, 그래서 통합은 비싸게 사용 및 비전을 지원하는 방법을 선택할 수 있습니다. Active Vision 공급자를 위한 Repo finder. ALTER를 통해 AI PROVIDERS에 추가된 열.
· EmailService
Server-side "display 외부 이미지" 동의
외부 이미지 선택의 기억하는 client-local (localStorage)를 대체합니다. 튼튼한 per-member 기록으로. 새로운 RemoteImageConsentService (파일 소프트 읽기 그래서 메시지 fetch는 여전히 테이블이 존재하기 전에 작동합니다) + POST /api / 이메일 / 원격 이미지 일관성 관련 기사 Full-message DTO는 이제 RemoteImages를 운반합니다. 허용된 (looked up 로 회원 + 메시지-ID), 단일 메시지, 스레드, 공유 메일 박스에 팝업 fetch paths 그래서 클라이언트는 서버에서 문을 씨.
· kamo-shared-library
이메일RemoteImageConsent entity + 저장소
회원이 외부(remote) 이미지를 표시하도록 선택된 기록 특정 메시지에 대한, keyed by member id + 정상화 RFC Message-ID (unique). email metadata member-scoped 패턴을 따르십시오 (FilterRuleEntity). 뒤로 server-side "display 외부 이미지" 선호도 그래서 선택 persists 장치 및 세션. KamoInitializer는 다음 실행에 테이블을 만듭니다.
· InitializerService
INVESTOR PRICE 열을 rate locks + loan pricing snapshots에 추가하십시오
@Order(80) idempotent ADD COLUMN EXISTS (DECIMAL(9,4)가없는 경우, price-to-100과 일치합니다. 그리드) 그래서 MLOS RCE는 진정한 비 PAR 투자자 실행 가격을 기록 할 수 있습니다 바인딩 lock-of-record와 par-by-omission 대신 경계표. 부가 가치; 거울 기록TranscriptMigration.
· kamo-shared-library
RateLock + LoanPricingSnapshot에 대한 진정한 비 비교 투자자 가격 기록
바인딩 비율 자물쇠 기록 및 그것의 경계표는 단지 비율 + lockDays를 실행했습니다; Discount/origination 포인트는 null을 남겼습니다. 그래서 핵심 요소는 PAR을 읽었습니다. 실제 가격 번호 **************** 가격-에-100 lender 마진 구운) MLOS 측 서약 MlosLockRecord.lockedPrice에서만 살았습니다. INVESTOR PRICE 열 추가 (DECIMAL(9,4), 배송 가격-to-100 그리드 일치) 둘 다 관계 + 그들의 DTOs + *********** 그것은 INVESTOR 실행 가격, deliberately not decomposed into 차용점 (그것) 마진을 그물로 잡고 수수료 모델이 필요합니다. — decomposing now will misstate shielder 포인트, Reg-Z / ECOA 공개 오류). 포인트는 수수료 모델 토지까지 null을 유지; 원시 가격은 이제 lock-of-record에 보존되어, 단지 측 ledger. 최종 가격에서 RCE (MLOSCapitalMarketsService)에 의해 Populated; 열 materialized 작성자: KamoInitializer RateLockInvestorPriceMigration (예를 들어 AD COLUMN).
· kamo-internal
Admins connect RingCentral 회원의 대신에
다른 회원의 전화 설정에서 관리-VOIP 권한 (canManageVoipConfig) 이제 회원의 Connect/Reconnect/Disconnect를 참조하십시오. ringCentral 계정 대신 읽기 전용 "그렇게 연결해야합니다" 메시지 - sysadmin가 회원의 RingCentral을 보유하는 일반적인 경우 자격. 연결 사본은 그 회원과 함께 로그인 할 수 있습니다. credentials 및 Target memberID는 (서버가 올바른 실행)를 통해 전달됩니다.
· VOIPService
해당 이용 후기에 달린 코멘트가 없습니다
Per-member RingCentral 흐름은 자체적으로 관리되었으므로 관리 관리 또 다른 회원 프로필은 "그들은 스스로 연결해야합니다." 시스템 일반적으로 회원의 RingCentral 계정을 만들고 자격 증명을 보유합니다. 회원을 대신 연결할 수 있어야 합니다. - OAuthController 회원 start/status/disconnect는 이제 옵션 대상을 수락합니다. 회원아이디 다른 회원의 행동은 MANAGE EXTENSIONS 또는 MANAGE VOIP 설정 (프로필 편집문을 mirrors); 각자는 항상 허용됩니다. - 시작은 또한 대상 회원이 실제로 그 인스턴스를 할당한다 ( 인스턴스는 org-scoped이므로 이 같은 것을 확인합니다. - RingCentral 로그인은 여전히 정체성을 결정합니다. 할당된 vs-connected extension guard flags a mismatch.
· kamo-internal
사용 분석 + 통찰력 보기 (P2)
이름 * *************** 이벤트 및 통찰력 대화 상자 org 총 + 가장 많이 사용되는 재료 (다운로드 + 미리보기).
· MediaService
MaterialAnalyticsController - 기록 이벤트 + 집계
****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** (record) + GET /analytics (물자 수당 유형 + org 합계).
· kamo-shared-library
MaterialEvent entity+repo (사용 분석)
Append-only 사용법 사건 *********** per-(imgId, 타입) 집단 쿼리. 테이블 Material EVENTS (targeted CRDB DDL; KI 자동 수).
· kamo-internal
승인 워크플로 UI + 로드 올 필터링 (P2)
서랍의 상태 제어 **************** 타일에 상태 배지, 그리고 toolbar의 상태 필터. 또한 모든 재료 페이지의 전체를로드 (캡핑) 그래서 검색 / 태그 / Campaign/status 필터는 전체 라이브러리를 덮고 첫 번째 페이지는 아닙니다.
· MediaService
MaterialReviewController - 상태 맵 + 설정 통계
GET /api/media/materials/reviews (org-wide imgId→status map) + 재료 상태를 설정하기 위해 POST (validated, reviewer-stamped, upsert).
· kamo-shared-library
MaterialReview entity+repo (응용 상태 측면 테이블)
자료 당 DRAFT/PENDING/APPROVED/ARCHIVED는, imgId에 의해 열쇠가 되었습니다 (작성 schema는 비터치 않는). 제품정보 자료 REVIEWS (targeted CRDB DDL; KI 자동 수표).
· kamo-internal
Per-member RingCentral는 + softphone 웹 전화 v2 수정을 연결합니다
Softphone SDK 수정(ringcentral-web-phone is v2.4.0, v0.x 어댑터가 아닌 대상 — 오래된 wp.userAgent.* init에서 사용 threw): - v2 API를 위한 RingCentralPhoneSdk를 씁니다: 단 하나 sipInfo 목표, start()/call()/dispose(), inboundCall/outboundCall 이벤트, 초기 아웃바운드 배선, 합성 mute/hold/muted/unmuted, 및 SDK의 채택 #rc-remote-audio로 per-call 오디오 요소 그래서 AV 볼륨 / 장치 라우팅 작품. - PhoneSdk.SipInfo: outboundProxyBackup + stunServers 추가. - useSoftphone: 먼 걸프에 갇혀있는 호출 배너를 삭제 반지; credential 새로 고침에 SDK 중간 호출을 찢지 마십시오; 감시 auto-answer + 통화 대외 이중 허용. Per-member RingCentral 연결: - PhoneSettingsTab : 구성원의 자체에 "Connect RingCentral"카드 프로필 (admins get read-only status), OAuth redirect handling, 과 extension-mismatch 경고. - voipApi : 멤버 OAuth start/status/disconnect. - useSoftphone + SoftphonePanel : "Connect와 함께 MemberConnection 강판 당신의 RingCentral 계정” 등록 오류 대신 신속한.
· VOIPService
Per-member RingCentral OAuth identity + 소프트 폰 SIP 수정
연약한 전화 SIP credential 고침: - getSipCredentials: 지도 outboundProxyBackup + stunServers (웹 전화 v2 필요 WSS의 실패 + ICE/media; throw ProviderException (502) 대신 bare RuntimeException (500) SipController의 캐치가 놓쳤다. 잘못된 확장 SIP ID. Per-member RingCentral 연결: - RingCentralTokenResolver: 회원의 자신의 토큰을 해결/refresh Single-flight (RC는 토큰을 재생합니다), 죽은 토큰에 필요한 연결, and revoke-on-disconnect. – 품질 협력 업체 중국에서 - OAuthController: *********** — 세션에서 회원 (self-serve), VoipCalling 범위, PKCE; 콜백 레코드 연결 연결 확장. - SipController + PhoneProviderFactory: 소프트 폰은 회원으로 등록 OWN 확장; unconnected 때 200 needsMemberConnection discriminator를 반환합니다. - MemberVoipConfigController: 연결 상태를 노출; 재 할당에 회귀. - new-table reads degrade gracefully if member voip oauth token 아직 마이그레이션되지 않습니다.
· kamo-shared-library
회원 추가VoipOAuthToken per-member RingCentral 연결
Per-member OAuth 토큰 키 (회원, 공급자, 인스턴스) 백업 extension-scoped RingCentral 작업 - softphone sip-provision 플러스 회원의 개인 통화 로그 / voicemail / 존재. 에서 Distinct org/instance OrgOAuthToken (위험한). KamoInitializer가 실행해야 합니다. 지원하다 ***************
· kamo-internal
컬렉션/캠페인 UI (P2)
Left-nav Collections section (create/select/delete), 수집보기에 캠페인 필터, 그리고 세부 서랍의 컬렉션 편집기 (add/remove material, create-and-add). 사이트맵 /api/materials/campaigns/* + materialsCampaignsApi; workspace는 아이템 맵에 참여합니다. 태그와 같은 클라이언트 측.
· MediaService
MaterialCampaignController — CRUD + 아이템 맵 + 추가/제거
/api/media/materials/campaigns: list/create/update/delete, GET /items (org-wide imgId↔campaignId 지도), POST /add + /remove org-ownership 체크.
· kamo-shared-library
MaterialCampaign + 아이템 엔티티티 / 저장소 (컬렉션)
First-class는 폴더에 걸쳐 수집 그룹화 자료를 명명했습니다. 테이블 Material CAMPAIGNS + 자료 CAMPAIGN ITEMS (targeted CRDB DDL; 다음 실행에 KI 자동 수 있습니다).
· kamo-internal
태그 UI + 액세스 레벨 제어 (P2)
태그 (org-scoped, cross-cutting) : 타일에 태그 칩, 태그 필터 바 (선택 사항), 그리고 세부 서랍의 태그 편집기 (assign/remove 기존, create-and-assign new). 사이트맵 /api/materials/tags/* 프록시 + 자료TagsApi를 통해. 또한 가시성 (access-level) 추가 기존의 액세스 레벨 엔드포인트를 사용하여 서랍에 제어합니다.
· MediaService
MaterialTagController - 태그 CRUD + 할당 / 할당 + 할당 맵
/api/media/materials/tags: list/create/delete 태그, GET /assignments (org-wide imgId↔tagId workspace가 클라이언트 측에 참여합니다), POST /assign + /unassign with org-ownership checks.
· kamo-shared-library
MaterialTag + 할당 entities/repos (org-scoped 태그)
플랫, 크로스 절단 태그 축 마케팅 자료 폴더. 테이블 Material TAGS 및 자료 TAG ASSIGNMENTS (클래드 CRDB DDL를 통해 생성; 다음 실행에 KI 자동 수 있습니다).
· kamo-internal
관리형 공공 링크 UI (P1) — create/expiry/revoke/view-count
Detail 서랍은 'Public link' 패널 (ShareLinkManager)를 얻습니다. 튼튼한 링크 만들기 옵션 라벨 및 expiry (1h/1d/7d/30d/never), 복사, 그것의 보기 수를보고, 그것을 부활. /api/materials/links 프록시를 통해 새로운 MediaService 레지스트리 엔드포인트에 의해 백업되었습니다. 더 보기 빠른 소셜/이메일 공유를 위한 One-shot Quick-copy link stays.
· MediaService
관리형 공개링크 엔드포인트(create/list/revoke) + 추적된 서비스
POST/GET /api/media/materials/links 및 DELETE /links/{id}를 MaterialShareLink에 의해 백업 추가하십시오. 공개에서 관리 된 토큰을 해결하십시오. 우선 (확인 된/expiry 및 범프) viewCount) 레거시 HMAC verifier로 다시 떨어지기 전에. 무작위 opaque 토큰, org-scoped 소유권 검사, TTL는 <=1y.
· kamo-shared-library
MaterialShareLink 레지덴셜 + 리포 (managed/tracked public link)
Backs revocable, expiring, 마케팅 자료에 대 한 뷰 카운트 된 공공 링크 — persisted 그래서 링크는 나열 될 수 있습니다, revoked, 및 계산 (vs. stateless HMAC 한 샷 토큰). KI (@EntityScan com.kamo) 및 MediaService에 의해 자동 처리; KI가 뛰기 필요 자료 SHARE LINKS 테이블.
· kamo-internal
대화 보기 행에 우클릭 / long-press context 메뉴 추가
모두 보기 모드에서 목록 동작 메뉴를 완료합니다. 대화 행 이제 열다 오른쪽 클릭에 동일한 공유 메뉴와 스레드 레벨 작업으로 긴 압박을 터치: 대답 / 대답 모든 / 앞으로 ( 스레드의 최신 메시지에 작동, 에 fetched 수요 및 활성 사서함으로 구성), Spam / Spam 및 삭제하지 (전체 스레드를 통해 승인), 마크 읽기, 스타 / Unstar.

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