チャットUI研磨 - プライマリカラーテーマ、入力中の emoji、ラウンド送信btn、六角ステータスカラー
- 部署タブとチャットボックスヘッダーは、ハードコードされた緑色の代わりに --color-primary を使用します - Emojiピッカーボタンは、チャット入力フィールドを右揃えに動かしました - ボタンを送ります flexShrink:0 楕円形にスケリングを防ぐため - HexHead のボーダー: オンライ...
チャットシステムの改善 - 編集スピン、六角マスクの回転、色、最大最小化
- 編集(バックスペース/削除)と入力を検知して後方ヘックスヘッドスピンをトリガー - hex クリップマスクをタイピング/編集中に境界線とともに回転させる(アバターは直立的にとどまります) - 部署のタイトルヘッダーとチャットボックスのタイトルバーを#22c55eに変更(オンライングリーン) - 最大化された状態から...
新しいOTKセッションと一致したときに無効にしないでください***セッション
有効なルートは、Redis から既存の *** セッションを削除しました OTKを見る前に。 OTK が同じセッションを指していたとき、 "Sessionが見つからなかったり、期限が切れたりしない"と、検索結果が失敗します。 今だけ IDが新しいIDと異なる場合、古いセッションを無効化します.
クエリパラメータから、クロスサブドメインWebSocket authを受け付けます
?***= クエリパラメータから ID を読みます。 クッキー。 これは、内部のフロントエンドを可能にします.kamocrm.com 認証する WebSocketは、クロスドメインクッキーなしでmedia.kamocrm.comに接続します。 インターセプターはRedisに対して直接セッションを検証します.
パス*** IDは、クロスサブドメインWebSocketのauthのクエリパラメータとして
クロスドメインのクッキーに依存するのではなく(全体で動作しない) subdomains) は、*** クッキー クライアント側を読んで、クエリとして渡します。 media.kamocrm.com WebSocket に接続するときのパラメーター.
Cookie ドメインを .kamocrm.com にクロスサブドメイン共有を設定する
クッキーは明示的なドメインなしで設定されました。 webSocket認証用のmedia.kamocrm.comへ.
Cookie ドメインを .kamocrm.com にクロスサブドメイン共有を設定する
*** クッキーは明示的なドメインなしで設定されました, デフォルトでは、 内部.kamocrm.com. これにより、クッキーが送信されないように webSocketハンドシェイク中にmedia.kamocrm.com、すべてのWS接続を引き起こします 「有効な *** クッキーが見つかりません」で拒否する.
独自の消費者再試行によるNATSコンシューマーバインディングの処理
- createNatsMessageHandler() メソッドにメッセージハンドラーを抽出する - 「Consumerは既にバインドした」時に、独自のコンシューマー名でリトリーロジックを追加 サーバの再起動後にエラーが発生します - 動詞デバッグロギングをクリーンアップ
チャットのメッセージング、プレゼンストラッキング、自動オープンの問題の解決
- ユニークなNATSサブスクリプションを再試行することで受信されていないメッセージを修正 "Consumer既にバインドした"エラーが発生した場合のコンシューマー名 - STOMP 接続で即時のハートビートを送信することにより、オフラインの状態を修正し、 接続後のバルクプレゼンスを再取得 - 冗長を避けるためにセッシ...
MUI アイコンの型エラーを解決し、単一の STOMP WebSocket 接続を共有する
- tsconfig パスを @mui/icons-material に追加して、壊れた ESM をバイパスします。 ./esm/index.d.ts 以外の点の v7.3.1 でエクスポート - ChatWebSocketContext を作成して、単一のSTOMPクライアントをアプリ全体に共有 PresenceWr...
階段閉鎖を防ぐための openChat でメンバーパネルを開くための ref を使用する
ユーザーがメンバーパネルを開くと、メンバーをクリックしてチャットし、閉じます。 async session API 呼び出しが返される前のパネル、チャットウィンドウは パネルがまだ開いているかのように500pxオフセットで置かれる。 お問い合わせ openChat がメンバーをキャプチャしたので、呼び出し時にクロージャ...
Remove forced WebSocket headers from media middleware
Traefik v3 handles WebSocket Upgrade/Connection headers natively. Remove forced headers that broke non-WebSocket API requests.
ポートのTraefikによるRoute MediaServiceトラフィック 443
- クラスター内部サービスアクセス用の MEDIASERVICE URL env var を追加 - 最初に env var を使用する 9 API ルートで getMediaServiceBaseUrl を修正 - WebSocketのホックはTrefikによってmedia.kamocrm.com:443に接続します...
ポートのTraefikによるルートWebSocket 443
- service.yaml:podの実際のリスニングポートに合わせてポート80→8443を修正 - ingressroute.yaml: バックエンドのスキーム https + port 8443 を使用する - servertransport.yaml: バックエンド TLS の証明書に insecureSkipV...
リポジトリの可用性でコマース豆の状態を作る
Add ******************** に婚約 ライフサイクル そして CommerceService コマースリポジトリがいるときにのみ読み込みます スキャン。 UnsatisfiedDependencyExceptionをサービスで防いで下さい com.kamo をスキャンする MediaService ...
Add system account to all NATS configs
Add $SYS account with admin credentials to k0m1, k1m1, and k2m1 NATS configs. Enables nats CLI cluster management operations (peer removal, step-down, etc.) for...
NATS接続用のクラスター内部DNSを使用する
デフォルトNATS URLをWireGuard IP(100.64.x.x)から変更 nats.kamo.svc.cluster.local ローカルサーバ リモートノード (k0m1、k2m1)はWireGuard IPに残ります.
NATSが利用できなくなったときにアプリ起動を許可する
JetStream() から @ConditionalOnBean を削除し、@Nullable を 接続パラメータ。 natsConnection() が null を返すとき (NATS) unreachable)、ばねはUnsatisfiedDependencyExceptionと衝突しません.
Layout.tsx を削除し、docCount/historyCount タイプのエラーを修正
- 誤って追加されたレイアウトを削除(サイト全体に影響を与える) - page.tsx のラッパー div をリバート (不要) - グラデーションの背景をLeadViewClientのルートコンテナに移動 - 型のエラーを修正: docCount と HistoryCount は LeadInsights には存在し...
PipelineOrdersTab ベンダーのフィールド名をバックエンド DTO に合わせて更新
V.uid → v.id、v.name → v.companyName、および選択したVendorIdタイプを変更 数値から文字列へ CommerceMarketVendor DTO と整列します.
コマース市場向けのバックエンド DTO による TypeScript 型を揃える
CommerceMarket、CommerceMarketVendor、およびVendorCategory TypeScript インターフェイスは、間違ったフィールド名(uid/name vs id/title、名前vs)を使用しました companyName、websiteUrl対ウェブサイト、説明対ノート)。 こ...
パイプラインの市場はローディングおよび市場のマネージャーのレイアウトの間隔を置いていません
パイプラインは、getPOSConfig() から "No Commerce が設定されていない" を示すようになりました。 市場フィールドを返さない。 コマースMarketApiから市場をフェッチ 直接。 また、市場とフィールドの設定タブの間隔/パディングを固定 製品カタログの設計に一致して下さい.
POS の設定で 'u.map が機能しない、 Commerce nav を更新する
- コマースMarketApi(getMarkets、getVendorCategories、getMarketVendors、SeedVendorCategories)で防御的な配列抽出を追加して、包まれたAPIレスポンスを処理する - すべての6 POSタブを含む設定StatusWindow Commerceサブト...
Next.js の動的ルート slug の競合 ('id' と 'market) を解決 お問い合わせ
マージ [marketId] ディレクトリを Commerce-markets API ルートの [id] に格納します。 Next.js は、同じパスレベルですべての動的セグメントを使用する必要があります。 同じパラメータ名。 エイリアスを破壊して市場Idからidに名前を変更しました.
企業パイプラインタブでTypeScriptエラーを解決する
- オブジェクトキーから自動生成とオプションのtoCSVカラムパラメータを作る - ダウンロードブロブの呼び出しを修正調達タブ(間違ったラグ数、欠落Blobのラッパー) - MUI Grid v1 API (item/xs/sm/md props) を 10 パイプライン タブ ファイルを渡る v2 API (size...
Remove duplicate session timeout fields from session types
Aligns with SecurityService change that removes createdAt/expiresIn from Redis session records and tokenExpiration from session info responses. - user-info/rou...
Remove duplicate session timeout system from Redis records
Session expiry is now managed solely by the Redis key TTL. The internal createdAt/expiresIn fields stored inside the Redis value have been removed — they formed...
Update internal layout and styles
- Make main wrapper background transparent so home page fixed background is not covered - Include latest adjustments to automation, security access, and account...
Handle optional effectiveDate and processedAt in DateTimeDisplay
Type error: string | undefined not assignable to string | number | Date. Add null checks before passing to DateTimeDisplay, show em-dash when absent.
Align Commerce submenu with actual Commerce page tabs
- Rename Domain Configuration to Engagement Types - Add Rental Assets, Vendors, Subscription Plans - Update tab param to engagement-types for consistency - Labe...
Advanced datagrids fill 100% of content area
- SettingsView: tab content wrapper overflow hidden, motion.div flex chain so tab content gets bounded height and grids can expand. - PipelineRentalAssetsTab:...
Resilient probes so cluster stays up when one node is offline
- Liveness: tcpSocket on 4222 (do not depend on JetStream meta leader) - Readiness: initialDelay 90s, period 15s, failureThreshold 10 so k0m1+k1m1 can form qu...