Jurnal de schimbări
Ce e nou.
Fiecare îmbunătățire a platformei, pe măsură ce se livrează.
· SecurityService
Seif document P4 (docuri reutilizabile pentru credite)
- MemberDocumentService: upload a doc ONCE at AccountBorrownerParty script → Imageservice crează un Img în Auto-create imagistică-membru-vault găleată *********** haşiş calculat server-side) + Linia de catalog a documentelor pentru membri; listă după parte/cont. Paznic cu împrumut închis (este membruParty ToPartyAccount). - MemberDocumentController /api/security/membre-documents (POST upload multipart, GET list): operatorii gestionează orice seiful partidului (LOS VIEW PIPELINE); un împrumutat doar părțile propriului cont. Seiful Img este ancora de reutilizare CerințaSatisfier (imgId) puncte la pentru a satisface cerințele per-împrumut mai multe împrumuturi (cablajul satisfăcător este următoarea felie). Compilații curate; nu se schimbă schema (entități P1).
· kamo-internal
În cazul în care nu se utilizează o metodă de calcul a valorii juste, se utilizează o metodă de calcul a valorii juste
AplicațiiPipelineConsole listează acum un rând pe împrumutTransaction (împrumutul său reprezentativ + orice împrumuturi moștenite negrupate), cu o coloană "Deal / Status" blocată care să indice valoarea derivată cip de stare de grup, un cip N-împrumuturi pentru oferte multi-împrumut, și un steag negat-excepție. Fetches Nu-ţi face griji. (+ TranzactionSumaryDTO type) and joins to the loan rands. Găleți/filtre/călătorie pe rândurile reprezentative ale tranzacției.
· kamo-internal
KamoMLOS Portal default-product designing in sellers-products (#11)
Un comutator stea pe fiecare produs desemnează unic KamoMLOS portal auto-asign produs (single-active). GATET via GET / lead-vendors/mlos-readness: afișat numai atunci când piața editată IS este configurată piața de plumb a org-ului și POS + o piață comercială MORTAGE. Reflectă/redă starea de nerambursare în viu prin PUT .../produse/{id}/mlos-default. (i18n în matura P6.)
· SecurityService
Platforma pentru desemnarea produsului implicit P3 (singură activă) + disponibilitatea operatorului
- *************** desemnează One LeadVendorProduct ca KamoMLOS al orgului Portal auto-asign produs; un singur activ (degradează orice alt, org-scoperit, blocat) prin intermediul JPQL actualizări în vrac. - LeadVendorController: pus **************** și GET /mlos-readness (care produs este implicit + dacă POS + RESIDENTIAL MORTGAGE leader market + Piața de comerț MORTGAGE sunt configurate) Compilații curate; nici o schemă/schimbare comună-lib.
· SecurityService
P2c conduce primul suport portal
- IpotecarVerticalRezolvator: rezolva RESIDENTIAL MORTGAGE LeadMarket, MORTAGE ComerţMarket, desemnat LeadVendorProduct implicit, şi Efficient POS-enabled disponibilitatea deterministă citește suport atât poarta de setări (#11), cât și poarta portalului (#12). - PortalLeadService: leads-primul creatorOrGetAnonimousLead (keyed to an AccountGuid cookie, Auto-atribuit produsul implicit pe piața ipotecară, blocată la disponibilitatea NU AppMortgage), patchEstimate, and the sign-in fuzionGuidIntoMember (binds the GUID to the Contul membru + reparents the lead (s), oglindire atribuire istorie LeadAccount scrie). - PortalController - Nu. plumb POST/PATCH, fuzionare}: anonim (org-from-host, GUID de încredere BFF X-Kamo-Guid header); fuzionarea este ***-bound. Compilează curat. Trasee anonime trec de permisToată lanţul de filtrare (controlori auto-gate).
· kamo-internal
Admin UI (MERGE ACCOUNTS)
ContManager câştigă o acţiune de Combe Accounts (în funcţie de *************** selectaţi exact două conturi ale clienţilor, alegeţi supravieţuitorul, opțional păstraţi duplicatul Stripe client / membru primar, apoi fuzionează reparents toți copiii pe supraviețuitor și Dezactivează uşor duplicatul. conturiApi.mergeClient() → POST /cont/clienți/{uid}/merge. (cheile i18n se adaugă în matura P6.)
· SecurityService
P2a instrument de calcul al contului + suport tranzacție P2b
P2a - AccountMergeService: reparents Every account uid child via native UPDATE (bypass JPA orfelinatRemovare astfel încât pistele/aplicațiile ratatului să supraviețuiască), dedupses the global-unique account members + (cont, piață, țintă) abonamente, reconciliază stripe client id / primarMember / pointer FKs (supraviețuitor-wins + păstrați-din-pierdătoare suprascrie), soft-dezactivează ratatul. Doar la fel. - ContController POST ******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** P2b - Serviciul de creditTransaction: asiguraTransaction ForApp (auto-împrumut grup on create, idepotent), DreamStatus (rulat de la membru LoanFileStatus prin LoanTransactionStatusDeriver); Nu-ţi face griji. (TransactionSumaryDTO), este membruPartidulTransacţiunii (D52 generalizat pentru grup), backfillOrganizare. - IpotecaAppController: creaţi() acum auto-grupuri credit; GET / tranzacţii liste per tranzacţie (operatori=org conducte, debitor=cont propriu). - Register mlos.tranzaction + mlos.docs repos in SecurityServiceApplication @EnableJpaRepositores. Schema deja creată de KI (P1). Compilează curat împotriva instalat shared-lib.
· kamo-shared-library
Fundaţia P1 a entităţii
ENTITĂȚI NOI (additive; KI ruleaza DDL): - TranzactionGroupStatus enum + LoanTransactionStatusDeriver: derivat grup lifecycle (Created→...→Completed) laminate de la membru LoanFileStatus (niciodată stocate cu autoritate). - AccountGuid (cont): lung-live cookie GUID↔Account (nullable) for the lead-primul flux anonim. - AccountBorrownerParty (cont): identitate comună a împrumutatorului (membru opțional) + cheie doc-vault. - Document de membru (mlos.docs): seif de documente reutilizabile la nivel de cont/membru. - LoanTraction Cronologie (+vent enum), SharedTransaction Task (+status/severitate enums): shared group feed + tasks. - repos pentru toate cele de mai sus. Apendice Enum (id-stable / ordinal-safe): - LoanFileStatus.SOLD borded(9) - *******************-Imagine-membru-vault găleată. - *************** Setări generale (serviceType=null) pentru instrumentul admin cont-merge. Coloană FK (coloană nulă, blocatăDefiniție, nicio capcană orfană unică rowid/gen random uid): - LoanFile.împrumut tranzaction id, ***************** Lead.cont guid id, CommerceMarket.lead market id, ***************** Nu-ţi face griji. Design: *************** Nici o versiune cucui.
· SecurityService
Autorizaţie de autoservire a împrumutatorului (garanţie de IDOR)
Un împrumutat este un membru simplu org fără drepturi de operator LOS; poate acționa asupra ONE cererea sunt o parte la și numai că unul. Gardă planată: poarta operatorului mai întâi, în caz contrar, un cec de împrumut blocat (estePartidul membruToApp). Ipoteca AppController: - ************* suprasarcini aplicate pentru a obține, toate 23 per-app să scrieţi criteriile finale şi cele 3 ajutoare repetate. - listă: operatorii văd conducta de org; un debitor vede doar aplicații deținute. - crearea: operatorul ia app (inclusiv din plumb); un împrumutat se auto-creeaza propria lor (proprietate-ștampilat) - ştergere: operatorul suspendă dreptul de proprietate sau împrumutatul; cautari: orice autentificare sesiune (referință include nevoile de admisie); călătoria rămâne numai pentru operatori. Ipoteca ProgramControl: închis un IDOR preexistent pe setPersona/setSelectedProgram (org-numai cec) Operatori neschimbati; debitori cu scop de proprietar; IDOR cu împrumut încrucişat închis (D52).
· kamo-shared-library
Proprietate de împrumut pe AppMortgageService
Adaugă primitive de proprietate pentru autoservire împrumutat (un împrumutat este un org simplu Membru fără drepturi de operator LOS: -creareaBlankOwnedByMember (orgId, membruId): crearea dreptului de proprietate al ştampilei + al ştampilei prin ataşare Un Cont al cărui membru principal este împrumutatul. - este MemberPartyToApp (appuid, orgId, membruId): nu a fost închis paza partidului de împrumut Și apelantul este principalul membru/membru al contului aplicației. - listaOwnedByMember (orgId, memberId): cererile împrumutatului. Proprietatea este design-mandatat ************************ link; Cont/ AccountMember există deja, astfel încât nu schema / KI. Numai aditivi (D52).
· kamo-internal
Coloană de împrumut + filtru de admisie în conducta de credite
Sub=pipeline datagrid (ApplicationsPipelineConsole) arată acum pre-app-luated progres împrumutat-călătorie astfel încât angajații org poate revizui statutul unei cereri ca împrumutatul completează propriul împrumut prin portalul KamoMLOS. - coloana "Călătorie de împrumut": cip de stat (doar a început / Completare / Gata de depunere) + bară de progres determinată + secţiuni n/total, cu un vârf de instrument pentru secţiuni în curs de desfăşurare; Am luat deja împrumuturi. - "Iau împrumut" găleată de filtrare: împrumuturi cu o intrare de călătorie de autoservire în direct. - listaJourney() API client + BorrowerJourneyDTO tip + i18n chei. Sursate din GET / imortage-apps/journey (D51).
· SecurityService
Criteriul de evaluare pre-app-luate de debitor-călător pentru conducta operatorului
GET nou - Nu. (LOS VIEW PIPELINE) întoarce per-DRAFT cu împrumut-a lua progrese astfel încât administratorii de conducte pot viziona un împrumut ia forma în timp ce Imprumutatul inca il mai merita prin portalul KamoMLOS. BorrowerJourneyService recalculează secțiunea completă a portalului expert server-side peste graficul canonic AppMortgage (verificări ale prezenței tolerante DTO-urile portalului au nume de câmp diferite). Stare = început / IN PROGRESS / READY TO SUBMIT peste 7 secţiuni pre-depunere; ipoteci inverse sări peste finanţe secţiuni, potrivire portal. Nimic nu a persistat; limitat la 300 de proiecte/viziune. BorrowerJourneyDTO este un record de securitate serviciu-side astfel încât nu modificați rămâne neatins. Parte din refuncționarea conductei doc03 (D51).
· SecurityService
Controlorii LOS acceptă sesiunile pe împrumut *** (doc03 §0.1)
BaseLosController rezolvă acum sesiunea apelantului prin apelantRezolvator (X-OTK-validat atribut PRIMUL *** cookie back) în loc de atributul X-OTK. Aceasta este cheia care permite portalului debitorului KamoMLOS să ajungă la /api/security/mortgage-apps/** cu sesiune reală pe împrumut (un împrumutat este un membru simplu al org prin intermediul standardului login→OTK→validat-otk→*****) mai degrabă decât un cont comun de servicii. Înapoi... compatibil; toate cele 7 controlere LOS beneficia. Compilează curat.
· SecurityService
LOE-Core server-autor program scorer + / programe / scoruri (doc03 §9 Faza 2)
Ports the KamoMLOS client scorer (lib/los/scoring.ts) in SecurityService LOE-Core: LoeCoreScorer înscrie catalogul de program eficient al org-ului (baza de date cu org overlay) împotriva unui împrumutat Appsnapshot VA-entitlement/reverse-ge controls Forma programului. POST Nu-ţi face griji. Server-primul: Această navă înainte de ştergerea clienţilor în faza 3. 3 teste verzi.
· InitializerService
Seed the 17 real program rulesets (doc03 §9 Phase 1)
Migrează datele autorizate ale programuluiRegulaset din regulamentul clientului KamoMLOS Dosare în *************** (17 coduri, extrase cu fidelitate) şi înlocuieşte regulile programuluiSeederRunner's Json ("{}") cu cele reale reguli per cod încărcate de la curs. Idempotent: introduce programe lipsă şi upgrade-uri existente "{}" deţinători de date reale, niciodată clovn operator editări. Aplicat pe următoarea alergare KamoInitializer (utilizator-run). Prereq pentru faza 2 §9 scorer server care șterge scorer client.
· kamo-shared-library
Real adânc-merge pentru org program-regulă suprascrieri (doc03 §9 Faza 0)
Înlocuiește M2 last-write-wins fuzion Overlay placeholder (care aruncat în tăcere valoarea de referință autoritară a oricărei suprascrieri a org) cu o undă JSON recurentă profundă: Orga suprascrie furnizarea numai cheile pe care le schimba, obiectele cuibarite reapar, array-uri înlocuiți en-gros, și o suprascriere malformat nu reușește în condiții de siguranță la linia de bază. Blochează Contractul de regulament al programului înaintea scorerului autorizativ al serverului (§9 Faza 2) va șterge marcatorul clientului. Program/ProgramService javadoc redirecţionat. 3 teste verzi.
· kamo-shared-library
MlosExtracted Candidate Stand entity for the ingestie conduct (D48)
Ieșirea terminală pe teren a parserului MLOSIngestionService: o etapă, revizibilă candidat la extracție (segment/source-doc FK, tintaEntity, fieldPath, cellRef; valoare brută/normalizată, DECIMAL (1.43) încredere, recenzieStatus). Candidaţii nu promovează niciodată în entități de catalog canonic cu excepția prin MLOSCatalogService's RateSheetSanityGate + aprobare umană. Completează substratul de ingestie ExtractieTemplate pre-existent). mlos.catalog deja în scanarea KI → masa se creeaza automat următorul KI run; servicii rulați ddl-auto:nici unul.
· kamo-shared-library
Izolat cel mai bun efort profil de scriere-back pentru căi de perete legal (D47)
fuzionareDateBestEffort ruleaza bogatia inapoi in tranzactia proprie (REQUIRES NEW) astfel încât un eșec nu poate rula înapoi tranzacție apelantului Retragere în condiții de siguranță pentru o cale de decizie de perete legal (AUS/intern-rules) a cărei cale de decizie decizia de înregistrare trebuie să persevereze indiferent. Sari în tăcere atunci când nu există nici un profil. +1 test comun-lib (skip-when-absen / delegat-când-prezent).
· kamo-internal
Secțiunea privind licențele de stat pe baza profilului meu de membru
SectionCard nou (NMLS ID + masa autorizata pe stat cu activ- furnizarea de checkbox și datele de reînnoire/expirare, reînnoirea <=validarea expirării). Gated by *************** Adaugă următoarea rută proxy, Oglindă RoleRightType TS și documente de proiectare/plan.
· SecurityService
Licențiere de stat membru API + disponibilitatea plumb licență
Adăugaţi State membreLicensingController (GET/PUT/api/securitate/membri/{id}/ licențiere de stat) poartă de State LICENSING * drepturi cu server-side reînnoire <=validare experimentală. Activează repo-urile JPA legale. Rezumat popup şi Leads-Available Grid respectă acum eligibilitatea licenţelor de stat.
· kamo-shared-library
Licențiere pentru membrii de stat + poartă de acceptare pentru plumb
Reutilizați mlos.juridic StewardLicense ca unic pe membru / pe stat NMLS registru (add activProvidingBusiness). Adaugă membru membru.nmlsId. Adaugă drepturi generale Nu-ţi face griji. CreditLeadAsignmentService acum sare peste candidații de plumb ipotecar ale căror statul de proprietate explicită în care membrul nu este autorizat în mod activ.
· kamo-internal
Adaugă sursă pe câmpurile de plumb cartografibile
"Sursă" de plumb este afișată pe pagina de detaliu principal, dar lipsea din lista de domenii de import; adăugați-l (calea "sursa") acum că importatorul backend + CreateLeadRequest o sprijină.
· SecurityService
Hartă o coloană importată în câmpul de plumb
Adăugați cazul "sursa" pentru a setaDirectFieldOnCreaRequest astfel încât calea de cartografiere "sursa" este onorată.
· kamo-shared-library
Adăugați domeniu importable
Lead has a free-text source (shown/edited on the lead detail page) but it was nu este importat Adăugați-l astfel încât importurile manuale pot cartografia o coloană de fișiere la sursa plumbului.
· kamo-shared-library
Adaugă ScenariuProfileSource.PRICING pentru scenarist FICO/report write-back (D45)
· kamo-shared-library
Canonic scenariu-fact coloana vertebrală
D1/D45 extinde consumul de fișiere BorrowerScenario. Populează latentul fapte Json și o face sursa comună a adevărului pentru faptele de împrumut/împrumut: - Scenariu FactKeys: single canonic fact-key vocabular + nivel (structural vs îmbogăţire) + normalizare (); referirea D21 Whitelist/deriver/consumatori la acestea. - ScenariuFactDeriver: promovează derivaţia categorică D18 LTV/CLTV/HCLTV + din MLOSPricingService in shared-lib (o casă pentru fapte derivate din entități). - BorrowerScenarioProfileService: produce FromUrla populează acum fapte structurale (conservarea îmbogăţirii); elemente de soluţionare () pentru umplerea de lacună consultativă; fuzionare () Înapoi care filtrează nivelul de îmbogățire (geneza deține structura, D45.3). - ScenariuDate.fillGapsFrom(): consiliere (cerere câștigă, profil umple goluri). - Investitor OverlayMatcher: pure fail-safe matcher (numai prezent-and-violarea). Nicio modificare a schemei/KI (facturiJson coloana pre-există). 27 de teste ţintite verde.
· kamo-internal
Regulile canalului tab-ul completeaza suprafata configuratiei §3.2
· SecurityService
Reguli de aplicare a canalului de colectare CRUD
createChannelRegulă/actualizare/dezlipire pe coloana vertebrală D31 colecţie plată (nivel de profil, org inchis-inchis, WORM change-log); controler /canal-reguli GET/POST/PUT (se taie prin activ: fals). Domeniul de aplicare/canalul/accesul necesar; ***************** autoritate/finanțare + fereastra efectivă opțională. Ultima entitate de configurare §3.2.
· kamo-internal
Fila de activare a produsului (per-program, versiune)
· SecurityService
Comment
- Nu. (program-scop demote-insert) + citeste; controler / product-enablements GET (activ pe program) / Put (publish). Corp poartă programId, activat, ciclu de viață Variant, canalRestriction, eficientDe la.

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