/setup/dnsページとドメイン設定フローを/networkに追加
- 2相流れの新しい /setup/dns ページ: ドメインエントリ その後 DNS 60秒の自動ポーリングとSSL確認 - マニュアルDnsGuide:すべてのために、利用可能なステップバイステップのDNS指示 レコード名とターゲット値のコピーボタンでスキルレベル - AliasStatusTable: ライブ・パ...
空の API 応答と課金タブの優雅な劣化を処理する
- billingApi の get/put のヘルパーは空の応答ボディを安全に扱うようになりました res.json() を空の入力でクラッシュする代わりに - PlansBillingTab loadDataは、.catch() ですべての課金API呼び出しをラップします。 そのため、個々のエンドポイントの失敗はペ...
請求プロキシのための***セッションからorg/memberコンテキストを解決する
BillingService コントローラーは X-Org-Id と X-Member-Id ヘッダーが必要です。 直接呼び出し(APIServiceをバイパス)すると、これらは設定されていない。 次に、Next.js プロキシは、*** Cookie を読み込み、セッションを Redis、orgID と Member...
APIServiceを介した代わりにk8s DNS経由で直接BillingServiceを呼び出す
Next.js サーバー側プロキシは、BillingService を呼び出します。 メニュー 直接、スキッピング APIServiceを介した不要なホップ。 BILLING SERVICE URL env varを使う デフォルトでは k8s の内部 DNS を使用します.
Add /api/billing/*のNext.js APIプロキシルート
請求 API クライアントは、/api/billing/* を相対 URL として呼び出されました。 APIService ゲートウェイの代わりに Next.js サーバーを押します。 追加 先に進むキャッチオールプロキシルート(商取引市場としてのサメパターン) ForwardToApi → APIService → ...
ストレージのアドオンを数量スライダーで置き換える
追加ストレージは、シンプルなオン/オフではなく、使用ベース($4/25GBブロック)です。 アドオン スライダ(25GBの0-1000GB)でトグルスイッチを交換 ステップ) 数値入力フィールドと。 コストダウンがストレージをそのまま表示 別のライン項目。 PlanSelectionには追加のStorageGBが含まれ...
親 ID と親を OrgProviderProps タイプに追加する
組織の props インターフェイスは、parentId と親フィールドが欠落していました。 しかし、TypeScriptのコンパイル中にそれらをドロップする原因 バックエンドは送信します。 この予防組織。hasParent から つまり、すべての子組織のPlans & Billingタブを隠しました.
ワイヤー・ビリングマネージャーとリレーションマネージャー 実際のバックエンドへ
BillingManager(アカウント課金タブ): - 実際のStripe-backedの支払方法の100%のローカル州のモックを取り替えて下さい billingApiによる管理 - マウント上のGET /api/billing/payment-methodsから支払い方法を読み込む - 支払い方法フローを追加する ...
ライブKamoCRMサブスクリプションダッシュボードでmock statsページを置き換える
/settings/account?tab=statsを完全に有線、読み取り専用インサイトに再構築 ダッシュボード。 すべてのモックデータをBillingServiceに並行して呼び出します 既存の billingApi クライアント。 レイアウト: - トップ2-colグリッド:プラン概要カード(プラン名、ステータ...
プランフローのエンドツーエンドを選択
- PlansBillingTab ダイアログ(プレースホルダーの置換) にワイヤ プランの計算機 - ページロードの課金APIから利用可能なプランをフェッチ - ハンドルプランの提出:新しいサブスクリプションを作成するか、既存の更新 - サブスクライブ前の支払い方法を要求する(支払いを追加するリダイレクト) - 提出...
ルートKamoCRMのorgのための計画と請求タブを隠す
KamoCRMの所有者は、費用なしですべての機能を持っています — 彼らはすべき 請求タブが表示されません。 タブは条件付きでのみレンダリングされます チャイルド組織(組織.hasParent が真の場合) チャイルド orgの所有者は、そのorgの請求を参照してください。メンバーは、に基づいて請求を参照してください ...
プラットフォーム間でStripe課金システムを統合
- すべての請求のための完全なTypeScriptタイプを持つ新規請求Api.tsクライアント エンドポイント(サブスクリプション、決済方法、請求書、クレジット、使用方法) 設定、管理者) - 新しいストライプ要素コンポーネント: StripeProvider、PaymentMethodForm、 完全な費用の故障、容...
重複ワークフローの実行を防止するために、concurrencyグループを追加
プッシュがワークフローと Workflow dispatch をトリガーする場合も、 (または2つのプッシュは迅速な成功に到着します)、両方の実行が実行されます 同時に。 通貨グループを追加すると、任意の進行をキャンセルします 新規起動時に同じワークフロー+ブランチを実行します.
ドキュメント、スプレッドシート、プレゼンテーションを編集するためのDocsボタンで開く
- ドキュメントマネージャのアクション列で新しい「Docsで開く」ボタン(EditNote icon) .docx、.xlsx、.pptx、.odg、.doc、.xls、.pptファイル - POST /api/docs/open/{imgId}を介して新しいタブでDocsエディタでドキュメントを開きます - 既存の編...
完全なエンドポイント管理で統合された自動リードインポートUIを構築
生産準備機能を備えたLeadAutoImportManagerの完全な書き換え: - 3rdパーティリードベンダー用のユニークなWebhook URLでエンドポイントCRUD - コピーツークリップボードエンドポイントURL生成 - 4 タブ管理ダイアログ: 概要(ステータス、トグル)、フィールドマッピング(テーブルベ...
アップロード者名、幅広の日付列、拡張子アイコンをファイル名にマージする
- アップロード: 常に空だった — フィールド名は正しかったが、バックエンド createByName をセットしません。バックエンド側で解決しました。 - ファイル名カラム:react-file-icon からファイル型アイコンをプリペンドします。 別々のエクステンションカラムを削除 - アップロードされたコラム:...
保存したサイズのツールチップを doc マネージャーのサイズセルに追加
Tooltip は、文書ごとに使用される実際のストレージの故障を示します。 元のファイル、サムネイル(オリジナル+コンバート)、 ドキュメントを変換 — と合計。 ImgDat行のサムネイル 一つだけが刻まれているので、一行にまとめられます.
ナビゲーションインターセプターでファイルをダウンロードするためのロード画面をスキップする
Blob URL とダウンロード属性のリンクは、ページナビゲーションを引き起こしません。 そのため、グローバル クリック ハンドラは、これらを早期に返します。 「KamoCRMをロード」画面が表示され、ファイルのダウンロードに立ち往生する.
表面は、電子メールプロバイダセレクターでエラーを保存し、最適化されたアップデートを変換します
非構成可能なプロバイダ(KamoMail、 ParentOrg、NotConfigured)を保存する場合 エラーはステートで設定されていましたが、リストビューには表示されません。 楽観的なUIアップデートは、カードが現れたままに戻ったことはありませんでした DBが変更されていない間に選択されます。 古い値をリフレッシ...
ドキュメントマネージャアクションボタンをツールバー検索行に移動する
- 削除されたドキュメントの作成、ドキュメントのアップロード、バルクアップロード、およびグラデーションヒーローヘッダーからリフレッシュ - ヒーローヘッダーはタイトル/説明のみです - ドキュメントを作成し、ドキュメントをアップロードする DocManager へのアクションプロップとして渡しました。クイック検索バーの...
チームメンバー/メンバー権限モデルの共有ダイアログを復元
チームメンバー(memberType=TEAM MEMBER)は、すべてのゲートを迂回します。 SHARE DOCS * の会員は、正規会員の会員が登録されています。 会員なしのレガシーセッションType 一時的なフルアクセス 再ログインし、新しいセッションフィールドを受信するまで.
認証されたメンバーが文書を共有できるようにする
共有ダイアログでロールベースゲートを削除 — ログインしたメンバーは共有できます。 前のチェックは、TeamMember(セッションメンバータイプから)または 特定の SHARE DOCS * の権利は、チームメンバーが本質的に持っていない.
Blake3/browserから正しくWASMを初期化するためにbake3を輸入
blake3/esm/browser は手動 WASM のプロビジョニングを必要とします。 blake3/browser は自動的に行います.
共有ダイアログでドキュメント共有システムを実装し、Meタブで共有し、共有可能なリンク
- 許可ベースメンバー/チーム/投稿/ジョブでShareDocumentDialogを追加 タイトルの受取人ピッカー - DocManagerツールバーのワイヤ共有ボタン(MY DOCSのみ) - 共有を追加 新規株式の通知バッジ付きのMeタブ(サーバー側カウント) - グリッド行に共有されたドキュメントインジケータ(...
Real BLAKE3 ハッシュと doc マネージャーのプリインストール セットアップ チェック
- BLAKE3プレースホルダーを実際のbake3 WASMファイルで置き換えるHashing.ts - check-hashes を追加し、API プロキシ ルートを登録する - MultiFileUploader は、アップロード前に既存のファイル用のサーバーをチェックします - 重複したファイルがアップロードを完...
ゲートフォルダーと Doc タイプ 列/フィールド の allowFolders と allowDocType
フォルダーや doc タイプの機能は、assoc 型のために無効にされている場合は、 対応するデータグリッド列とフォームフィールドを一貫してアップロードします.
一貫性のあるMUI TextFieldsでアップロードフィールドを一直線化し、フォルダとdocタイプを常に表示
生 <select> 要素を MUI TextField で置換し、一貫性のある 説明フィールドでスタイリングとアライメント。 フォルダとDocタイプ フィールドは常に表示されます(allowFolders/allowDocType ではゲートしません)。 すべての分野は均一出現のための浮遊ラベルを使用します.
アップロードのためのすべてのファイルタイプを受け入れ、ホワイトリストではなくサーバー側ブラックリストを使用する
難読化された ACCEPTED EXTENSIONS ホワイトリストをサーバーで提供した extBlackList に置き換える から assoc-config. 明示的にブラックリストされていない限り、すべてのファイルタイプがアップロードできるようになりました。 変換なしの非変換ファイルアップロードアス-is. テン...
並べ替え、プレビュー、一括ダウンロードで選択されたタブを再設計する
機能文書の準備 UI で mock Options パネルを置換します。 ドキュメント ドラッグアンドドロップと矢印ボタンで、チェックボックスで再オーダー可能です。 選択解除。 右パネルはナビゲーションでページサムネイルプレビューを表示します。 ボトムバーは、PDFまたはZIPのダウンロードを結合し、修正を切り替えます...
System Docs タブの systemDocsOnly フラグを使用して、元の Docs のすべてのドキュメントを表示
元の Docs タブは、この org/assocType の全てのドキュメントを なし 示します。 assocObjectId によるフィルタリング システム Docs タブが systemDocsOnly: true を送信します。 null/empty assocObjectId でドキュメントのみを取得する.
デフォルト assocObjectId は、適切な doc タブのフィルタリングの現在のメンバー ID に
Oid URL パラメータが提供されていない場合、元の Docs と変更された Docs タブ システム Docs は、現在のメンバー ID で問い合わせます。 blank assocObjectId for org-wide ドキュメント.
/doc/sign/create と /doc/sign/edit のルートを削除
エディタは doc マネージャーのページでインラインに埋め込まれています.
SettingsSignersTab からスコープ/assocType を削除し、Doc Description に名前を変更し、Active Member マーカーを追加
UserType をユーザ情報に追加し、テンプレート設定ストアでテンプレート名を docDescription に変更
メンバーのエンティティティティティティティティエンティティティティエンティティティエンティティティエンティエンティティエンティティエンティエンティエンティエンティエンティエンティエンティエンティエンティエンティエンティエンティエンティエンティエンティメンターカラムから、MemberTypeフィールドを追加 user-i...