ドキュメントエディタで送信-for-signatureアクション+エンベロープステータス
テンプレートエディタヘッダーに 'Send for signature' ボタンを追加します。 文書を受取者に送信し、署名ステータスを追跡するダイアログ 新しいESigService /api/esig/envelopesエンジン。 - プロキシ ルート (OTK を createOTK 経由して、テンプレートプロキ...
汎用エンベロープ作成/送りエンジン(側)
OTK-authed /api/esig/envelopes API kamo-internal ドライブを追加して送信 署名のための文書, 同じ共有ライブラリのエンティティティを再利用 署名 API が読み込まれる — ローンの添加剤、org-agnostic 代替品- カモロS/EsignClient はパスを作成...
Sign.sign.pink の API エンジンの公開署名
/api/esig/public/* 署名 API を kamo-signer アプリ呼び出しを実行し、 ライブサイダーをプレビュースタブから作業バックエンドに変えます。 - 検証(受信トークン -> 署名セッション)、セッション、同意、 Stepup/start+verify (電子メール OTP), 送信, デコ...
メーターをメーターで計ったアドオン価格を請求
ストライプ (>= 2025-03-31.basil) は、レガシーな使用法 type+aggregate usage を拒否します。 メーターモデル('メーター価格がm'で返さなければならない)ので、USAGE BASEDアドオン 価格が作成に失敗しました — 使用ベースの課金を解除します (例: Sign.pink...
組織タブでのプラットフォーム製品トグル
プラットフォームのプロダクト指定をどこに属するか、プラットフォーム → 組織図 orgごとにゲートスイッチを追加(トップレベルのorgに無効)、 タイトル効果を説明する確認ダイアログ「プラットフォーム製品」 チップ、非カタログ警告、楽観的なアップデート、エラースナックバー。 すべての文字列 次のインテルで.
プラットフォーム → Orgs から Organization.isPlatformProduct を管理
PlatformAccountSummary exposes isPlatformProduct + hasSubscription 市場;新しい メニュー (プラットフォーム管理者ゲート) フラグを設定し、 org のメンバーの資格を無効化 (製品名) 根本的、機能的、変化) トップレベルのorgは暗黙のルートであり...
Explicit Organization.isPlatformProduct を entitlement-root 信号として
派生した「SUBSCRIPTION市場」のヒューリスティックを明示的に置き換え、 管理者設定の所有権フラグ。 プラットフォーム製品(Sign.pinkなど)はホワイトラベルです。 製品 プラットフォームが動作し、独自の資格のルートです。 顧客 org — 独自のSBSCRIPTION市場を稼働させ、顧客に再販します。 ...
プラットフォームのセットアップにSUBSCRIPTION市場を選択
KamoCRMは、いくつかの市場を所有しています **************************************************************************** resolveProductMarket は SUBSCRIPTION タイプ (platform-access) ...
製品ルート = SUBSCRIPTION市場を所有しています
OWNビジネスマーケット(RETAIL/MORTGAGE)を所有している顧客オーガニ(BluElevenなど) カモCRMプラットフォームの顧客を残している間、その会社を実行する 会員は、カモCRMに権利を留まなければなりません, 自分の根になることはありません. 前の投稿 'owns任意のアクティブ市場' 信号は、こ...
スコープメンバーは、製品ルート、カモCRMではなく、資格を付与します
EntitlementService は、各メンバーの資格のルートを経由して解決します EntitlementRootResolver (nearestの市場所有の祖先または自分自身)の代わりに 最上位レベルのorgへ。 Free-tierフロアと製品アクセスフラグ そのルートから派生し、isKamoCrmSubscr...
プラットフォームトップレベルではなく、product-root orgによって資格を解決する
EntitlementRootResolverを導入:最も近い市場所有者の祖先または自分自身 org(製品ルート)の、プラットフォームのトップレベルに戻ります。 お問い合わせ decouples **(マーケット/プランオーナー)*who pays*の商品 (ビル口座)とシングルトップレベルのorgから、ホワイトラベル...
背景の refetch の org リストを保持します。 dedupe セッション呼び出し
/network は、すべてのバックグラウンドセッションで fetchNetwork を再ファイリングし、 任意のフェッチエラーで全リストを隠すので、一時的なブリッピングまたはストール hasPlatformAdminAccess (wrong-endpoint 403) は、ユーザーをサイレントにドロップすることがで...
封筒受取人、フィールド値、受取人ステータスエンティティティを追加
進行中の esign モデルでチェック: EsignEnvelopeRecipient (+repo), EsignFieldValue(+repo)、EsignRecipientStatus、ESignSignSignSignerTypeの更新。 添加物;版の隆起無し.
EsignUsageRecord を 1 つの署名の使用法のメーターで計る加えて下さい
シグネチャで発する新しいアペンドオンのみの使用法の実体(ミラーAiUsageRecord) 完了。 API-origin のシグネチャのみが、プランの月々にカウントされます。 quota + オーバーエイジ (sign.pink Business: 40 / mo 含まれ、その後 $0.20 各); マニュアル シング...
電子メールリンクを逆転させて下さいハンドルを、隔離します原因をかちりと鳴らして下さい
ユーザーレポートメールプレビューリンクは、まだ何もしないとテキストをクリック 選択はミッドドラッグを殺します。 右クリックして両方の仕事をホバーするので、 アンカー要素はそのままであり、URLは有効です。 3つの試み クリックの傍受(window.open、useEffect target= blank)、 キャプチャ...
側面の比率を、決して伸ばしません非正方形のロゴを予約して下さい
Favicon PNG/ICOフレームは、retainAspectRatio(false)で生成され、ストレッチ 歪んだ正方形に非正方形のロゴ。 ロゴマークをセンターフィット 代わりに透明な正方形のキャンバス、アスペクト比を保存しているので、ファビコンは見える 正方形のソースイメージを要求しないでアップロードされたロゴ...
ラベル保存のfaviconsを再生します。 sniffの実質のロゴのタイプ
config/css/manifest を書いたので、 しかし、決してファビコンを再生しません。これらはプロビジョナースによってのみ生成されました。 ログイン 完全なプロビジョニングが空のファビコン/セットを持っていたので、すべてのカモ site (login/internal/register) は favicon ...
Orgフォルダが欠けているときにテンプレートからシードglobals.css
org の css/globals.css を複製する しかし、そのオブジェクトは一度だけ存在する 完全からコピーしました デフォルトテンプレート。 config+logos だけでも org が 見つかりましたので、 threw NoSuchKeyとorgのglobals.cssをダウンロード - すべてのKamoサ...
実際の拡張子で完全なロゴを表示し、ハードコードされていない.svg
ブランディングタブは、マウント上のロゴフル.svgとしてロゴフルUrlを構築し、無視します orgのロゴFullExt。 png/jpg/etc. としてアップロードされた完全なロゴは、 MinIO の logo-full.{ext} なので .svg URL 404'd は壊れたイメージをレンダリングしました (ロゴ...
新しく発行されたcertsが提供されるように、TLSStoreすべてのループをリフレッシュ
update tls store() は、スタートアップと共有ストレージのインポートでのみ実行されるため、 cert-manager (HTTP-01) が tls-* の秘密で新しく発行された証明書は、 しかし、次の自動証明書の再起動までTLSStoreに追加してはならない — Traefik デフォルトで自己署名し...
リダイレクトのみのルートをバックエンドに指定するので、 Traefik v3 では、
Traefik v3 は、サービスで IngressRoute ルータを無効にします: [] とき allowEmptyServices がオフ(ここにある)ので、ドメインアグノスティック HTTP->HTTPSリダイレクトルータが「無効」となった(サービスは存在しない) ポート 80 はまだテナントドメインの 404...
すべてのHTTPホストをHTTPS +ゲート自動認証にリアルタイムにリダイレクト
カスタム org ドメイン (例: login.sign.pink) を返す Traefik の bare プレーン HTTP 上で "404 ページが見つかりません": 唯一のポート-80 リダイレクト ルーター *.kamocrm.comにハードコードされ、************************ デプロイ...
事前標識.pink + www.sign.pink STATIC DOMAINS
sign.pink は新しい apex ドメイン (consumer e-signature ブランド / ホワイトラベル) です。 カモテナント合同会社 前面の apex + www なので、 Let's Encrypt の cert が存在します。 最初の HTTPS トラフィック; *.sign.pink サブド...
サイレントに失敗するのではなく、持続的な変換 error
テンプレートと通常のアップロードコンバージョンパイプラインの両方を嚥下 Docs 変換の失敗(のみを緩めて下さい)は、記録無しでis converted=falseを残します そのため、docマネージャは、誤解を招く「変換されない文書」を示した Docsの変換が壊れたときにすべてのドキュメント。 今、失敗の理由は Im...
Docker Pruner ステージで npm でターボをインストールします。 ピン pnpm; .dockerignore を追加します
Pruner ステージ は `pnpm は、package.json が存在する前に -g ターボ` を追加します。 corepack は pnpm 11 をつかみ、 "global bin ディレクトリ /pnpm/bin で失敗しました。 PATH(パス) `npm install -gターボ` (canonica...
新しいモノレポ + モバイルファースト電子署名アプリ
Turborepo + pnpmワークスペースモノレポハウジング再使用可能な電子署名パッケージ kamo-internalから抽出され、新しく、超磨かれたkamo-signerアプリ — 二次会サイン体験(デザイナー/オーサリング・サイド・ステイ) カモ・インテルナル パッケージ: - @kamo/esign-cor...
フル幅のエンタープライズはライブプレビューで書き直します
LoanProductForm はハードコードされた単一の狭い列(maxWidth:880)でした どこでも英語。 オファーページと同じエンタープライズパターンを使用します。 レイアウト: - パン粉、背部矢、親切なバッジが付いている全幅の勾配ヘッダー - 下の単一のコラムのlg+の2列の格子(6fr/6fr) - ...
ライブプレビューペイン付き2列レイアウト
新しくなったページは、ワイドスクリーンの背が高い狭い列でした。 ビューポート。 左(5fr)と左(5fr)のフォームでCSS Gridを使うようになりました。 オペレータとして更新する右(7fr)上のライブ「オファープレビュー」ペイン タイプ。 小さな画面に単列(< lg)。 形態の側面: - アイコン付きセクション...
2列ワークスペース + ライブプレビューとして新しいページを再設計
あなたは、完全な不動産、近代、研磨を求めた - 最後のリファクタは、 完全に幅の貝の中の単一のコラムの形態、正確に広いです あなたが既に与えられている半ページの空のキャンバスの批評家。 このリライトの使用 スペース。 lg+ スクリーンのレイアウト: - 上部のフル幅製品ピッカー(ランチピン選択;その取得 自分のカー...
ポーランドの新しいオファーページ — 空の状態、LOC バッジ、カスタム条件
オファーページが以前のリファクタの後に行われた3つのUXギャップ: 1. 空の州。 市場がまだロアン製品がないとき、使用されるドロップダウン サイレントに空のレンダリングをし、オペレータは何をすべきかはわかりませんでした。 詳しくはこちら ヒーローの空の状態(icon、見出し、割賦のプライマー)に置換 と LOC, ...
レート、APR、原産手数料のオーバーライド
LoanOfferCreateRequest は 3 つのオプション フィールド — InterestRateBpsOverride, aprBpsOverride, オリジネーションFeeAmountOverride. createDraft はそれらをいつ適用します セットし、そうでなければプロダクト スナップショ...
デフォルト空 STRIPE CONNECT WEBHOOK SECRET なので KamoLOS ブーツ
Configmap はデフォルトなしで**************** を参照しました、 そのため、Java レベルに達する前に Spring のプレースホルダーのリゾルバーが投げられます。 ************ 既に値を扱う************ 任意として。 Stripe Connect webhook でも...
共有lib LoanRepository → PersonalLoanRepositoryの名前を追跡する
LoanRepository から PersonalLoanRepository へ全てのインポートとフィールドタイプを更新 20カモロソースファイル+ 1テスト(Lombok-injectedフィールド名はそのままにとどまります) ローンリポジトリ — 変更されたタイプのみ。 きれいにして下さい。 起動時にBean...
ファイル名 LoanRepository → PersonalLoanRepository
Spring Data JPA は、インターフェイスからリポジトリの Bean 名を導き出します。 @Repository("...") 修飾子の値ではなく、シンプルなクラス名なので、 前の回避策は、実際には関係のない衝突を防ぐことができませんでした mortgageリポジトリ(********************...
/commerce/personal-loans/new エントリー + ポーランド市場スコープオファーページを追加
QuickActionsBar "New Loanオファー" は /commerce/personal-loans/new で指しています しかし、そのようなページが存在しないので、Next.jsは動的[loanId]ページに移動しました。 融資ID="new" と "Loan が見つかりません。 これは、欠落したエン...
10ページにわたるフル幅のエンタープライズポリッシュ
現代的な企業パターンを採用します(勾配ヘッダー+パン粉+ 背部矢+全高さの屈曲の貝+ライト グレーのカード分けられた内容 キャンバス) kamo-internalで他の場所で使用されて、すべての前のmaxWidthを取除きます 制約(720/960/980/1080/1100px)なので、ページは空き領域を埋めます。 ...
トリガーを再構築し、名前を変更した個人ローンのエンティティティティをピックアップ
761019bのSecurityServiceイメージは、共有lib d14dc54の前に構築されました (個人ローアン法人をJPA名「個人ローアン」に改称) mortgageアプリで重複したLoan-entityコリジョンを解決します。 ビルドを再実行すると、名前が変更された共有ライブラリのjarをピックアップして、...
コマースタイプ&エンゲージメントピッカーでPersonAL LOANSを公開
PERSONAL LOANS を COMMERCE TYPES と EngagementType リストに追加して、 KamoLOS パーソナルローン市場は、市場/新しい市場から作成できます。 市場/編集ページ、QuickActionsBar(/commerce/personal-loans/new で表す) rout...
Loan/LoanRepositoryの衝突をmortgageアプリで避ける
KamoInitializerService は 2 つの @Entity クラスの名前で起動できませんでした。 'Loan' と 'LoanRepository' という名前の2つのリポジトリクラスが両方望んでいました 同じ JPA の実体名、同じ物理テーブル 'loans' を登録し、 同じばねの豆 'loanRe...
T6+T7 フロントエンドポリッシュ+ orgレポート+オートペイUI
フロントエンド研磨(T6): - 新しい lib/format.ts: locale-aware Intlヘルパー — formatCurrency/ formatDate/formatDateTime/formatPercentBps. ハードコードを交換 toLocaleString() + スライス(0,10) ...
Tier 6 + 7 + 9 + 10 — フロントエンド研磨、orgレポート、OpenAPI、JaCoCo
T6(フロントエンド研磨): - 新しい /lib/format.ts: locale-aware フォーマット通貨 / formatDate / formatDateTime/formatPercentBps は、国際 API 経由で (ハードコード) toLocaleString + スライス(0,10) パターン...
層 4 — LoanPaymentPosting サービスユニットテスト
支払い投稿の心をカバーする6つのモックリポジトリユニットテスト: メニュー $ 100の支払い 融資 $25 手数料 / $50 利息 / 大規模な主残高 → 正確 25/50/25 Reg Z ごとの料金/利益/主要な配分。 メニュー インフォメーション 支払い→ ACTIVE + D0を受け取る未来日付の融資。 ...
層 5 コンプライアンス バッチ
- OfacSanctionsService:Jaro-Winklerのfuzzyマッチ@≥0.92は一致します パス。 表面類似点のスコアを押します。 los.ofac.fuzzy-threshold で構成可能。 - AdverseActionNoticeService:ECOA §1002.9に準拠したPDFジェ...
LoanChargeOffReasonCode (IRS 1099-C box 6) + 監査検索
- IRC §6050Pごとの新しいLoanChargeOffReasonCode enum(A BANKRUPTCY.H OTHER) - Loan.chargeOffReasonCodeカラム -**************** マルチフィルタ@レギュレータサブポエナのクエリ (loanId / 種類 / 俳優タイ...
層 3 セキュリティ + 層 8 バグのクリーンアップ バッチ
T3 — Security: - New RateLimitFilter (Bucket4j): 1000/min per IP for webhooks, 10/min per session for offer accept/decoder/rescind, 60/min general. Register...
メニュー
※**************** で、既存の機能を再活性化 重複した行を作成する代わりに、PAUSEDの計画は、パユースした行を孤立させます.
Tier 2 — Hikari + RestTemplate timeouts + Stripe SDK + Redis cache
- RestClientConfig: single shared RestTemplate bean with 5s connect / 30s read timeouts. MediaServiceClient / NotificationDispatchService / OfacSanctionsSer...
/api/los プロキシ HMAC-signs アイデンティティヘッダ
When LOS_PROXY_HMAC_SECRET env var is set, the proxy now computes **************** secret) and sends X-Proxy-Signature + X-Proxy-Timestamp alongside the X-Org-I...
層 1 重大な是正パス
T1.1 ストライプ分散戦略: TREASURY(スタブ)では、SDKのアップグレードが必要 生 HTTP) / CONNECTED ACCOUNT (transfer.create — SDK 28.2.0で動作します) /マニュアル。 デフォルト CONNECTED ACCOUNT 経由**************...