チェンジログ
何が新しいの?
プラットフォームのすべての改良 それが出荷される
· kamo-shared-library
ガイドライン規則+条件+評価器、LLPA述語エンジン(Phase-2 Slice 8)を共有
§8.1ステップ-2のガイドラインルール述語。 批判的に、レビューされたSlice-4条件を再利用します 安全批評家述の論理を複製する代わりに評価器。 DRYリファクタ(非回帰的 — エパレータ ボディ バイト・アイデンティティ): - PredicateCondition インターフェイス ************************ - MlosAdjustmentCondition + MlosGuidelineRuleCondition はどちらも実装します。 - AdjustmentConditionEvaluator は、PredicateCondition に一般化しました。AdjustmentMatchs -> allConditionsMatch (List<? は PredicateCondition> を継承します)。 Slice-4テストは緑色を再実行します (9), 前のハイ修正はそのまま. 新しい: - MlosGuidelineRule(mlos guideline rule):ガイドラインVersionId FK、製品Id FK、規則コード(unique per per per) バージョン)、評論(RuleVerdict ELIGIBLE/INELIGIBLE/STIPULATED §10.3 vocab)、要件 メニュー 条件: 値、重度、sourceSectionRef、 未調整のフラグ。 + MlosGuidelineRuleCondition (implements PredicateCondition)。 - guidelineRuleEvaluator(ungated @Component) + ガイドライン評価 + ガイドライン概要: 規則的な火災 すべての条件は保持します(共有評価者を介して)。 信じられないほどの難燃性規則。 規定 収集される。 8 ガイドライン評価試験グリーン. 逆にレビュー(2-agent):リファクタは、バイト非回帰的確認; 固定MEDIUM オーバーブロックハザード — ゼロ条件のノンブランケットルールがSAFE(火をしない)失敗するので、 ハーフオーサリング/ダンリング-FK INELIGIBLEルールは、すべての借り手(ミラー値セット)をサイレントブロックできません 意図的なブランケットルールの「unconditioned」フラグを明示。 KamoInitializerコードの変更はありません.
· InitializerService
ガイドラインバージョンのノーバーラップ部分的なuniqueインデックス(Phase-2 Slice 7)
SchemaCleanupRunner: ux guideline version active 部分unique mlos guideline version (organization id, product id) では、ステータス='ACTIVE' と 有効な until が有効 IS NULL — 1 つのオープン/現在の ACTIVE ガイドライン バージョン per (org, products); ミラー ux rate sheet version active (doc 02 §6.5)。 カタログリポジトリ pkg は既に登録済み (スライス 1).
· kamo-shared-library
MlosGuidelineVersion (WORM) + ガイドラインVersionResolver (Phase-2 Slice 7)
不変な効果的なガイドラインVERSION — コンテナの適格性 **************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 忠実な複製 見直しのSlice-1 MlosRateSheetVersion Spine、製品ごとのキード(投資家ごとのvs)。 - MlosGuidelineVersion(mlos guideline version):製品Id FK、リビジョンラベル、効果的 from/until、 row no, supersedes id self-FK, status, source document id FK, kb article guid + kb article version no (§6.4 KB-prose ドリフトピン、immutable)。 App 層別部分機能 WORM (@PostLoad スナップショット + @PreUpdate diff): ID/コンテンツをフリーズし、DRAFT->のみを許可します。 アクション, ACTIVE->SUPERSEDED, ACTIVE->RETIRED + write-once を閉じます。 メニュー - guidelineVersionResolver (gated mlos.catalog.enabled):ポイント・イン・タイムの窓の決断、決して 最新列、重なりに投げる。 ミラーのEffecticVersionResolver。 - 17テストグリーン(6ガイドラインVersionResolverTest + 11************************ KamoInitializer は ux guideline version active partial-unique (org+product ごとに 1 つのオープン ACTIVE) を追加します.
· kamo-shared-library
適性マトリックス+細胞+細胞のmatcher (Phase-2 Slice 6)
§8.1ステップ2のeligibility-firstフィルター基質(細胞のconjunct;guideline rule + AUSのゲートおよび あとで。 - MlosEligibilityMatrix(mlos eligibility matrix):/******************** 有効; 再利用は、URLAをロック **************************** @Enumerated(STRING) 経由で 新しい列(FKフリー、それらを編集しない)で。 ガイドラインまで、ガイドラインVersionId soft-FK(nullable)。 - MlosEligibilityCell(mlos eligibility cell): タイプされた資格ウィンドウ — fico low/high、プロパティ type (locked PropertyTypeUrla), unit low/high,ローン amount low/high, state set id (FK MlosValueSet), limit value を指定します。 価格/limit 数値 生 BigDecimal (カタログ コンベンション). - MlosMatrixType {MAX LTV、MAX CLTV、MAX DTI} — どの比率の Limit value の帽子のための差別化器。 - EligibilityCellMatcher (ungated @Component) + ScenarioFacts reuse + Eligibility アウトカム メニュー + 資格 結果: 含まれているセルをを渡る見つけて下さい メニュー Matrix type (ltv/cltv/dti) による RATIO-DISPATCH のテスト 対の限界; 欠如必須のattr → CANNOT PRICE (カバレッジの前に起因); 状態の不閉鎖; 重複 →最も制限のある(詳細にサーフィン)。 12 EligibilityCellMatcherTest グリーン. Enum-reuse + 研究ワークフローからspec; 逆にレビュー(2-agent): 固定行列 type比 ディスパッチ + ホイスト ratio CANNOT PRICE + オーバーラップ オブザーバビリティ + 未ホーナリング OTHER. お問い合わせ KamoInitializer コード変更(catalog repo pkg 登録された Slice 1) — 再実行のみ.
· kamo-shared-library
MlosMarginSchedule + MarginScheduleResolver (Phase-2 Slice 5)
投資家マージン層 — §8.1ステップ-4価格アセンブリの「+ margin schedule」期間。 - MlosMarginSchedule(mlos margin schedule):レートSheetVersionId FK、productId(null=all)、マージンタイプ、 CreditAmountLow/Highバンド、値(BigDecimal)、コンバシス(BORROWER PAID|LENDER PAID)。 - CompBasis enum — Comp BASISコンベンション(マージンが支払われる方法)、LOコンプランの金額ではなく、LOコンプリート スコアリング入力(doc 13 §8.5)はありません。 - MarginScheduleResolver (ungated @Component): 該当する(schedules、ローンアマウント、コンバシス) = バンド 値 (inclusive, null=open) とマッチをコンプリートします。合計マージン = Σ 値 (ZERO if none)。 5 MarginScheduleResolverTest 緑。 価格の数値 生 bigDecimal (スライス-3補正). KamoInitializer コード変更なし (catalog repo) pkg は Slice 1 を登録しました。 インデックスの実体宣言) — 再実行のみ.
· InitializerService
バリューセットプラットフォーム所有の所有権 CHECK(Phase-2 Slice 4)
SchemaCleanupRunner: ADDコンストラントmlos value set ownership chk CHECK(platform owned = (organization id IS NULL)) — doc 02 §6.2: プラットフォームの分類は platform owned は null org で、 org 固有のセットは org-scoped です。 条件 `= ... NULL` 形状は、enum-whitelistスイープを存続させます。 カタログリポジトリ pkg は既に登録済み (スライス 1).
· kamo-shared-library
LLPA調整+値セット+条件評価器(Phase-2 Slice 4)
LLPA/調整層+§8.1ステップ-4マッチングのための決定的な述語エンジン("an 調節はiffにすべての条件が満たされる一致します。 - MlosPriceの調節(mlos price adjustment):率シートVersionId FK、productId (null=all)、 調整グループ、操作(ADDITIVE|MULTIPLICATIVE)、値、スタックオーダー、キャパデュー、ラベル。 - MlosAdjustmentCondition(mlos adjustment condition):価格調整Id FK、属性、演算子 メニュー numLow/numHigh、valueSetId FK。 - MlosValueSet(mlos value set) + MlosValueSetMember(mlos value set member): 分類 set; doc 02 §6.2 プラットフォーム所有の例外(organizationId nullable + platformOwned フラグ) SET だけ; 会員は orgId ミラー — 所有権をセット、漂流面無しで運びません。 - AdjustmentConditionEvaluator(ungated @Component) + ScenarioFacts:数値のopsとnum low/high, ops と決議したメンバーをセット; 未知の事実 → 一致なし; SET OPS FAIL CLOSED に空の/null メンバー set(dangling soft-FK 値セットは、誰もが静かにマッチしません)、null-resolver-safe(NPEなし)。 9 **************** グリーン. 逆に2つのエージェントのワークフローを見直しました。2つのハイバレータのバグを修正しました(NOT IN は空で失敗しました) set; NPE on null ソルバー) + 冗長メンバー orgId ミラーをレビューごとにドロップします。 コンテンツ 数値 生 bigDecimal (スライス-3補正). KamoInitializerは、値セットの所有権CHECKを追加します.
· kamo-shared-library
MlosBasePriceGrid + NoteRateLadderのpriceable細胞(Phase-2 Slice 3)
価格のレート/価格のセル — FK BOTH に最初のカタログエンティティティ レートシートバージョン (スライス 1) そしてプロダクト(スライス2);§8.1価格アセンブリの基盤。 - MlosBasePriceGrid (mlos base price grid): レートSheetVersionId FK、製品Id FK、NoteRate、 lockPeriodDays、ベース価格(to-100)、ベースポイント、min/maxLoanAmount、ioFlag。 複合ユニット (バージョン、製品、Note rate、 lock period days、io flag) 実体宣言(io flag NOT NULL → 完全) 独特で、未加工DDL無し。 - NoteRateLadder(ungated @Component):par = セルの最も近い価格-to-100; closeToPrice(target); ties →下記率(doc 02 §8.1 ステップ 5)。 5 NoteRateLadderTest グリーン。 コード検証: doc 02 §6 は EmbMoney/EmbPercent と言いますが、ロックされた LoanPricingSnapshot (再現性アンカー) RAW BigDecimal — InterestRate DECIMAL(9,6), ポイント DECIMAL(9,4), embeddables なし; EmbPercent(9,4) は 6 デシミナルレートと一致できません。 スナップショット ミラー グリッドの価格設定 数値は、LoanPricingSnapshot(note rate 9,6 / base price+points 9,4 / 融資額 18,2. KamoInitializer コードの変更無し(catalog repo pkg は Slice 1 を登録しました; ユニーク インデックスエンティティ宣言) — 再実行のみ.
· InitializerService
Mlos product ARM-consistency CHECK (Phase-2 スライス 2)
SchemaCleanupRunner: ADDコンストライン CHECK ((((amortization type = 'ARM') = (arm fixed period months は NULL ではありません)) — 固定期間は 製品の IFF は ARM (doc 02 §6.6) です。 `= ... NULL` 形状ではない (バール列インリストではない) 一般的なenum-whitelist CHECKスイープを存続させます。 カタログリポジトリ pkg は既に Slice 1 に登録されています.
· kamo-shared-library
MlosProduct + MlosArmIndex製品分類レイヤー(Phase-2 Slice 2)
カタログ(doc 02 §6.3):すべての価格可能な下流(ベース価格) MlosProduct.uid へのグリッド、適格性のマトリックス、ガイドライン規則) FKs。 - MlosProduct(mlos product):パーインベスター製品 - 投資家ID FK、製品コード、償却 タイプ: (REUSES は URLA AmortizationType をロックしました), 用語月, armFixedPeriodMonth, armIndexId FK, ローンクラス, documentationType, 準拠, losProgramCode (REUSES ロックされた17値 LoanProgramCode, §6.4), guidelineVersionPointer(将来のMlosGuidelineVersion.uid、nullable)、アクティブに。 assertStructurallyValid(): arm fixed period months は IFF amortization type=ARM を設定します。 - MlosArmIndex(mlos arm index): インデックス名、マージンBps、初期/永続キャップ+フロア EmbPercent (doc 02 §6 レート-via-EmbPercent), 調整月. - 2つの新しい enums LoanClass/文書 タイプ(カタログ固有の;ドキュメンテーションタイプは§3.5非QMです Slice-1 MlosDocType と区別する doc-program クラス。2 リポジトリ。 ベース = BaseUuidEntity; orgId=Long @JsonSerialize(ToString). 5 MlosProductInvariantTest 緑。 KamoInitializer は mlos product ARM-consistency DB CHECK (catalog repo pkg は既に登録済みです) を加えます スライス 1。 推測:価格******************** +ライター.
· InitializerService
カタログリポジトリ登録 + レートシートバージョンノーバーラップインデックス(Phase-2 Slice 1)
- @EnableJpaRepositories += com.kamo.z.shared.mlos.catalog (新しいMlosInvestor/) **************** リポジトリ; 既に @EntityScan で覆われたエンティティティティ . - SchemaCleanupRunner: ux rate sheet version active 部分的なunique インデックス mlos rate sheet version (organization id, Investor id) WHERE status='ACTIVE' および valid until は NULL です — "1 つのオープン ACTIVE バージョン per (または投資家)" をバックストップします。 no-overlap invariant (doc 02 §6.5;CRDBに範囲除外制約はありません).
· kamo-shared-library
カタログの実績+効果的なバージョンアップスピム(Phase-2 Slice 1)
フェーズ2カタログ(doc 02 §6)の最も小さいshippableスライス:実績のあるチェーン ImgDat → MlosSourceドキュメント -> MlosRateSheetVersionおよび不変性の有効乾燥 ポイントインタイムの解像度でバージョンアップ。 第一次(MLOSCatalogServiceなし) 作家はまだ; これは、不変のカタロム-PKの基礎決定入力FKに. 新しい pkg com.kamo.z.shared.mlos.catalog: - MlosInvestor(per-orgレジストリ)、MlosSourceDocument(thin) ロックされた ImgDat に対するアノテーション; soft-FK img dat id は、バイト、ドキュメント 02 §6.4 を復元しません。 - MlosRateSheetVersion: 不変な効果的なバージョン(effective from/untilウィンドウ)、 supersedes self-FK, シーケンス no, ステータスのライフサイクル, source document FK, cutoff time) with app-layer 部分周知 WORM ガード (@PostLoad スナップショット + @PreUpdate diff): 凍結 貴重品/特定物品は、DRAFT->ACTIVE, ACTIVE->SUPERSED, ACTIVE->RETIRED のみ許可します。 そして、expert untilの書き込みオンスクローズ。 DBトリガーなし(CRDBは24.3にファイナライズできません)。 - 実効VersionResolver (gated mlos.catalog.enabled):ポイント・イン・タイムの決断 — [effective from,effective until] ウィンドウが格納されているバージョンは、 決して "latest row" 参加; 効果的なウィンドウのオーバーラップをスローします (詳細, doc 02 §6.5/§8.1). - 6つの列 **************************************** RateSheetVersionStatus + 3 リポジトリ。 ベース = BaseUuidEntity (doc 02 §6.1); orgId=Long @JsonSerialize(ToString) (code-verified): Organization.id は、doc 02 の "UUID" ではなく、ユニーク rowid です。 17 試験 グリーン (6 点内点) + 11ワームガード。 KamoInitializerは、カタログリポジトリ pkg + ux rate sheet version active を追加します。 部分的なユニークなノーバーラップインデックス.
· kamo-shared-library
積載量(コンフィグ+ゲート配線)
Additive DecisionGate.evaluate(ステージ、自信、法的要求人)、 BigDecimal tenantThresholdOverride — 孤立したパーテナントウォールが解決 by****************ステージ、フロア ザ・オブ・ザ・ 法的壁は絶対滞在し、上書きは非調整可能によって床を張られます 安全床(自律性は下回らない) Null オーバーライド フォール へ プラットフォームのデフォルト; 既存の 3 arg 評価() は null で委任されるので、 ゲート/デシジョンSpine の動作 + テストは変更されません。 SafetyFloor() を追加 ケーターがテナントのしきい値を同じフロアから解決するようにしました。 これは、フェーズ-1 config の基礎を意思決定ゲートに接続します。: エンジンは、現在 do gate.evaluate(ステージ、conf、法律、******************************** メニュー 9 DecisionGateTest (4 new) + 5 DecisionSpineTest + 6 MlosActivationServiceTest グリーン.
· InitializerService
部分的なユニークなインデックス + variants をサービスする (Phase-1 config 完了)
SchemaCleanupRunner 新規 mlos.config ドメイン (mlos.config は既にインストール済み) @EnableJpaRepositories;Hibernate ddl-auto:update はテーブルを作成します: - 1つの部分的な一意のインデックス(WHERE is active=true と実効 NULL である) mlos pricing policy / mlos capital policy / mlos servicing policy(lender profile id) + mlos product enablement (lender profile id, Program id) — Hibernate は WHERE インデックスを生成できません。 - ServicingPolicy immutable invariants: CHECK scra enforced=true + fdcpa enforced=true (=-CHECK, enum-whitelist sweep を存続).
· kamo-shared-library
完全なフェーズ-1 設定ドメイン + MlosActivationService (スライス 5)
Doc 04 の config のエンティティ 在庫を完了します。 - ポリシーのシングルトン(ワンアクティブ/パープロファイル、有効/アプリオンのみ): 価格ポリシー(ppeSourcePriority List<String>) — 型のMortgageVendorType §5 ベンダードメインに延期; LO-comp なし)、 CapitalPolicy (プルThroughPct なし) + 資本比率 子供の制限、ServicingPolicy(scra/fdcpa immutable) インバリアント 部分的なユニークなインデックス+ scra/fdcpa CHECKsはKamoInitializerで行きます。 - 製品Enablement (プログラムごとに単一アクティブ; channelRestriction @ElementCollection; ProgramId UUID — Program.id は UUID、doc の 'Long' はコード検証済みのエラーです。 - 投資家の家族:InveserConfig + InvestorOverlay + DeliveryRule(再利用) **************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** - RiskOverlay(ruleExpression JSONB String)。 11の新しい列。 - MlosActivationService @Component(gated mlos.config.enabled): 解決プロファイル(org) ログイン +************ ステージ、フロア - ネクタイ レンダープロファイル + 自律性 config + AutonomyResolver (ゲートの自信の壁のための永続的なソース)。 23 mlos.config テスト グリーン (MlosActivationService 6 new). Config-entity ベースパターン 全体(@Id UUID + @Embedded EmbRecordState、EmbRecordStateのない子供)。 プラン: メニュー (拡張)。 延期:フルスクリーン/モジュール/ベンダーの活発化のマトリックス+ validateProfile + SecurityService 自己治癒; *.config.history 付随するテーブル; 予見評価者.
· kamo-shared-library
チャネル適用エンジン(Phase-1 Slice 4)
決定的な最も制限的な解決法 (doc 04 §8) — プロダクト x チャネル x 投資家 -> {ALLOWED|DISALLOWED、実行パス、権限モデル、資金調達行動}。 - ChannelApplicabilityRuleの実体:******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 条件式式(JSONB 文字列, Program.rulesetJson precedent)/outcome/ ************************の日付 + EmbRecordState. スコープ (保存されていない) から DERIVED を優先します。 同じコンフィグベースパターン。 - 5つの列: RuleScope (+priority() Investor=0..Tenant=3)、チャネル、適用、 メニュー (HYBRID は、それぞれのロアンに対して解決しました) FundingBehavior(5, PORTFOLIO HOLD を含む — DeliveryRule の 4 値 unify deferred)。 - channelApplicabilityResolver @Component (ungated, stateless):空の/任意のDISALLOWED ⇒ DISALLOWED(§8.2 ambiguity の最も制限的な読み込みに安全) 最強のスコープからアトラスで。 ChannelResolution レコード。 5 **************** グリーン (17 mlos.configテスト). 条件式 プレジデント評価器 + 有効なdating filter + AiDecision pinning + MlosActivationService 偽り. mlos.config は既に KamoInitializer スキャンで、再実行のみ。 プラン: メニュー
· kamo-shared-library
AuthorityConfig(アンダーライティング権限+ゴバート委任) — Phase-1 Slice 3
- AuthorityConfig (LenderProfile ごとのシングルトン): underwritingAuthority DELEGATED/NON DELEGATED/HYBRID + ManualUwAllowed + govtDelegation セット {FHA DE、VA SAR LAPP、USDA、NONE} @ElementCollection(コレクションテーブル)を介して mlos authority govt delegation — ゲート内部のgovt UWと代理店紹介。 hasGovtDelegation() ヘルパー(HYBRID/チャンネルの解像度は拒否)。 - UnderwritingAuthority + GovtDelegation enum + AuthorityConfigRepository. - 同じ構成ベースパターン(@Id UUID + @Embedded EmbRecordState)。 UNIQUE(lender profile id) シングルトン まずはmlosの@ElementCollection。*。 3 AuthorityConfigTest グリーン(12mlos.configテスト) mlos.config は既に KamoInitializerスキャン — 再実行すると、mlos authority config + コレクションテーブルが作成されます.
· kamo-shared-library
人工知能の自律性設定+安全フロアリゾルバー(Phase-1 Slice 2)
- AiAutonomyConfig(LenderProfileごとの歌手)、AutonomyLevel **************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** autoExecuteEnabled + AutonomyStageOverride (per (profile,stage); StageKey 再使用 lifecycleStage — 別の PipelineStage 列が存在しません。trustThreshold + autoExecuteEnabled ディレクティブ 同じコンフィグエンティティティベースパターン (manual @Id UUID + @Embedded) EmbRecordState、UNIQUE(lender profile id)シングルトン+UNIQUE(profile,stage key)。 - AutonomyResolver @Component(ungated、DecisionGateのようなstateless):有効 パスワード = max(ステージオーバーライド?:グローバル、SafetyFloor) — 自律性は自信の壁だけをチューン 非調整可能なプラットフォームフロア(doc 13 §8.7)を下げることはできません。 autoExecuteEnabled オーバーライド・テン・グローバル ゲートの信条の壁のための1テナントの源(退去)。 5 AutonomyResolverTest + 4 LicensingResolverTestグリーン(TDD)。 インデックスの実体宣言 既にKamoInitializerスキャンのmlos.config —再実行は2つの新しいテーブルを作成します.
· InitializerService
Mlos.configリポジトリ pkg (Phase-1 Slice 1) を登録します
Add com.kamo.z.shared.mlos.configを@EnableJpaRepositoriesにKamoInitializer mlos lender profile + mlos licensing entry を作成します。 インデックス(税込) インフォメーション market id は、@Table でエンティティティティティクルで、SchemaCleanupRunner DDL は必要ありません.
· kamo-shared-library
LenderProfile + LicensingEntry 設定基盤(Phase-1 Slice 1)
新しいcom.kamo.z.shared.mlos.configテナント構成の基礎(doc 04 §3): - LenderProfile(root、MORTGAGE市場ごとのUNIQUE) — ソフトFKsロック 組織(長)+ 商取引市場(UUID) id. ノート市場IDはUIDです (CommerceMarket.id は gen random uuid です; doc 04 の 'Long FK' はコード検証済みです) エラー, AiDecision.loanFileId と同じケース. 再生用のプロファイルバージョン。 - LicensingEntry(各州の会社ライセンス、メンバーSteeLicenseとは異なる) — licenseType 8-value enum;stateCode ISO-3166-2;保存された状態無し、計算される isEffectiveOn() (doc 04 §7.3) で有効/有効期限の日付から。 - LicensingResolver @Component(gated mlos.config.enabled):isTenantLicensed() プロファイル、状態、タイプ) 日付ベース; 未覆われた管轄区域 => 偽 (ブロックされている)。 - Config-entityベースパターン:手動@Id UUID + @Embedded EmbRecordState(NOT) BaseUuidEntity — そのタイムスタンプは衝突します。 doc 04 §3)。 4 ライセンスResolverTest グリーン (TDD). インデックスの実体宣言 (UNIQUE market id). メニュー シングルトン; MlosivActation サービス + SecurityService ブーツの自己回復.
· DaemonService
DaemonServiceコンプライアンスタイマーSLAスイープ(タイマー採用者)
MLOSコンプライアンスタイマーの第一次採用:クォーツジョブ(少なくとも5分)コール ******************** ARMED-but-past-deadline ECOA をフリップする (AdverseActionTimer) + Reg X (RegXTimer) 時計 EXPIRED なので、ブロックされた借り手 規制の期限を静かに吹くことはできません。 - コンプライアンスタイマーSweepJob(クォーツジョブ)+クォーツコンプジョブ詳細/トリガー;タイマー サービスは@Autowired(必須=false)+デフォルトで有効フラグなので、ジョブ config に関係なく、クラッシュセーフです。 - @EnableJpaリポジトリ+ = メニュー - configmap:mlos.compliance.enabled=true(共有ライブラリサービスを有効にします)+ メニュー {enabled:true, cron:'0 */5 * * * * * ?'}。 タイマーテーブルが空いている間は安全ノップ(エンジンアームのタイマーはまだありません).
· kamo-shared-library
******************** デーモンサービスSLA sweep
すべてのARMED-but-past-deadline AdverseActionTimer + RegXTimerをEXPIREDにフリップ (耐久のエスカレーション信号の承諾のstewardスクリーンの表面;でき事 コンプライアンスキューへの排出はフォローアップです。 カウントを返します。空のタイマー テーブルは安全です。 2つの新しいテスト(12 ComplianceTimerService) 緑をテストして下さい).
· kamo-shared-library
ワイヤライセンス-食器の割り当てをDecisionSpineに(スライス2b-ii)
DecisionSpine.record() が StewardTask.assignedMemberId をスタンピング StewardAssigner がルーティングされた決定がローンの管轄区域を運ぶとき: - DecisionRequest は、オプションの SubjectStateCode (ISO-3166-2) + actionType を獲得します。 (ライセンスタイプ) 両方の存在とスチュワードアシグァンバが存在するとき (mlos.legal.enabled), ルートされたタスクは、ライセンスされているスチュワードに割り当てられます その行為の状態; そうでなければ、それは不割り当てを開きます(急な主張それ)。 - StewardAssigner は ObjectProvider による OPTIONAL Docstor として注入されるので、 mlos.legal.enabled なしで動く脊柱は影響しません。 バックコンパット 6 arg コンストラクタは保持 — 4 つの既存の決定書SpineTest は変更されません。 29mlosテストグリーン(DecisionSpine 5, StewardAssigner 5, LegalRegistry 9,) コンプライアンスタイマー10 コードのみ — スキーマの変更なし、KamoInitializer は実行しません.
· kamo-shared-library
ライセンス・アウェア・ステワード・アシグナー(デシオン・スピーヌ・シラ2b-ii)
ライセンス・アウェア・スチュワード・セレクター (doc 03 §3.2; doc 01 §6 #9) を追加します。 MLOS StewardLicense が有効な TODAY の動作に必要なライセンス 借り手の状態にタイプし、最も少ない開いているSewardTasks(ネクタイ→ 最低のmemberId; 管轄区域(caller escalates)をカバーしないと空にして下さい。 - StewardAssigner @Component (gated mlos.legal.enabled) 以上 StewardLicense + StewardTask リポジトリ — MLOS ゲートレジストリを読み込み、ロックされていないコア orgs。 ライセンス (no donotmodify deps; メンバー->(orgId,userId)->Licensejoinを避けます)。 - StewardLicense.isValidOn(日付) — 日付ベースのライセンスのための真実の単一ソース (スタタス計算、保存しない) メニュー それをリファクタリングしました。 メニュー (有料プール) 5 StewardAssignerTest グリーン; 9 法的Registry それでも緑色(14合計)をテストします。 スキーマなし 変更(KamoInitializerの操業無し)。 基板優先 — DecisionSpine.record() への配線 ROUTE TO HUMAN が割り当てられたスタンプに割り当てられます。Id はフォローアップです.
· InitializerService
Mlos.complianceリポジトリ(Slice 2c-i)を登録する
Add **************** に @EnableJpaRepositories ので KamoInitializer mlos adverse action timer + mlos regx timer を作成します。 インデックスの実体宣言 @Table — SchemaCleanupRunner DDL は必要ありません.
· kamo-shared-library
ECOA + Reg Xタイマー基質(決定-松スライス2c-i)
新しい********************パッケージ(doc 03 §2.8) — kamo-owned ロックされたdonotmodifyのコンプライアンスタイマーのアナログ。 トライドタイマー。 第一次: - AdverseActionTimer(ECOA/Reg B 30日時計)。 通知金ECOA AA/COUNTEROFFER/ INCOMPLETE NOA + RegXTimer(肯定的なサービス業務;デューティーキンド) メニュー ミューテーブル ************************************ ソフトローンFileId ref, +orgId for テナントの分離。 Breach-sweepのインデックス(status、期限 at)。 - ComplianceTimerStatus enum + 2 リポジトリ(************************) - ComplianceTimerService @Component(gated mlos.compliance.enabled):腕のタイマー、 規制の日数(30/36/120/5、テストによってロック)をエンコードし、CONTINUITY 明示的な期限、注入された時計、広がりのファインダーによる侵害の検出を必要とします。 10 ComplianceTimerServiceTest グリーン(TDD) @Table でエンティティティ宣言されたインデックス。 DaemonService SLAエスカレーション + BLOCKED->STALE deferred(スイープファインダーの呼び出し)。 このスライスを除外します: コンプライアンス修正 (FK donotmodify). トライドタイマー、RBPN/FCRA 通知、変更された状況.
· InitializerService
レジスタmlos.legalリポジトリpkg(スライス2b)
Com.kamo.z.shared.mlos.legalを@EnableJpaRepositoriesに付け加えて下さい従ってKamoInitializer mlos licensed act registry/mlos ron eligibility/mlos steward license を作成します。 すべてのインデックスは、@Table でエンティティティメント宣言されています。 SchemaCleanupRunner DDL は必要ありません.
· kamo-shared-library
法的なレジストリ基質(デシオン・スマイン・スライス2b)
新しいcom.kamo.z.shared.mlos.legalパッケージ — グリーンフィールドプロデューサーの DecisionGateの絶対法的壁入力(doc 03 §3.2)。 第一次、いいえ まだ採用者: - LicensedActRegistry (platform ref, per act+state) — この規制行為を行う 法的にライセンスされた人間が必要ですか? ユニーク(act type、state code)。 - RonEligibility (platform ref, per state) — ronAllowed/ipenrequired + の 受託/署名/プロパティアライメントルールトークン。 - StewardLicense (tenant-scoped、memberId にキーを付けられた) — NMLS-by-state のライセンス。 保存状態の列なし: 有効から計算された日付<=today<=expiresAt (doc 13 §4.3 補正レジャーは、doc 03 のインラインステータスフィールドをオーバーライドします)。 - LegalRegistry @Component (gated mlos.legal.enabled, default off): エラークローズド LegallyRequiresHuman/stewardLicensedFor(日付ベース)/ ronAllowedIn。 stateCode は ISO-3166-2 文字列 (国際線読み取り; USStateType はデッドコードです) です。 @Table でエンティティティ宣言されたインデックス。 9 法的登録 テストパス(TDD) 発送されたDecisionGateを契約でコンパイル — 決定/下書きの編集はありません。 License-aware StewardTask の代入は、次のスライスに延期されます.
· InitializerService
Mlos.steward + mlos.orchestration リポジトリを登録します。 Slice-2a スキーマ
- KamoInitializerApp @EnableJpaRepositories:蓄積されたMLOSリポジトリを追加します パッケージ メニュー プラス esign/personal loans なので、KamoInitializer はスキーマを所有しています。 - SchemaCleanupRunner: ジェネリック@ホワイトリスト-CHECKスイープ; 部分的/ ユニークなインデックス + FK 用 **************************** メニュー Decision-spine Slice-2aのインデックスは、現在 entity-declared (@Table) なので、Slice-2a ブロックは no-op コメントです.
· kamo-shared-library
ディシジョン・スプライス 2a — OrchestrationState + StewardTask + DecisionSpine BLOCKED ステートマシン
OrchestrationState (一段グリーン/ブロック/COMPLETE) + StewardTask (例外レコード) + enums + DecisionSpine (@ConditionalOnProperty mlos.spine.enabled): 出荷されたDecisionGateを構成します + AiDecision WORM ledger + 1 tx でトランザクションアウトボックス — ROUTE TO HUMAN がタスクを開く + ブロックをブロックする ステージ; resolve() は HUMAN OVERRODE の決定 + ブロックを解除します。 Mutable 状態の実体(@PreUpdate 無し)。 4/4 モッキトテストグリーン.
