Changelog
Ada kabar baru.
Setiap perbaikan pada platform, sebagai kapal.
· AIService
Sales-agen CRUD, template hipotek, dan agenda-didorong chat prompt
- AiSalesAgagentController (/ api / ai / salesman): org- scoped CRUD + GET / templates - SalesAgent TemplateRegistry: built-in starter templat, dimulai dengan hipotek - peminjam asisten (compligence-aware: tidak ada tanda kutip rate binding, tidak ada Janji persetujuan, pembelot kepada petugas pinjaman berlisensi, meminta status subjek) - PublicAiChatService: SalesAgent yang ditugaskan 's trainingContext menjadi atas Tingkat air terjun prompt (agen - > integrasi prompt - > org - > generik)
· kamo-shared-library
Penugasan agen saleAgent + per-channel
Organik - dapat diatur agen penjualan AI: agen bernama untuk industri penjualan, diprogram dengan konteks pelatihan penulis org (dari template atau dengan tangan), dapat diterima untuk mengarahkan AI saluran itu. Kamo melayani semua industri - hipotek hanya satu template. - Entitas SalesAgent (dao / beans / ai) + SalesAgagence Repositori + SalesAgagenDTO - WebChatIntegration.sales AgentId (nulable soft link) + DTO field
· SecurityService
Otomatis-penyediaan platform-dikelola MLOS percakapan + melayani kunci situs dengan host
- ManagedChatIntegrationService: mint malas platform org -dikelola specific _ AGEN WebChatIntegrasi pada akses pertama. KamomMLOS adalah partai- pertama: org diselesaikan oleh host, kunci situs publik adalah platform-dimiliki dan tidak pernah dikelola oleh org admin. - PortalChatConfigcontroller GET * * * * * * * * * * * * * * * tuntaskan org dengan host, get -or -create integrasi yang dikelola, kembalikan kunci situs publik untuk < kamo-chat >. (The rutin - token mint titik akhir + chatRoutForGuid + Loan Officer chat-routing event landed in 67974fd via an interleaved push; this adds the config / provisioning side dan membutuhkan shared -lib 6b161b5.)
· MediaService
Periksa tanda routing, tahan leadUid, atur kembali percakapan pada langkah utama
- Create Supportment takes a signed routingToken (not preferred Agentters MmberId); Diverifikasi via Chatting Token Codec + cluster proceal.mest.secret, enforce token.orgId = = org, rute hanya ketika integration.assignment Mode = = SPECIFIC _ AGEN. Potongan keras dari browser telanjang-disediakan jalur anggota-id. - astin leadUid on SupportTicket + PublicchChatVisitor (link timbal yang dapat dipertahankan) - Chatting RoutingConsumer: pada secuity.chat.routin. >, menugaskan kembali peminjam yang terbuka tiket oleh leadUid ke petugas baru (reuses IptoPreferreAgent) - lo- kehadiran org- scoped: cross-org / anggota tidak dikenal - > online: salah (tidak ada kebocoran) - WebChatIntegrasi CRUD / bootstrap membawa AdvanmentMode; toko publicSetKey untuk Specific _ AGEN integrations
· kamo-shared-library
Tertanda tanda tanda tanda halaman-routing token + lead- penempatan ulang penyebaran
Foundation untuk membuat widget public -chat dapat digunakan ulang menangani KamoMLOS Peminjam - > loan- petugas varian aman, dan untuk menyebarkan penugasan timbal ke dalam percakapan terbuka. - WebChateAssignment Mode (TOPIC _ QUEUE baku / SpeciFIC _ AGEN); WebChatintegration memperoleh Mode + publicSetKey (platform-dikelola kunci untuk hosts-solved MLOS) - ChattingTokenCodec: token HMAC yang singkat selama cluster rahasia membuktikan target agen; menggantikan browser- yang diberikan preferred AgentAgentId - SupportTicket.leadUid + PubliccChatsitor.leadUid (link runner-lead) + * * * * * * * * * * * * * * * - * * * * * * * * * * * * * * - > secuity.chat.routin. {orgId}, dikeluarkan dari lead reassign (LeadService.updateLead) dan pool re- claim (accetNextLead) - * * * * * * * * * * * * * * * * * mengelola-integrasi finder
· SecurityService
Tampilkan kemampuan visi sehingga konsol dapat menjelaskan penyedia yang hilang
Lembar tingkat PDF dibaca oleh penyedia visi yang dikonfigurasi org. Ketika tidak ada konfigurasi panggilan AI gagal dengan cara yang sama kesalahan model, sehingga konsol tidak punya cara untuk membedakan "tidak ada yang diatur untuk membaca ini" dari "lembar kosong". GET * * * * * * * * * * * * * * proxy AIService 's capability probe di bawah gerbang steward yang ada, org server-dicap, sehingga UI dapat menyebutkan aktual masalah dan titik di mana untuk memperbaikinya.
· AIService
Inline gambar visi + tier fallback yang lebih suka lebih kuat daripada lebih lemah
Dua batas yang dibuat org- dikonfigurasi visi tidak dapat digunakan untuk seluruh kelas penelepon. Visi adalah URL-HANYA. Setiap penelepon harus berdiri di depan publik, menyediakan layanan yang dapat dilakukan oleh para murid. infrastruktur - sebuah penandatangan, sebuah layanan tidak dikonfirmasi titik akhir, sebuah ingress. Sebuah ClusterIP layanan tidak dapat menggunakan visi sama sekali tidak peduli apa org telah dikonfigurasi. Adapter sekarang strict - sebuah data yang salah bentuk: URI kembali ke penanganan URL, sehingga sebuah URL biasa dapat tidak pernah berubah menjadi bagian dalam yang rusak. Penelepon dengan URL publik yang ditandatangani adalah tidak terpengaruh. Pilihan ban hanya dibedakan "cocok persis" dari "segala sesuatu", sehingga LIGHT atau penyedia untiered bisa mengunggulkan sebuah HEVY terkonfigurasi murni pada PriorityOrder - sebuah MEDIUM permintaan bisa diam-diam membaca dokumen dengan model terlalu lemah untuk itu. Ordering sekarang tingkat yang diminta - > tiers lebih kuat (paling kuat pertama) - > untiered - > tiers lemah. underserving adalah kegagalan yang menghasilkan jawaban salah, jadi over- melayani lebih disukai untuk itu. Tier tetap preferensi, tidak pernah filter, dan PriorityOrder masih istirahat hubungan. Dibagikan oleh visi dan pilihan teks, yang telah menduplikasi perbandingan lama. Juga menambahkan GET * * * * * * * * * * * * * * * * diselesaikan melalui routing nyata path: MlosAiClient runtuh setiap kegagalan kedalam sebuah Opsional kosong, jadi "tidak ada penyedia dikonfigurasi "dinyatakan tidak dapat dibedakan dari" model salah "dan tidak ada yang dapat memberitahu anggota yang. Ini adalah apa yang memungkinkan UI berkata begitu.
· kamo-internal
Pecah Perangkat ke dalam "Sistem Telepon" Perangkat "+" Perangkat Mobile "
Tab Perangkat sekarang memiliki dua sub- tab. Tabel perangkat keras PBX / softphone yang ada bergerak di bawah tab "Sistem Telepon) Perangkat" tidak berubah; tab "Perangkat Mobile" yang baru Perangkat Mobile memungkinkan set admin: - ORGANIZATION DEFAULT kebijakan (perangkat pribadi diperbolehkan vs company- dikelola dibutuhkan), disimpan melalui daerah org yang ada, dan - a per- MEMBER override (atau "use org default"), dengan hasil efektif kebijakan yang ditampilkan per anggota, bersama perangkat setiap anggota telah terdaftar (nama, platform, terakhir digunakan, IP terakhir). Seorang anggota dari PERUSAHAAN _ MANAGED _ REQUIRED hanya dapat mencapai org dari company- dikelola (Android Device Owner terdaftar) telepon - aplikasi menyembunyikan org sepenuhnya pada sebarang perangkat lain; perangkat dikelola juga update diam-diam dan tetap berjalan. Pemilihan sub- menggunakan sendiri '? deviceView =' param sehingga tidak pernah bertabrakan dengan SettingsView '? tab ='. Dibacked oleh yang baru * * * * * * * * * * * * * * * * * * titik akhir. Catatan: label baru adalah string literal - katalog pesan next-intl tinggal di kamus terjemahan terpisah, sehingga kunci harus ditambahkan ada dalam berikut-up.
· SecurityService
Titik akhir organik-admin bagi perangkat mobile device + yang terdaftar
Backs yang baru "Mobile Devices" sub- tab di bawah Pengaturan disajikan: Features Telepon Aba Perangkat (saudara "Sistem Telepon) Perangkat" tetap pada VOIPService dan sampul - GET * * * * * * * * * * * * * * * * org baku kebijakan + satu baris per anggota ACTIVE: override mereka, efektif kebijakan, dan perangkat yang saat ini mereka daftarkan (bukan-dicabut UserDeviceTokens: nama, platform, terakhir digunakan, IP terakhir, kadaluarsa). - Patch * * * * * * * * * * * * * * * * * * set atau membersihkan override peranggota; null mewarisi baku org. Gated on manage _ VOIP _ SETTINGS (hak yang sudah membuka pengaturan Telepon halaman) plus same-org, atau mode dewa. Org- lebar default itu sendiri ditulis melalui patch field PUT / api / security / org / {id} yang ada.
· kamo-internal
Panel kemacetan menerima spreadsheet, tidak hanya CSV
Extrator sekarang membaca .xlsx / .xls dan sniffs format dari file itu sendiri, sehingga picker tidak lagi membatasi ke CSV dan salinan mengatakan jelas apa yang dapat dibaca - termasuk bahwa PDF tidak, daripada membiarkan steward upload satu dan mendapatkan kegagalan membingungkan.
· kamo-internal
Tab Magang Steward + rute proksi Catalog / Identifier yang hilang
Laju-lembar kemacetan ada akhir dari backend dan tidak ada yang bisa dihubungi. Ini menambahkan satu permukaan yang berjalan seluruh rantai: meng-upload lembar investor - > memakannya - > melihat persis apa yang ekstraktor baca, sel demi sel dengan provensinya - > menyetujui / menolak - > mempublikasikan baris yang disetujui sebagai versi rate-sheet yang layak. Panel ini jujur tentang apa yang akan dilakukannya: itu pratilik berapa baris yang disetujui memiliki KEDUA tingkat dan harga (hanya mereka mempublikasikan) dan mengatakan jelas bahwa setengah baris adalah Melewatkan daripada menebak. Tidak ada mencapai katalog sebelum persetujuan. Juga menambahkan proksi pengidentifikasi / api / keamanan / mlos / katalog dan / api / keamanan / mlos / identifier Rute. Kedua panel dikirim tanpa satu, sehingga setiap panggilan dari mereka 404d di Berikutnya lapisan dan tidak pernah mencapai SecurityService sama sekali.
· kamo-shared-library
CATALOG _ SOURCE tipe assoc untuk dokumen sumber katalog MLOS
Seprai investasi / LLPA + eligibilitas matriks / kebijakan kunci perlu suatu tempat untuk live: ekstrak terdalam dari gumpalan tersebut, dan rate- lembar titik versi yang diterbitkan kembali sebagai provenance. Tidak ada tipe assoc yang ada cocok - MY _ DOCS adalah area pribadi dan ember SYSTEM _ WIDE adalah e- contoh tanda tangan. CATALOG _ SOURCE adalah org- scoped dan sengaja TIDAK dihapus atau overwritable: a live nilai mengutip berkas ini, jadi mengganti atau menghapusnya akan diam-diam menulis ulang bukti di balik versi yang diterbitkan. Ditambahkan terakhir, sehingga tidak ada pergeseran koordinat yang ada.
· SecurityService
Gateway untuk review kandidat + rate- lembar promosi
Expose dua katalog baru promosi menulis ke konsol steward di bawah yang ada MLOS steward gate, dengan organisasi pelayan - dicap dari sesi operator: POST * * * * * * * * * * * * * * * * POST * * * * * * * * * * * * * * * *
· kamo-shared-library
Kebijakan MobileDevice- org default + per-member override
personal phone atau must be on a company- ailed (Android Device Owner terdaftar) perangkat: - MobileDevicePolicy enum: - Organisasi .mobileDevicePolicy - baku org- lebar (TIDAK NULL, default ke PERSONAL _ ALLOWED sehingga organ yang ada tidak terpengaruh). - Dimber.mobileDevicePolicy - nulable anggota override; NULL mewarisi org default, yaitu bagaimana kebijakan dikonfigurasi "per anggota". Nilai EFFECTIVE per keanggotaan adalah apa yang digunakan oleh aplikasi mobile: sebuah org yang mana kebijakan efektif adalah PERUSAHAAN _ MANAGED _ REQUIRED tersembunyi dari org switcher pada perangkat yang tidak terdaftar sebagai company- dikelola. Kolom diterapkan melalui KamoInitializer.
· SecurityService
Gateway steward untuk gangguan pencernaan (area masukan + staging tidak dapat dicapai)
MLOSIntraffic Layanan tidak memiliki gerbang kehadiran, sehingga tidak ada penyewa bisa tangan lembar tarif ke ekstraktor dan kandidat tahap tidak memiliki pembaca pada setiap permukaan terjangkau. Tambahkan * * * * * * * * * * * * * pada / api / keamanan / mlos / intraffic: multipart rate- sheet infest relay ditambah dua pementasan membaca (sebuah sumber dokumen kandidat, riwayat pemasukan investor). organisasi Id adalah SERVER- STAMPED dari operator sesi pada setiap panggilan, sehingga pelayan hanya pernah menyentuh penyewa mereka sendiri area pementasan. Read timeout adalah 120 - parse adalah pekerjaan CPU, bukan lookup a. imgDatId tetap dibutuhkan: itu adalah kontent- diatasi provenance anchor dan intaking-dedup kunci, sehingga blob disimpan melalui pipa pencitraan pertama.
· kamo-internal
Tab Pengenal Steward - meresolf sebuah nomor eksternal ke pinjaman
Tab Pengenal Baru dalam konsol pengurus hipotek: paste sebuah nomor eksternal (nomor pinjaman, MERS MIN, Berkas kasus DU / LP / GUS, e-sign amplop...) dan menyelesaikannya kembali ke pinjaman - gerbang yang sama inbound vendor router webhook menggunakan, sehingga pengelola dapat mengejar callback yang tidak dialihkan - ditambah buku identitas pinjaman dan Lifecycle view. Tutup: tidak diketahui, ambigu, atau nomor penyewa lain semua dibaca UNREFIVED. Kabel baru / api / security / mlos / identifier proxy. Plain- string label (i18n follow- up).
· SecurityService
Gateway identifier - steward dapat menyelesaikan sebuah nomor eksternal ke pinjaman nya
MLOSIdendfierService tidak memiliki gerbang, sehingga pesawat identifier diketik (gerbang routing setiap inbound vendor / agency / AUS / e- sign callback menggunakan) tidak dapat dihubungi dari konsol. MlosidenfierClient + Baru Pengontrol MlosID * * * * * * * * * * * * * * * menyelesaikan sebuah nomor eksternal, dan membaca pinjaman Pengenal buku besar + kejadian lifecycle. Isolasi tenant: peperpinjaman membaca lulus operator sendiri org sebagai doc-11 # 6,5 cross-org penjaga; / Tegun tidak membawa org histream, sehingga resolusi mendarat di ANLAIN adalah dilaporkan sebagai UNREFIVED di sini daripada bocor bahwa jumlah ada. Tuhan yang memenuhi syarat menjaga gerbang. konfigurasi: mlos.identifier.url.
· kamo-shared-library
Value- keyed AUS case-file + e- tandai pencari amplop untuk identifier owner-delegasi
Melengkapi pencarian kolom pemilik pesawat pengidentifikasi MLOS perlu rute menuju callback: * * * * * * * * * * * * * * * (DU / LP / GUS run handle) dan * * * * * * * * * * * * * * * Kedua org- agnostic dan LIST- kembali sehingga re- run runtuh dan tabrakan silang ambigu-pinjaman gagal ditutup daripada mis- routing. Pencari alamat @ Query; tidak ada skema.
· kamo-shared-library
Pencari identitas untuk identifikasi pemilik-delegasi
Pesawat pengidentifikasi MLOS menyelesaikan sebuah inbound vendor / agency callback ke sebuah pinjaman; untuk tipe OWNED _ ELSEWHERE nilai otoritatif hidup pada kolom OWNER itu. Tambahkan penelusuran nilai-keyed (org-agnostic) yang mengembalikan LIST (sehingga tabrakan ambigu-org gagal ditutup daripada salah-routing): * * * * * * * * * * * * * * * dan... / FindByLenderLoanNumber / FindByMersMin. Pencari alamat @ Query pada repos yang tidak dimodifikasi; tidak ada skema berubah.
· kamo-shared-library
KONDISI _ ADDED / KONDISI _ CLEARED contoh email kanonikal
Peminjam - menghadap setengah dari loop kondisi: dua template checklist generik untuk kondisi baru Pengumuman konsumen. Ditambahkan ke CANONICAL _ KEYS dengan sumber daya json + html mereka; EmailService 's seedForOrg diri-menyembuhkan mereka ke org apapun pada pengiriman pertama (idempoten), dan auto- injects orgName / logoUrl. Salin adalah translate-action kondisi spesifik; portal adalah sumber kebenaran.
· SecurityService
Publik pra-auth status endpoint untuk pil login / register
GET * * * * * * * * * * * * * * memecahkan org dengan nama host (alias- fallback) dan laporkan apakah akunnya dalam sebuah aktif pengadilan asli, menggunakan kembali * * * * * * * * * * * * * * * * * (sekarang publik) Jadi pil itu cocok dengan spanduk pengadilan in- app. Gagal ditutup ke inTrial: salah untuk domain yang tidak diketahui.
· kamo-register
Tampilkan TRIAL USE HANYA pil di atas bubuk-oleh untuk orgs percobaan
Refactions poweredByKamo kedalam tumpukan kolom tetap dan kepemilikan diri / api / trial- status / {host} (proxy ke SecurityService public trial-status titik akhir), merender pil amber di atas bubuk-oleh pil ketika org 's akun dalam percobaan lokal aktif. Gagal terbuka untuk tersembunyi.
· kamo-login
Tampilkan TRIAL USE HANYA pil di atas bubuk-oleh untuk orgs percobaan
Self -fetches / api / trial-status (proxy ke SecurityService public trial-status titik akhir, diselesaikan oleh host login) dan membuat pil amber di atas Powred- oleh pil ketika akun org berada dalam percobaan asli aktif. Gagal terbuka untuk tersembunyi.
· kamo-internal
Tilik dokumen pihak ketiga (pinjaman) dalam tinjauan persyaratan pramugari
Seorang pelayan meninjau persyaratan TIGA _ PARTY (penilai / judul / banjir) sekarang dapat membuka dokumen memuaskan. Rute biner baru Next.js streets peper- intend adtenz 'd titik akhir; imaginingApi.viewLoanDocument blob-fetches + dibuka inline / unduhan; AppRequirment View permukaan (already-projected) memuaskan ImgId + loanFileUid; DokumentsSection menampilkan tombol Tilikan pada baris ketiga-partai dengan kepuasan. Backs SecurityService baru per- pinjaman LOAN- doc isi titik akhir. Plain-string label (i18n follow-up).
· SecurityService
Per- pinjaman ketiga pihak (LOAN) penampil dokumen - penilaian / judul / banjir
Menyelesaikan jalur byte doc-review dimulai dengan penampil lemari besi. LOAN- koleksi imgs (penilaian / judul / banjir) ditolak oleh pencitraan titik akhir generik (kuncian PII pinjaman), sehingga seorang pelayan meninjau pihak ketiga kepuasan tidak bisa membukanya. GET Baru * * * * * * * * * * * * Operator LOS (LOS _ VIEW _ PIPELINE) OR seorang anggota yang merupakan partai untuk aplikasi pinjaman ini, dan membingungkan - deputi Dinyatakan oleh LoanDocLoader 's Asifent ObjectId = = loanFileUid check (sebuah img LOAN membawa nya memiliki pinjaman dalam Asssy ObjectId). Bita stream in- proses dari ember imagining- pinjaman, sehingga loan-file gerbang IS kompartemen (Bukan izin kongres) ♪ download = true attaches; default inline. Menutup sisa LOAN- side dari * * * * * * * * * * * * * * *
· kamo-internal
Lihat / unduh dokumen lemari besi pada tab dokumen akun
Mengubah kondisi / docs panggung menjadi review loop nyata. Dokumen proksi rute sekarang melewati bukan-JSON (binari) upstream respon daripada teks () -decoding mereka; memberDocsApi.viewDocument fetches per-party / content bytes dengan * * * session dan membuka inline blob (atau download); AccountDocumentsTab mendapat aksi Tampilan + Unduh per dokumen lemari besi. Backs baru Layanan SecurityService-partai isi endpoint. Plain- string label (i18n follow- up).
· SecurityService
Penata dokumen per-party brangkas - byte ditulis -only, now review-able
Dokumen-dokumen lemari besi terunggah (bayar stub / Gov ID / bank) ditulis - hanya: pencitraan byte generik titik akhir menolak ACCOUNT _ MEMBER _ VAULT (per- pihak PII lockdown), sehingga pelayan diterima / ditolak persyaratan tanpa pernah membuka doc, dan peminjam tidak bisa melihat kembali pengiriman. byte endpoint baru GET * * * * * * * * * * * * * * * cermin ekstrak guard: revenrePartyAccess (memiliki anggota OR sebuah LOS kanan) + sebuah dokumentasi -to -this-party confused -deputy cek, kemudian melayani bytes IN-PROCESS melalui VaultDocDoader (MiniO) - sehingga gerbang perparty ADALAH kompartemen PII, bukan tingkat izin CONFIDENTIAL (yang akan gagal bahkan untuk pemilik). ♪ download = true attaches; default inline. Menutup sisa dicatat dalam * * * * * * * * * * * * * * * * * * * * *
· kamo-internal
Tab Steward Catalog - seed yang berharga bundel + periksa katalog
Tab Katalog baru dalam konsol pengurus hipotek: benih pertama penyewa yang layak dengan investor REAL + identitas produk (unblocks pricing), dan memeriksa investor org - > produk - > rate- lembar versi. Kabel proksi katalog / api / keamanan / mlos / katalog baru via katalog Api. Tutup kesenjangan audit # 1 - penyewa nyata katalog tidak dapat dilihat / dapat dicapai, sehingga tidak ada hilir bisa harga. Plain- string UI (i18n follow- up).
· SecurityService
Gateway katalog - proksi hilang yang memblok harga penyewa
Katalog adalah Konteks HANYA MLOS berbatasan dengan tidak ada gateway SecurityService, sehingga katalog penyewa tidak pernah bisa ditulis / ditulisi dari konsol dan BorrowerQuoteService mengembalikan NO _ CATALOG untuk setiap org asli (pricing panggung mati). MlosCatalogClient + MlosCatalogController (/ api / Security / mlos / katalog) proksi katalog baca * * * * * * * * * * * * + versi - tulang belakang penulis (mahal-bundle seed, * * * * * * * * * * * * * mempublikasikan, buletin). org adalah SERVER- STAMPED ke setiap menulis dari operator sesi (a client- supplied org overwritten); god- quallowed steward gate. konfigurasi: mlos.catalog.url.
· kamo-internal
Loan-sale desk UI - terminal captain-market steward screen
LoanSaleDeskPanel di ibu kota & Pusat Perintah Risk: tampilkan komitmen pengiriman investor (filter status), membuka komitmen * * * * * * * * * * * * * * * * dan komitmen mengalokasikan terkunci pinjaman, antar, beli (dana clossed - > FUNDED), papan, dan pasang dari alokasi. Kabel Dikirim.. proxy via captain MarketsApi. Mengganti kesenjangan peta jalan dicatat dalam audit sebagai layar pelayan terbesar yang hilang.

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