コンテンツへ移動
KAMOUniverse

チェンジログ

何が新しいの?

プラットフォームのすべての改良 それが出荷される

  1. · kamo-shared-library

    API SIGNATURE api-key スコープ + EsignGenericEnvelope.origin

    Additive、バージョンバンプなし: - ApiKeyScope.API SIGNATURE — プログラムエ署名API(ビジネス)をゲート - EsignGenericEnvelope.origin(EsignUsageOrigin、nullable) — レコードかどうか envelope は API 対 MANUAL によって作成されました、従って署名のメートルを正しく完了しました (API は 0.20 の超過分に対してカウントします。マニュアルでは決してありません)。 prod に追加されたカラム 事前に入出力する.

  2. · kamo-internal

    ドキュメントエディタで送信-for-signatureアクション+エンベロープステータス

    テンプレートエディタヘッダーに 'Send for signature' ボタンを追加します。 文書を受取者に送信し、署名ステータスを追跡するダイアログ 新しいESigService /api/esig/envelopesエンジン。 - プロキシ ルート (OTK を createOTK 経由して、テンプレートプロキシをミラーリング): POST/GET /api/esig/envelopes, GET [uid], POST [uid]/void, メニュー - SendForSignatureDialog: タブを送信 (受信行、メッセージ、有効期限) + ステータスタブ(エンベロープリスト、ステータスチップ、無効/応答) - テンプレートが変更されていない間にボタンを無効化 - i18n を次のインテル経由で************************

  3. · ESigService

    汎用エンベロープ作成/送りエンジン(側)

    OTK-authed /api/esig/envelopes API kamo-internal ドライブを追加して送信 署名のための文書, 同じ共有ライブラリのエンティティティを再利用 署名 API が読み込まれる — ローンの添加剤、org-agnostic 代替品- カモロS/EsignClient はパスを作成します。 - テンプレートからPOST create-and-send: EsignGenericEnvelope (AD HOC) をビルドします。 1つのEsignEnvelope新しいハッシュされたアクセストークンが付いている署名者ごとの受信者 /s/{env}/{recipient}?t={token} 署名リンク(best-effort) - GETリスト(envelopeダッシュボード)+ GET {uid} 受信者ステータスの詳細 - POST {uid}/void と {uid}/recipients/{rid}/resend (トークンを回転させる) - 招待状 + 退会メール共有 EsignEmailClient.sendInvite; 署名者経路 /s/{env}/{recipient} に修正されたリンク

  4. · ESigService

    Sign.sign.pink の API エンジンの公開署名

    /api/esig/public/* 署名 API を kamo-signer アプリ呼び出しを実行し、 ライブサイダーをプレビュースタブから作業バックエンドに変えます。 - 検証(受信トークン -> 署名セッション)、セッション、同意、 Stepup/start+verify (電子メール OTP), 送信, デコーダー, 委任, 文書 - Redis-backed 記者セッション(X-Signer-Session)、スタッフのOTKとは異なる - 実際の Img/MinIO パイプラインを介してドキュメントバイト ( imgId をテンプレート -> 変換-PDF ImgDat -> MinIO, 決してワイヤーで縛られた /api/imaging/blobs のスタブではなく - PDFBoxフラットテン:オーバーレイフィールド値+デザインでのシグネチャ画像 E-SIGN/UETA 監査証明書のページを座標、追加、署名 PDF 保存 記録された SHA-256 の envelope のsignedBlobId の下の MinIO で - 付録のみの署名監査行 + EsignField 価値の持続性 メニュー API のオリジンのメーターで計ることは #3/#4 で続きます - 組織+ OrgDomainから解決するブランディングを初めて塗装する - OTKAuthFilter は /api/esig/public (token-authed ではなく OTK) をバイパスします。 Additive だけ; 既存の /api/esig/templates/* は非接触.

  5. · kamo-internal

    組織タブでのプラットフォーム製品トグル

    プラットフォームのプロダクト指定をどこに属するか、プラットフォーム → 組織図 orgごとにゲートスイッチを追加(トップレベルのorgに無効)、 タイトル効果を説明する確認ダイアログ「プラットフォーム製品」 チップ、非カタログ警告、楽観的なアップデート、エラースナックバー。 すべての文字列 次のインテルで.

  6. · BillingService

    プラットフォーム → Orgs から Organization.isPlatformProduct を管理

    PlatformAccountSummary exposes isPlatformProduct + hasSubscription 市場;新しい メニュー (プラットフォーム管理者ゲート) フラグを設定し、 org のメンバーの資格を無効化 (製品名) 根本的、機能的、変化) トップレベルのorgは暗黙のルートであり、 お問い合わせ.

  7. · kamo-shared-library

    Explicit Organization.isPlatformProduct を entitlement-root 信号として

    派生した「SUBSCRIPTION市場」のヒューリスティックを明示的に置き換え、 管理者設定の所有権フラグ。 プラットフォーム製品(Sign.pinkなど)はホワイトラベルです。 製品 プラットフォームが動作し、独自の資格のルートです。 顧客 org — 独自のSBSCRIPTION市場を稼働させ、顧客に再販します。 ではなく、プラットフォームの権利を留保します。 EntitlementRootResolver が読み込みます フラグ(プラス、暗黙のトップレベルルート)ともはや市場に依存しない 所有権。 Add is platform product カラム (BOOL DEFAULT FALSE) — 必須 KamoInitializer は、組織のデプロイを選択するサービスの前に作成します.

  8. · SecurityService

    スコープメンバーは、製品ルート、カモCRMではなく、資格を付与します

    EntitlementService は、各メンバーの資格のルートを経由して解決します EntitlementRootResolver (nearestの市場所有の祖先または自分自身)の代わりに 最上位レベルのorgへ。 Free-tierフロアと製品アクセスフラグ そのルートから派生し、isKamoCrmSubscription はサブスクリプションGrantsRootAccess になります (計画対ルート、請求口座なし) メンバー資格取得 productRootOrgId は、消費者が正しい製品に対してアクセスするゲートをします。 BillingSetupService は、新しい org の製品から市場 + 無料のプランをソースします。 トップレベルのKamoCRMのorgで請求アカウントを維持しながらルート - すなわち、 親は請求を所有し、子供は製品/市場を所有することができます。 Behaviour は org が実際に自社市場を所有するまで変更されていない (KamoCRM は、 今日はマーケットオーナーだけなので、すべてのメンバーは解決します.

  9. · kamo-shared-library

    プラットフォームトップレベルではなく、product-root orgによって資格を解決する

    EntitlementRootResolverを導入:最も近い市場所有者の祖先または自分自身 org(製品ルート)の、プラットフォームのトップレベルに戻ります。 お問い合わせ decouples **(マーケット/プランオーナー)*who pays*の商品 (ビル口座)とシングルトップレベルのorgから、ホワイトラベル製品 独自の市場を所有するsign.pinkのようなorgは、独自の資格のルートになります。 ************************は、org's から無料ベースラインをソース 製品ルート(FirstByIsTopLevelTrue が見つかりません)、プランを解決します 請求口座の org ではなく、製品/市場 org 。 後方互換性: カモCRMは現在、唯一の市場所有者です, そう、すべての 既存の org は、以前と同じくらい正確に解決します。 一度だけ動作する sub-treeは独自の市場を所有しています。 添加物;版の隆起無し.

  10. · kamo-shared-library

    封筒受取人、フィールド値、受取人ステータスエンティティティを追加

    進行中の esign モデルでチェック: EsignEnvelopeRecipient (+repo), EsignFieldValue(+repo)、EsignRecipientStatus、ESignSignSignSignerTypeの更新。 添加物;版の隆起無し.

  11. · kamo-shared-library

    EsignUsageRecord を 1 つの署名の使用法のメーターで計る加えて下さい

    シグネチャで発する新しいアペンドオンのみの使用法の実体(ミラーAiUsageRecord) 完了。 API-origin のシグネチャのみが、プランの月々にカウントされます。 quota + オーバーエイジ (sign.pink Business: 40 / mo 含まれ、その後 $0.20 各); マニュアル シングルユーザーのシグネチャは記録されますが、請求されることはありません。 請求 period(YYY-MM) 月々の集計をサポートしています。報告された to stripe は、Stripe の使用法の投稿を行います。 免責事項 添加物だけ;版の隆起無し.

  12. · ConversionService

    側面の比率を、決して伸ばしません非正方形のロゴを予約して下さい

    Favicon PNG/ICOフレームは、retainAspectRatio(false)で生成され、ストレッチ 歪んだ正方形に非正方形のロゴ。 ロゴマークをセンターフィット 代わりに透明な正方形のキャンバス、アスペクト比を保存しているので、ファビコンは見える 正方形のソースイメージを要求しないでアップロードされたロゴの形のために正しい.

  13. · KlusterServices

    事前標識.pink + www.sign.pink STATIC DOMAINS

    sign.pink は新しい apex ドメイン (consumer e-signature ブランド / ホワイトラベル) です。 カモテナント合同会社 前面の apex + www なので、 Let's Encrypt の cert が存在します。 最初の HTTPS トラフィック; *.sign.pink サブドメインは、動的に 1-FQDN certs を取得します 最初のヒット時、*.priceturbo.comと同じ機構.

  14. · kamo-signer-monorepo

    新しいモノレポ + モバイルファースト電子署名アプリ

    Turborepo + pnpmワークスペースモノレポハウジング再使用可能な電子署名パッケージ kamo-internalから抽出され、新しく、超磨かれたkamo-signerアプリ — 二次会サイン体験(デザイナー/オーサリング・サイド・ステイ) カモ・インテルナル パッケージ: - @kamo/esign-core 型 + DesignData ワイヤー契約、zod スキーマ、ランタイム フィールド検証、SignStore(zustand) - @kamo/esign-ui インタラクティブフィールド入力 + 読み込み専用フィールド/注釈 レンダラー(kamo-internal FieldControlからフォーク) - @kamo/doc-render は pdf.js ページレンダラー (セルフホストワーカー、CDNなし) をバンドルしました。 応答性、回転誤ったオーバーレイ - @kamo/theme per-tenantブランディングブートストラップ(getThemePath, ThemeLogo, ダイナミックメタローダ - @kamo/api-clientブラウザフェッチ+サーバーRedis/forwardsヘルパー - @kamo/config 共有 tsconfig/tailwind プリセット/eslint アプリ(アプリ/カモ署名): - トークンスコープの署名者auth (SIGNSESH httpOnly session, BFF route handlers) - 歓迎 -> 同意(ESIGN/UETA) -> eIDAS AESステップアップ OTP → ガイド付きサイン -> フィニッシュ -> 完了, すべてのフェーズアニメーション (フレーム感情, 減感) 注意)、デスクトップに等しいモバイルファースト、WCAG-minded - シグネチャーキャプチャスイート:描画/タイプ(スクリプトフォント)/アップロード/採用オール - マルチドキュメント、デコーダー、デリゲート/リーサイン、フルi18n(next-intl、22ロケール) - 実行可能なプレビューモード(バックエンドは必要ありません)+ /.forgejo + /k8s(HostRegexp) sign.*、ターボプルーンDockerfile

  15. · kamo-internal

    フル幅のエンタープライズはライブプレビューで書き直します

    LoanProductForm はハードコードされた単一の狭い列(maxWidth:880)でした どこでも英語。 オファーページと同じエンタープライズパターンを使用します。 レイアウト: - パン粉、背部矢、親切なバッジが付いている全幅の勾配ヘッダー - 下の単一のコラムのlg+の2列の格子(6fr/6fr) - 左の「プロダクトプレビュー」を右に表示 形態の側面: - ToggleButtonGroup の記述(Installment 対 LOC)、 下に埋葬されていない — これは、再構築する構造的な選択です フォームの残りの部分は、従ってそれは進歩に値します - アイコン付きセクションブロック(基本・価格・制限・利用規約・コンプライアンス) - レートは%で入力され、ワイヤーのbpsに変換されます(これ以上 "3600 = 36%") - 次のintl t() によるフィールドラベル - ACT 365対ACT 360を説明するデイカウントツールチップ プレビュー側: - 英雄カード:親切な破片、プロダクト コードの破片、名前、見出し、記述 - 4 タイルの統計量グリッド: レート、起源、遅延料金、NSF 手数料 - 限界及び条件の格子(kind-aware:取付けのための範囲+頻度、 メニュー - サンプルオファーカード(インストール):月払い、合計利息、 総費用、主要な範囲の中間点のサンプル起源 - コンプライアンスチップ:許可された状態(cap 24 +オーバーフローチップ)、オートペイ 必要 + 割引、promissory ノートのテンプレートの結合 - 本製品が提供ページに流れる方法を説明するフッターノート LoanProductForm は、新しいページと編集ページの両方をラップします。 ページのラッパー 市場を渡すとパン粉がきれいに解決します.

  16. · kamo-internal

    ライブプレビューペイン付き2列レイアウト

    新しくなったページは、ワイドスクリーンの背が高い狭い列でした。 ビューポート。 左(5fr)と左(5fr)のフォームでCSS Gridを使うようになりました。 オペレータとして更新する右(7fr)上のライブ「オファープレビュー」ペイン タイプ。 小さな画面に単列(< lg)。 形態の側面: - アイコン付きセクションブロック(製品・ボロージャー・数量・カスタム条件) - ボローバーフィールドは、よりコンパクトに垂直にスタック(ID +状態を記憶) プレビュー用に水平空間が予約されていることを発表しました プレビュー側(製品を選択した場合のみ): - グラデーションの背景、親切な破片、製品名、およびaのヒーロー カード 人読み可能なヘッドライン($5,000・12か月の取付け・14.99% APR)/ 「$25,000 クレジット・9.99% レート」 - 4タイルの統計量グリッド:プリンシパル、レート、月払い、用語(インストール) または、料金、引く期間、返済期間(LOC) - 手数料の故障(origination/late/NSF/annual)は時「習慣」の破片と オーバーライドが適用される - コストの要約パネル: 純分散、総利息、総コスト - 償却スケジュールのピーク:最初の3 + "{N}と最後の3列 支払い...「条件のためのギャップ行 > 6ヶ月 - TILAは、バックエンドが真のAPR +ビルドを計算するメモを思い出させます 実際のスケジュール + 送信に関する開示をレンダリングする すべての数学はクライアント側のストレートライン償却(P × r × (1+r)^n / ((1+r)^n - 1)) — 忠実なプレビュー、最終公開 APR ではありません。 バックエンド それでも真実を所有しています.

  17. · kamo-internal

    ポーランドの新しいオファーページ — 空の状態、LOC バッジ、カスタム条件

    オファーページが以前のリファクタの後に行われた3つのUXギャップ: 1. 空の州。 市場がまだロアン製品がないとき、使用されるドロップダウン サイレントに空のレンダリングをし、オペレータは何をすべきかはわかりませんでした。 詳しくはこちら ヒーローの空の状態(icon、見出し、割賦のプライマー)に置換 と LOC, と “Create Loan Products” CTA 製品/新しいフローにルーティング). 2。 LOC対割は上面見えない - 両方とも同じように表示されます プロダクト低下。 カラーチップ(LOC = blue + Repeat icon)を追加しました。 割賦 = グリーン + ウォレット アイコン) 選択された値で両方のレンダリング 各ドロップダウンオプションの内側とオプションの製品の説明。 3。 「ロックされた用語」ブロックは混同的に名前付けられました - それは変更不可能を暗黙しました オーバーライドする方法なし。 折りたたみ式「カスタム条件」パネルを追加 利息率、開示された APR、および オリジネーション料金(リレーションシップ価格設定、ハードシップワークアウト、プロモーション) 価格)。 設定すると、ロックされたカードが視覚的に攻撃します 商品価値は、オーバーライド(14.99%→11.99%など)を表示し、 オペレータは、発行されるものを正確に確認します。 KamoLOS 0e80393 でプッシュされたバックエンドのサポート。 losApi.ts で拡張されるタイプ createOfferDraft でオーバーライドフィールドが流れます.

  18. · kamolos

    レート、APR、原産手数料のオーバーライド

    LoanOfferCreateRequest は 3 つのオプション フィールド — InterestRateBpsOverride, aprBpsOverride, オリジネーションFeeAmountOverride. createDraft はそれらをいつ適用します セットし、そうでなければプロダクト スナップショットに戻って落ちます。 ユースケース:関係 価格(リピート借り手のためのレートキックバック)、ハードシップワークアウト(有料) オリジネーション)、ワンオフプロモーションオファー。 割賦製品の場合、interestRateBpsOverride は通常のパスです。 APRは料金+料金+スケジュールから計算されます。 aprBpsOverride は、 APRを明示的に開示するまれなケースは、計算とは異なる必要があります。 監査:すべてのドラフト(Provide SENT/ACCEPTED)でprov DRAFTEDを書き込みます。 ログ explicit は値と製品デフォルトをオーバーライドするので、トレイルは再構築できます 継承された対. パーファーを設定.

  19. · kamo-internal

    コマースタイプ&エンゲージメントピッカーでPersonAL LOANSを公開

    PERSONAL LOANS を COMMERCE TYPES と EngagementType リストに追加して、 KamoLOS パーソナルローン市場は、市場/新しい市場から作成できます。 市場/編集ページ、QuickActionsBar(/commerce/personal-loans/new で表す) route) はパイプラインの婚約型フィルターおよび config にそれを含んでいて.

  20. · kamo-internal

    T6+T7 フロントエンドポリッシュ+ orgレポート+オートペイUI

    フロントエンド研磨(T6): - 新しい lib/format.ts: locale-aware Intlヘルパー — formatCurrency/ formatDate/formatDateTime/formatPercentBps. ハードコードを交換 toLocaleString() + スライス(0,10) は、コードベースを渡って散らばります。 - BorrowerAutoPayCard:フル登録/一時停止/再開/キャンセル/編集UI 自動支払の州機械のため。 表面量モード低下 (INSTALLMENT スケジュール/MIN PAYMENT/FULL STATEMENT バランス/ FIXED AMOUNT) + 月間 + 支払方法セレクター。 バックエンドは 既にワイヤーで縛られた;これは借り手セルフサービスの最後の部分です。 - チャージオフキュー:IRS 1099-Cの理由コードのドロップダウン(公式8) IRC §6050P ごとの A–H を手紙は自由テキストの理由分野を取り替えます; メニュー メモ フィールドは滞在します。 フォーマットでレンダリングされる通貨。 Orgのレポート(T7): メニュー 5 バケツのダッシュボード (現行 / 1-29 / 3059 / 60-89 / 90+) %-of-total +カラーコード トップの境界。 チャージオフキューへのドリルスルーリンク。 losApiの追加: - レポート(orgId) + エイジングレポートタイプ - マルチフィルタレギュレータエンドポイントのオーディションSearch(filters) - LoanChargeOffReasonCodeユニオンタイプ - 確認ChargeOff 署名は理由コードを受け入れます

  21. · kamolos

    Tier 6 + 7 + 9 + 10 — フロントエンド研磨、orgレポート、OpenAPI、JaCoCo

    T6(フロントエンド研磨): - 新しい /lib/format.ts: locale-aware フォーマット通貨 / formatDate / formatDateTime/formatPercentBps は、国際 API 経由で (ハードコード) toLocaleString + スライス(0,10) パターン。 - BorrowerAutoPayCard:登録/一時停止/再開/キャンセル/自動支払を編集して下さい 量モードのドロップダウン(INSTALLMENT SCHEDULED/MIN PAYMENT/ FULL STATEMENT BALANCE/FIXED AMOUNT) + 日数 + 支払方法 セレクター。 - チャージオフキュー:IRS 1099-Cの理由コードのドロップダウン(公式の文字) IRC §6050P ごとの A–H)は自由テキストの理由分野を取り替えます; デフォルト G. 書式通貨による通貨の書式。 T7(報告書): - 新しい LoanReportsController.aging: ローンを現在の / 1-29 / 3059 にカウントします / 60-89 / 90 + ページの DELINQUENT スキャン + countByOrganization を介してバケット アンドスタタス アクティベーションのために。 メニュー 5 枚のダッシュボードで % の合計 +カラーコードされたバンド+ドリルスルーでチャージオフキュー。 T9-T10 (DX + docs): メニュー /v3/api-docs + /swagger-ui.html 自動生成される。 OpenApiConfigはタイトル+説明+バージョンを設定します。 - DevSeedLoader @Profile("dev"): ブーツ2サンプルロアン製品(12-mo) 割賦+永久LOC)。 Idempotent(既存の製品コードにスキップ)。 - JaCoCo Mavenプラグイン:テストフェーズで試薬+レポートを用意します。 カバー HTML CI の消費のための target/site/jacococo/index.html で。 losApiの追加: - レポート(orgId) + エイジングレポートタイプ - マルチフィルタレギュレータエンドポイントのオーディションSearch(filters) - 確認ChargeOff 署名は理由コードを受け入れます 渡る36のテスト.

  22. · kamolos

    層 5 コンプライアンス バッチ

    - OfacSanctionsService:Jaro-Winklerのfuzzyマッチ@≥0.92は一致します パス。 表面類似点のスコアを押します。 los.ofac.fuzzy-threshold で構成可能。 - AdverseActionNoticeService:ECOA §1002.9に準拠したPDFジェネレーターのネーミング 連邦規制当局としてのCFPB。 レンダリングの理由-デコーダー+標準 ECOA 非差別言語 メディアサービスに保管 メニュー 規制のためのマルチフィルタ監査クエリ サブポエナ + 保持スワップ. サイトマップ - LoanChargeOffService.confirmは、理由コードパラメータ(IRS 1099-)を受け入れます ツイート box-6 手紙)、Loan.chargeOffReasonCode に永続し、 YearEndTaxJobの1099-C PDFレンダリング。 デフォルト G. - LoanProductValidationServiceは興味のとき警告しますRateBps > MLA 3600bpsの帽子 そのため、コンプライアンスは、MLAスクリーニングのオファータイムにフラグを立てることができます。 - YearEndTaxJob: output1099Int ブランチを削除 — インサート (no) 借り手-credit-interestの支払いフローが存在します。 再活性化で左スタブ そのような流れの土地に一度の指導。 全30単位のテストパス.

  23. · kamo-shared-library

    LoanChargeOffReasonCode (IRS 1099-C box 6) + 監査検索

    - IRC §6050Pごとの新しいLoanChargeOffReasonCode enum(A BANKRUPTCY.H OTHER) - Loan.chargeOffReasonCodeカラム -**************** マルチフィルタ@レギュレータサブポエナのクエリ (loanId / 種類 / 俳優タイプ / 俳優メンバーID / から / へ) — Paged

  24. · kamolos

    層 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. Registered ahead of ProxyHmacFilter so abuse hits the bucket before cryptographic verification cost. - SecurityConfig adds HSTS + frameOptions(DENY) + contentTypeOptions via Spring Security HeaderWriter. - StripeConfig fails fast on prod profile with non-live key. T8 — Bug cleanup: - **************** looks up Loan.productIdSnapshot → LoanProduct.feeNsfFlat instead of hard-coded $25. $25 remains the fallback when product or fee is missing. - **************** gains an AdjustmentTarget field (PRINCIPAL / INTEREST / FEES). manualAdjust dispatches per target rather than always touching principal. Audit metadata now records which counter was touched. - **************** finds the most recent ACTIVE *or* PAUSED plan and reactivates it instead of creating a new row that orphans paused ones. - **************** typed FetchResult record with status (OK / NOT_FOUND / UNREACHABLE / UNCONFIGURED). fetchBlob(uid) preserved as legacy bytes-or-null adapter.

  25. · kamo-shared-library

    メニュー

    ※**************** で、既存の機能を再活性化 重複した行を作成する代わりに、PAUSEDの計画は、パユースした行を孤立させます.

  26. · kamo-internal

    /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-Id / X-Member-Id headers. KamoLOS's new ProxyHmacFilter validates this (±60s skew, constant-time compare) so a client bypassing kamo-internal can no longer spoof identity headers. Unset secret = local-dev pass-through (filter disabled on the backend side too).

  27. · kamo-internal

    Org-side融資詳細ページ+調整/約束API

    - losApi:手動調整、waiveFee、promiseToPay -************************ フルオーガニゼーションページ ※4枚の残高カード(現、原本、利息、次期) *手動調整フォーム(CREDIT/DEBIT、必要な理由) — 呼び出し /api/los/adjustments/マニュアル * Promise-to-payフォーム — コール******************** *声明+支払い表 * フルイベントログの<LoanAuditTimeline>を埋め込む - これは、MarketActiveLoansTab +の壊れたリンクを解決します PipelineActiveLoansTab が指摘されました.

  28. · kamolos

    Final batch — compliance, packets, adjustments, Grafana, tests

    Compliance: - MlaCheckService — Military Lending Act covered-borrower lookup against DoD MDC single-record query. Returns NotCovered if unconfigured so dev doesn't hard-fail; production MUST configure los.mla.endpoint + api-key OR run manual MLA at the org's KYC step (PII access required). - OfacSanctionsService — Treasury SDN list cached in-memory, refreshed nightly from sdn.csv. Unicode NFD normalization + diacritic stripping. Wired into LoanOfferService.send: SDN hit blocks the send and writes a STATE_RULE_VIOLATION_DETECTED audit row. - LoanLifecycleService cooling-off now reads LoanStateRule.coolingOffDays for the borrower's state (replaces the LocalDateTime.now() placeholder). - Stripe account.updated webhook now syncs charges/payouts/details flags + default_currency + requirements_disabled_reason onto LoanOrgStripeConnect so cron jobs + the org settings UI see live capability state. Disclosure packet: - New DisclosurePacketBuilder bundles TILA box + GLBA privacy notice + ECOA non-discrimination notice + ACH mandate authorization into one PDF via PDFBox PDFMergerUtility + stores in MediaService. Each component is recorded as a LoanDisclosure row keyed to the offer. LoanOfferService.send builds the packet automatically before the ESign envelope is created. Servicing operations: - **************** — fees/principal credit-or-debit with required reason; emits LoanPayment(INTERNAL_ADJUSTMENT or REVERSAL_ADJUSTMENT) + MANUAL_ADJUSTMENT audit - LoanAdjustmentService.waiveFee — flips LoanFee.waivedAt + credits feesPaidToDate + emits FEE_WAIVED audit - **************** — non-financial commitment row used in D60+ workflow tracking, emits PROMISE_TO_PAY_LOGGED audit - LoanAdjustmentController exposes /api/los/adjustments/{manual, fees/{uid}/waive, promise-to-pay} Observability: - **************** — importable dashboard with status gauges, payment outcome rates, R-code returns by code, webhook p50/p90/p99, disbursements/hour, charge-offs/day, JVM heap, HTTP rate Tests (30 total, all green): - 7 AmortizationEngine - 9 InterestAccrualEngine (including the previously-fixed 100x bug) - 5 PaymentAllocator - 4 NachaReturnCode (retry classes + mandate-revoking codes + describe) - 5 OfacSanctionsService (clean match / hit / diacritics / alias / disabled via reflection-injected cache, no network or test container needed)

  29. · kamolos

    P2バッチ — 保守性、テスト、年末税、実際のストライプID

    観察性: - クラスパスのマイクロメータ-registry-prometheus - /actuator/prometheus は管理構成によって露出しました(ローカル+ k8s configmap両方) - LoanMetricsサービス メニュー los charge off total、 los disbursement total, los loan status count{status} ゲージ, **************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** - LoanPaymentにワイヤーで縛られたカウンターポストサービス+ LoanChargeOffサービス 数学+テスト: - AmortizationEngine(レベルペイメント、APRニュートン)を覆う21ユニットテスト Raphson、月間日付進行、プリンシパル+インヴァリアント、 悪い入力ガード), InterestAccrualEngine (ACT 365 / ACT 360 DPR, 1日 / thirty-day accrual, LOC ADB), PaymentAllocator(fees→interest) →主な注文、部分、過払い、null) -**************************************************************************************************************************************************************************************************************************************************************** — divisor は 3,650,000/3,600,000 (annualRate) の代りの 36500/36000 でした fraction は /10000 bps→fraction および /365 日両方を必要とします、従ってaccrued 興味は100×余りに高くありました。 巻き込まれたテストを追加しました。 実質の縞の識別子(より多くのプレースホルダー無し): - StripeConnectController.onboard が LoanOrgStripeConnect をパースできるようになりました 成功したStripeアカウント作成;.statusは、オンボーディング状態を返します - 新しい StripeIdResolver: connectAccountIdForOrg() + lazy getOrCreateBorrowerCustomerId() (idempotency-keyed Customer.create) は、 接続されたアカウントの下に、Loan.stripeCustomerを主張します ログイン - AutoDebitRunJob.fireAchDebit + .fireDisbursement がリアルタイムで解決 「acct placeholder *」の代わりに StripeIdResolver による ID リマインダーのcadence: - ReminderSchedulingJob: 夜間に掃引はPAYMENT DUE 3 DAYS、 PAYMENT DUE TODAY, PAYMENT LATE DAY 1/5/15, 提供 EXPIRING (24時間) 有効期限が切れる前に、STATEMENT AVAILABLE(世代別)。 ドップキード お問い合わせ ******************************************************************************************************************************** 年末税: - YearEndTaxJob (cron 06:00 1月 5): 生成 1099-C 充電オフ≥$600 + 1099-INT 借り手クレジット利息 > $10. PDFBox レンダリングフォーム, フォーム/年でLoanDisclosureとして記録されるMediaServiceに貯えられる メタデータなので、再実行は重要である。 - 融資.tax1099 チャージオフのCEligibleのオートセットは量≥ $ 600のとき確認します

  30. · kamo-shared-library

    LoanOrgStripeConnect + Loan 税/accrual フィールド + ホットインデックス

    - 新しい LoanOrgStripeConnect のエンティティティティ (一対一、stripeConnectedAccountId を保持) + オンボーディング機能を接続する + リポジトリ - Loan: stripeCustomerId(orgの接続されたアカウントでレイジー作成)、 lastAccrualDate、納税1099IntEligible、納税1099CEligible - 熱い合成の索引: * ローン: (org id,status), (borrower member id,status), (next payment due at), (status、delinquency tier) * ローン支払い: (loan id,initiated at), (loan id,status), (stripe payment intent id)、(statement id) * run statements: (loan id,statement number DESC), (due date,status) *融資先: (org id,status), (borrower member id,status), (ステータス、expires at)

君の宇宙は待ってる

数分で無料で開始できます。準備ができたらいつでも製品を追加できます。移行も新しいログインも不要です。

クレジットカード不要