Jurnal de schimbări
Ce e nou.
Fiecare îmbunătățire a platformei, pe măsură ce se livrează.
· kamo-internal
Bila de calcul a politicilor
Ipotecă nouăPoliticiTab: versiunea activă curentă + forma de publicare-nouă versiune + versiunea istoric pentru fiecare dintre cele trei politici efective; configTypes/configApi + tab Înregistrare.
· SecurityService
Politicile de profil cu durată efectivă de aplicare a contractelor de preț/capital/rezervare publică
New MlosPolicyWriteService (izolat; propriile repo-uri astfel încât config-colection write- serviciul este neatins): versiunea demote-inserție unică pe același audit coloană vertebrală. Controlor/Politica de tarifare, /Politica de capital, /Politica de servire GET (în prezent+ istoric) / PUT (publică o nouă versiune). Servirea Policy SCRA / FDCPA invariante rămâne adevărat.
· kamo-shared-library
Interfață VersionProfilePolitică pentru politici cu date efective
Prețuri / Capital / ServicingPolitica implementa astfel încât unul publică rutina conduce versiune demote-inserție unică.
· kamo-internal
Livrarea investitorilor + subeditori ai regulii angajamentului
Câştigurile extinse la rândul investitorilor Livrare (comportament de finanţare / cale de execuţie / Remitere) și Angajament (tip / min pull-through % / pair-off) editori alături delegație + suprapuse; configTypes/configApi types + calls.
· SecurityService
Livrarea investitorilorConfig + sub-colectări ale regulii angajamentului CRUD
- Nu. (+actualizare/eliminare) pe coloana vertebrală configurată D31 (org eșuează prin intermediul investitorului-mamă, WORM change-log pe rând); controler /investitori/{id}/livrare-reguli + /angajament-reguli GET/POST/PUT. Completează ultima Subcolectările investitorilorConfig amânate de la [04].
· kamo-internal
Sub-editor de linie de credit pentru investitori
IpotecarInvestersTab a extins câștigurile pe rândul investitorilor un OverlayEditor (FICO/LTV/DIT/ rezervă/doc/geo stransere + comparator + program opţional + fereastră eficientă) alături de editorul delegației; configTypes/configApi tipuri suprapuse + apeluri.
· SecurityService
Sub-colectare CRUD a portofoliului de credit al investitorilorConfig
********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************* investitor-mamă, WORM change-log pe rând, configVersion defaults 1); controler /investitori/ {id}/overlays GET/POST/PUT (se elimină prin activ: fals). Completează A se vedea nota de subsol 1.
· kamo-internal
Sub-nav + text cu contrast mai mare
- Mutaţi secţiunea sub-nav de la stânga la un panou de dreapta, cu înălţime maximă care suluri independent; antetul + forma de conținut ia lățimea rămasă pe partea stângă și defilați pe cont propriu (două regiuni de defilare independente pe md+; stive cu nav deasupra pentru ecrane înguste). - Accesibilitate: închis toate textele secundare/etichete (gray-400 -> gri-600, gri-500 -> gri-700) pe pagina de detaliu + câmp comun/SecțiuneCard/ Primitivele statului gol, astfel încât etichetele să îndeplinească contrastul WCAG AA pentru utilizatorii cu vedere redusă.
· kamo-internal
Conducta de credite ca sub-tab ipotecar + tema de lumină
- Adăugaţi aplicaţiiPipelineConsolă: o reţea de date AG-Grid avansată /conducere de aplicații ipotecare la nivel de împrumut (file de filtru de stare, rând de filtrare; căutare rapidă, export CSV, paginare, rând - > detalii). Cu fir ca ultimul sub-tab-ul consolei de administrare a ipotecii (?sub=pipeline). - Re-tema / aplicatii/ [uid] detalii + camp impartit/SectionCard/Modal/ Primitivele statului gol + toate cele 14 secţiuni ale temei marinei întunecate până la kamo-idiom intern ușor; înlocuiți eroul cu sânge complet cu un flux bară antet (remedieri antet/content suprapunere). - Re-tema / aplicaţii/pipeline (kanban) şi / aplicaţii/hmda-lar la lumină. - Înlăturați lista neagră de sine stătătoare/aplicații; repunctați QuickActionsBar "Nou Application" la sub-tab-ul conductei de ipotecare de pe piață.
· kamo-internal
Panou de configurare a calibrării platformei AI-Governor (D4 §5.C)
- Nu. Advanced tab câștigă un panou de guvernator: editarea platformei- postura implicită de calibrare (poarta de conducere/etapa de forță-până la calibrat/min eșantioane; fiecare moștenire pânăEnabled Per-org suprascrie stratul de deasupra.
· SecurityService
ScenariuDescoperireSchimbare
IpotecaAppController (re) produce fişierul canonic BorrowerScenarioProfile via the new Scenariul Discovery Service după *************** (cel mai bun efort, propriul tx). Adaugă mlos.intake la @EnableJpaRepositorii.
· kamo-shared-library
Dispozitiv de protecție de tip LOAN (D2), adaptor de comandă a semnelor (D3), configurare a regulatorului per-org (D4)
- ImageService: solicita un docType pentru ImageAssocType.LOAN uploads (LOAN-scoped; Cont/SERVICE * nemodificat). - Adaptor de adjustment semnat: adaptorul/limita de compatibilitate regula-7 (ajustare canonică ↔ valoarea semnată) pentru migrarea treptată a semnelor. - AutonomyGovernorConfig + repo + GuvernatorConfigResolver (org → platformă-default → ConfigMap strating); DbounomyGovernor rezolvă acum calibrarea/enablement per-org.
· kamo-internal
AUS conexiuni tab (D37) + bloc 2nd ipotecar market (D38)
- IpotecaAusConnectionsTab: org-scoped DU/LP/GUS credibility config (una per kind); Secretul este un câmp de parole numai pentru a scrie, iar rândul arată doar dacă este setat un credibil. - Pagina de piață nouă: dezactivați opțiunea MORTAGE + validați o dată ce org are una.
· SecurityService
Suprafaţa de scriere a configuraţiei de conectare AUS (D37) + piaţa ipotecară unică per org (D38)
- MlosConfigWriteService ******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** unicitatea unu-per-AusKind, păstrat secret pe alb-secret edituri, coloana vertebrală de audit WORM. - MlosConfigController /aus-conections GET/POST/PUT PlatformaSecretCipher în interiorul mutației); vizualizarea expune areCredențial, niciodată cifrul. - *************** să respingă o a doua piață MORTAGE per org (409).
· kamo-internal
Sub-editor pentru delegarea investitorilor (D39)
Drop the delegate Switch/coloană; fiecare rând de investitori se extinde la o per programă editor delegat (program UUID, gol = implicit la nivel de investitori; DELEGAT/ NE DELEGATE) susținut de noii /investitori/{id}/delegați API.
· SecurityService
Suprafaţa de scriere a delegaţiei investitorilor
Drop delegat Authority from the InvestorConfig write/view; adăugați Subcolectarea investițiilor la /investitori/{id}/delegări (GET/POST/ Plasați, ștergeți prin activ: fals) pe coloana vertebrală D31 config-write prin intermediul investitorului-mamă, WORM change-log + profile Version bump per rând.
· kamo-shared-library
Delegaţia pe program a investitorilor (D39)
Delegația este granulară per (investitor, program), nu un investitor grosierConfig Boolean. {DELEGATE, NE DELEGATE}, InvestorDelegation entity (mlos investor delegation, optional programId; nul = default la nivel de investitor) + repo, și picături ***************
· kamo-shared-library
[AUS] AusConnectionConfig entity
Directiva proprietar #6: fiecare org își configurează propriul furnizor AUS API (Fannie DU / Freddie LP / USDA GUS) pe piața creditelor ipotecare, în setări→ comerț. Model de date fundamentale: AusConnectionConfig (mlos.config, new table mlos aus connection config) (profil de credit, AusKind); deoarece un LenderProfile este one-per-market, keying by creditorProfilId face aceste per-market. Reutilizează enumul AusKind existent (DU/LP/GUS) și VendorCategory.AUS vocabular mai degrabă decât inventarea celor noi. Secret în repaus: secretul API este stocat NUMAI ca un secret AES-256-GCMCiphertext (criptat de PlatformaSecretCipher pe scriere, oglindire SocialConnection / PlatformOAuthClient) și nu este niciodată într-un DTO ClientId/endpointUrl/configJson nu sunt secrete. Unic (profil, aus kind). Scriere/controler al platformei - Da. AUS-connections tab + i18n + KI (nou tabel) construi pe acest următor; per-market vs Orga-scoped rezolva este o decizie config-spine la suprafață pentru proprietar.
· kamo-shared-library
[ImageAssocType] ataşează imagini la un împrumut, tipul de doc necesar
Directiva proprietarului: imagini pot fi atașate direct la un împrumut ipotecar, întotdeauna cu un tipul doc relevant. Adaugă LOAN la ImageAssocType (id 11, găleată de imagistică-împrumuturi); reflectarea steagurilor documentelor de colectare cont: isAllowDocType=true + isAllowDocTypeOpt=fals, astfel încât tipul de doc al unui document de împrumut este necesar și NU org- opțional. Adaugă necesităDocType () (isAllowDocType & & &!isAllowDocTypeOpt) așa că încarcă căile impun "întotdeauna un tip de doctor." Persistence-safe with NO KI/schema change: Img.assocId has no @Enumerated (defaults la ORDINAL) și nu există nici o constrângere CEC, astfel încât anexarea la END păstrează fiecare În cazul în care se utilizează un sistem de reținere pentru copii, se aplică următoarele cerințe: 3 teste verzi. Coordonat follow-up (flagged): (1) furnizarea de imagini-împrumuturi MinIO găleată prin intermediul KlusterServices înainte de prima încărcare împrumut-doc; (2) reconstrui ImageAssocType consumatorii (DocsService does Values()[id] Nu-ţi face griji. Ridică-l. Următoarea lor construcție CI); (3) aplicarea impune DocType() pe calea de salvare cu împrumut-doc.
· kamo-shared-library
[sign-convention] money sign-convention validators + Modelul de ajustare
Conform regulilor canonice ale proprietarului. Banii din domeniul central nu codifică niciodată semnificația într-un semn: - *************** / necesitã active, creanţe, Pasivele, plătirile, onorariile, costurile, creditele sunt magnitudinile POSITIVE proprii câmpurile (regulile 1-3); o valoare negativă nu funcționează rapid. - Direcţia de ajustare {INCREASE, DECREASE, CREDITE, DEBIT, PREMIUM, DECOUNT} ajustări ale prețurilor (LLPA, SRP, ajustări ale prețurilor, concesii, reduceri) expune o direcție explicită, niciodată un număr semnat (regula 5). - *************** + înregistrarea de ajustare auto-validare respinge o magnitudine al cărei semn intră în conflict cu direcția declarată (articolul 6); a ajustarea semnată nu poate fi construită. Regula 4 (contabil +/- trăiește numai în stratul GL) și 7 (semnând numai în adaptor strat) sunt limite arhitecturale de aplicare a gărzii de viață în CORE și de respingere a conversiei semn-purtătoare pentru investitor/garanţie/ feed-urile contabile/MISMO rămân în afara domeniului prin construcție. 4 teste verzi.
· kamo-shared-library
[§5.A] canonic BorrowerScenarioProfile + ProductDiscoveryGate
Conform articolului 5. O directivă: ScenariulSprijinPolitic trebuie să consume un canonic Profil de scenariu pentru împrumut generat din datele URLA normalizate, niciodată forme brute/UI; și surse viitoare (AUS/OCR/AI/Manual) UPDATE care înregistrează mai degrabă canonice decât Ocoleşte-l. - BorrowerScenarioProfile (mlos.in take, new table****************** sursa unică per-împrumut de adevăr elemente calculate JSONB + ultimaSource + versiunea. Mutabilă (acretă adevăr), auditată de sursă+versiune. - BorrowerScenarioProfileService: product FromUrla (loanFile, orgId) is the geneza (citește normalizat Loan/Property imediat după normalizarea URLA); aplicăUpdate este singura utilizare a surselor ulterioare cusăturii (fails tare în cazul în care nu există nici un profil de geneza este URLA singur, aplicarea update-don't-bypass); pentru a SupportProfile proiecte cele 5 dims. - ProductDiscoveryGate: §5.A legal wall consulted ÎNAINTE de eligibilitate/prețuri rezolvă ScenariulSusportPolicy (tenant suprascrie + cod implicit) peste canonic profil și, pe un refuz, înregistrează un WORM AiDecizie rutat la un administrator (NO ELIGIBILE PRODUCT, legalRequiresHuman; DEFERED HARD STOP=HIGH, STward ONLY= MEDIU) prin intermediul unei decizii facultative. Sprijinit nu scrie nimic. 10 teste verzi. Build-and-flag: are nevoie de un KI run (nou tabel) + cablarea fluxului de serviciu (apel produsFromUrla la URLA-normalizare cârlig + poarta.evaluați la produs- descoperirea intrării) în serviciul de administrare.
· kamo-shared-library
[12] §5.A ScenariuSusportRezolvator de întârziere-interlocutor politic (D36)
doc 12 linie 235 P0 Un perete legal la descoperirea produsului care păstrează Nu-ţi face griji. care rulează în tăcere ca prim-liens înainte (dezvăluiri greșite). ScenariuSusportRezolvator (pure @Component) maps a ScriptSupportProfile (LoanType x Scop x Lien x Amortizare x Construction, donomodify URLA enums) to {SUPPORTAT Matrice implicită (D36): SPECIFICAT = agentie forward/non-QM PRIM-lien achizition/refi cu o amortizare standard (ceea ce acoperă motoarele deterministe); STEWARD ONLY = recunoscut-dar-outside-v1 un om poate proveni (subordonat/HELOC, constructie/acasă- ameliorare, GPM sau orice altă dim URLA nu au nici o valoare pentru ei); DEFERED HARD STOP = eșuare închisă atunci când un critic Dim este nul. Astfel, AI nu progresează niciodată un produs non-v1. Pertenant ScenariulSupportPolicy suprascrie rândurile strat pe partea de sus (cele mai specifice câştiguri meci, cele mai noi versiunea rupe legăturile; nul dim = wildcard) pentru a deschide un produs pentru SPEED sau întăriți-l 13 teste verzi. Build-and-flag: resolutioner + entitate nava acum; produs-descoperire WIRING (consult înainte de eligibilitate + emite o decizie Ai privind refuzul) și KI pentru mlos scenario support policy sunt follow-up (needs a KI run .
· SecurityService
[08] Reconciliat FactPublisher
doc 08 §3.3: blocatul *************** nu trebuie să câștige un NATS editor (care editează nu modifică). Adăugați un Fact Reconcilied neblocatPublisher wrap care se împacă, apoi pe un non-zero schimbare conta emite los.pipeline.fact. <orgId> on curentul existent LOS PIPELINE (los.pipeline.> deja îl leagă masa), astfel încât bucla de pregătire poate trage. Repunctează apelantul unic (MortgageConnectController's conciliation end) la ambalaj; serviciul blocat este neatins. Plasament (D34): co-locat în SecurityService cu apelantul său curent, nu în MLOScapitalMarketsService, așa cum a sugerat punctul 3.3 din punct de vedere provizoriu (care presupunea că RCE-side apelant care nu există încă). Invariant mandatat serviciul blocat Cel mai bun-efort ca LosPipelinePublisher: absent NATS sau un eșec de publicare este autentificat + înghițit, numărul este încă returnat. 4 teste verde.
· kamo-shared-library
[12] §5.C AutonomyGovernor
DeciziaGate are deja o forță statică GLOBAL-steward @Value, dar §5.C are nevoie de două lucruri pe care nu le poate da: un comutator kill flippable FĂRĂ redistribuire (aşa că DB-backed) la granularitatea GLOBAL/TENANT/TASK TYPE, și forța-steward-til-N- calibrare-eșantioane pe tip de sarcină (P0 ieftină a mașinii de calibrare degenerate la lansare AutonomyGovernor este un doctor opţional (ObjectProvider, Comment În aceeaşi formă ca StewardAssigner. Este ADD-ONLY, exact ca peretele legal: se poate transforma doar un ar-fi AUTO EXECUTE în CALEA TO HUMAN, nu ridica un traseu, Astfel, pure / fără stat DecisionGate este neatins. Două condiții de forță: (a) o AutonomyKillSwitch de potrivire activă (orgId, aiFunction) motiv; o entitate care poate fi manipulată/inflexibilă, NU WORM, auditată prin intermediul angrenatBy/at; (b) calibrare bootstrap aiFunction sub min-probe (default 50), luate în considerare printr-o nouă cerere de aderare. Când Guvernatorul este cauza traseului, motivul său este anexat la decizia WORM Ai Deci, o decizie de mare încredere care a mers la un om nu este niciodată inexplicabil. Noul tabel autonomie kill switch (additive DDL Logica + 3 integrarea numai a coloanei vertebrale + 6 coloana vertebrală + 14 poarta); toate cele patru DecisionSpine ctors conserved (existente callers neschimbate).
· kamo-internal
[04] tab-ul de acoperire a riscului
New MORTGAGE Market config tab for per-tenant risk overlays: category (credit box / concentrare geo / tip de proprietate / suma creditului / fraudă / limită de expunere) + acțiune (negare / trimitere / contraofertă / pavilion) + domeniu de aplicare opţional al produsului-variant + fereastra efectivă + o expresie opțională a regulii JSON (validată pentru parezabilitate) client-side, oglindind serverul 400). Adăugați/eliminați rândurile; îndepărtarea este o ștergere dură. Renders după Investitori, înainte de tab-ul întotdeauna pe acorduri. configTypes/configApi oglindește modelul de colectare D31; i18n prin repo kamo-translation-dictionary.
· SecurityService
[04] felie E2 RiskOverlay colection CRUD (D31)
Acoperirea riscului (cutia de credite/geoconcentrarea/straturile limită de expunere pe caseta de credit de bază) ca o colecție de configurare pe coloana vertebrală D31: crea implicit configVersiunea=1 + identitatea profilului timbrelor + profilul umflăturilorVersiune + validare-sau- rollback + atașează un WORM MlosConfigChangeLog; actualizarea/ștergerea sunt închise defectuos 404 pe rândul unui alt profil; ștergerea este o eliminare dificilă auditată ca {"eliminat":adevărat}. RegulaExprimarea este o coloană JSONB Înainte de a scrie atât de rău de intrare este un 400 curat, nu o 500 mijlocul-INSERT. Null/blank este permis (regula vocabular este un strat amânat, transportat off-bandă pentru moment). 20 teste de scriere-spinie verde (4 suprataxă + 4 investitor + 6 licențiere + 6 etape-override).
· kamo-internal
A se vedea nota de subsol 1
A 7-a filă de configurare MORTGAGE: per-investitor *************** rânduri de autoritate cu un cip de aprobare-status. Adaugă printr-un rând de linie (cod + stare + opțional Nu-ţi face griji. Elimină prin gunoi (sterge tare server-side). ConfigTypes InvestorView/InvestorRequest + the 3 enum arrays + eticheta Ajutor; configApi ***************** înregistrată ca filă "investitori" după licențiere, înainte de acorduri. Engleză prin repo traducere dicționar. TSC curat.
· kamo-internal
Cronologie socială unificată UI la /marketing/social
Live, animat trans-oferta de alimentare refolosind stilul de alimentare club: virtualizat cronologie, jetoane de filtrare furnizor, SocialPostCard (răspuns/react/ștergere de capacitate); multi-furnizor SocialComposer (per-oferta indicii de capacitate + jetoane de rezultat fan-out); Facebook-stil NewPostsPill (fără autoscroll), utilizareSocialFeedWebSocket live via /topic/social/feed/{orgId}, precum și traseele proxy /api/media/social/*. Scrie acțiuni Poartă pe MANAGE SOCIAL MEDIA; capacitate-configurat caracteristic-ascunde în întreaga.
· MediaService
Platformă unificată a liniei temporale (persistență a hranei pentru animale, adaptoare, releu live)
SocialFeedService persistă posturi/comentarii pe schema MediaSession/MediaObj (refolosind modelul de chat); SocialFeedMapper construiește DTOs sârmă; SocialTimelineController servește capacitățile combinate de alimentare + și multi-oferta compune ventilator-out, răspuns, reacție; Șterge. {orgId} -> /topic/social/feed/{orgId} (relay + Garda subscribră cross-tenant). SocialInboundConsumator fani pentru a alimenta elemente; sondaj matura Reumpleri. Toate cele 5 adaptoare de furnizor Pune-te în aplicare. SocialFeedAdapter la maxim pentru fiecare API, gated capacitate.
· kamo-shared-library
SPI + entităţi unificate pe schema media
Reuse MediaSession/MediaObj to hold social posts & raspunsuri (post=MediaObj, comment=child MediaObj via MediaObjMsg.parent, provider link on MediaObjSocialRef). Adăugați sub-interfață SocialFeedAdapter (operațiuni de alimentare păstrate off Calea DM SocialProviderAdapter), MediaSessionSocialFeed (per-conectare Sesiune de alimentare), MediaObjSocialRef coloane de alimentare, SocialObjKind, și matrice extinsă a Capabilităţilor Furnizorului care acţionează per furnizor UI-ascunderea caracteristicilor.

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