トランザクションコミット後にNATS CREATEイベントを公開して、画像の添付レースを修正
NATSメッセージは、@Transactional body内で公開されました。 受信者は、CREATEイベントを受信し、画像をリクエストすることができます /imaging/proxy/{objImgId} 前の MediaObjImg 行が DB で表示され、 チャットが再開されるまで、404とイメージレンダーなし...
Serialize attachments in WS relay and message history; allow attachment-only sends
Three bugs fixed: 1. ChatSessionSubscriptionManager was building the STOMP messageMap manually and omitting attachments, sourceLanguageId, readMemberId, msg...
Fix NPE in getChatSessions from Map.of() rejecting null nextcoder
java.util.Map.of() throws NullPointerException when nextcoder is null (no more pages). Replace with HashMap that accepts null values. Also wrap entire handler i...
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...
Fix upload 500 (missing EmbRecordState) and empty chats tab (Timestamp cast)
Defect A: ChatAttachmentService.upload omitted **************** causing a NOT NULL violation on imgs.is_active. Added the default recordState. Also hardened Cha...
Prefer usernameAlias over User.name in memberDisplayName
Switches display name priority to: Member.usernameAlias → User.name → User.alias → User.username. Also includes the paged query dispatch fix from the previous c...
Use split First/After queries for chat sessions paged endpoint
Addresses empty Chats tab by dispatching to ****************
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
Raise client read timeout to 120s for long messages
LibreTranslate runs CPU-only argos models — a paragraph-length chat message takes 20-30s to translate, and longer ones can push past 60s. The 8-second read time...
Cache-only bulk translate, FE handles fills
Bulk message-fetch endpoints now return only translations that are already cached and tag missing rows with needsTranslation:true. The chat UIs (kamo-internal C...
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...
Scope concurrency to build jobs, not Kubernetes deploys
Workflow-level concurrency serialized the whole pipeline (including kubectl rollouts). Move the group to the build job only so deploy jobs from different runs c...
RedisのセッションGUIDによるパブリックサポートチャットの追跡
マーケティング訪問者は、/ws/public-chat-native をメンバーなしで使用しています。 orgのプレースホルダーメンバーのリクエストを参照。 導入事例|PUBLIC パブリックSTOMP接続/接続解除、放送セッション/トピック/プレゼンスに関するキー、 そして、requestor-snapshotからm...
エージェントの読み込みと訪問者の送信で配信停止数+未読
-************************ に委任されました *****************************************************************************************************************************...
作成時にチケットの地理を保存し、GeoLiteを読み込む
******************** では、訪問者の地理をキャプチャ 一度 (GeoLookupService 経由) と persists ip/country/city/subdivision 上の サポートチケット自体。 SupportTicketService.toDTO は、チケットを直接削除するジオを...
バルクロード訪問者とGeoLiteの検索をリストでスキップ
/api/support/tickets リストのエンドポイントが実行されました。 - 20**************** 呼び出し (N+1) - GeoLookupService.lookup への 20 呼び出し、各範囲スキャン GeoLiteブロックテーブル(行のミリオン)と位置に対して fetch — 〜4...
SockJS と一緒に /ws/public-chat-native plain WebSocket エンドポイントを追加
/ws/public-chat-nativeでSockJSなしで2番目のSTOMPエンドポイントを登録する フロントエンドは、必要に応じてネイティブWebSocket(brokerURL)と接続できます sockjs-client ライブラリは、アンロードハンドラを登録し、 サイトマップ 元の /ws/public-c...
訪問者メッセージのエージェントに未読のカウントをブロードキャスト
訪問者がサポートメッセージを送信した後、最新の未読アカウントを押します ****************************************************************************************************************************...
JPAリポジトリのスキャンを拡大して、コマースパッケージを含める
Kamo-shared-library がリリースされました。 必須条件 メニュー (com.kamo.z.shared.commerce で). MediaServiceはスキャンしたdonotmodify.dao.reposだけなので、 Beanは欠落しました アプリケーションが起動できなかった。 より広いスキャン...
ChatWebSocketControllerでHashMapのインポートを復元する
以前のリファクタは、HashMap のインポートが削除されましたが、 handleTyping メソッドは、タイピングイベントのペイロード用のHashMapをまだ構築します。 Forgejo ビルドで 'cannot find 記号: class HashMap' で失敗します.
セッション作成時にNATSの消費者を積極的に作成し、メッセージの損失を防ぐ
以前、NATS JetStream プッシュコンシューマーは STOMP クライアントでのみ作成されました。 /app/chat/subscribe を送信しました。 配送ポリシー 新しい、以前に公開されたメッセージ 消費者は永続的に失われた - 訪問者メッセージと名前の変更を引き起こします エージェントが最初に購読さ...
コアNATSのリレーテーマの規定
マッチセキュリティサービスコア公開:Dispatcherで購読する JetStream ではなく、security.theme.provision.* (ストリームのみチャットをカバー).
Kamo-shared-library update (remove OrganizationType, add isTopLevel) のリビルド
Kamo-shared-library update (remove OrganizationType, add isTopLevel) のリビルド
訪問者のチケットにpublicChatVisitor displayNameのリクエスト名を使用する
訪問者が開始したチケットは、組織システムメンバーにハードコードリクエストをリクエストします。 DTO は、要求欄に org の所有者の名前を surfacing していました。 秋冬 publicChatVisitor.displayName に戻ると、リストが表示されます。 実際の訪問者(匿名または名前付き).
訪問者の地探査で都市とサブディビジョンを公開
- 都市とサブディビジョンフィールドでジオ結果レコードを拡張する - スイッチサポートTicketService.toDTO()を使用してGeoLookupService(IPレベル 参照) 国のみのジオロケーションリポジトリではなく、都市や サブディビジョンは、マッチングGeoLiteブロックからポップアップします
GeoLookupService でエラーをビルドし、エージェントメッセージのNATS 公開を追加
- 修正オプションとリストタイプミスマッチの******************** - NatsMessageServiceをMediaControllerに注入する - エージェントがメッセージを作成した後に chat.session.{guid} に公開 エージェントと訪問者は、ページなしでSTOMPを経由してリ...