AI 자동 태그 + org의 제공 업체를 통해 캡션 (P3)
자료AiController POST *************** 소유권을 확인합니다. 짧은 라이브 서명 된 자료 URL을 축소하고 AIService의 내부 비전 엔드포인트 (org's AiVisionClient를 통해 자체 공급자, LIGHT tier). Lenient 태그 파싱; 비전...
MaterialAnalyticsController - 기록 이벤트 + 집계
****************************************************************************************************************************************************************...
MaterialReviewController - 상태 맵 + 설정 통계
GET /api/media/materials/reviews (org-wide imgId→status map) + 재료 상태를 설정하기 위해 POST (validated, reviewer-stamped, upsert).
MaterialCampaignController — CRUD + 아이템 맵 + 추가/제거
/api/media/materials/campaigns: list/create/update/delete, GET /items (org-wide imgId↔campaignId 지도), POST /add + /remove org-ownership 체크.
MaterialTagController - 태그 CRUD + 할당 / 할당 + 할당 맵
/api/media/materials/tags: list/create/delete 태그, GET /assignments (org-wide imgId↔tagId workspace가 클라이언트 측에 참여합니다), POST /assign + /unassign with org-ownership...
관리형 공개링크 엔드포인트(create/list/revoke) + 추적된 서비스
POST/GET /api/media/materials/links 및 DELETE /links/{id}를 MaterialShareLink에 의해 백업 추가하십시오. 공개에서 관리 된 토큰을 해결하십시오. 우선 (확인 된/expiry 및 범프) viewCount) 레거시 HMAC verif...
Thumbnail 예정된 재료 처리
Headless 청소는 ConversionService의 OTK thumbnail 파이프라인을 몰 수 없습니다, 그래서 수출을 저장 한 후 ImageIO를 통해 페이지-0 PNG thumbnail을 생성합니다. — 예정된 자료는 이제 다른 어떤 것과 같이 격자에서 렌더링, 필요 없음.
Scheduled generation — cadence의 스윕 실행법
- CanvaScheduleController : org 일정에 대한 CRUD (recipe + cadence + 시간 / 일 + 선택적 소셜 타겟), computes nextRunAt - CanvaGeneration의 특징 서비스: headless ***********로 물자 (공정 ...
Saved autofill 레시피 CRUD (org-scoped)
CanvaRecipeController: GET/POST /api/media/canva/recipes + DELETE /{id} — save/list/soft-delete 브랜드 템플릿 + 필드 매핑, 범위 콜러의 org.
Enterprise autofill – 데이터-머지 브랜드 템플릿
- CanvaApiClient : 목록 브랜드 템플릿 (dataset=non empty), 데이터 세트를 얻을, 자산 업로드 작업, create/get autofill 작업 - CanvaController: GET /brand-templates, GET /brand-templates/{...
Short-lived는 마케팅 자산에 대한 공개 URL을 서명했습니다
소셜 제공 업체 (Meta) 및 이메일은 경계에 대한 특정 자료를 fetch 개인 이미징 물질 버킷을 폭발하지 않고 창. - MaterialUrlSigner: HMAC-SHA256 (platform.enc-key) 토큰 = imgId:orgId:exp, 1h TTL - Material...
편집 가능한 디자인으로 Canva에 파일을 가져 오기
-********** (기본 디자인 가져 오기) - CanvaController POST /imports (다중) → create+poll 가져 오기 작업 → 편집기 return-nav를 위한 correlation state를 가진 깊은 연결 - CanvaOAuthController에서...
Return-nav JWT 서명 확인; tidy 토큰 새로 고침
- CanvaJwtVerifier : correlation jwt의 Ed25519 서명을 확인 Canva의 JWKS (/connect/keys), 플러스 aud/exp/type; 아이에 의해 캐시된 열쇠. Return-nav는 이제 인증이 실패한 경우 수동 수입에 닫힙니다. - Canv...
기록 ingest, 유지 / 할당, 저장 사용, 요약 파이프라인
- MeetRecordingController: 내부 (X-Internal-Auth) ingest endpoints 지브리 finalize.sh 게시물은 기록을 완료했습니다. - MeetRecordingService: org MinIO (임시-메트 기록)에 업로드 기록, persists...
Canva는 OAuth + 디자인 / 내보내기 연결
- CanvaApiClient: PKCE, 토큰 교환/refresh/revoke, 사용자, 디자인 (create/list), 수출 일, 바이트 fetch - CanvaTokenService: 암호화된 토큰(PlatformSecretCipher), Single-flight proactiv...
스케줄링 시작 알림 + 게스트 링크 만료
- MeetingReminderSweep : @Scheduled 스위퍼는 실시간 불 "미팅 시작"에 초대 된 회원에게 알림 (start − noticeerMinutesBefore) on *********** 다음 회의 SCHEDULED→ACTIVE 전환 dedupe에. 과거 시작 시간보...
회원/지원/관계 세션에 따른 통합 채팅 피드
GET /api/media/sessions/chat 이제는 '카테고리' 필터 (chat, 지원, 사회; 과태 모두) 과 반환 하나 globally most-recent-first, 다각적 쿼리의 병합. 각 행은 나릅니다: - 세션타입(CHAT|SUPPORT|SOCIAL) + 회원[].m...
Surface parent-org는 request-support 팝업 주제를 공유했습니다
Child-org 사용자는 부모 org의 공유 지원 주제를 볼 수 없습니다 (assignToOwnOrg=false) 지원 요청 시 팝업만 가능 fetched own-org 주제. GET /api/support/topics/available 추가(+) parent-shared, MANAG...
Org-guards/topic/leads/rt/{orgId} 실시간 구독
Cross-tenant SUBSCRIBE는 새로운 리드 실시간 주제에 대한 가시성, 미러링 기존 /topic/social/feed 가드: 회원은 본인에게만 구독할 수 있습니다. org의 리드 스트림. 기존 *********** 이미 릴레이 security.leads.rt.* 에 /top...
통합된 타임라인 백엔드 (feed persistence, 어댑터, 라이브 릴레이)
SocialFeedService는 MediaSession/MediaObj 스키마에 게시물 / 코멘트를 보여줍니다. (채팅 모델을 재사용); SocialFeedMapper는 와이어 DTO를 구축; SocialTimelineController 병합된 피드 + 기능 및 멀티 프로바이더 작곡 ...
X (터치) + Discord 어댑터
- XAdapter: 계정 활동 webhook (CRC 도전 + x-twitter-webhooks-signature HMAC 확인), NormalizeInbound (direct message events, echo-skip), OAuth 1.0a 서명 v2 DM 전송; 소비자 플랫폼 ...
M4 메타 어댑터 + OAuth + 24h 창 + M2 경화
- Meta adapters (Messenger/Instagram) : 잘못된 수정 caption send (여기 후속 캡처) 메시지), Graph Attachment를 통해 바이트 업로드 API, URI는 MetaGraphClient에서 수정을 인코딩 - Telegram 어댑터 : ...
릴레이 크레딧 / 리드 할당 NATS 이벤트 STOMP
Security.leads.> 및 security.credits.>, /topic/...에 각각 거울 CRM 프론트 엔드 업데이트는 Leads-Available grid, Manage-Credits 필드 및 History Live를 업데이트합니다. Compiles 청소 (mvn).
Add GET /sessions/{guid}/members endpoint with display-name priority
Returns member list with name resolved via usernameAlias → fullName → alias → username, matching the same priority as the chat sessions list. This feeds ChatBox...
Paged chat list with previews, members, unread counts
that returns ChatListRowDto rows including last message preview, member summaries, per-session unread counts, and ownLastViewedAt.
Imaging proxy with HTTP Range support and per-member download tracking
On-demand translation for chat and support messages
Captures the source language for every chat / support message and adds an optional ?lang=XX param on the message-fetch endpoints plus a per-message POST /transl...
방송 종료 수 + 읽지 않은 에이전트 읽기 & 방문자 보내기
- *********** 이제 위임 *********** 그래서 조사 읽지 않은 방문자 메시지와 decrements로 세션을 반영합니다. 에이전트 호출 MarkAsRead. - 새로운 대중 *********** 헬퍼. - *********** 현재 (a) 재방송 에이전트 per-sess...
SockJS와 함께 /ws/public-chat-native 일반 WebSocket 엔드포인트 추가
/ws/public-chat-native에 SockJS 없이 두번째 STOMP endpoint를 등록하십시오 frontend는 필요 없이 native WebSocket (brokerURL)과 연결할 수 있습니다. sockjs-client library를 사용하여 unload 핸들러를 등...
방송 읽지 않은 조사에 에이전트에 방문자 메시지
방문자가 지원 메시지를 보낸 후, 최신 읽지 않은 통화를 밀어 ****************에 페이로드 그래서 에이전트의 티켓 목록 실시간 배지 및 navtop 카운터 업데이트. Mirrors 에서 방송 MediaController.sendMessage 회원 가입 채팅.
Expose 도시와 subdivision 에 방문자 geo lookup
- 도시 및 하위 영역으로 GeoResult 기록 확장 - GeoLookupService (IP-level)를 사용하는 Switch SupportTicketService.toDTO() country-only geoLocationRepository 대신, 그래서 도시 및 subdivisi...
고객 플래그 및 지원 티켓 헤더에 위치 표시
- PublicChatVisitorRepository 및 GeoLiteLocationRepository를 SupportTicketService에 주사하십시오 - 방문자Ip주소, 방문자CountryCode, 방문자CountryName in toDTO() geo lookup을 통해 - Ge...
STOMP/NATS를 통해 end-to-end 공개 채팅 실시간 수정
- PublicChatWebSocketInterceptor의 internalAuth 요구 사항 제거 그래서 방문자는 세션 토큰 만 사용하여 직접 연결할 수 있습니다. - ChatMessageDto의 senderName로 방문자 displayName를 포함 TicketChat에서 메시징하...
Live pending support ticket count via NATS — notify org owner on new tickets, add pending-count REST endpoint
Add conversion progress NATS-to-STOMP relay
Relays document conversion progress from NATS to WebSocket clients. Supports both imgId-based and member-based topic routing for real-time progress updates duri...
Enforce minimum advance booking when filtering available slots
Filters out slots that fall within the configured minAdvanceBookingMinutes window, and persists the field on create/update of webinar types.
Implement webinar scheduling backend with full business logic
Adds the core webinar scheduling system to MediaService: - WebinarService: CRUD for **************** presenter assignment **************** calendar conflict ...
Add ***-authenticated API key management endpoints for public chat
Adds /api/media/public-chat-keys CRUD endpoints for managing PublicChatApiKey shown once at creation. Uses same *** auth pattern as SupportController.
Add public chat support endpoints with anonymous visitor sessions and WebSocket auth
Adds REST endpoints for public chat session creation, messaging, and visitor management. Includes PublicChatWebSocketInterceptor for token-based WebSocket auth ...