Changelog
Ada kabar baru.
Setiap perbaikan pada platform, sebagai kapal.
· SecurityService
Borrower rate- lock status titik akhir (LOCKED / FLOATING)
GET / hipotek -apps / {uid} / rate- lock (party-gated) GNU 's SAFE lock postur pinjaman: LOCKED (rate + expiry) ketika sebuah komitmen yang aktif, tidak kadaluarsa ada, lain FLOATING. Buka untuk FLOATING - tidak pernah mengklaim kunci itu tidak dapat mengkonfirmasi. Backs doc 05 = 5.
· kamo-shared-library
Pencarian penguncian berdasarkan berkas pinjaman (bergabung melalui skenario)
* * * * * * * * * * * * * Pinjaman apos; s kunci melalui MlosLoanScenario.loanFileUid. Backs peminjam / pelayan 'Apakah ini pinjaman - terkunci? "Baca.
· SecurityService
Steward rate- kunci proksi - kunci-keputusan + komit sebuah hasil yang memenuhi syarat
MlosKapten MarketsController memperoleh keputusan POST / lock (pratilik) dan POST / lock (commit) via MlosKappalMarketsClient; komit adalah kunci pelayan HUMAN yang disengaja direkam sebagai * * * * * * * * * * * * dengan steward akting sebagai lockedByMberId - Tidak pernah palsu AI otomatis-kunci. Peminjam mesin - ack / AUS relay dinding sebagai jujur 4xx.
· SecurityService
Peminjam permukaan e--signature - link tanda asli nyata, tidak ada stub
GET * * * * * * * * * * * * * * Daftar pinjaman nyata KAMO _ NATIVE pengungkapan / penutupan amplop + penerima status via ESigService; POST * * * * * * * * * * * * * * * mints sebuah penandatanganan segar yang dapat dicapai deep- link (fail-closed: amplop harus milik dari penelepon 's). Backs Bangun kembali penutupan-meja yang mendalam-link ke pengalaman penandatanganan asli (doc 05 = 5).
· ESigService
Internal mint- sign- link primitif untuk pertama - partai penandatanganan permukaan
POST * * * * * * * * * * * * * * * * re- mint a receiver 's access token and RETURNS the signing deep- link (no invite- email round-trip), so the MLOS peminjam Portal can hand an authenticated signer a live Link. Reaktor mengirim ulang untuk berbagi jalur mint; penerima 'complete / decoderd' 409.
· SecurityService
WS3 vendor- urutan proksi - steward tempat / membaca perintah ketiga-partai
Tambahkan MlosVsupport Client (X-Internall -Auth MLOSVendorService / api / vendor) + mlos.vendor.url config, and app-scoped endpoints: GET / {uid} / vendor- order (operator view) and Perintah POST / {uid} / vendor- (staf - tempatkan penilaian / judul / HOI / VOE urutan, pilihan terikat ke persyaratan TIRD _ PARTY sehingga callback nya memuaskan itu). orgId + loanFileUid memecahkan server- sisi; status jujur jalur penjual ini disampaikan, tidak pernah dibuat.
· SecurityService
Borrower- aman saya kondisi proyeksi untuk kondisi portal tampilan
GET / {uid} / my-conditions (PARY- atau operator- gated) returna narrow BorrowerConditionView * * * * * * * * * * * * * * - never the internal aktor / catatan bidang steward LoanConditionDTO mengekspos. Portal join ini dengan persyaratan dokumen yang telah diambil (oleh loanConditionId) ke grup checklist dengan kondisi underwriting.
· SecurityService
Bagian peminjam mendapatkan titik akhir untuk hydrate menangkap UIs
Tambahkan listPerBorrower (recurreView, party-gated) + GET daftar titik akhir untuk * * * * * * * * * * * * * * * mengembalikan {baris: [...]}. Ini belakang bagian penangkapan URLA baru di KamoMLOS.
· kamo-shared-library
Bagian peminjam metode baca untuk lain-pendapatan / biaya / REO / hadiah penangkapan
Bagian yang paling peminjam pengulangan ditulis - saja; tambahkan proyeksi baca Jadi peminjam menangkap UIs dapat hydrate baris yang ada melalui titik akhir.
· SecurityService
Applasi redunit- vendor abstraksi + real reseller
Produksi tri- gabungan jalur kredit. Abstraksi sekarang melewati FULL 9-digit SSN (didekripsi pada waktu order dari peminjam apos; s catatan terenkripsi) + co- peminjam untuk tarik JOINT - sebelumnya hanya SynLast4 lulus, yang tidak ada biro terima. Core protokol MIMO-2.4 baru (mismo /): CreditVsupport Profile + CreditAutschome * * * * * * * * * * * * * * * MismoCreditRequestBuilder (individual + joint, full SSN, MeridianLink inline- login block), CreditResponseParser (toleran skor parsing seluruh atribut urutan + biro normalisasi + vendor- error deteksi). AbstractMismoCreditAdapter holding the shared order flow build akhiri POST by bounded timeout, config- driven with pertenant overrides * * * * * * * * * * * * * * dari konfigurasi Json). Adaptor bernama untuk pencitraan hipotek paling umum, setiap pengkodean publik protokol (skema auth) dengan creds akun sebagai konfigurasi: MeridianLink (login inline), Xactus (pembawa), Factual Data / CBInnovis / Kredit Plus (basic) + the generic Nona Catch - semua. CreditOrderService mendekripsi SSN secara penuh melalui SecretCipher, memecahkan co-peminjam, dan perintah bersama ketika hadir. Kegagalan jujur saja, tidak pernah skor dibuat-buat. 12 tes hijau.
· SecurityService
Peminjam jelas-to-close proxy
GET * * * * * * * * * * * * - party- gated; menyelesaikan loanFileUid dari aplikasi dan relays MLOSDocService 's clear-to-close kesiapan.
· EmailService
Terima X- * * * -Token untuk klien mobile dalam OTKPreOtorisasi
pertab sesi id sebagai X- * * * -Token (pencocokan * * * * * * * * * * * * * Ketika ada (dan tidak ada X-OTK), selesaikan sesi ini secara diam-diam dan atur atribut permintaan sama; token yang tidak valid set apa-apa, sehingga controller masih Ditolak dengan 401.
· APIService
Route / api / email + / api / support melalui host api
(EmailService) dan Dukungan (MediService, upstream sama seperti / api / media) unsounded £404. Tambahkan baik ke depan dan memperbaiki email. Service.url dari sebuah localhost default ke layanan cluster. Maju () hanya melewati sesi pemanggil tajuk (X- * * -Token) - tidak ada X-Internall-Auth disuntikkan - jadi titik akhir internal tetap terlindungi dan hanya sesion- fungsionalitas bergerbang yang terbuka.
· SecurityService
Pramugari-dipicu agency- AUS menjalankan proksi
Tambahkan POST * * * * * * * * * * * * * * * * - steward "Jalankan AUS" memicu konsol baca-saja tidak ada. Gated pada operator (GD); organisasi dan anggota akting SERVER- STAMPED dari sesi (tidak pernah terpercaya dari klien), dan MLOSUnderService re-validasi pinjaman milik org yang (gagal-tertutup cross-org). Fakta adalah server-turunan hilir (DTI via LoanQualifyingRatioService, struktural via Skenario FactDeriver); Penelepon mungkin masih melewati fico / fresh-kredit attestation. Tidak ada yang memicu hidup AUS menjalankan sebelum ini - menjalankan titik akhir memiliki nol penelepon.
· KlusterServices
Self-hosted expo-updates header untuk Mobile Copilot OTA
expo- proto-versi: 1 + expo-sfv- versi: 0 header respon bahwa expo- update klien membutuhkan dan statis MinIO tidak dapat memancarkan. Path lebih panjang awalan menang atas rute umum / publik / tema.
· kamo-shared-library
Vsupport Order + VsupporOrderEvent entities for WS3 vendor- order spine
The greenfield 3rd-party order -of-record * * * * * * * * * * * * * * * SCRA). Vsupport Order = partial-WORM asinc order (Closure Artifact idiom: opaque vendorKey / externalRef, identitas beku, hanya status / hasil muka; pesan re- adalah baris baru). VsupporOrderEvent = full- WORM tambahkan -hanya buku besar (diaiom AusRun: satu baris immutable per transisi / callback, externalId dedup, payload for replay). Vsupport Kategori + = * * * * * * * * * * * * * * * (tidak Sambungan Vendor peer - provenance tinggal di sini, tidak pernah di kunci Connection). Soft- FK-by-id, denormalized org / loanFileUid. KI @ EntityScan (com.kamo) creation tabel; layanan tetap ddl- auto: tidak ada.
· SecurityService
Stamp dokumen sendiri-tanggal ke jam kesegaran (aktivasi WS1)
Setelah pengambilan visi, menyebarkan tanggal efektif dokumen sendiri (asset.statement PeriodEnd untuk bank / broker / pensiun, mempekerjakan .payPeriodEnd untuk pembayaran) kepada Anggota Dokument.Segar. Ini membuat MLOS Mewarisi -satisfifier usia dari pernyataan benar / bayar tanggal daripada tanggal Upload waktu, sehingga period- cakupan mesin akhirnya mendapatkan identitas periode nyata. Usaha terbaik, idempoten, tidak pernah istirahat ekstraksi, tidak ada skema berubah ( kesegaran _ sebagai kolom telah ada).
· kamo-shared-library
MortgageAmortisasi - bulanan P & I dari istilah pinjaman (dukungan WS6)
Satu komponen PITI tidak disimpan pada pinjaman. Standar fullly- amortizing rumus P bukan-positif principal / term fail-aman ke 0.00 (jangan pernah melempar / membagi dengan nol). Feed PitiDtiCalculator P & I masukan dari * * * * * * * * * * * * * *
· kamo-shared-library
Evaluasi Pembaca Penutupan - tingkat loan-jelas-untuk-menutup gerbang
Menimbulkan kewajiban pinjaman hingga pertanyaan pendanaan jeda akhir analisis dinaikkan ("layanan pinjaman untuk pendanaan"): clear-to-close iff nol kemajuan -blocking (prior- to-close / fund) kondisi tetap terbuka; open bukan-blocking (prior-to -doc / post-close) kondisi tidak menyimpan pendanaan. Menimbulkan deduped blockingKategori "apa yang tersisa sebelum Anda dapat menutup" daftar. Murni / tanpa status atas caller-mapped Proyeksi ConditionState, cermin KondionClearlibiliResolver - kapal aturan, bukan kabel tonggak.
· kamo-shared-library
QualifyingRatioEngine - yang direproduksi dti keystone (WS6)
Kompose empat core (pendapatan, kewajiban, PITI / DTI, cadangan) menjadi SATU QualifyingSnapshot: kualifikasi pendapatan, didamaikan utang bulanan, dirakit PITIA, depan / belakang DTI, cadangan yang memenuhi syarat, bulan cadangan. Ini adalah single deterministik derivation yang harus menjadi AUS 'dti' fakta tunggal produser - hari ini fakta bahwa pinjaman tiba - diketik atau kosong dan tidak ada yang mengambil itu. Murni / tanpa status, tidak ada I / O, tidak ada skema; dipanggil oleh apa-apa belum (aman untuk kawat ke Skenario FactDeriver berikutnya). Bukti yang sama selalu bereproduksi snapshot yang sama.
· kamo-shared-library
ReservesKalkulator - eligible-aset potongan rambut SLPIIA bulan (WS6)
Bergenerasi bulan cadangan dari aset sebenarnya dengan standar agen potongan rambut - deposito cair 100%, broker 70%, pensiun pribadi 60%, hadiah / meminjam dikeluarkan - dibagi oleh PITIA bulanan. Selesaikan suite kualifikasi murni (pendapatan + kewajiban + PITI / DTI + cadangan) sebuah gerbang minimum overlay dapat aktif sosok nyata bukan peminjam -diketik satu. Zero PITIIA tidak terdefinisi. Tidak skema, tidak ada kabel.
· kamo-shared-library
PitiDtiKalkulator - perakitan PITI + front / back DTI (WS6)
Inti rasio murni menyelesaikan trio DTI dengan Liability Reconciler + envenage core: PITIIA = P & I + pajak + HOI + HOA + MI + flood; front = PIIA / pendapatan; kembali = (PIIA + utang) / pendapatan, sebagai persentase. Tak ada pendapatan. tidak terdefinisi (tidak divideo -by- nol). Ini adalah deterministik derivasi yang harus menjadi AUS 'dti' fakta produser tunggal. Tidak ada skema, tidak ada kabel.
· kamo-shared-library
QualifyingIncomeKallator - base + variabel core (WS5)
Inti pendapatan murni / deterministik: basis asin = lowest- konservatif bukti tersedia (paystub / W-2 / VOE); variabel = 2-yr rata-rata dengan penjaga pendapatan menurun (gunakan laju lari bawah saat ini ketika trending turun); Sewa pada 75% dari kotor. Setiap baris mengutip aturan; sama menginput bita sama total (replay). Input audit ke sebuah DTI nyata, menggantikan dedupe- oleh-majikan. Operates pada caller-mapped proyeksi - tidak ada skema, tidak ada kabel, tidak ada perilaku Ganti. SE cash- flow / gross-up tanah di atas.
· kamo-shared-library
Kewajiban Reconciler - lembaga pembayaran - aturan penyertaan (inti WS6)
Komputer murni / tanpa status mengubah setiap kewajiban menjadi pembayaran bulanan yang dihitung terhadap DTI, dengan alasan yang dikutip: diabaikan / paid- off dikecualikan, Sewa selalu termasuk, angsuran keluar £10 bulan, revolving - tanpa - Pembayaran sebesar 5%, dinyatakan sebaliknya. Dasar yang dapat dipertahankan dari back- end DTI (mengganti 'dti' yang disuntikkan). Operates pada caller-mapped proyeksi dari Kewajiban terkunci - tidak ada skema, tidak ada kabel, tidak ada perilaku Ganti. Deferred-student- pinjaman / kontingen tanah perawatan dengan Flag Liability aditif.
· kamo-shared-library
Spek kuantitas berjangka panjang untuk penerus delta
Requirment Quantity memperoleh sebuah daftar perioda eksplisit (+ deltaJson pembangun); ketika hadir itu IS set yang diperlukan, sehingga penerus dapat diskoped ke "kirim saja August". PeriodCoverageEvaluasi menghormatinya dan mengekspos TehredKeys (). Murni / patuh.
· kamo-shared-library
sebagai sumber kunci tunggal
Tambahkan periodKeyFor (tanggal) sehingga path write- (stamping memuaskan) dan cakupan perioda kunci evaluator; evaluasi sekarang mendelegasikan untuk itu. Murni / aditif, tidak ada perubahan perilaku.
· kamo-shared-library
Periode cakupan primitif untuk period- sadar koleksi dokumen
Pondasi murni dari koleksi period- sadar (doc 06 = 4) - potongan pertama dari bank-pernyataan "mengumpulkan hanya bulan-bulan saya belum" memperbaiki. Tidak ada perubahan perilaku, tidak ada konsumen kabel. - Permintaan Quitity: spec yang tidak dapat diubah... {count, periodMonths, cadence, perAkun, perParty} parsed dari kuantitas _ json; gagal membuka ke SINGLE sehingga persyaratan yang tidak ditentukan terus perilaku hari ini-dokumen keseluruhan. - PeriodCoverageEvaluasi: pure @ Componen (mirror ConditionClearablityResolver) komputasi dibutuhkan / tertutup / diketahui perioda + berasal dari spesifikasi, kepuasan diterima, dan tanggal jangkar - yang "1 dari 2, hilang 2026-06" logika, dengan keluar basi bulan -of -window diabaikan (dibawa ke depan, tidak re-asking). - Requirment Complefier: empat kolom tambahan NULLABLE (period _ end, efektif _ date, period _ key, account _ key) + indeks; WORM @ PreUpdate diawetkan. - PARTIally _ RECEIVED (sudah di enum, terbuka () = true) hanya menjadi terjangkau. Kolom berlaku secara teliti melalui KamoInitializer (dipadukan dengan M1 write- path run); services stay ddl-auto: none; no shared -lib version bump.
· kamo-marketing
Ganti percakapan forked dengan host < kamo-chat > embed; hapus widget proksi warisan
Tukar percakapan antar-mata dukungan AI / live (PublicChatWidget + AiChatPanel + LiveSupportPanel + the / api / * * proxy route server) untuk hosted, self-theming < kamo-chat > elemen gubahan yang disajikan dari * * * * * * * * * * * * * * * Pemasaran org Kunci situs WebChatIntegrasi dibaca sisi server dalam tata letak lokal * * * * * * * * * * * * paksa -dinamis rute sehingga menyelesaikan di waktu permintaan, tidak dipanggang menjadi sebuah membangun statis) dan dilewatkan ke baru Komponen klien KamoChamphed, yang menyuntikkan skrip dan kait widget < kamo-chat site-key = "... >. Drops @ stomp / stopping js dan sockjs- client, which hanya digunakan oleh LiveSupportPanel yang dihapus.
· kamo-internal
Tambahkan install- QR (self-hosted APK) ke tab Setup Mobile App
Pasang / Sinyal-in toggle: "Pasang" menampilkan QR ke APK yang ditandatangani telepon baru dapat men-download + exptabit; "Masuk" menjaga aliran sandi-gated OTK.
· kamo-internal
Preview langsung Pemasyarakatan Gabungan Web
Tambahkan dialog Customize ke tab Integrasi Percakapan Web: suatu bentuk penyunting (warna, salinan, tata letak, perilaku, permintaan AI) di kiri dan instan, bukan interaktif mock dari widget di kanan, keduanya didorong off the in-memory config yang sama sehingga setiap editing mencerminkan segera. - * * * * * * * * * * * * * * TS mirror of the widget 's canonical DEFAULT _ DESIGN _ JSON (kamo- shared-library WebChatDefaultConfig.java) + deep- merge / parse pembantu sehingga sebuah departed Config tersimpan (null / parsial / parsial / Salah bentuk) selalu menyelesaikan ke fullly- population, config yang diedit. - * * * * * * * * * * * * * * sendiri- berisi mop styled (peluncur + panel terbuka), tidak ada widget remote bundel terlibat. - * * * * * * * * * * * * * * SettingTextField diperoleh opsional multi baris / baris props (additive, backward kompatibel) untuk ruas welcome- message / system-prompt. Simpan PUTs integrasi 's designature Config + aiEnabled / humanAktifkan / aiSystemPrompt melalui webChatIntegrationsApi.update, dengan hex-color dan positif -integer validasi sebelum permintaan.

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