チケット訪問者の地行で都市とサブディビジョンを表示
"都市、地域、国(IP)" として表示 — null がフィルタリングされるので、 国のデータのみが利用可能な場合、十分に劣化
訪問者の地探査で都市とサブディビジョンを公開
- 都市とサブディビジョンフィールドでジオ結果レコードを拡張する - スイッチサポートTicketService.toDTO()を使用してGeoLookupService(IPレベル 参照) 国のみのジオロケーションリポジトリではなく、都市や サブディビジョンは、マッチングGeoLiteブロックからポップアップします
タブ URL を /account ページに追加して、深いリンクとリフレッシュの永続性
タブの状態は、******************************** に同期されますので、リンク 特定のタブの作業と正しいタブは、ページ上で選択されたまま更新します.
GeoLookupService でエラーをビルドし、エージェントメッセージのNATS 公開を追加
- 修正オプションとリストタイプミスマッチの******************** - NatsMessageServiceをMediaControllerに注入する - エージェントがメッセージを作成した後に chat.session.{guid} に公開 エージェントと訪問者は、ページなしでSTOMPを経由してリ...
Correct message sides in history and handle visitor name change events
- Use messageType=VISITOR_MESSAGE from API to determine left/right in history load - Add NAME_CHANGED system event rendering in SystemMessage and TicketChat
Real-time chat delivery, message sides, notifications, and name sync
- Keep NATS subscription alive on client unsubscribe to avoid breaking agent real-time delivery - Tag visitor messages with messageType=VISITOR_MESSAGE in getMe...
******************** は、MEMBER タイプのインスタンスを使用します
Hibernate TYPE(m) = :type は 0 結果を返します。 JOINED継承の会員クラス。 MEMBERタイプ、フェッチオール、 代わりに!(m instanceof TeamMember) でフィルタリングします.
Hibernate Type()ベースクラスの問題により、メンバータブが空の表示を解除
HibernateのTYPE(m) = :type JPQLフィルタは、バインド時に0結果を返します パラメータはベースメンバークラス(JOINED継承)です。 これは影響します メンバー登録者エンドポイント。 FindByOrganizationId() +で置換 ベースメンバーを正しく返すJavaのTeamMemb...
Hibernate SQL ロギングを有効にして、メンバーのクエリを返して診断します 0
Temporarily が org.hibernate.SQL=DEBUG を有効化し、どのような SQL が Type() なのかを確認できます。 JPQL クエリは、メンバー登録者エンドポイントで生成します.
チケットヘッダで訪問者のフラグ、国、IP を表示
- 訪問者を追加するIpAddress、VisitorCountryCode、VisitorCountryName to SupportTicketDTOタイプ - レンダーフラグ emoji + 国名 + パブリックチャットチケットのticketHeaderのIPアドレス行
訪問者のフラグとサポートチケットヘッダの場所を表示
- PublicChatVisitorRepository と GeoLiteLocationRepository を SupportTicketService に注入する - 訪問者をポップアップ表示するIpAddress、VisitorCountryCode、toDTO()のVisitorCountryNameは、...
GetMembersAndSubscribersエンドポイントに診断ロギングを追加
Logs orgId、クエリ結果のカウント、およびパーマンドは、アクティブ状態を手助けする メンバータブが空のリストを表示する理由を診断します.
訪問者メッセージをVisitor MESSAGE 型としてタグ付けし、 senderName を GET メッセージに追加します
- PublicChatService: messageType=VISITOR MESSAGE を設定すると、フロントエンドは区別できます STOMP トピックに関するエージェントの応答からの訪問者のエコー - MediaController.getMessage: 送信者を含む 名前 フィールド エージェントが送信...
チケットチャットでは、常にから始まる「Visitor」のメッセージタイプを扱います
PublicChatService で公開されたビジターメッセージは、MessageType=VISITOR MESSAGE を携帯します。 MemberId に関係なくauthor='them' として明示的にマークします。 エージェントのMemberIdがシステムメンバーと一致しても、左側に表示されます.
LiveSupportPanel STOMPハンドラでVisitor MESSAGEのエコーをスキップ
訪問者メッセージは、backend の messageType=VISITOR MESSAGE にタグ付けされました。 これらをSTOMPサブスクリプションでスキップするので、訪問者のメッセージは、訪問者のメッセージがSTOMPサブスクリプションに含まれていない 応答をサポートしていた場合、左側に再出現します.
LiveSupportPanelでネイティブWebSocketをSTOMP/SockJSに置き換える
- @stomp/stompjs と sockjs-client パッケージを追加 - 代わりにSockJS + STOMPを介してメディア.{domain}/ws/public-chatに接続します 間違ったホストと間違ったプロトコルであったapi.{domain} への未加工WebSocket - STOMPが接続...
STOMP/NATS 経由でエンドツーエンドのパブリックチャットをリアルタイムに修正
- PublicChatWebSocketInterceptorから内部Auth要件を削除 訪問者はセッショントークンのみで直接接続できます - 訪問者の displayName を ChatMessageDto の senderName に含めて下さい チケットチャットでメッセージングしている人を見る - NATSサ...
ステータスフィルタと自動シード必須テンプレートをリストにワイヤーアップ
- EメールTemplateController.list() は ?status= パラメータとフィルタを受け付けます。 既存のfindByOrgIdAndStatus リポジトリクエリを使用する - 初期のシーディングを見逃したorgsのオートシードに必要なテンプレート (seedForOrgIfMissing チ...
NEW TICKET NATS通知の自動オープンサポートチケットポップアップ
新しいサポートチケットが到着すると、バックエンドはNEW TICKETを送信します。 PENDING COUNT に加えて、STOMP メッセージ。 サポート数Context ツール:open をディスパッチすることで、チケットチャットウィンドウがポップアップ表示されます。 エージェントが /support にナビゲー...
Three support/chat issues — NATS relay, auto-popup, topic fallback
1. Switch SupportNotificationService and SupportStompRelayController from JetStream to core NATS — the CHAT_MESSAGES stream only covers chat.> so JetStrea...
Allow god-mode users to provision ownerless orgs; prefer FQDNs in domain resolution
Add @Transactional to provision-theme for lazy domain loading; remove hardcoded domain from provision request
Write contact form description as chat message on public ticket creation
The description was only stored on the ticket entity and never appeared in the chat window. Added writeTextMessage() helper and call it after the system event s...
TicketHeaderのタイトルから別のチケット番号/バッジの行
タイトルは、チケット番号と2で今ラップフレックス行を共有しました バッジは、それを切断することを引き起こします。 チケット番号とバッジの占有 自分のコンパクトな行で、タイトルは最大で全幅の行を取得 包装の2ライン.
アニメーションヒーロー、タイムライン、CTA で /contact-confirmed ページを追加
専用のプレミアムでコンタクトフォームにインライン成功メッセージを置き換える 確認ページ: パーティクルバーストでSVGチェックマークをアニメーション化、「Happensとは」 次’ 3ステップのタイムライン, そして「あなたを待つ」CTAカード. 全23個のローカルファイル 新しい連絡先で更新されたi18nキーを確認し...
サポートチケットリストの応答でチケットキーを処理する
MediaService は { チケットを返します: [...], 合計要素は、フロントエンド データのチェックのみ コンテンツは、リストが常に空のレンダリングを行ないます.
Add PATCH /org/{id}/colors endpoint to safely update only color palette fields
コンタクトフォームの 443 から 80 までの MEDIASERVICE URL ポートを修正
ClusterIP サービスは、ポート 80 だけを公開します。 http で 443 を使用して、 すべてのコンタクトフォームの送信に関するConnectTimeoutError.
Org設定セクション(タイムゾーン、年齢req、コンテンツフラグ、説明、alias)を追加します。 プレビュー/AddDomainボタンを削除します
再設計 LabelManager — インラインセクション編集、壊れた保存の修正、既読のみのデフォルト
LabelManager.tsx をパーセクション読み取り/編集パターンで書き換えます。 壊れた保存を修正 ボタン (validateForm は、連絡先/会社フィールドが決してポップアップされていないため保存をブロックしました) API から。 グローバルなフォームの送信、検証フォーム、エラーの状態、プレビューモード...
カモメールドメインバリデータを追加して、クロステナントメールアドレスをブロック
カモメールドメインValidatorコンポーネントを導入し、サービスレイヤーでチェックします。 送信されたメールドメインが org の検証済みのデフォルトドメインにマッチするかどうか カモメールがアクティブプロバイダーであるとき。 MailboxProvisioningService に注入される、 AliasServ...
メールボックス、エイリアス、共有メールボックス作成のKamoMailドメイン制限を強化
カモメールがメールプロバイダである場合、メンバーはメールボックスのみを作成できます。 org の検証済みのデフォルトドメインを使用して、エイリアス、共有メールボックス。 3つの独立したレイヤーで強化: フロントエンドUI(プレフィックス+ロックドメイン) ドメインがない場合、無効な状態を入力すると、Next.js プロ...