Salta al contenuto
KAMOUniverse

Changelog

Cosa c'è di nuovo.

Ogni miglioramento alla piattaforma, come si spedisce.

  1. · kamo-shared-library

    Cassetta di sicurezza QC + dati di formazione etichettati + riconciliare regalo / lavoro autonomo

    Motore QC (Phase 4 core): - verificato Risultati di prima classe EXTRACTION CONFIDENCE, DOC TYPE CODE, QC STATE Le colonne (QcState) Riconciliazione ora si applica ONLY gate-passing fatti (AUTO/CONFIRMED + non estrazione); basso la fiducia aspetta per la revisione, rifiutata non si applica mai, corretto è superato. - ExtractionCorrection = dati di formazione etichettati solo da append (doc, campo, valore AI + fiducia, verità del suolo umano, azione). QcReviewService lo cattura su ogni conferma/corretto/rigetto, minte un'alta fiducia OPERATOR OVERRIDE su una correzione, e riconcilia. VerifiedFactRepository: QC-queue + query recensite-corpus. Ampliamento di estrazione: - gift.* → Gift Row (createGift aggiunto; kind=Cash Gift, source=Relative iniettato da tipo doc; AI legge quantità + donatore). dichiarazione tributaria / Programma C → lavoratori autonomi Occupazione (occupazione. èSelf Bandiera autorizzata di tipo doc).

  2. · SecurityService

    Prestazioni per l'estrazione (SSA, pensione, assistenza per bambini)

    Aggiunge richieste di estrazione per SSA AWARD / PENSION / CHILD SUP (AI legge lo lordo importo mensile + etichetta), e timbri il Altri proventiSource id deterministicamente dal tipo doc in modo da la riconciliazione atterra una vera e propria riga Altri redditi. Ricostruzioni contro l'altro ramo di riconciliazione del reddito condiviso-lib.

  3. · kamo-shared-library

    Riconciliare altri risultati.* fatti in altre righe di reddito

    Estende la riconciliazione di fatto con un altro ramo di reddito.*: documenti di premio/beneficio (Sicurezza sociale, pensione/pensione, sostegno ai bambini) atterrare una vera e propria fila di altri redditi con un altro reddito mappatoSource id + importo mensile. Idemponte su (borrower, fonte). La fonte è una mappatura deterministica gli inietti dell'estrattore dal doc tipo — mai un'intelligenza artificiale; l'intelligenza artificiale legge solo la quantità.

  4. · SecurityService

    Auto-classificare gli upload per catturare gli upload di documenti errati

    Un LIGHT-tier economico "che cos'è questo documento?" passa sulla prima pagina classifica il caricare in una famiglia grossolana e confrontarla con il tipo affermato del requisito. Su errato la risposta dell'estratto lo contrassegna (detectedType + typeMismatch) così il Il mutuatario viene detto "questo sembra una dichiarazione bancaria" invece di un file sbagliato silenziosamente estraendo nulla. Solo consultivo — l'estrazione funziona ancora.

  5. · SecurityService

    Estrarre le dichiarazioni bancarie di 12 mesi + scritto VOE

    Amplia l'estrazione della visione a due tipi doc più mutuatari che riutilizzano l'esistente vocabolario di riconciliazione (rischio di riconciliazione zero): BANK12MO legge come risorsa (valutazione*), VOE W legge il datore di lavoro + reddito mensile lordo (occupazione).

  6. · SecurityService

    Estrazione di documenti PDF (Phase 2)

    Il percorso di visione era solo immagine-URL, quindi il PDF multi-pagina di un mutuatario (banca dichiarazione, dichiarazione fiscale) non poteva essere letto. Ora... - VaultDocPublicController serve ?page=N rendendo la pagina PDF a PNG su la mosca (via ConversionService /render-page) — provider-agnostic, da molti i fornitori di visione accettano solo un URL di immagine, non un PDF crudo. Non-PDF/no-pagina le richieste sono invariate. Img→MinIO carico calcolato in un VaultDocLoader condiviso. - DocVisionExtractionService legge una pagina per pagina PDF (incassata a 15), fusione campi attraverso le pagine mantenendo la lettura di massima fiducia di ogni percorso. Una singola immagine è ancora letta come una pagina (comportamento non cambiato). - ConversionPageClient chiama ConversionService (riutilizza conversion.service.url).

  7. · ConversionService

    Rendering PDF per l'estrazione di documenti

    Aggiunge DocPageRenderService + POST /api/conversione/render-page (pagina N → PNG a 150 DPI, 300 coperti) e /pagina-conto. Questo è il compagno di lettura di qualità per 300px percorso miniatura: l'oleodotto di visione-estrazione del debitore-documento divide un dichiarazione multipagina/ritorno in un PNG leggibile per pagina in modo che qualsiasi fornitore di visione (tutti accettano un URL immagine; solo alcuni accettano un PDF grezzo) possono leggere ogni pagina. Additivo — i punti finali di conversione esistenti invariati.

  8. · kamo-shared-library

    Cattura + crittografare SSN completo sull'applicazione del mutuatario

    La postura dell'applicazione ha bisogno del mutuatario REAL Social, non un ultimo-4 (un prestatore non può fare nulla con 4 cifre). Borrower.ssnEsistito ma non è mai stato scritto — solo ssnLastFour è stato popolato. Ora... - BorrowerDTO ottiene un campo WRITE ONLY `ssn` (full) — in entrata solo, mai serializzato indietro; legge ancora esporre solo ssnLastFour. - BorrowerSectionService crittografa un SSN completo fornito a riposo (opzionale iniettato SecretCipher — presente in SecurityService, assente/disponibile in contesti come KamoInitializer) e deriva l'ultimo-4. il valore memorizzato invece di pulire l'ultimo-4. - ssnEncrypted/itinEncrypted @Size(32) -> 256 così il testo cifrato GCM-base64 si adatta al colonna a 256 caratteri esistente (nessuna modifica dello schema).

  9. · SecurityService

    Opzionale ?phone= lookup inverso su GET /api/security/leads

    La scheda softphone CRM risolve un numero di chiamata attivo a un vantaggio. Aggiungere un opzionale telefono RequestParam che filtra l'elenco di piombo org da canonica (ultimo-10-digit) match contro PHONE PERSONAL/PHONE WORK prima del magra proiezione LeadListDTO - nessun ampliamento PII, stessa non firmata-visibilità gating come griglia non filtrata.

  10. · kamo-internal

    Wire CRM Integrazione scheda a dati reali

    Sostituire la scheda Mock CRM con un pannello invertito-lookup dal vivo. - Risolvere il numero attivo di chiamata / dialpad a un cavo CRM tramite leadApi.searchByPhone (nuovo filtro ?phone= su GET /leads). - Mostra il piombo corrispondente: contatto, stato, dati di prestito, assegnati ufficiale; azioni rapide Call / Open Lead / Log Note (media / messaggi) / Callback (reused CallbackDialog); attività recente alimentazione media. - Fallback quando nessun lead match: indirizzo-book Contatti, allora il directory membro interno (sia lato client, riutilizzo dei dati esistenti percorsi), indicato come carta d'identità. - Nuovi helper app/lib/phone.ts (canonical digit match) e app/lib/directoryLookup.ts.

  11. · EmailService

    Supporto "sblocco per sempre" consenso di immagine remota

    Aggiunge un consenso jolly (permettere Tutto / èAlwaysAllowed) in modo che un membro può optare per visualizza immagini esterne in ogni messaggio. Riutilizza la tabella di consenso esistente tramite una chiave di messaggio-id senziente riservata — nessun cambiamento di schema. Il POST /remote-image-consent endpoint accetta la portata=sempre per questa scelta globale.

  12. · kamo-internal

    Aggiungere l'opzione "sblocco per sempre" per immagini esterne bloccate

    Il cancello di immagini esterne ora offre due azioni: Sblocca (questo messaggio, come prima) e sbloccare per sempre, che visualizza immagini esterne in ogni messaggio andare avanti. Sblocco per sempre è gated dietro una finestra di dialogo di conferma e persiste lato server (cross-device); una trasmissione sblocca altri messaggi aperti immediatamente.

  13. · SecurityService

    Un altro nome preferito prevede un nuovo vantaggio

    Un nome preferito veramente diverso (insensibile a caso con esterno spacing tagliato) è una persona diversa, quindi creare un nuovo piombo invece di rinominando quello esistente — diventa l'attuale vantaggio del GUID tramite findLeadByGuid ordine uid-desc. Trivial re-casing/spacing ("john" ↔ " John " ↔ "JOHN") non fa forchetta. Applicato sia al POST creare percorso e il percorso di aggiornamento PATCH (il legale- nome cancello mantiene lo stesso nome preferito, in modo che non forchi mai).

  14. · MediaService

    Raggiungi l'ufficiale OWN del mutuatario direttamente, senza cancello di supporto-destra

    Gettare il requisito ACCEPT SUPPORT TICKETS da assegnareAgent Preferred: il l'ufficiale di prestito assegnato del mutuatario è raggiungibile indipendentemente dal fatto che siano un agente di supporto configurato (il membro id era già convalidato come quello del piombo ufficiale in SecurityService). Mantenere un controllo org-membership come cintura di sicurezza in modo da client manomesso non può indirizzare una sessione a un membro di un altro org; sconosciuto/cross-org ids ritornano alla coda in attesa di default.

  15. · APIService

    Proxy GET /lo-presenza a MediaService

    Il proxy di supporto-sessione già inoltra il corpo grezzo, quindi il widget fuso preferenzialeAgentMemberId raggiunge MediaService intatto. Aggiungi il proxy di presenza così il portale del mutuatario può query se il loro ufficiale di prestito assegnato è online.

  16. · MediaService

    Instradamento diretto-assegnato-LO + punto finale presenza LO

    Potenzia il widget di LO/chat del portale del mutuatario: - No, no. diretta-assegna un pubblico-chat biglietto per un agente SPECIFICO (ufficiale di prestito assegnato del mutuatario) invece di la coda in sospeso, quando quell'ufficiale è un agente di supporto idoneo per l'argomento (adds loro alla chat sessione + li avvisa; registra la scelta sul tracker rotondi). Rientra in null così il chiamante mantiene il comportamento della coda. - No, no. accetta preferitoAgentMemberId e percorsi verso quell'ufficiale; solo pings l'org in attesa di fila quando non deviato. - PublicChatController: legge preferitoAgentMemberId dal corpo di sessione e aggiunge GET /lo-presence?memberId= → {online} (PresenceService.isOnline) così il widget mostra il reale stato online dell'agente e auto-coperture con AI quando lontano.

  17. · SecurityService

    Expose assegnato-LO membro id + telefono per chat diretta + presenza

    Il widget LO/chat unito deve (a) indirizzare l'ufficiale assegnato direttamente in la sessione di supporto dal vivo del mutuatario e (b) query la presenza dal vivo dell'ufficiale. Entrambi i sistemi MediaService chiave sul membro id, quindi /portal/assigned-lo ora ritorna loMemberId (membro dell'ufficiale di accettazione) e loPhone (dal record utente dell'ufficiale) accanto al nome esistente/NMLS/email.

  18. · SecurityService

    Assegnare un ufficiale di prestito a un comando NOME-ONLY (prima e-mail / telefono)

    Il portale del mutuatario crea già il comando dell'istante un nome è dato, ma enterAssignmentPoolIfActionable ha mantenuto un solo nome piombo fuori del credito accetta piscina (un LO non poteva raggiungere un mutuatario senza contatto, quindi accettare appena bruciato un credito). Questa ragione non detiene più: un piombo chiamato superfici l' LO assegnato a il mutuatario in-portal (LoContactCard, e il prossimo widget LO/chat fuso), quindi un nome è di per sé un punto di contatto raggiungibile. Ammettere un nome portare alla piscina così un ufficiale può essere assegnato il più presto possibile — prima e-mail / telefono arrivare.

  19. · EmailService

    Inline-CID org logo (SVG->PNG) in modo da rendering in Gmail; rimuovere il contenuto del messaggio; preservare il caso From-domain

    - FIX (sicurezza): le e-mail di notifica non portano corpo del messaggio — rimuovere messaggioAnteprima da vars modello, registro, campioni e le impostazioni da attivare. - FIX (logo): i loghi di org sono SVG, che Gmail/most client rifiutano di rendere. EmailLogoService rasterizza l'org SVG a PNG (Batik) e lo incorpora inline via multipart/related (cid:emaillogo / emaillogomark), Redis-cached 24h, fetch concomitante, grazioso fallback al SVG URL su qualsiasi guasto. - FIX (Dal caso): displayCasedDomain riprende l'etichetta del marchio dall'org titolo (prefisso match, ccSLD-aware) in modo da leggere KamoCRM.com non kamocrm.com.

  20. · kamo-internal

    Missed-message email deep links, auth-continuity stash, illeggi la chat auto-popup, impostazioni di notifica

    DeepLinkToolBootstrap si apre ?openChat/?openTicket finestre degli strumenti (i parametri sopravvivono il login round-trip via una sessioneStorage stash catturato pre-auth e conservato attraverso la salvietta di /logout); AutoOpenUnread Chat pops unread chat sessioni una volta per tab-session (cap 6, chat-only, deep-link deduped); (email on/off, anteprima, ore tranquille) persistente notifica.email.messages via MemberUiPreference; sessioni/chat proxy ora inoltra il filtro categorie.

  21. · MediaService

    Notifiche e-mail di messaggio mancato (chat + supporto) con soppressione per-source

    Durable NATS consumatore chat-email-notifier su chat.session.> nutrire un MESSAGE EMAIL NOTICES ledger (PENDING/SENT, per-sender per chat, per-ticket per il supporto), 60s spazzare con cancello di presenza, ore tranquille, finestra digestiva, retry-with-backoff (fail chiuso). Email tramite i modelli EmailService con X-Internal-Auth; variabili HTML-escaped; Member-> Fallback email utente; destinatari mute-aware. Guardia improvvisa: l'impersonazione non scrive più presenza o cancella/crea i segnali di lettura. Abilitato per impostazione predefinita (chat.email.enabled=true).

  22. · EmailService

    Variabili del campione dell'editor per i modelli di notifica mancati

    Campioni di anteprima per MISSED CHAT MESSAGE e SUPPORT TICKET REPLY incl. raw vs. html-escaped sender/title varianti utilizzate dai corpi canonici.

  23. · kamo-shared-library

    Missed-message email notifica ledger + modelli canonici

    MessageEmailNotice entità (MESSAGE EMAIL NOTICES, unico destinatario+sourceKey+channel) con PENDING/SENT stati di soppressione, repository incl. sudo-safe markRead/ deletePendingRead, MISSED CHAT MESSAGE + SUPPORT TICKET REPLY modelli canonici (registrato in CANONICAL KEYS), mute-aware MediaSessionMuteRepository lookup.

  24. · EmailService

    Microsoft 365 mail tramite app Microsoft Graph (zero per-mailbox setup)

    Microsoft 365 mail ora legge / invia tramite app Microsoft Graph (Mail.ReadWrite/Mail. Invia autorizzazioni di applicazione) invece di IMAP — una app le credenziali copre tutte le caselle di posta attuali e future a livello di inquilino, quindi aggiungendo un mailbox in Kamo solo funziona: no New-ServicePrincipal, no per-mailbox sovvenzioni. GraphMailProvider (nuovo): Graph... inviare/disegnare/ricerca, adattando gli opachi ai numerici esistenti contratto tramite GraphMesssageIdService. Cartelle normalizzate a INBOX/Sent/Draft/ Junk/Trash/Archive tramite risoluzione id ben nota della cartella locale. Attachment $select utilizza il fileAttachment type-cast per contentId. - GraphMessageIdService (nuovo): uid sintetico a 52 bit stabile; upsert di gara-safe ON CONFLICT. - Microsoft365Provider: estende GraphMailProvider; la posta utilizza un solo Graph token (tentore dal dominio mailbox, creds dalla piattaforma Registro OAuth); Le operazioni di amministratore tengono il gettone delegato. - ProviderHtttpClient: sovraccarichi di tipo URI (no RestTemplate re-encoding) + binari getBytes. - MailProviderResolver: MICROSOFT 365 non costruisce più i cred IMAP (Graph self- autentica); rimosso ora-dead piattaforma-resolver cablaggio. KamoMail e gli altri provider IMAP (Exchange/Google/Zoho/IceWarp), il controller, metadati e frontend sono tutti invariati (contratto numerico-uid conservato). Ha bisogno della nuova tabella condivisa-lib (corsa diKI) e Graph Mail. ReadWrite + Mail. Invia autorizzazioni di applicazione + consenso amministratore sull'inquilino M365.

  25. · kamo-shared-library

    GraphMessageIdMap entità per Microsoft 365 Graph mail id mapping

    Le mappe opache Microsoft Graph messaggio ids a UID numerici sintetici stabili per mailbox, quindi Graph mailboxes flusso attraverso il contratto di posta numerico-uid esistente (controllori, thread/search/label metadati, frontend) senza modifiche. The uid sintetico è un hash a 52 bit tenuto all'interno della gamma JS safe-integer; un ON CONFLICT maniglie di allarme concomitante prima vista. Tabella aggiuntiva ********************** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *.

  26. · DaemonService

    Bump GENERATOR VERSION 7 — backfill fauna GBIF in tutte le città

    Il motore degli uccelli ora consuma il blocco della fauna, quindi riempilo ovunque: il riempire il lavoro re-disegna righe stanti a 24/min (città richieste dall'utente prima), così reale uccelli localmente comuni convergono attraverso ~14h mentre l'habitat-guild del motore fallback porta qualsiasi città non-sampled o GBIF-thin nel frattempo.

  27. · DaemonService

    Esempio di uccelli locali dal GBIF alla fauna della città

    FaunaClient (mirrors PetrologyClient): Avanzamento GBIF sfaccettato sulla classe Aves in un ~27km scatola intorno alla città → top ~10 specie per numero record → risolvere tassonomia (nome scientifico + comune, famiglia, ordine) + un peso di abbondanza normalizzato. Verificato reale & habitat-specifico (Tucson→Mourning Dove/Gila Woodpecker/Verdin/ Hummingbird di Anna; costa del Pacifico→Gull/cormorano occidentale; Everglades→Ibis bianca). Libero/aperto, nessuna chiave; la distribuzione degli uccelli non è nei dati della terra KamoUniverse. Filato in CitySceneSampler come additivo opzionale blocco `fauna`. Il portale uccello motore mappe famiglia / ordine → volo archetipo + silhouette client-side, quindi questo strato rimane una fonte di dati memorizzata nella cache. GENERATOR VERSION immutato: fauna atterra sulle città appena illuminate ora e si riempie di dosso quando il render navi motore (evita una spazzata GBIF prematura di 20k-city per i dati nulla disegna ancora).

  28. · DaemonService

    63 U.S.A.-Ecoregione firma flora overrides (completamente popolare i biomi)

    Le città all'interno di uno stato hanno guardato lo stesso perché la flora è venuta da soli 15 grossolani di default del biome (+1 Mojave override). Ora curate specie di vera firma per 63 ecoregioni statunitensi (RESOLVE): Sierra Nevada → sequoia gigante/ponderosa/pino di sugar; Costa di N.Cal → abete rosso/douglas costa; Valle Centrale → querce a valle/blu; Sonoran → saguaro/palo verde/ocotillo; Chihuahuan → agave/ ocotillo; Rockies → aspen/engelmann abete/lodgepole; Appalachian → pioppo in rovere bianco/tulipano/ hickory; Everglades → mangrove/cipresso/ palmosabale; Piney Woods → loblolly/longleaf; pianure → quercia rada/cotonwood; ecc. Così diverse ecoregioni di uno stato ora rendono distinte alberi. GENERATOR VERSION 6 → ri-campione.

  29. · DaemonService

    Petrologia (Macrostrat) + strade (.trf) + cascate (.hyf) — livellare i sistemi KamoUniverse

    GLiM non ha mai scaricato (PANGAEA 404s; KamoUniverse stesso cade di default litologia), quindi la petrologia viene dal Macrostrat globale geografico-mappa API: per-point Lithology → una classe rock grossolana Non e' vero. La rete stradale .trf e .hyf cascate sidecars sono stati cotti sul drive ma non utilizzati — ora il campione li legge anche: la strada più grande classe + bandiera non asfaltata vicino alla città, e la caduta della cascata più vicina. GENERATORE 2 → tutti i profili della città ri-sample.

  30. · DaemonService

    Campione della scena della città sulle piastrelle della terra KamoUniverse

    - EdtTile: lettore byte-exact per piastrelle EDT4 (Copernicus DEM + ESA WorldCover + WorldClim + HydroSHEDS + RESOLVE ecoregions + maschera oceanica), memory-mapped, offset legge per strato (KB per punto, non la piastrella 210MB). Verificato contro il reale N34 W117 Mojave tile. - EcoResolver: eco biomes.json (esportato verbatim da universal-world foliage.rs + eco table.rs) → per-ecoregion flora tavolozza. ECO 433 → Giosuè albero, nessuna duplicazione. - CitySceneSampler: coordinate → il documento di scena-fattore in versione (rilievo sotterraneo + SVE orizzonte silhouette, clima + Koppen, costa/river/lago distanza+azimuth, miscela terra-copertura a 1/5/15km, tavolozza della flora, densità costruita + dark-sky). Costruito i centroidi tornano all'ecoregione dominante nelle vicinanze. - CitySceneryFillService + CitySceneryFillCategoria professionale: drenaggio PENDING (e stante-generatore) file city scene profile su una zecca da 1 min. k8s: sola lettura /mnt/worldchunks earthdata montaggio (presente su entrambi i nodi), SCENERY ENABLED.

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