Jurnal de schimbări
Ce e nou.
Fiecare îmbunătățire a platformei, pe măsură ce se livrează.
· SecurityService
Criterii de evaluare a QC + extragere de încredere + citire cadou/taxă
- QcController (/api/security/mlos/qc, LOS VIEW PIPELINE): review, review acţiune (confirmă/corectă/rejectă), formare-export de date NDJSON, per-doc-tip precizie. - Extracția acum timbre de încredere + tip doc pe fiecare fapt și porțile statului QC (> 0, 85 auto- aplicaţii; mai jos aşteaptă în cutia QC). - noi factori de extracţie: scrisori cadou (suma + donator; tipul/sursa injectata), declaraţie fiscală / Schema C de venituri din activităţi independente (infuzat pavilion independent).
· kamo-shared-library
Cutie QC de încredere + date de formare etichetate + reconciliere cadou/autoangajare
Motorul QC (Pase 4 core): - Verificat Câştiguri reale de primă clasă EXTRACTION CONFIDENCE, DOC TYPE CODE, QC STATE Coloanele (QcState: ***************** Reconciliere acum se aplică DOAR faptele de trecere a porții (AUTO/CONFIRMED + non-extracție); scăzut încrederea așteaptă revizuirea, respinsă nu se aplică niciodată, corectată este înlocuită. - ExtractionCorection = apendice- only etichetate date de formare (doc, domeniu, valoarea AI + încredere, adevăr pământesc uman, acțiune). QcReviewService il captureaza pe fiecare confirmă/corectează/rejectează, mentează o operațiune de mare încredere pe o corecție, şi se împacă. FactifiedRepository: QC-queue + review-corps interogations. Extinderea extracției: - cadou.* → Cadou rând (creatGift adăugat; fel=Cash Gift, sursă=Relative injectate din tipul de doc; AI citește cantitatea + donatorul). declaraţie fiscală / Schema C → independentă Ocuparea forței de muncă (ocuparea forței de muncă.esteSelfAngajat pavilion de tip doc).
· SecurityService
Extragerea beneficiilor/veniturilor din beneficii (SSA, pensii, sprijin pentru copii)
Adaugă solicitări de extracție pentru SSA AWARD / PENSION / COPIL SUP (AI citește brut suma lunară + o etichetă) și timbrele OtherIncomeSource id deterministic De la tipul de doctor, astfel reconcilierea aterizează un adevărat rând OtherIncome. Reconstruiește împotriva o altă ramură de reconciliere.
· kamo-shared-library
Reconcile otherIncome.* facts in OtherIncome rows
Extinde reconcilierea faptelor cu un altIncome.* sucursală: documente de atribuire/beneficii (Securitatea socială, pensia/pensiul, pensia pentru copii) terenuri un adevărat rând OtherIncome cu o altăIncomeSource cartografiată id + suma lunară. Izbăvitor sursa). Sursa este o cartografiere deterministă a extractorului injectat de la medic. tastaţi .
· SecurityService
Clasifică automat upload-urile pentru a captura upload-uri de documente greșite
Un LIGHT-tier ieftin "Ce este acest document?" trece pe prima pagină clasifică uploadează într-o familie aspră și o compară cu tipul afirmat de cerință. În cazul nepotrivirii steagurilor de răspuns la extract (detectedType + typeMismatch) astfel încât împrumutatului i se spune "asta arată ca un extras bancar" în loc de un dosar greşit. Nu extragem nimic în tăcere. Advisory only .
· SecurityService
Extras extrasele bancare de 12 luni + VOE scrise
Lărgeşte extracţia vederii la încă două tipuri de doctori debitori care reutilizează tipurile existente vocabularul reconcilierii (riscul de reconciliere zero): BANK12MO este un activ declarația (activ.*), VOE W citește angajator + venitul lunar brut (angajare.*).
· SecurityService
Extragerea de documente PDF pe mai multe pagini (faza 2)
Calea de vedere a fost doar imagine-URL, astfel încât PDF multi-pagină unui împrumutat (bank declaraţia, declaraţia fiscală) nu puteau fi citite. Acum: - VaultDocPublicController servește ?page=N prin redarea că pagina PDF la PNG pe zbura (prin TransformationService /render-page) Furnizorii vizuali acceptă doar un URL de imagine, nu un PDF brut. Non-PDF/fără pagină cererile sunt neschimbate. Img→MinIO încarcă factor într-un seif comunDocLoader. - DocVisionExtractionService citeste un PDF page-by-page (capat la 15), fuzionarea Câmpuri peste pagini prin păstrarea cea mai mare încredere lectură a fiecărei căi. O singură imagine este încă citită ca o pagină (comportament neschimbat). - ConversiePageClient calls ConversionService (reuseste conversie.service.url).
· ConversionService
Reducere completă pe pagina PDF pentru extragerea documentelor
Adds DocPageRenderService + Post /api/conversion/render-page (pagina N → PNG la 150 DPI, plafonate la 300) și/număr de pagini. Acesta este partenerul de calitate citit la Traseul de 300px miniatură: conducta de extragere-vision-document împrumutat se împarte a declarație multipagină/returnare într-un PNG lizibil pe pagină, astfel încât orice furnizor de viziune (toate acceptă un URL imagine; doar unii acceptă un PDF brut) poate citi fiecare pagină. Etapele de conversie existente sunt neschimbate.
· kamo-shared-library
Captură + criptare SSN completă a cererii de împrumut
Postura de aplicare are nevoie de Real Social împrumutatului, nu un ultima-4 (un creditor nu pot face nimic cu 4 cifre). Browner.snEncrypted existed but was never scris numai ssnLastFour a fost populat. Acum: - BrownerDTO câștigă un SCRIE ONLY serializate înapoi afară; citește încă expune doar ssnLastFour. - BrownerSectionService criptează un SSN complet furnizat în repaus (injectat opțional) SecretCipher KamoInitializer) și derivă ultimul-4. Un plasture care omite SSN păstrează acum valoarea stocată în loc să se șteargă ultimele-4. - ssnEncrypted/itinEcripted @Size(32) -> 256 so GCM-base64 ciphretext se potrivește coloana 256-char existentă (fără modificări ale schemei).
· SecurityService
Opțional ?telefon= căutare inversă pe GET /api/securitate/conduceri
Fila Softphone CRM rezolvă un număr de apelant activ la o pistă. Adaugă o opțional telefon CerereParam care filtrează lista de plumb org prin canonică (ultima zece cifre) meciul împotriva PHONE PERSONAL/PHONE WORK înainte de slab Proiecţia LeadListDTO - nici o extindere a PII, aceeaşi invizibilitate nealocată Gateling ca grila nefiltrat.
· kamo-internal
Wire CRM Integrare fila la date reale
Înlocuiți fila MASH CRM cu un panou de căutare telefonic-reverse live. - Rezolvaţi numărul apelului activ / dialpad la o pistă CRM prin leadsApi.searchByPhone (nou ?phone= filtru on GET / leads). - Arată plumbul potrivit: contact, stare, cifre de împrumut, atribuit ofițer; acțiuni rapide Call / Open Lead / Log Note (media/posturi) / Program Callback (reutilizat CallbackDialog); activitate recentă din Mass-media. - Fallback atunci când nu meciuri de plumb: adrese-book Contacte, apoi director intern membru (ambele client-side, reutilizarea datelor existente căi), prezentate ca o carte de identitate. - Noi aplicaţii de ajutor/lib/phone.ts (se potrivesc cifre canonice) şi app/lib/dosareLookup.ts.
· EmailService
Suport "deblocare pentru totdeauna" de la distanță-image consimțământul
Adaugă un consimțământ wildcard (All / is AlwaysAlowed) astfel încât un membru poate opta pentru afişează imagini externe în fiecare mesaj. Reutilizează tabelul de consimţământ existent prin intermediul o cheie Santinelă rezervată santinelă-id mesaj POST /remote-image-consent final acceptă domeniul de aplicare=întotdeauna pentru această alegere globală.
· kamo-internal
Adaugă opțiunea "deblocare pentru totdeauna" pentru imagini externe blocate
Poarta de imagini externe oferă acum două acțiuni: Deblocare (acest mesaj, ca înainte) și Unblock pentru totdeauna, care afișează imagini externe în fiecare mesaj Înaintează. Deblocare pentru totdeauna este poarta în spatele unui dialog de confirmare și persistă partea laterală a serverului (dispozitiv transversal); o transmisie deblochează alte mesaje deschise Imediat.
· SecurityService
Un nume diferit preferă o nouă pistă
Un nume preferat cu adevărat diferit (în comparație cu cazul insensibil cu exterior spațiere decupat) este o persoană diferită, astfel încât să creeze un nou-nouț plumb în loc de redenumirea celui existent devine liderul actual al GUID prin gindLeadByGuid's Uid-desc comanda. Trivial re-casing/spacing ("john" ↔ " John " ↔ " JOHN") nu Furculiţa. Aplicat atât la POST crea calea și calea de actualizare PATT (juridic- numele poartă păstrează același nume preferat, astfel încât nu furculițe).
· MediaService
Ajunge la ofițerul propriu împrumutatului direct, nici o poartă de sprijin-dreapta
Drop the ACCEPT SUPPORT TICKETS requirement from asignationTo PreferateAgent: the Ofițer de împrumut atribuit împrumutatului este accesibil indiferent dacă acestea sunt un agent de sprijin configurat (id-ul membru a fost deja validat ca plumb ofițer în Serviciul de Securitate). Păstrați un control de membru org ca o centură de siguranță astfel încât Clientul falsificat nu poate direcţiona o sesiune către alt membru al orgului; necunoscut/cross-org ID-urile se retrag la coada implicită în așteptare.
· APIService
Proxy GET /Lo-prezență la MediaService
Procurorul de suport-sesiune transmite deja corpul brut, astfel încât widget-ul fuzionat Preferat AgentMemberId ajunge MediaService neatins. Adaugă proxy-ul de prezență astfel portalul împrumutatului poate întreba dacă ofițerul de credit desemnat este online.
· MediaService
Traseu direct-la-alocat-LO + obiectiv de prezență LO
Powers portalul împrumutatului fuzionat LO / chat widget: - *************** transmite direct un chat public bilet către un agent SPECIFIC (funcționarul de împrumut desemnat al debitorului) în loc de coada în curs, atunci când agentul respectiv este un agent de sprijin eligibil pentru acest subiect (se adaugă la sesiunea de chat + le notifică; înregistrează alegerea tracker rotund-robin). Cade înapoi la nul astfel încât apelantul păstrează comportamentul cozii. - *************** Acceptă agenţii preferaţi rutele către acel ofițer; numai ping-urile org-ului în așteptare atunci când nu sunt direcționate. - PublicChatController: citește preferatAgentMemberId din corpul de sesiune și adaugă GET / lo-prezence?memberId= → {online} (PresenceService.isOnline) astfel încât widget arată starea reală on-line ofițerului și auto-coperte cu AI atunci când departe.
· SecurityService
Expuneți membru desemnat-LO id + telefon pentru chat direct + prezență
Widget-ul LO/chat fuzionat trebuie să (a) vizeze ofițerul atribuit direct în sesiunea de suport live a debitorului și (b) solicită prezența în viață a ofițerului. Ambele sisteme MediaService cheie pe ID-ul membru, deci /portal/asigned-lo acum returnează loMemberId (Id-ul responsabilului cu acceptarea) și loPhone (din recordul de utilizator al ofițerului) alături de numele/NMLS/email-ul existent.
· SecurityService
Atribui un ofițer de credit la un nume-ONLY plumb (înainte de e-mail/telefon)
Portalul împrumutatului creează deja plumbul în momentul în care se dă un nume, dar enterAsignmentPoolIfActionable pastrate un nume-doar plumb din credit accept piscină (un LO nu a putut ajunge la un debitor contactless, deci acceptarea doar ars o credit). Acest motiv nu mai deține: o suprafață de plumb numită LO atribuită împrumutatul în port (LoContactCard, și widget-ul LO/chat care vine fuzionat), astfel încât un nume este el însuși un punct de contact accesibil. Recunoaste un nume duce la piscina astfel încât o ofiţerul poate fi desemnat cât mai repede posibil înainte de e-mail / telefon ajunge.
· EmailService
Sigla Inline-CID org (SVG-> PNG) astfel încât să redă în Gmail; eliminați conținutul mesajului; păstrați caz din domeniu
- FIX (securitate): e-mailuri de notificare transporta nici un mesaj organism messagePreview din șablon vars, registru, probe și comutarea setărilor. - FIX (logo): logo-urile org sunt SVG, pe care Gmail/majoritatea clienţilor refuză să le redea. EmailLogoService rasterizes the org SVG to PNG (Batik) and incorporads it inline prin multipart/asociate (cod:emaillogo / emaillogomark), Redis-cached 24h; Aport concomitent, retur grațios la URL-ul SVG pe orice eșec. - FIX (De la caz): afisajCasedDomain recases the brand etichete from the org titlu (prefix meci, ccSLD-aware) astfel încât De la citește KamoCRM.com nu kamocrm.com.
· kamo-internal
Mesaj pierdut e-mail link-uri profunde, Auth-continuity stash, necitit chat auto-popup, setări notificare
DeepLinkToolBootstrap deschide ?openChat/?openTicket ferestre instrument (params survive login rotund-trip printr-o sesiuneStorage stash capturat pre-aut și conservate pe șervețel /logout); AutoOpenUnread Chats pops sesiuni de chat necitite o dată per sesiune tab (cap 6, chat only, deep-link deuped); Setări de notificări fila (email on/off, preview, quiet hour) persisting notification.email.mesage via MemberUiPreference; sesiune / proxy chat transmite acum categoriile filtru.
· MediaService
Notificari e-mail ratate (chat + suport) cu suprimare pe sursa
Comment Registrul MESAJ EMAIL NOTICES (PEND/SENT, per-sender for chat, per-ticket) pentru sprijin), 60s matura cu poarta de prezență, ore liniștite, fereastra digera, Reîncercarea cu spatele (închidere eșuată). E-mailuri prin e-mailservice șabloane cu X-Normal-Auth; variabile HTML-escaped; Membru-> Retragere prin e-mail a utilizatorului; destinatari mut-conștient. Gardieni Sudo: personificarea nu mai scrie prezența sau șterge/creează semnale de citire. Activat implicit (chat.email.enabled=real).
· EmailService
Variabile ale eșantionului editorului pentru șabloane de notificare a mesajelor omise
Mostre de previzualizare pentru MISSED CHAT Mesage și suport TICKET REPTly inclusiv prime vs Variante de expeditor/titlu html escape utilizate de corpurile canonice.
· kamo-shared-library
Registrul de notificare prin mesaj ratat + șabloane canonice
MesajEmailentitate Notice (Mesage EMAIL NOTICES, destinatar unic+sourceKey+canal) cu stări de suprimare PEND/SENT, inclusiv marca sudo-safeRead/ ȘtergerePendRead, MISSED CHAT Mesaj + AJUTOR TICKET REPLY șabloane canonice (înregistrat în CANONIC KEYS), audio-video-violet-conştient Sesssion MuteRepository lookup.
· EmailService
Microsoft 365 mail via Microsoft Graph app- only (zero per-mailbox setup)
Microsoft 365 mail acum citește/trimite numai prin aplicația Microsoft Graph (Mail.ReadWrite/Mail. Trimite permisiuni de aplicare) în loc de IHAP Credențial acoperă toate cutiile poștale curente și viitoare la nivel de chiriaș, astfel adăugând un căsuţa poştală din Kamo funcţionează doar: fără New-ServicePrincipal, fără subvenţii pe e-mail. - GraphMailProvider (nou): Graf ***************** trimite/proiect/cercetare, adaptând id-uri grafice opace la datele numerice existente contract prin GraphMessageIdService. Dosare normalizate la INBOX/Sent/Drafts/ Junk/Trash/Archive via local-independent bine-cunoscută rezoluție id firul. Atașament $select folosește fișierulAtaşament de tip-cast pentru conținutId. - GrafMessageIdService (nouă): uid sintetic stabil de 52 de biţi; siguranţă rasială pe upsert CONFLICT. - Microsoft365Provider: Extinde GraphMailProvider; Mail folosește un grafic unic pentru aplicații token (tenant din domeniul cutiei poștale, crezuri din registrul platformei OAuth); Admin Ops păstrează semnul delegat. - FurnizorHttpClient: suprasarcină tip URI (fără recodare RestTemplate) + getBytes binar. - MailProviderRezolvator: MICROSOFT 365 nu mai construiește crezuri IMAP (Graph sine- autentificarile); eliminarea cablurilor acum moarte-rezolvator platforma. KamoMail și ceilalți furnizori IMAP (Exchange/Google/Zoho/IceWarp), controler, metadate, și frontend sunt toate neschimbate (numeric-uid contract conservate). Are nevoie de noua masă comună (KI run) și Graph Mail. ReadWrite + Poşta. Trimite permisiuni de aplicare + consimțământ admin pe chiriaș M365.
· kamo-shared-library
PersonalMessageIdMap entity for Microsoft 365 Graph email id mapping
Hărți opace Microsoft Graf mesaj ID-uri pentru IU-uri sintetice numerice stabile per căsuţa poştală, aşa că cutiile poştale grafice trec prin actualul contract numeric-uid (controlere, metadate filet/de căutare/etichetă, frontend) fără modificări. ă uid sintetic este un hash de 52 de biți păstrat în intervalul JS seif-integer; un sistem de siguranță pentru curse Pe upsert conflict se ocupă de prima vedere concomitentă. Tabel de aditivi ******************* creat de KI, fără migrarea datelor.
· DaemonService
GENERATOR Bump VERSION 7
Motorul păsărilor consumă acum blocul faunei, aşa că umple-l peste tot: completați rândurile vechi re-scurgeri la 24/min (orașul solicitat de utilizator mai întâi), atât de reale pasarile comune locale converg peste ~14h in timp ce habitatul-guild a motorului Retragerea are între timp orice oraș neincluși în eșantion sau sub GIF.
· DaemonService
Mostră de păsări comune la nivel local din GBIF în fauna orașului
FaunaClient (miroare PetrologieClient): GBIF aspect apariție pe clasa Aves in a ~27km cutie în jurul orașului → top ~10 specii de înregistrare număr → rezolva taxonomie (științific + nume comun, familie, ordine) + o greutate de abundență normalizată. Certified real & habitat-specific (Tucson→Mourning Dove/Gila Woodpecker/Verdin/ Anna's Hummingbird; Pacific coast→ Western Gull/cormorant; Everglades→White Ibis). Liber/deschis, fără cheie; distribuția păsărilor nu este în datele KamoUniverse despre Pământ. Wired în CitySceneSampler ca un aditiv opţional blocul Portalul arhetip de zbor + silueta client-side, deci Acest strat rămâne o sursă de date prost. GENERATOR VERSIUNE nemodificată: fauna terenuri pe orașe proaspăt incluse acum și backfills pe cucui atunci când redă navele motoare (evită o verificare GBIF prematură de 20k-oraș pentru date pe care nu le extrage încă).
· DaemonService
63 US-ecoregion semnatura flora suprascrie (popula pe deplin biomes)
Oraşele dintr-un stat arătau la fel pentru că flora provenea de la doar 15 biome brute. (+1 suprascriere Mojave). Specii de semnături reale curatate pentru 63 de ecoregiuni americane (RESOLVE): Sierra Nevada → sequoia gigant/ponderosa/zgura de pin; coasta N.Cal → coasta de lemn roșu/duglas brad; Central Valley → Valley/Blue Oak; Sonoran → saguaro/palo verde/ocotillo; Chihuahuan → agave/ ocotillo; Rockies → aspen/engelmann spruce/lodgepole; Apalachian → stejar alb/tulip plop/ hickory; Everglades → mangrove/cypress/sabal palm; Piney Woods → loblolly/longleaf; câmpii → sărăcăcios de stejar/bumbac; etc. Deci ecoregiuni diferite ale unui stat fac acum distincte copaci. Generator VERSIUNE 6 → re-probă.
· DaemonService
Petrologie (Macrostrat) + drumuri (.trf) + cascade (.hyf)
GLIM nu a descărcat niciodată (PANGAEA 404s; KamoUniverse însuși cade înapoi la implicit litologie), astfel încât perologia vine de la macrostrat global geologic-map API: per-punct Litologia → o clasă de rock aspru ************* - Nu. Reţeaua rutieră .trf şi .hyf cascada ataşate au fost coapte pe unitatea, dar neutilizate acum eșantionor le citește prea: cel mai mare drum clasa + steag nepavat lângă oraș, și cea mai apropiată picătură cascada lui. VERZIUNE GENERATOR 2 → toate profilurile orașului re-eșantion.

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