Changelog
Ada kabar baru.
Setiap perbaikan pada platform, sebagai kapal.
· kamo-shared-library
Guideline rules + conditions + evaluator, sharing the LLPA predicate engine (Phase-2 Slice 8)
Panduan- aturan predikat dari step-2. Kritis, REUSES yang diulas Slice-4 kondisi Evaluator daripada menduplikasi keselamatan - kritis memprediksi logika. Reaktor DRY (bukan regresif - revaluasi tubuh oleh - identik): - Prediksi Kondisi antarmuka * * * * * * * * * * * * * * * - MlosAdjustment Kondisi + MlosGuidineRuleCondition keduanya mengimplementasikannya. - Penyesuaian KondionEvaluasi yang digeneralisasikan ke Kondisi Prediksi; pengaturanPercocokan - > AllConditionsMatch (Daftar <? Memperluas Prediksi >). Slice-4 tes re-runs hijau (9), keduanya sebelum HIGH fix utuh. Baru: - MlosGuidelineRule (mlos _ guireline _ rule): pedoman dalam VersionId FK, productId FK, ruleCode (unik per versi), vonis (RuleVerdect ELIGIBLE / INELIGIBLE / SPIPULATED E 10,3 vocab), procections Kind * * * * * * * * * * * * * * * persyaratan Nilai, keparahan, sourceSectionRef, bendera tidak terkondisi. + MlosGuidineRuledition (kondisi predicateCondition). - GuidelineRuleEvaluasi (ungated @ Componen) + GuidelineEvaluasi + GuidelineOutcome: sebuah aturan kebakaran ketika semua kondisinya berlaku (melalui evaluator bersama); Iff INELIGIBLE apapun dipecat peraturan tak terelakkan; ketentuan mengumpulkan. 8 GuidelineRuleEvaluatorTest hijau. Tambahan diulas (2-agen): refactor dikonfirmasi oleh - identik / bukan-regresif; tetap MEDIUM over- blok bahaya - aturan non-selimut dengan kondisi nol sekarang gagal SAFE (tidak api) jadi Setengah ditulis / menggantung -FK Peraturan tak bisa dipahami diam-diam menghalangi setiap peminjam (mirror value-set Gagal - tertutup); eksplisit 'unconditired' flag untuk aturan selimut yang disengaja. Tidak ada perubahan kode KamiInisiasi.
· InitializerService
Guideline- versi no- overlap partial -unik indeks (Phase-2 Iris 7)
SchemaCleanupRunner: ux _ guireline _ version _ active partial -unique ON mlos _ pedoman _ version (organisasi _ id, produk _ id) Status WHERE = 'ACTIVE' DAN efektif _ until IS NULL - satu terbuka / saat ini ACTIVE versi panduan per (org, produk); cermin ux _ rate _ sheet _ version _ active (doc 02 # 6.5). Catalog repo pkg sudah terdaftar (Iris 1).
· kamo-shared-library
MlosGuidelineversion (WORM) + GuidelineVersionResolver (Phase-2 Iris 7)
The immutable efective- dated pedoman VERSI - wadah eligibilitas matriks Dan aturan pedoman masa depan. Replikasi setia Slice-1 MlosRateVersi tulang belakang, tajam per produk (vs per investor). - MlosGuidineversion (mlos _ guireline _ version): productId FK, revisionLabel, efektif _ from / until, urutan _ no, supersedes _ id sendiri-FK, status, source _ documents _ id FK, kb _ articles _ guid + kb _ articles _ version _ no ('s6.4 KB- prosa drift- pin, immutable). App- layer partial-mutability WORM (@ PostLoads snapshot + @ Preupdate diff): membekukan identitas / isi, hanya ijinkan DRAF- > ACTIVE, AKTIVE- > SUPERSEDED, AKTIVE- > RETIRED + write- sekali efektif _ until close. - GuidelineVersionStatus * * * * * * * * * * * * * * * * - GuidelineVersionResolver (gated mlos.catalog.enabled): titik-in- time resolusi jendela, tidak pernah baris-later-, melempar di atas. Mirror EffectiveVersionResolver. - 17 tes hijau (6 GuidelineVersionResolverTest + 11 * * * * * * * * * * * * * KamoInitializer menambahkan ux _ guireline _ version _ active partial -unique (satu terbuka ACTIVE per org + product).
· kamo-shared-library
Matriks eligibilitas + sel + matcher sel (Phase-2 Iris 6)
Langkah pertama terdiri dari filter pertama (conjunct sel; pedoman _ rule + AUS gate AND di kemudian). - MlosEligibilityMatrix (mlos _ eligibility _ Matrix): per * * * * * * * * * * effective- tanggal; REUSES terkunci URLA * * * * * * * * * * * * * * via @ Enumerated (STRING) pada kolom baru (FK-free, tidak pernah mengeditnya); pedoman versionId soft- FK (nulable sampai pedoman). - MlosEligibilityCell (mlos _ eligibility _ cell): typed jendela eligibility - fico _ low / high, properti _ type (FK MlosValueSet), bail _ value. Harga / batas nomor mentah BigDecimal (konvensi katalog). - MlosMatrixType {MAX _ LTV, MAX _ CLTV, MAX _ DTI} - diskriminator yang rasio limit _ value caps. - EligibilityCellMatcher (ungated @ Componen) + ScenarioFact reuse + Eligibility Outcome * * * * * * * * * * * * * * * + Eligibilitas Hasil: menemukan sel yang berisi di seluruh * * * * * * * * * * * * * * * RATIO- DATATCH oleh matriks _ type (ltv / cltv / dti) diuji vs limit; hilang attr yang diperlukan astr BERKAS _ PRICE (hoisted sebelum cakupan); gagal negara - tertutup; tumpang tindih Paling tidak terbatas (muncul secara rinci). 12 Eligibilicals MatcherTest hijau. Enumen-reuse + spec dari alur kerja penelitian; secara serempak diulas (2-agen): rasio fix _ type tetap dispatch + hoisted- rate CANNOT _ PRICE + tumpang tindih observability + diturunkan tidak terhormat LAIN. Tidak Perubahan kode KamoInisiasi (katalog repo pkg terdaftar Iris 1) - hanya jalankan kembali.
· kamo-shared-library
MlosMarginJadwale + MarginScheduleResolver (Phase-2 Iris 5)
Lapisan batas investor - istilah "+ margin _ schedule" dari step8.1 - 4 harga perakitan. - MlosMarginSchedule (mlos _ margin _ schedule): rateSheetVersionId FK, productId (null = all), marginType, band loanAmountlow / High, nilai (raw BigDecimal), compiBasis (BORROWER _ PAID 14; LENDER _ PAID). - CompBasis enum - konvensi comp BASIS (bagaimana margin dibayar), NOT sebuah jumlah comp-plan LO; LO comp tidak pernah mencetak masukan (doc 13 # 8.5). - MarginScheduleResolver (ungated @ Componen): applicable (jadwal, loanAmount, compton) = band berisi jumlah (inklusif, null = open) AND comp cocok; totalMargin = questifications (ZERO jika tidak ada). 5 MarginScheduleResolverTest hijau. Harga angka mentah BigDecimal (Slice-3 koreksi). NO Kode perubahan KamoInivalizer (katalog repo pkg terdaftar Iris 1; indeks hak -dideklarasikan) - hanya re- run.
· InitializerService
Value- set platform- pemilik CHECK (Phase-2 Iris 4)
SchemaCleanupRunner: ADD CONSTRAINT mlos _ value _ set _ owner _ chk CHECK (platform _ owned = (organisasi _ id IS NULL)) - doc 02 = 6.2: sebuah platform taksonomi adalah platform _ owned dengan sebuah null org; sebuah set org- spesifik adalah org- scoped. Biconditional '=... IS NULL' bentuk bertahan menyapu enum-whitelist. Catalog repo pkg sudah terdaftar (Iris 1).
· kamo-shared-library
Pengaturan LLPA + nilai set + kondisi evaluator (Phase-2 Iris 4)
LLPA / penyesuaian lapisan + deterministik mesin predikat untuk step-4 pencocokan ("an penyesuaian cocok iff ALL kondisi puas "). - MlosPriceAdjustment (mlos _ price _ penyesuaian): rateSheetVersionId FK, productId (null = all), Adjustment Group, operasi (ADDITIVE 124; MULTIPPICTIFIVE), nilai, stackOrder, capValue, label. - MlosAdjustment Kondisi (mlos _ penyesuaian _ condition): PriceAdjust FK, atribut, operator * * * * * * * * * * * * * * * Numlow / numHigh, valueSetId FK. - MlosValueSet (mlos _ value _ set) + MlosValueSetMber (mlos _ value _ set _ member): bernama kategoris set; doc 02: 6.2 platform- eksepsi dimiliki (organisasi nulable + platformOwned pada hanya SET; anggota tidak membawa cermin orgId - kepemilikan melalui set, tidak ada drift permukaan). - Penyesuaian KondionEvaluasi (ungated @ Componen) + Skenario Fact: numerik ops vs num _ low / high, set ops vs resolved members; hilang fakta tidak cocok; SET OPS FAIL CLOSED pada anggota kosong / kosong set (a dangling soft- FK value set never silently match everyone) and nall-resolver- safe (no NPE). 9 * * * * * * * * * * * * * * * * * * hijau. Tambahan diulas (2-agent workflow): bug evaluasi tinggi 2 tetap (NOT _ IN fail-open pada kosong set; NPE pada resolver null) + menjatuhkan anggota penuh orgId mirror per review. Harga angka mentah Bigdecimal (slice-3 koreksi). KamoInitializer menambahkan nilai-set kepemilikan CHECK.
· kamo-shared-library
MlosBasePriceGrid + NoteRateLadder berharga sel (Phase-2 Iris 3)
Sel harga / harga yang mahal - entitas katalog pertama ke FK KEDUA versi tingkat-lembar (Iris 1) DAN sebuah produk (Iris 2); dasar perakitan harga lex8.1. - MlosBasePriceGrid (mlos _ base _ price _ grid): rateSheetVersionId FK, productId FK, NoteRate, lockPeriodDays, basePrice (price-to-100), basePoints, min / maxLoanAmount, ioFlag. Komposit UNIQUE (versi, produk, catatan _ rate, lock _ period _ days, io _ flag) hak-hak dideklarasikan (io _ flag TIDAK KOSONG penuh Unik, tidak ada DDL mentah). - NoteRateLadder (ungated @ Componen): par = cell price- to -100; nearestToPrice (target); dasi - > Tingkat catatan lebih rendah (doc 02 = 8.1 langkah 5). 5 NoteRateLadderTest hijau. CODE- VERIFIED CORREKTION: doc 02: 6 mengatakan EmbMoney / EmbPercent, tapi LoanPricingSnapshot terkunci (jangkar reproduksibilitas) menggunakan RAW BigDecimal - menarik DECIMAL (9.6), poin DECIMAL (9.4), tidak ada digelapkan; EmbPercent (9.4) tidak dapat cocok dengan tingkat 6 desimal. Jadi snapshot-cermin harga kisi angka menggunakan baku BigDecimal pencocokan LoanPricingSnapshot (catatan _ rate 9.6 / base _ price + poin 9.4 / Jumlah pinjaman 18,2). Tidak ada perubahan kode KamoInivalizer (katalog repo pkg terdaftar Iris 1; unik indeks hak-dideklarasikan) - hanya re- run.
· InitializerService
Mlos _ product ARM-consistency CHECK (Phase-2 Iris 2)
SchemaCleanupRunner: ADD CONSTRAINT * * * * * * * * * * * * * CHECK (amortisasi _ type = 'ARM') = (arm _ fixed _ period _ months IS NOT NULL) - sebuah periode tetap menyatakan IFF produk adalah ARM (doc 02 # 6.6). '=... IS NOT NULL' shape (not a bare enum IN-list) bertahan dari enum generik - whitelist TE menyapu. Catalog repo pkg sudah terdaftar dalam Iris 1.
· kamo-shared-library
MlosProduct + MlosArMinddex product-tagonomy layer (Phase-2 Iris 2)
Tulang belakang produk katalog (doc 02: grid, matriks eligibilitas, aturan pedoman) FK untuk MlosProduct.uid.s. - MlosProduct (mlos _ product): produk investor - proporsional FK, producCode, amortisasi Tipe font color = "# 00FFFF" (REUSES terkunci URLA AmortizationType), bulan-bulan, lengan FixedPeriodMonths, lengan IndexId FK, loanClass, documentationType, conforming, losProgramcode (REUSES terkunci 17- nilai LoanProgramcode, Mc6.4), foelineVersionPointer (real FK-by- id untuk MlosGuidlineVersion.uid, nulable), aktif. assertStructurallyValid (): arm _ fixed _ month_ monthset set IFF amortization _ type = ARM. - MlosArM Indeks (mlos _ arm _ index): indexName, marginBps, inisial / periodik / seumur hidup tutup + lantai sebagai Empercent (doc 02 / 6 rate- via- Empercent), adjustimons. - 2 baru enums LoanClass / Dokumentasi Tipe (catalog -specific; DocumentationType adalah Mc3.5 bukan-QM Kelas program dokter, berbeda dari Slice-1 MlosDocType). 2 repos. Dasar = BatuidEntity; orgId = Long @ JsonSerialize (ToString). 5 MlosProductInvariantest hijau. KamoInitializer menambahkan mlos _ product ARM - konsistensi DB CHECK (katalog repo pkg sudah terdaftar di Iris 1). Disukai: harga * * * * * * * * * * * * * * + penulis.
· InitializerService
Register katalog repos + rate- sheet- versi no- overlap indeks (Phase-2 Iris 1)
- @ EnableJpaRepostales + = com.kamo.z.shared.mlos.catalog (MlosInstal baru / * * * * * * * * * * * * * * repos; entitas telah ditutupi oleh @ EntityScan). - SchemaCleanupRunner: ux _ rate _ sheet _ version _ active partial -unique indeks ON mlos _ rate _ sheet _ version (organisasi _ id, investor _ id) where status = 'ACTIVE' AND efektif _ until IS NULL - backstops the "one open ACTIVE version per (org, investor)" no- overlap invarian (doc 02 '6,5; CRDB tidak memiliki batasan pengecualian).
· kamo-shared-library
Provenance Catalog + efektivedated versioning spine (Phase-2 Iris 1)
Potongan terkecil dari katalog Phase-2 (doc 02 = 6): rantai provenance ImgDat - > MlosSourceDocument - > MlosRateSheetVersion dan efektiveimmutable-tanggal tulang belakang versi dengan titik-in-waktu resolusi. Sub strategi - pertama (tidak ada MLOSCatalogService penulis belum); ini adalah impmutable- katalog -PK fondasi DecisionInput akan FK ke. Pkg com.kamo.z.shared.mlos.catalog baru: - MlosInvelor (registry per-org; short _ code unik per org), MlosSourceDocument (tipis noltation over locked ImgDat; soft-FK img _ dat _ id, never re-store bytes, doc 02 # 6.4). - MlosRateSheetVersion: versi efektive- tanggal (effective _ from / until window, supersedes self-FK, sequence _ no, status lifecycle, source _ documents FK, cutoff _ time) with app- layer partial-mutability wordman guard (@ PostLoads snapshot + @ PreUpdate diff): membeku Berharga / identitas, hanya memungkinkan DRAF- > AKTIVE, AKTIVE- > SUPERSEDED, AKTIVE- > RETIRED dan tulisan-sekali dekat efektif sampai. Tidak ada pemicu DB (CRDB tidak bisa menyelesaikan sampai 24.3). - EffectiveVersionResolver (gated mlos.catat.enabled): titik-in- time resolusi - the versi yang [efektif _ from, efektif _ until) jendela CONTAINS harga _ as _ of, tidak pernah "baris terakhir" bergabung; melempar di efektive- jendela tumpang tindih (pertahanan-in-kedalaman, doc 02 # 6,5 / # 8.1). - 6 enums * * * * * * * * * * * * * * * * * RateSheetVersionStatus) + 3 repos. Dasar = BaseUidEntity (doc 02 = 6.1); orgId = Long @ JsonSerialize (ToString) (code-verified: Organisasi. id adalah unik _ rowid, bukan doc 02 's "UUID"). 17 tes hijau (6 titik resolver -in-time + 11 WORM Guard). KamoInitializer menambahkan katalog repo + ux _ rate _ sheet _ version _ active Parsial - unik no- overlap indeks.
· kamo-shared-library
Per- penyewa confidence-threshold gerbang overload (config config configate wiring)
Addititif DecisionGate.Evaluation (panggung, kepercayaan, legallyRequisHuman, Big Desimal TenantThresholdOverride) - otonom-tuned per-penyewa dinding diselesaikan oleh * * * * * * * * * * * * * * * * panggung, lantai). The dinding hukum tetap mutlak dan override masih berlantai oleh yang tidak tunable lantai aman (otonomi tidak pernah bisa otomatis-bertindak di bawahnya). Null override jatuh kembali ke platform baku; yang ada 3-arg evaluasi () dengan null, jadi Dikirim gerbang / DecisionSpine perilaku + tes mereka tidak berubah. Ditambahkan lantai aman () getter sehingga penelepon menyelesaikan ambang batas penyewa terhadap lantai yang sama. Ini menghubungkan fondasi kepercayaan Phase- 1 ke gerbang keputusan: sebuah mesin dapat sekarang do gater.evaluation (stage, conf, legal, * * * * * * * * * * * * * * * panggung. 9 DecisionGateTest (4 new) + 5 DecisionSpineTest + 6 MlosActivationServiceTest hijau.
· InitializerService
Sebagian unik indeks + melayani invarian (Phase-1 konfigurasi selesai)
SchemaCleanupRunner DDL untuk domain mlos.config baru (mlos.config sudah masuk @ EnableJpaRepositor; Hibernate ddlauto: perbarui membuat tabel): - satu -active parsial unik indeks (WHERE is _ active = true DAN efektif _ to IS NULL) di mlos _ pricing _ policy / mlos _ capital _ policy / mlos _ servicing _ policy (lender _ profile _ id) + mlos _ product _ enablement (lender _ profile _ id, program _ id) - Hibernasi tidak dapat memancarkan WHERE index. - ServingPolicy immutable invariants: CHECK scra _ enforced = true + fdcpa _ enforced = true (= -CHECKs, bertahan menyapu enum-whitlist).
· kamo-shared-library
Lengkap Phase-1 domain konfigurasi + MlosActivationService (Iris 5)
Melengkapi inventaris data aktornya 04. - Singletons kebijakan (satu-active- profile, efektive- tanggal / append- saja): Kebijakan Sebelumnya (ppeSourcePriority List < String > - mengetik MortgageVsupport Type Ditunda ke domain vendor # 5; NO LO-comp), CapitalPolicy (NO pullalong pct) + Kapillengtration Batas anak, Kebijakan Servicing( scra / fdcpa immutable invarian). Sebagian indeks unik + scra / fdcpa CHECK pergi di KamoInitializer. - Produksi Enablement (single-active per program; channelRestriction @ Elements Collection; programId UUID - Program.id adalah UUID, doc 'Long' adalah code- diverifikasi error). - Keluarga Investor: Investor Config + Investor Overlay + DeliveryRule (reuses * * * * * * * * * * * * * * - tidak ada dup) + Komitment Rule (mereses Komitment Type). - RiskOverlay (ruleExpression JSONB String). 11 enums baru. - MlosActivationService @ Componen (gated mlos.config.enabled): resolveProfile (org Id) + * * * * * * * * * * * * panggung, lantai) - ties LenderProfile + otonomi config + AutonomyResolver (sumber penyewa untuk dinding kepercayaan gerbang). 23 mlos.config tes hijau (MlosActivationService 6 baru). Pola dasar entitas konfigurasi seluruh (manual @ Id UUID + @ Embbed RecordState; anak-anak tidak ada EmbRecordState). Rencana: * * * * * * * * * * * * * * * (diperpanjang). Deferred: full screen / module / vendor activation matrix + validateProfile + SecurityService self-heal; * .config.history tambahkan -only tabel; prediate evaluator.
· kamo-shared-library
Mesin Applikabilitas Saluran (Phase-1 Iris 4)
Kebanyakan deterministik - restrictive resolver (doc 04 # 8) - Produk x Channel x x Investor - > Font color = "# ff80c0" [ALLOWED 126] Dibatalkan, eksekusi, Model berwibawa, fundingBehavice]. - ChannelApplicabilityRule Entity: * * * * * * * * * * * * * conditionExpression (String JSONB, Program.rulesetJson preseden) / hasil / * * * * * * * * * * * * * * * * tanggal + EmbRecdState. prioritas DERIVED dari scope (tidak disimpan). Pola dasar konfigurasi yang sama. - 5 enums: RuleScope (+ prioritas () Investor = 0.. Tenant = 3), Channel, Applicability, * * * * * * * * * * * * * * * (HIBRID diselesaikan per- pinjaman untuk ini), FundingBehavically (5, incl PORTFOLIO _ HOLD - DeliveryRule 's 4-value unify defere). - ChannellApplicabiliResolver @ Komponen (ungated, statless): kosong / any- distalLOWED = > DIDISALLOWED (yang paling aman -restrictive pembacaan dari ambiguitas Mc8,2); lain ALLOWED dengan atts dari lingkup terkuat. Catatan Resolusi ChannolResolusi. 5 * * * * * * * * * * * * * * * * hijau (17 mlos.config tes). Ekspresi Kondisional predicate evaluator + efective- dating filter + AiDecision pinning + MlosActivationService ditangguhkan. mlos.config sudah dalam pemindaian KamoInitializer - hanya jalankan kembali. Rencana: * * * * * * * * * * * * * * *
· kamo-shared-library
Phase- 1 Iris 3
- ApriityConfig (singleton per LenderProfile): underwritingAuthority DELEGATED / NON _ DELEGATED / HIBRID + manualUwAllowed + govtDelegation Set {FHA _ DE, VA _ SAR _ LAPP, USDA, NONE} via @ Element Collection (daftar tabel mlos _ authority _ govt _ delegasi) - gerbang internal pemerintah UW vs referral agensi. HasgovtDelegation () pembantu (HIBRID / channel deferred). - UnderwritingAuthority + GovtDelegation enums + AdvanityConfigreme. - Pola dasar konfigurasi sama (manual @ Id UUID + @ Embed RecordState); UNIQUE (lender _ profile _ id) singleton. Pertama @ Elemen Koleksi di mlos. *. 3 tes configtest (12 mlos.config test). mlos.config sudah masuk Pemindaian KamoInisializer - re- run menciptakan mlos _ authority _ config + tabel koleksi.
· kamo-shared-library
Konfig otonomi AI + safety-floor resolver (Phase-1 Iris 2)
- AiAutonomyConfig (singleton per LenderProfile; otonomyLevel * * * * * * * * * * * * * * * * * global DefaultThreshold DECIMAL (4.3), AutonomyStageOverride (per profil, stage); stageKey reuses Lifecyclestage - tidak ada Ppelinestage enum terpisah ada; trudenceThreshold + AutoExecuteEnabled). Pola dasar entitas yang sama (manual @ Id UUID + @ Tertanam EmbRecordState); UNIQUE (lender _ profile _ id) singleton + UNIQUE (profile, stage _ key). - AutonomyResolver @ Komponen (ungated, statess Gate): efektif Ambang Ambang = max (stageOverride?: global, SafetyFloor) - otonomi lagu HANYA dinding kepercayaan dan TIDAK PERNAH dapat menurunkan lantai platform tidak tunable (doc 13: 8.7); AutoExecuteEnabled override- kemudian- global. Sumber penyewa untuk dinding kepercayaan gerbang (kabel ditangguhkan). 5 AutonomyResolverTest + 4 LicensingResolverTest hijau (TDD). Indeks berhak. mlos.config sudah dalam pemindaian KamoInitializer - jalankan ulang membuat 2 tabel baru.
· InitializerService
Register mlos.config repo pkg (Phase-1 Iris 1)
Tambahkan com.kamo.z.shared.mlos.config ke @ EnableJpapositories sehingga KamoInitializer Membuat mlos _ lender _ profile + mlos _ licensing _ entry. Indeks (incl. UNIQUE pasar _ id) adalah hak-dideklarasikan melalui @ Tabel - tidak ada SchemaCleanupRunner DDL yang dibutuhkan.
· kamo-shared-library
LenderProfile + LicensingEntry fondasi konfigurasi (Phase-1 Iris 1)
Kom.kamo.z.shared.mlos.config tenant- config fondasi (doc 04 # 3): - LenderProfile (akar, UNIQUE per pasar MORTGAGE) - soft- FK terkunci Organisasi (Long) + CommerceMarket (UUID) oleh id. CATATAN pasar UUID (CommerceMarket.id adalah gen _ random _ uuid; doc 04 'Long FK' adalah code-verified error, sama kasus seperti AiDecision.loanFileId). ProfileVersi untuk replay. - LicensingEntry (lisensi Per- Negara Bagian, berbeda dari anggota Pramugari) - licenseType 8-value enum; stateCode ISO-3166-2; NO status tersimpan, dihitung dari tanggal efektif / kadaluarsa via isEfektiveOn () (doc 04 # 7.3). - LicensingResolver @ Komponen (gated mlos.config.enabled): is TenantLicensed ( profile, state, type) date-based; discover yurisdiksi = > false (act blocked). - Pola dasar entitas konfigurasi: manual @ Id UUID + @ Embbed RecordState (NOT BaseUidEntity - penanda waktunya akan bertabrakan; doc 04: 3). 4 LicensingResolverTest hijau (TDD). Indeks berhak-dideklarasikan (UNIQUE pasar _ id). Dideferred: * * * * * * * * * * * * * * * * single tons; MlosActivation Layanan + SecurityService sendiri-sembuh.
· DaemonService
DaemonService compligence-timer SLA menyapu (timer adopter)
Adopter pertama pengelola MLOS: pekerjaan Quartz (setiap 5 menit) panggilan * * * * * * * * * * * * * * untuk flip ARMED- tapi -past-deadline ECOA (AdverseActionTimer) + Reg X (RegXTimer) clock to EXPIRED sehingga peminjam BLOCKED tidak dapat secara diam-diam meniup batas waktu regulasi. - Compliarcies TimerSweepJob (Quartz Job) + QuartzConfig JobDetail / Trigger; timer layanan adalah @ Autowired (dibutuhkan = false) + a default-off aktifkan flag, sehingga pekerjaan adalah crash- aman terlepas dari config. - @ EnableJpaRepositor + = * * * * * * * * * * * * * * * - konfigurasi: mlos.compliarce.active = true (mengaktifkan shared- lib service) + * * * * * * * * * * * * * * * {diaktifkan: true, cron: '0 * / 5 * * * * *?'}. Aman no- op sementara tabel timer kosong (belum ada penghitung senjata mesin).
· kamo-shared-library
* * * * * * * * * * * * * * * untuk DaemonService SLA menyapu
Flip setiap ARMED-but-past-deadverseActionTimer + RegXTimer ke EXPIRED (sinyal eskalasi tahan lama kompliance layar permukaan; acara emisi ke sebuah antrian compliance adalah sebuah follow-up). Kembalikan hitungan; timer kosong tabel adalah no- aman. 2 tes baru (12 Compliarces TimerService Uji hijau).
· kamo-shared-library
Surat izin kabel-sadar tugas ke DecisionSpine (Iris 2b-ii)
DecisionSpine.record () sekarang perangko Pramugari Task.AssignedDimberId dari Pramugari saat keputusan dialihkan membawa yurisdiksi pinjaman: - Permintaan Keputusan memperoleh opsional subjectStateCode (ISO- 3166-2) + actType (LicensedActType). Ketika keduanya hadir DAN kacang Pramugari ada (mlos.legal.enabled), tugas yang diarahkan ditugaskan ke pelayan berlisensi di (Demikianlah) perkara itu sebagaimana yang telah Kami ceritakan. - Pramugari disuntikkan sebagai Dokter OPTIONAL melalui ObjectProvider, jadi tulang belakang berjalan tanpa mlos.legal.enabled tidak terpengaruh. Back- compat 6 -arg konstruktor dipertahankan - 4 yang ada DecisionSpineTest lulus tidak berubah. 29 mlos tes hijau (DecisionSpine 5, Pramugari 5, LegalRegistry 9, Complience Timer 10). Code-saja - tidak ada perubahan skema, tidak ada jalankan KamoInivalizer.
· kamo-shared-library
License- sadar Pramugari (decision- spine slice 2b-ii)
Tambahkan lisensi-sadar pemilih steward (doc 03 3.2; doc 01 # 6 # 9) - memilih pelayan yang MLOS Pramugari valid hari ini untuk lisensi yang diperlukan tindakan tipe dalam keadaan peminjam, load- seimbang ke fewest terbuka Pramugari (tie - > anggota terendah); kosong ketika tidak mencakup yurisdiksi (pemanggil meningkat). - Pramugari Penandatangan @ Komponen (gated mlos.legal.enabled) melalui PrawardLicen+ Pramugari repos - membaca daftar gerbang MLOS, TIDAK terkunci - inti orgs. Lisensi (tidak ada deps modifikasi; menghindari Anggota - > (orgId, userId) - > Lisensi bergabung). - Pramugari .isValidOn (tanggal) - sumber tunggal kebenaran untuk date- berbasis lisensi (Status dihitung, tidak pernah disimpan); * * * * * * * * * * * * * * * Diperbaiki. - * * * * * * * * * * * * * * (kandidat kolam renang). 5 Pramugari SignerTest hijau; 9 LegalRegistry Uji masih hijau (total 14). Tidak ada skema ubah (tidak ada kamoInitializer run). Sub strategi - pertama - kabel ke DecisionSpine.record () ROUTE _ TO _ HUMAN untuk perangko Anggota adalah berikut-up.
· InitializerService
Register mlos.compliance repo pkg (Iris 2c-i)
Tambahkan * * * * * * * * * * * * ke @ Enable Jpapositories sehingga KamoInitializer Membuat mlos _ averse _ action _ timer + mlos _ regx _ timer. Hak indeks-dideklarasikan via @ Tabel - tidak ada ScheormaCleanupRunner DDL dibutuhkan.
· kamo-shared-library
ECOA + Reg X substrat (decision- spine slice 2c-i)
Paket * * * * * * * * * * * * * baru (doc 03 * * * * * * * *) - kamo- dimiliki compligence- timer analogues dari terkunci tidak memodifikasi. TridTimer. Sub-strategi pertama: - AdverseActionTimer (ECOA / Reg B 30 hari jam; pemberitahuan ECOA _ AA / COUNTEROFFER / INCOMPLETE _ NOA) + RegXTimer (afirmatif melayani tugas; dutyKind * * * * * * * * * * * * * * * Mutable * * * * * * * * * * * * * lembut loanFileId ref, + orgId untuk Isolasi penyewa. Indeks breach-menyapu (status, deadline _ at). - Compliarces TimerStatus enum + 2 repos dengan * * * * * * * * * * * - Complience TimerService @ Componen (gated mlos.compliance.enabled): senjata timer, enkode jumlah hari regulasi (30 / 36 / 120 / 5, terkunci oleh tes), AMAN membutuhkan tenggat waktu eksplisit, deteksi pelanggaran melalui jarum jam disuntikkan, mencari jejak. 10 Complience TimerServiceTest hijau (TDD). Indeks hak-dideklarasikan via @ Tabel. DaemonService SLA- eskalasi + BLOKED - > STALE ditangguhkan (panggilan pencari sapu). Selain potongan ini: Komplit (FK tidak dimodifikasi. TridTimer), RBPN / FCRA pemberitahuan, ChangedCircumstance.
· InitializerService
Register mlos.legal repo pkg (Iris 2b)
Tambahkan com.kamo.z.shared.mlos.legal ke @ EnableJpapostales sehingga KamoInitializer Membuat mlos _ lisented _ act _ registry / mlos _ ron _ elgibility / mlos _ steward _ license. Semua indeks diberi hak yang dikeluarkan via @ Tabel - tidak ada SchemaCleanupRunner DDL yang dibutuhkan.
· kamo-shared-library
State- sadar registry hukum substrat (decision- spine slice 2b)
Paket baru com.kamo.z.shared.mlos.legal - produser greenfield dari Input dinding mutlak Gerbang DecisionGate (doc 03: 3.2). Sub strategi-pertama, tidak ada adopter yet: - LicensedActRegistry (platform ref, per tindakan + state) - apakah ini diatur tindakan Secara hukum membutuhkan manusia berlisensi? Unik (act _ type, state _ code). - RonEligibility (platform ref, per negara) - ronAllowed / ipeneded + Komunisasi / signer / properti alignmen token aturan. Pramugari (tenant-scoped, keyed untuk memberId) - NMLS-by- lisensi negara. Tidak ada kolom status tersimpan: dihitung dari effectiveDate < = hari ini < = kadaluarsa (doc 13: 4.3 buku besar koreksi menimpa doc 03 's inline status field). - LegalRegistry @ Componen (gated mlos.legal.enabled, default off): fail-closed legallyRequire Human / Pramugari Pusat Untuk (date- berbasis) / ronAlloudIn. stateCode adalah string ISO-3166-2 (internasional-siap; USStateType adalah kode mati). Indeks hak-dideklarasikan via @ Tabel. 9 LegalRegistry Tes pass (TDD). Kompose DecisionGate dikirim dengan kontrak - tidak ada keputusan / steward edits. Letnan - sadar Tugas Pramugari ditangguhkan ke slice berikutnya.
· InitializerService
Register mlos.steward + mlos.orchestration repos; Slice-2a schema
- KamoInitializerApp @ EnableJpaRepositories: tambahkan akumulasi MLOS repo paket * * * * * * * * * * * * * * * tambah tanda tangan / pribadi _ pinjaman sehingga KamoInitializer memiliki skema mereka. - SchemaCleanupRunner: generic @ Enurated whitlist- CHECK menyapu; parsial / unik indeks + FK untuk * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Decision- spine slice-2a indeks sekarang Hak-dideklarasikan (@ Tabel) sehingga slice-2a blok adalah sebuah no- op komentar.
· kamo-shared-library
Desision- slice tulang belakang 2a - OrchestrasionState + Pramugari + DecisionSpine BLOCKED-state machine
OrchestrationState (per- loan-stage GREEN / BLOCKED / COMPLETE) + Pramugari (records pengecualian) + enums + DecisionSpin (@ ConditionalOnProperty mlos.spine.enabled): komposes DecisionGate yang dikirim + AiDecision working + transkational outbox dalam satu tx - ROUTTE _ TO _ HUMAN membuka sebuah tugas + BLOCKs stage; resolve () menulis keputusan HUMAN _ OVERRODE + unblocks. Entitas negara mutable (tidak ada @ PreUpdate). 4 / 4 Mockito tes hijau.

Alam semestamu menunggu.
Mulai gratis dalam beberapa menit. Tambahkan produk kapanpun Anda siap — tidak ada migrasi, tidak ada login baru.
Gratis selamanya — tidak diperlukan kartu kredit