Changelog
Cosa c'è di nuovo.
Ogni miglioramento alla piattaforma, come si spedisce.
· SecurityService
[04] fetta E2 InvestorConfig collezione CRUD (D31)
Il secondo dominio di configurazione di raccolta (doc-04 §3.2 InvestorConfig) — per-investor approvazione/consegna/autorizzazione che alimenta l'esecuzione dei mercati di capitale. Riutilizza l'unità H ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** spina dorsale (profileVersion urto + §4b.1 validate-or-rollback + WORM change-log; difficile delete audited {"deleted":true,row}; NoSuchRowException->404 fail-closed on a file di profilo straniero). GET /investitori + POST + PUT/{id}(+attivo:false-remove); InvestorCode + approvazioneRichiesta stato, ******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** DelegatoAuthority facoltativo; enum + convalida non negativo-turn. L'investitoreConfig Le sotto-collezioni +3-children (overlays/delivery/commitment) rimangono un follow-on. 4 prove (+esistente siti ctor aggiornati per il +InvestorConfigRepository arg; 16 config write prove verdi).
· kamo-internal
Scheda di licenza MORTGAGE (list/add/remove) — [04] fetta E2 (D31)
La 6a scheda di configurazione MORTGAGE: NMLS/state/agency/investor con date efficaci / scadenze e un server-computato chip efficace-oggi (status non è mai memorizzato). Aggiungere tramite riga in linea, rimuovere tramite l'azione spazzatura (hard delete server-side; andare in pensione senza cancellare, impostare la scadenza al passato). configTypes LicensingView/ LicensingRequest + LICENSE TYPES + licenzaTypeLabel; configApi list/create/update/ rimuovereLicensing; registrato come scheda 'licenza' prima della scheda accordi sempre-on. Le stringhe inglesi spediscono tramite il repo di traduzione-dizionario. pulito.
· SecurityService
[04] fetta E2 licensing collection CRUD (D31)
Il primo dominio di configurazione di COLLECTION (doc-04 §3.2 LicensingEntry, molti per profilo) — una nuova forma di scrittura id-keyed sulla stessa spina dorsale di audit dei singletons: - No, no. / updateLicense / deleteLicense: profileVersion urto + §4b.1 validate-or-rollback + WORM change-log per riga; identità server-stamped. Aggiornamento / cancellazione risolvere la riga da id quindi fail-closed 404 (NoSuchRowException) se esso non è l'operatore o il profilo di g — nessun oracolo di esistenza cross-profile. - deleteLicense è un HARD delete (audited {"deleted":true,row}) perché Licensing Resolver legge le voci UNFILTERED dallo stato record — una bandiera morbida sarebbe ancora contare come licenza; scadere senza cancellare, impostare la scadenzaDate al passato. - MlosConfigController: GET /licensing (list, efficaceOggi calcolato via isEffectiveOn (oggi), mai memorizzato), POST /licensing, PUT /licensing/{id} (aggiornamento, o rimuovere via {active:false} — il proxy di configurazione non ha verbo DELETE); ISO-date + enum + scadenza>=efficace validazione; NoSuchRowException->404. Gli investitori (+3 bambini) e RiskOverlay riutilizzano questa forma in fette successive. 6 test.
· kamo-shared-library
Tipo di evento IDENTIFIER REGISTERED (mlos.identifier.registered)
La controparte di registrazione iniziale a IDENTIFIER SUPERSEDED — il segnale durevole mirror downstream / cache di risoluzione globale consumano quando un identificatore nativo è primo registrato (doc 11 §5.3/§10, D29).
· kamo-internal
Tabella di sovrascrittura dell'autonomia per stadio sulla scheda ai-autonomia (D28)
Il doc-04 §4.2/§4.5 per-stadio mappa sotto il singolo di AiAutonomy: ogni ciclo di vita stadio con la sua piattaforma di classificazione parete (legal-wall chip / pavimento non visibile) e la soglia di fiducia efficace il cancello utilizza (max (override, pavimento)). Ogni stadio non-wall ha un editor di override in linea (pensa + auto-esecuzione) con risparmio + rimuovere (PUT active:false, dal momento che il proxy di configurazione non ha verbo DELETE); legal-wall le fasi sono di sola lettura. Ricarica dopo ogni scrittura in modo che la postura efficace riflette la Ricomputo del server. config E' il momento giusto. AggiornamentoStageOverrideRichiesta + configApi ottenere/aggiornamento/removeStageOverride. Inglese stringhe (aiAutonomy.stageOverrides.*) vivono nel repo di traduzione-dizionario.
· SecurityService
[04] pass-2 AutonomyStageOverride CRUD + mappa dell'autonomia per stadio (D28)
L'autonomia per-stadio esce dalla configurazione verticale differita fino a StageWallRegistry esisteva (la sua nota di deferral ora è soddisfatta): - No, no. upsert per (lenderProfile, stageKey) sulla spina dorsale di scrittura di SAME (mutazione whitelisted, profiloVersione urto, §4b.1 validate-or-rollback, WORM change-log append). Stadi LEGAL-WALL (CLOSING/ FUNDING/COLLECTIONS) sono respinti 400 outright - il cancello ignora sovrascrizioni lì per design, e la memorizzazione di una fila non onorerà mai è un artefatto di revisione fuorviante. - deleteStageOverride: HARD delete (il risolutore legge override senza record- filtraggio dello stato, quindi una bandiera morbida avrebbe continuato a mordere il cancello), controllato come una {"deleted":true,"row":...} change-log snapshot + profiloVersione urto. Esposto come PUT {active:false} perché il proxy kamo-internal config non ha alcun verbo DELETE. - GET /ai-autonomia/stage-overrides: il doc-04 §4.2 per-stadio mappa - ogni LifecycleStage con la sua classificazione a parete (legalWall + pavimento non sovraridabile da StageWallRegistry), la fila di override dell'inquilino, e la postura EFFECTIVE la gate userà (max (override|default, floor); auto-execute = config E override) via E' il momento giusto. - PUT************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** come la ASK dell'inquilino; il cancello applica sempre il pavimento - superficie come efficacePenso sul GET). Tutti i §3.2 pass-2 enti + prod tabelle già esistenti (mapping scoperta - il la nota "nuove entità" della coda era stante): nessun cambiamento condiviso-lib, nessun KI eseguito. Frontend scheda + E2E sono il punto di ripresa pinned (D28 STATUS nota nei piani doc).
· DaemonService
[03] MLOS consumatori sul lato letto - Decision.routed ventilatore-out + task.risolto cucitura (D26/D27)
Il doc-03-router si ripiegava nell'ospite MLOS-consumer della flotta (l'unico Ricreazione-strategia - rebinds durevoli morire sotto RollingUpdate), per il L'esplicita indennità di "servizio di lettura o di piegatura" del doc; un campo verde MLOS OrchestrationService rimane proprietario-gated. Adottatori di prima produzione del nucleo di affidabilità dei consumatori condiviso-lib (doc 12 §4.2): ogni consegna passa attraverso IdempotentEventProcessor - per-consumer dedup marcatore nel Tx SAME come effetto collaterale, RETRY->nak (capitolato da max-attentos), MlosDeadLetter al berretto, corpi ineguagliabili fritti immediatamente. - MlosDecisionRoutedConsumer E' dura. daemon-mlos-decision-routed): fan-out steward via StewardNotifier - per-org SMS attraverso VOIP POST /api/bulktext/send (cluster X-Internal-Auth) per configurare- numeri elencati; EMPTY default = record-solo fino al modello di steward-assignment (l'UI di steward legge direttamente StewardTask). - MlosTaskConsumatore Risolto E' dura. daemon-mlos-task-resolved): l'auto-resume SEAM. DecisionSpine.resolve() già capovolge il compito RESOLVED + OrchestrationState GREEN sincronizzato (scoperto nella mappatura - il lato della colonna vertebrale risolve EXISTS; solo l'estremità HTTP è il steward-screen unit's); il motore ri-run nudge si collega qui quando il motore riprende Le API sono a terra. 6 test.
· kamo-internal
Modulo strumenti di marketing + rielaborazione nav
- /modulo di marketing con intestazione dell'eroe in stile account + percorso di diritti schede: Panoramica, Social Media (/social), Materiali (/materiali), Codici di riferimento (/sconti); segnaposto di partenza; accesso custodito di VIEW MARKETING + diritti per-tab - NavPri: voce di marketing (icona del campeggio, VIEW MARKETING) tra Commercio e KB; Rimozione della voce Note - NavTop: Calendario + Contatti ora icon-only (tooltips mantenuto); Note spostate qui da NavPri (solo icona, stesso èNotes+VIEW NOTES gating) con un regolazione verticale del percorso - SecurityRoleManager: sezione diritti di marketing (sempre visibile)
· kamo-shared-library
Gruppo di diritti di marketing — ServiceType.MARKETING + 6 diritti (ids 150-155)
VIEW MARKETING, VIEW SOCIAL MEDIA, MANAGE SOCIAL MEDIA, VIEW MATERIALS, VIEW REFERRAL CODES, MANAGE REFERRAL CODES. IL MERCATO è un raggruppamento dei diritti modulo (enabled=false, come LOS) — non un org-enable app. Remi dei diritti self-heal in tutti i ruoli sul boot SecurityService.
· kamo-shared-library
Tipi di eventi di conformità AUS - downgrade.forced, waiver.recorded, validation.recorded
I segnali durevoli dell'unità [10] (D22/D24): FHA TOTAL decisione-di-registrazione forzata, e l'append-only waiver/data-validation righe del ciclo di vita (doc 10 §6.2/§7).
· kamo-internal
Hot Reassign — flusso live call-transfer anteriore-desk
Aggiunge un'azione Hot Reassign al lead-view Assignment card (personale front-desk su chiamate live): un spiegatore + richiesto chiamata-nota dialogo, quindi rilasciare il piombo nel credito auto-assegnazione piscina e aprire una finestra animata 'trovare un agente disponibile'. Quando un agente di vendita lo accetta, il finestra rivela il loro nome / e-mail / estensione di lavoro in modo che il chiamante può essere trasferito; un pulsante vicino (con una conferma anticipata mentre ancora in attesa) permette al personale di cauzione senza aspettare. In tempo reale tramite su Assigned. Consente inoltre di correggere l'assegnazione a discesa per elencare i membri VIEW LEADS per nome + estensione.
· SecurityService
Assegnabili-membri endpoint + estensione del lavoro sul profilo dei membri
- E' una cosa da fare. (VIEW LEADS supports abitudine grant-all) → {id,name,extension} per l'assegnazione di lead-view dropdown (nome + estensione di lavoro, non e-mail). - GET /api/security/members/{id} ora include phoneWorkExtension in modo che il Hot Reassign in attesa finestra può mostrare l'estensione di trasferimento dell'assegnante.
· kamo-internal
Icone del marchio del provider di connessione a discesa + datagrid (condiviso con il popup di chat via getProviderMeta)
· MediaService
X (Twitter) + Adattatori Discord
- XAdapter: Account Activity webhook (CRC sfida + x-twitter-webhooks-signature HMAC verifica), normalzeInbound (direct message events, echo-skip), OAuth 1.0a-signed v2 DM send; consumer key/secret dalla piattaforma X registrazione OAuth, accesso per-connessione token:secret - DiscordAdapter + DiscordRestClient: DM normalizzare + REST invio (open DM canale + messaggio/file) - DiscordGatewayManager: persistente consumatore JDK-WebSocket Gateway (uno WSS per attivo Discord connessione, HELLO/heartbeat/IDENTIFY, MESSAGE CREATE DMs ripubblicato su social.inbound.raw così la pipeline di consumo esistente li gestisce), @Scheduled riconcilia = riconnettersi, @PreDestroy pulizia - SocialCredsResolver: X branch risolve chiave/segreto del consumatore dalla piattaforma Registro di sistema OAuth
· kamo-internal
Aggiungi X (Twitter) + Discord ai provider di connessione + loghi dei fornitori; X card in piattaforma Registrazioni di autenticazione
· APIService
Inoltrare x-twitter-webhooks-signature sul bordo social webhook (X / attività account Twitter)
· kamo-shared-library
Aggiungi X(4)/DISCORD(5) provider enums + X(6) piattaforma OAuth provider + active-by-provider repo lookup (no schema; provider type id è un semplice Integer)
· kamo-shared-library
Lock-lifecycle tipo di evento + BusinessDayCalendar promosso a mlos.compliance
- No, no. (mlos.pricing.lock.lifecycle): un evento tipo per l'intero ciclo di vita post-lock; lo specifico MlosLockEvent Tipo di giri in il carico. L'impegno iniziale di LOCK rimane mlos.cm.lock.committed dei mercati di capitale. - BusinessDayCalendar (CFPB §1026.2(a)(6) replica del servizio di divulgazione bloccato regole) si sposta da MLOSCapitalMarketsService a mlos.compliance per D16 - il prezzo lock-lifecycle scrittore è il secondo consumatore MLOS il suo javadoc programmato la promozione. Prova si muove con esso (7/7 verde).
· kamo-internal
Doc-04 MORTGAGE schede di configurazione — 5 singoli di dominio
business-model / autorità / capital-markets / manutenzione / ai-autonomia GET+PUT via /api/security/mlos/config; mlosPut + parseWriteError superficie del campo trasversale §4b.1 elenco di rifiuto in linea; nomi campo booleano simmetrico con GET/entity JSON; montato nel mercato MORTGAGE scheda striscia prima degli accordi bambino (morte getCommerceTypeLabel rimosso). pulito.
· VOIPService
Doc-07 SMS sistema di modello — /api/voip/sms/templates + GSM-7/UCS-2 segment guard
****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** rende {{var}} e invia tramite il BulkTextProvider primitivo EXISTING (nessun secondo percorso portante); SmsSegmentCalculator (GSM-7 160/153, UCS-2 70/67) + sms.max-segments > 422. @EnableJpaRepositories += Non e' vero. InternalAuthFilter protegge il nuovo prefisso; X-Internal-Auth gated.
· SecurityService
Doc-04 strato di configurazione dell'inquilino — sommario di attivazione + 5 domini GET/PUTs
mlos.config.enabled + com.kamo.z.shared.mlos.config in @EnableJpaRepositories. MlosConfigSelfHealRunner: default LenderProfile + 5 singoli di dominio per attivo Il mercato del MORTGAGE all'avvio... MlosConfigWriteService: whitelist -> §4b.1 validate-or-rollback -> profileVersion bump -> WORM MlosConfigChangeLog snapshot. MlosConfigController /api/security/mlos/config: sommario di attivazione del profilo del creditore + convalida + change-log + business-model/authority/ Non e' vero. E' il momento giusto. cancello, sessione org/attore (SUDO-aware). Campi booleani simmetrici con GET/entity JSON.
· kamo-shared-library
Livello di conflitto/attivazione + indurimento delle decisioni + DecisionSpine provenienza + entità del modello SMS
- Si'. enums + BusinessModelConfig/ ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** ModuleKey/StewardQueueKey + ActivationMatrix (§4b Row-for-row); MlosActivation Servizio guadagni E' il momento giusto. (Unione + autorità) CM/servicing refinements); MlosConfigChangeLog WORM audit; VendorCategory. - [12] StageWallRegistry (autovalutazione) 0 piano di credito / denaro, carico di classe chiuso); Decisione Gate ORs la parete del registro (solo add), applica il pavimento per-stadio, aggiunge forza-steward fail-safe. - DecisionSpine. DecisioneRichiesta acquisisce la provenienza opzionale di ausFindingId (settore di back-compat). - [07] SmsTemplate/SmsTemplateCategory enti+repos (donotmodify.voip.template, mirroring i modelli di posta elettronica bloccati).
· kamo-internal
Impostazioni client OAuth2 sezione Registrazioni in Impostazioni avanzate **************************** — carte provider + finestra di dialogo + segreti mascherati + proxy + client api
· VOIPService
RingCentral OAuth client creds risolvere dalla piattaforma Registro di sistema OAuth in entrambi i consumatori (OAuthController + PhoneProviderFactory rinfresca) + boot-seed + platform-enc-key env
· EmailService
Google/Microsoft/Zoho OAuth client creds si risolvono dalla piattaforma Registro di sistema OAuth (+ boot-seed da env); rimuovere @Value client-id/secret + platform-enc-key env
· MediaService
Meta OAuth legge app id/secret/verify-token dalla piattaforma Registro di sistema OAuth (+ boot-seed da env); rimuovere social.meta.* consumo + piattaforma-enc-key env
· SecurityService
Registrazioni client OAuth2 CRUD (platform-admin gated, crittografato-a-rest, segreti mai trapelati) + piattaforma-enc-key env
· kamo-internal
Steward WRITE compositori — verdetto record, pubblicare politica pull-through, eseguire prezzi
I tre percorsi di scrittura le console sono emerse come il prossimo, live end-to-end: - StewardFeedbackComposer nel cassetto della decisione: CONFIRM/MODIFY/OVERRIDE verdetto segmentato (codice-tono), Reg-B ragione selezionare (richiesto su OVERRIDE), Editor JSON con validazione lato client, WORM nota solo di append, in-flight guard (la catena non ha chiave di idempotency). - PullThroughPolicyComposer sostituisce la casella di arrivo pubblica: due fasi edit -> review-diff -> pubblicare v(n+1); la validazione della manopola rispecchia il servizio (probi 4dp, percentiles, doc-09 orizzonte vocabolario, piattaforma piano suggerimento); pubblica tramite proxy a prova di sessione che la proprietà-verifica il grano. - RunPricingComposer dietro un'azione intestazione Run-pricing: scenario/prodotto preriempi dall'esecuzione selezionata, solo SHOPPING/WHAT IF, fatti facoltativi (fico/ltv/dti/stato), contatori post-run compresi i prodotti saltati, view-run. Plumbing: mlos percorsi forward request.method + export POST; mlosPost (NO retry - scrive WORM non ipotizzante); scrivere tipi/fns in governanceApi/pricingApi. i18n: tutto il nuovo testo tramite il prossimo inno; sostituito il codice duro PRICING PURPOSE LABEL/ ELIGIBILITY LABEL mappe con helper t()-backed; chiavi triple-scritto.
· kamo-shared-library
PlatformOAuthClientResolver (relativo+decrypt) + PlatformOAuthSeeder (seme di avvio ipotizzato da env) + ResolvedOAuthClient
· kamo-shared-library
PlatformOAuthEnte del registro + repo + PiattaformaSecretCipher + provider enum
Registrazioni verificate OAuth2 a livello di piattaforma Non e' vero. crittografato crittografato crittografato crittografato crittografato a riposo tramite PlatformSecretCipher (AES-256-GCM, platform.enc-key). Ente autonomo; consumato da SecurityService (CRUD) e i servizi di risoluzione (read+decrypt).

Il tuo universo ti sta aspettando.
Aggiungi i prodotti quando sei pronto: nessuna migrazione, nessun nuovo login, nessuna richiesta di pagamento.
Gratis per sempre — nessuna carta di credito richiesta