Jurnal de schimbări
Ce e nou.
Fiecare îmbunătățire a platformei, pe măsură ce se livrează.
· AIService
Agent de vânzări CRUD, șablon ipotecar, și agent-condus chat prompt
- AiSalesAgentController (/api/ai/sales-agents): org-scoped CRUD + GET /templates - SalesAgentTemplateRegistry: built-in starter templates, begining with a asistent ipotecar (conştient de conformitate: fără cotaţii obligatorii, nu promisiuni de aprobare, amâna la ofițerul de credit licențiat, solicită statul supus) - PublicAiChatService: training-ul agenţilor de vânzăriContext devine primul nivelul cascadei prompte (agent - > integrare prompt - > org - > generic)
· kamo-shared-library
Entitatea agentă de vânzare + atribuirea de agent per canal
Agenţi de vânzări AI configurabili Org: un agent numit pentru o industrie de vânzări, programat cu un context de formare autorii org (din șablon sau manual), atribuibile la canalele de a conduce acel canal lui AI. Kamo serveşte toate industriile. Ipoteca este. Doar un şablon. - SalesAgent entity (dao/beans/ai) + SalesAgentRepository + SalesAgentDTO - WebChatIntegration.salesAgentId (nellable soft link) + DTO field
· SecurityService
Auto-productie platforma-MLOS gestionat chat + servi site-ul cheie de gazdă
- ManagedChatIntegrationService: lenesly ment the org's platforme-gestionate SPECIAL AGENT WebChatIntegration la primul acces. KamoMLOS este primul partid: org rezolvat de gazdă; cheia site-ului public este deținută de platformă și nu este gestionată niciodată de org admins. - PortalChatConfigController GET - Nu. rezolva org prin gazda; Obțineți sau creați integrarea gestionată, returnați cheia site-ului public pentru <kamo-chat>. (Token-ruting ment end + chatRouting ForGuid + asignează LoanOfficer chat-routing eveniment aterizat în 67974fd printr-o împingere intercalată; acest lucru adaugă partea configurantă/preluare și necesită o legătură comună 6b161b5.)
· MediaService
Verificați jetonul de rutare, persistă leadUid, reasign chat în mișcare plumb
-creeazăSessiunea de susţinere ia o rută semnatăToken (nu este preferatAgentMemberId); verificat prin ChatRoutingTokenCodec + cluster intern.auth.secret, aplică token.orgId ==org, rute numai atunci când integrarea.asignment Mod == SPECIFIC AGENT. Tăietură dură a căii de acces la browser. - persist leadUid on SupportTicket + PublicChatVisitor (durabila legătură de împrumut-lider) - ChatRoutingConsumer: on security.chat.routing.>, reassign the lover's open ticket (s) by leadUid to the new ofiter (reuss asignedTo PreferateAgent) - Lo-prezenta org-scoped: cross-org/membru necunoscut -> online:fals (fara scurgeri) - WebChatIntegration CRUD/bootstrap transporta misiuneMode; magazin publicSiteKey pentru Integrari SPECIFICE AGENT
· kamo-shared-library
Token de ghidare a agentului semnat + propagarea de realocare a plumbului
Fundația pentru a face reutilizabile publice-chat widget mâner KamoMLOS varianta împrumutat->împrumut-funcționar în condiții de siguranță, precum și pentru propagarea reatribuirii plumbului într-o discuţie deschisă. - WebChatAsignmentMode (TOPIC QUE implicit / SPECIFIC AGENT); WebChatIntegration câştiguri asignareMode + publicSiteKey (cheia gestionată de platformă pentru MLOS soluţionată de gazdă) - ChatRoutingTokenCodec: jeton HMAC de scurtă durată peste secretul cluster dovedind agent țintă; înlocuiește browserul-suppliat preferatAgentMemberId - SuportTicket.leadUid + PublicChatVisitor.leadUid (durabila veriga de imprumut) + Nu-ţi face griji. - *************** -> Security.chat.routing. de la reatribuirea plumbului (LeadService.updatedLead) și recuperarea pool-ului (acceptNextLead) - *************/**/**/**/****/**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
· SecurityService
Expune capacitatea de vedere astfel încât consola poate explica un furnizor lipsă
Fișele PDF sunt citite de furnizorul vizual configurat al org-ului. Când nimeni nu este configurat apelul AI nu reușește la fel ca un model eroare nu, astfel încât consola nu a avut nici un fel pentru a distinge "nimic nu este stabilit pentru a citi acest" din "folia a fost gol." GET *************** Proxies sonda de capacitate AIservice sub poarta de administrare existentă, org server-timbru, astfel încât UI poate numi real problemă și punctul de unde să-l repare.
· AIService
Inline imagine + nivel de rezervă care preferă mai puternic decât mai slab
Două limite au făcut ca viziunea org-configurată să fie inutilizabilă pentru clase întregi de apelant. 1. Viziunea a fost URL- ONLY. Fiecare apelant a trebuit să se ridice în picioare publice, furnizor-oferta servire Infrastructură Un ClusterIP serviciul nu a putut folosi deloc vederea, indiferent de ceea ce a configurat org. Adaptoare acum este strict Niciodată să nu fii transformat într-o parte ruptă. Apelantii cu un URL public semnat sunt Neafectat. 2. Selecţia de nivel diferenţiază doar "potrivire exactă" de "orice altceva," astfel încât o lumină sau furnizor necoordonat ar putea depasi un HEAVY configurat doar pe prioritateOrdin Cererea ar putea citi un document cu un model prea slab pentru el. Comanda este acum nivelul solicitat -> niveluri mai puternice (mai întâi cele mai puternice) -> niveluri mai slabe ->. Sub-servirea este eșecul care produce răspunsuri greșite, astfel încât supra-servirea este preferată La ea. Nivelul rămâne o preferinţă, niciodată un filtru, şi prioritateOrdin încă rupe legăturile. Partajat atât prin vizualizare cât și prin selecție de text, care a duplicat vechiul comparator. Mai adaugă şi GET ******************* rezolvat prin rutarea reală calea: MlosAiClient se prăbușește fiecare eșec într-o opțiune goală, așa că "nici un furnizor configurat" este altfel imposibil de distins de la "modelul greșit" și nimic nu poate spune o membru care. Aceasta este ceea ce permite un UI spun acest lucru.
· kamo-internal
Se împarte dispozitivele în "Sistemul de telefonie (s) " + "Dispozitive mobile"
Fila Dispozitivelor are acum două sub-tabe. Tabelul hardware PBX/softphone existent se mișcă sub "Sistemul de telefonie (s) Dispozitivele" neschimbate; noua filă "dispozitive mobile" Dispozitive mobile permite un set de admin: - politica DEFAULT a Organizatiei (dispozitive personale permise vs administrate de companie necesare), salvate prin intermediul plasturelui existent de câmp org și - o suprascriere PER-MEMBRIE (sau "folosire org implicit"), cu efect politica arătată pentru fiecare membru, alături de dispozitivele pe care fiecare membru le-a înscris (numele, platforma, ultima utilizare, ultimul IP). Un membru al COMPANY MANAGED REquired poate ajunge la org numai de la o companie administrată (Android Device Proprietar înscris) telefon alte dispozitive; dispozitivele gestionate se actualizează în mod silențios și rămân în funcțiune. Sub-selectia foloseste propria sa SetăriView's Susţinut de noul ************** criteriile finale. Notă: Noile etichete sunt șiruri de caractere literale dicționarul de traducere separat, astfel încât tastele ar trebui să fie adăugate acolo într-o urmărire.
· SecurityService
Obiectivele finale ale Org-admin pentru politica privind dispozitivele mobile + dispozitivele înrolate
Backs noul sub-tab "Devices Mobile" sub Setări → Caracteristici → Telefon → Dispozitivele (fratele său "Sistemul de telefonie (s) " rămân pe VOIPService și coperți - GET *************** org politica implicită + un rând pe membru activ: suprascrierea lor, eficacitatea politica și dispozitivele pe care le-au înscris în prezent (nerevocate UserDeviceTokens: nume, platformă, ultima utilizare, ultima IP, expirare). - Patch *************** setează sau șterge suprascrierea per-membru; nul moșteneşte org implicit. Gated on MANAGE VOIP SETTINGS (dreptul care deschide deja setările de telefon pagină) plus același-org, sau modul Dumnezeu. Implicit la scară largă este scris prin plasturele de câmp existent PUT/api/security/org/{id}.
· kamo-internal
Panoul Ingestia acceptă foile de calcul, nu doar CSV
Extractorul acum citește .xlxx /.xls și adulmecă formatul din fișierul în sine, astfel încât picker nu mai limitează la CSV și copia spune în mod clar ceea ce este lizibil că PDF-urile nu sunt, în loc să lase un steward să încarce unul şi să obţină un eşec confuz.
· kamo-internal
Fila Steward Ingestia + traseele proxy Catalog / Identificator care lipsesc
Ingestia foilor de calcul a existat de la un capăt la altul în backend și niciunul nu a fost accesibil. Aceasta adaugă o suprafață care merge întregul lanț: încărcați foaia unui investitor -> ingerați-l -> a se vedea exact ceea ce extractor citit, celulă cu celulă cu proveniența sa -> aprobă/rejectează -> publică rândurile aprobate ca versiune a foii de calcul la preț. Panoul este sincer despre ceea ce va face de fapt: previzualizează câte rânduri aprobate au AMBELE o rată și un preț (doar cele publicate) și spune clar că o jumătate de rând este A sărit mai degrabă decât ghicit. Nimic nu ajunge la catalog înainte de aprobare. De asemenea, adaugă proxy /api/security/mlos/catalog și /api/security/mlos/identifiants rute. Ambele panouri expediate fără unul, astfel încât fiecare apel de la ei 404'd la Next strat și nu a ajuns la Serviciul de Securitate deloc.
· kamo-shared-library
CATALOG SOURCE assoc type for MLOS catalog source documents
Fișele ratei de investiții / LLPA + matricele de eligibilitate / politicile de blocare trebuie să fie undeva live: cele mai ingerate extrase din bulă, și punctele publicate de versiune a ratei înapoi la ea ca proveniență. Nici un tip de assoc existent se potrivește și găleata SYSTEM WIDE este e-semn șabloane. CATALOG SOURCE este org-scoped și în mod deliberat NU deletabil sau suprascris: un live prețul citează acest fișier, astfel încât înlocuirea sau eliminarea ar rescrie în tăcere dovezile în spatele unei versiuni publicate. Appended ultima, astfel încât nu există schimburi ordinale.
· SecurityService
Gateway pentru revizuirea candidatului + promovarea foii de calcul
Expune cele două noi catalog de promovare scrie la consola administrator sub existent Poarta steward MLOS, cu server organizaţional ştampilat din sesiunea operatorului: POST *************** POST ***************
· kamo-shared-library
MobileDevicePoliticy
telefon personal sau trebuie să fie pe o companie administrat (Android Device Proprietar înscris) dispozitiv: - MobileDevicePolicy enum: PERSONAL ALLOWED - Organization.mobileDevicePoliticy PERSONAL ÎNCETAT astfel încât să nu fie afectate orgile existente). - Membru.mobilDevicePolicy implicit, care este modul în care politica este configurată "per membru." Valoarea efectiva pe membru este ceea ce poarta aplicatiei mobile pe: un org a carui politica eficace este COMPANY MANAGED required este ascuns de comutatorul org pe o dispozitiv care nu este înscris ca administrat de companie. Coloane aplicate prin KamoInitializer.
· SecurityService
Poarta de acces Steward pentru ingestie (zona de admisie + zona de așteptare nu au fost accesibile)
MLOS Ingestia Serviciul nu a avut nici o prezenţă la poarta de acces, aşa că nici un chiriaş nu a putut înmâna o foaie de preţ la extractor și candidații pe care le etape nu a avut nici un cititor pe orice suprafață accesibilă. Adds ************************* la /api/security/mlos/ingeration: Releu de ingerare a foilor multipart, plus cele două înregistrări (document sursă) candidaţi, istoricul aportului unui investitor). OrganizationId este SEVER-STAMPED de la Sesiune de operator la fiecare apel, astfel încât un administrator atinge doar vreodată chiriașului lor zona de pregătire. Citiți timeout este 120s imgDatId rămâne necesară: este ancora de proveniență cu conținut adresat și tasta de admisie-deddup, astfel încât bula este stocat prin conducta de imagistica primul.
· kamo-internal
Bilanț de identificare
Noua filă de identificare în consola de administrare a ipotecii: lipi un număr extern (număr de împrumut, MERS MIN, DU/LP/GUS dosar, e-semn plic ...) și rezolvați-l înapoi la împrumutul său router webhook folosește, astfel încât un administrator poate urmări un apel înapoi nedirecționat vedere pe durata ciclului de viață. Eşec închis: necunoscut, ambiguu, sau numărul unui alt chiriaş toate citit UNRESOLVED. Fire nou /api/security/mlos/identifiers proxy. Etichete cu coardă simplă (urmărire i18n).
· SecurityService
Porţiunea de intrare în baza de date
MLOSIdentifierService nu a avut nici o poartă, astfel încât planul de identificare tastat (poarta de rutare fiecare intrare Vânzător/agenție/Utilizări de apelare AUS/e-sign) nu a putut fi contactat din consolă. Mlosidentifier nouClient + MlosidentifierController Nu-ţi face griji. rezolva un număr extern, și citiți un împrumut registru de identificare + evenimente pe ciclu de viață. Izolare chirias: per-împrumut citește trece propria org operatorului ca Doc-11 §6.5 Cross-org Guard; /rezolvare nu transportă nici o org în aval, astfel încât o aterizare rezoluție în altă org este raportate ca UNRESOLVED aici, mai degrabă decât scurgeri că numărul există. Poarta de administrare a lui Dumnezeu. configurare: mlos.identifier.url.
· kamo-shared-library
Fişiere AUS Value-keyed + dispozitive de căutare a plicurilor e-sign pentru transferul de identificatori
Completează căutările de la coloana proprietară a planului de identificare MLOS care trebuie să rutați apelurile de intrare: - Nu. (DU/LP/GUS rulează mânerul) și Nu-ţi face griji. Atât org-agnostic, cât și List-returning astfel încât o re-run colapss şi o coliziune ambiguă cu un împrumut încrucişat eşuează mai degrabă închisă decât greşită direcţie. Aditiv @Query finders; nu schema.
· kamo-shared-library
Findere de identificare a creditului cu cheie de valoare pentru deținerea de identificatori
Planul de identificare MLOS rezolvă un apel de intrare către vânzător/agenție înapoi la un împrumut; pentru tipurile de proprietate ELSEWhere valoarea de autoritate trăiește pe coloana proprietarului. Adăugați găsitorii de valoare (org-agnostic) returnând o LISTA (Așa că o coliziune ambiguu cross-org nu se închide mai degrabă decât o direcție greșită): Nu-ţi face griji. Şi... / findbyLenderLoanNumber / findByMersMin. Aditiv @ Găsitori Query on nu modifica repo-urile; nici o schimbare schema.
· kamo-shared-library
CONDIŢIE ADED / CONDIŢION CLEARED CANONIC e-mail
Cea mai bună practică de management de mediu să notifice consumatorul. Adăugat la CANONIC KEYS cu resursele lor json+html; semințe de EmailserviceForOrg se auto-vindecă în orice org la prima trimitere (idepotent), și se auto-injectează orgName/logoUrl. Copie este în mod deliberat generic (un element nou / un element completat specifice condiției; portalul este sursa adevărului.
· SecurityService
Criteriul final de evaluare a preauth-statusului pentru login / pilula de înregistrare
GET *************** rezolvă org de numele gazdei (alias-fallback) și raportează dacă contul său este activ Procesul nativ, refolosirea *************** (acum public) Pastila se potriveşte cu bannerul de probă din aplicaţie. Eșecuri închise la proces: fals pentru domenii necunoscute.
· kamo-register
Afișați TRIAL UTILIZAREA NUMAI pilula de mai sus Powered-by pentru orgi de proces
Refactori PutereByKamo într-un stiva coloană fixă și auto-fetches /api/trial-status/{host} (proxy to SecurityService public trial-status final), făcând o pastilă de chihlimbar deasupra pilulei Powered-by atunci când org cont este într-un proces activ nativ. Nu se poate ascunde.
· kamo-login
Afișați TRIAL UTILIZAREA NUMAI pilula de mai sus Powered-by pentru orgi de proces
Self-fettches /api/trial-status (proxy to SecurityService public trial-status final, rezolvat prin autentificare gazdă) şi face o pastila chihlimbar deasupra Powered-by pilula atunci când contul orga este într-un proces activ nativ. Defecțiuni deschis la ascuns.
· kamo-internal
Vizualizați documentele părții terțe (împrumutului) în revizuirea cerințelor administratorului
Un administrator care revizuiește o cerință Third PARTY (appraisal/titlu/inundație) poate deschide acum documentul satisfăcător. Noua rută binară Next.js curge obiectivul de conținut per-împrumut authz'd; imagisticaApi.viewLoanDocument blob-fetches + deschide inline/downloads; AppRequirementView suprafete satisfierImgId (ready-projected) + loanFileUid; Sectiunea Documente prezinta un buton View pe randurile terte cu un satisfier. Susţine noul Serviciu de Securitate per-împrumut LOAN-doc. Etichetă simplă (urmărire i18n).
· SecurityService
Per-împrumut terţ parte (LOAN) vizualizator document
Completează doc-review byte cale a început cu vizualizator seif. Img-uri de colectare (appraisal/titlu/inundație) sunt refuzate de criteriile de evaluare imagistică generice (per-împrumut PII lockdown), astfel încât un administrator revizuirea unui terț Satisfier nu l-a putut deschide. GET nou E o nebunie. Operator LOS (LOS VIEW PIPELINE) SAU membru care este parte la cererea acestui împrumut, și confuz-deputat ancorat de LoanDocLoader's assosocObjectId==LoanFileUid check (un loan img își poartă propriul împrumut în assocObjectId). Octeți flux în proces de imagine-împrumuturi găleată, astfel încât poarta de împrumut-file ESTE compartimentul (nu clearance-ul fiduciar). ?download=Atacuri reale; Inline implicit. Inchide resturile LOAN-side ale Nu-ţi face griji
· kamo-internal
View/Download seif documents in the account dogs tab
Transformă condiţiile/docurile într-o buclă de revizuire reală. Traseul proxy a membrilor-documente trece acum prin non-JSON (binar) răspunsuri în amonte în loc de text()-decodificarea acestora; membruDocumentDocsApi.view per-party / content bytes with the *** session and opens the blob inline (sau downloads); ContDocumentsTab obține Vizualizare + Descarcă acțiunile pe document seif. Susţine noul obiectiv privind conţinutul serviciilor de securitate per parte. Etichete cu coardă simplă (urmărire i18n).
· SecurityService
Per-party seif document viewer
Documente de seif încărcate (pay stub / Gov ID / extras bancar) au fost scrise-doar: octetul imagistic generic Criteriile de evaluare refuză CONT MEmber VAULT (perparty PII lockdown), astfel încât un administrator acceptat / respins o cerință fără să-l deschidă vreodată pe doctor, şi un împrumutat nu ar putea revedea o prezentare. Obiectivul final nou authz'd byte GET *** *** *** *** **** oglindește extractul Paznic: necesitPartyAccess (membru propriu SAU drept LOS) + un document-alongs-to-this-party confuz-deputy check, then serves bytes IN-PROCESS via VaultDocLoader (MinIO) nu nivelul de autorizare a CONFIDENTIAL (care ar da faliment chiar și pentru proprietar). ?download=ataşamente reale; implicit În linie. Închide resturile notate în ***************
· kamo-internal
Steward Catalog tab
Noua fila Catalog in consola de administrare ipotecara: infiintati primul pachet pretios al chiriasului cu investitorul REAL + identitatea produselor (deblochează prețurile) și verifică investitorii org-ului -> produse -> versiuni ale foii de calcul. Fire noul /api/security/mlos/catalog proxy prin catalogApi. Închide golul #1 al auditului catalogul a fost de neînsămânțat / de neatins, astfel încât nimic în aval nu a putut preț. UI cu coardă simplă (urmărire i18n).
· SecurityService
Poarta de acces catalog
Catalogul a fost singurul context MLOS limitat cu nici o poartă de securitateservice, astfel încât catalogul unui chiriaș nu ar putea niciodată să fie autentificat/însămânțat din consolă și BorrowerQuoteService returnat NO CATALOG pentru fiecare org real (prețuri în stadiul mort). New MlosCatalogClient + MlosCatalogController (/api/security/mlos/catalog) proxy catalog citeste ******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** *************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** org este SERVER-STAMPED pe fiecare scrie de la operator sesiune (este suprascrisă o org garantată de client); poarta de administrare aleasă de Dumnezeu. configurare: mlos.catalog.url.
· kamo-internal
Loan-vânzare birou UI
LoanSaleDeskPanel în centrul de comandă capital & risc: lista angajamentelor de livrare a investitorilor (filtru de stare); deschide un angajament *************** și alocarea per angajament blocat împrumuturi, livrări, achiziții (fonduri ale împrumuturilor ÎNCHIS - > FUNDED), bord și alocări perechi. Fire L-am trimis. proxy via capitalMarketsApi. Înlocuiește decalajul foii de parcurs notat în audit ca cel mai mare ecran de administrator lipsă.

Universul tău te așteaptă.
Începeți gratuit în câteva minute.Adăugați produse oricând sunteți pregătit — fără migrare, fără autentificări noi.
Gratuit pentru totdeauna — nu este necesar un card de credit