Changelog
Was ist neu?
Jede Verbesserung an der Plattform, wie sie geliefert wird.
· SecurityService
QC-Endpunkte + Vertrauen-gated Extraktion + Geschenk / Steuer liest
- QcController (/api/security/mlos/qc, LOS_VIEW_PIPELINE): Rezension in Warteschlange, Test Aktion (Bestätigung/Korrekt/reject), NDJSON Trainingsdatenexport, pro-doc-typ Genauigkeit. - Extraktion stempelt jetzt Vertrauen + doc Typ auf jede Tatsache und Gates der QC Zustand (-=0.85 Auto-Applies; unten wartet in der QC-Box). - Neue Extraktionsaufforderungen: Geschenkbriefe (Betrag + Spender; Art/Quelle injiziert), Steuererklärung / Klasse C Selbstständigkeit Einkommen (Selbstständige Flagge injiziert).
· kamo-shared-library
Vertrauensbegated QC Box + gekennzeichnete Trainingsdaten + Geschenk/Selbstbeschäftigung versöhnen
QC-Engine (Phase 4 Core): - VerifiedFact gewinnt erstklassige EXTRACTION_CONFIDENCE, DOC_TYPE_CODE, QC_STATE Spalten (QcState: ************ Versöhnung Jetzt gilt NUR Gate-Passing-Fakten (AUTO/CONFIRMED + Nicht-Extraktion); niedrig Vertrauen wartet auf Überprüfung, abgelehnt gilt nie, korrigiert wird ersetzt. - ExtractionCorrection = anhängende nur beschriftete Trainingsdaten (doc, field, AI-Wert + Vertrauen, menschliche Bodenwahrheit, Aktion). QcReviewService erfasst es auf jedem bestätigen/korrekt/reject, prägt ein ehrwürdiges OPERATOR_OVERRIDE auf eine Korrektur, und versöhnt sich. VerifiedFactRepository: QC-Warteschlange + überprüfte Korpus-Abfragen. Extraktionverbreiterung: - Geschenk.* Geschenkreihe (createGift hinzugefügt; kind=Cash Gift, source=Relative injected von doc-Typ; AI liest Betrag + Spender). Steuererklärung / Plan C - Selbstständige Beschäftigung (Beschäftigung.isSelfEmployed-Flagge vom Typ Doc).
· SecurityService
Extrakt aus dem Sozialleistungs-/Gehaltseinnahmen (SSA, Rente, Kindergeld)
Fügt Extraktionsaufforderungen für SSA_AWARD / PENSION / CHILD_SUP hinzu (AI liest das Brutto monatlicher Betrag + ein Label), und stempelt die OtherIncomeSource-ID deterministisch von der doc-Typ so Versöhnung landet eine echte OtherIncome Reihe. Rebuilds gegen die Shared-lib otherIncome Versöhnung Zweig.
· kamo-shared-library
Andere Einkommen versöhnen.* Fakten in OtherIncome-Reihen
Eriebt Tatsachenausgleich mit einem anderen Einkommen.* Zweig: Prämien-/Nutzendokumente (Sozialversicherung, Rente/Ruhestand, Kindergeld) landen eine echte OtherIncome Row mit einem abgebildeten OtherIncomeSource-ID + monatlichen Betrag. Idempotent auf (Kreditgeber, Quelle). Die Quelle ist eine deterministische Kartierung der Extraktor-Injektionen aus der Doku Typ - nie eine KI-Vermutung; die KI liest nur die Menge.
· SecurityService
Auto-klassifizieren Uploads, um falsche Papier-Uploads zu fangen
Eine billige LIGHT-Tier "Was ist dieses Dokument?" Pass auf der ersten Seite klassifiziert die hochladen Sie in eine grobe Familie und vergleicht sie mit dem Anspruchstyp. Auf Mismatch der Extrakt Antwort Flaggen (detectedType + typeMismatch) so dass die Kreditnehmer wird gesagt, "das sieht aus wie ein Kontoauszug" statt einer falschen Datei Stille herausholen nichts. Nur Beratung - Extraktion läuft noch.
· SecurityService
Auszug 12-Monats-Bankauszüge + schriftlich VOE
Widens Vision Extraktion zu zwei weiteren Kreditnehmer-Darc-Typen, die die bestehenden wiederverwenden Versöhnungsvokabular (Null Versöhnungsrisiko): BANK12MO liest sich als Aktivposten ab (asset.*), VOE_W liest Arbeitgeber + Brutto-Monatseinkommen (Beschäftigung*).
· SecurityService
Mehrseitige PDF-Dokumentenextraktion (Phase 2)
Der Vision Pfad war nur Image-URL, so dass ein Kreditnehmer mehrseitige PDF (Bank Aussage, Steuererklärung) konnte nicht gelesen werden. Nun: - VaultDocPublicController dient ?page=N durch die Darstellung der PDF-Seite zu PNG auf die Fliege (via ConversionService /Render-Seite) - Provider-Agnostiker, da viele Vision-Anbieter akzeptieren nur eine Bild-URL, nicht eine rohe PDF. Non-PDF/no-page Anfragen sind unverändert. Img-MinIO-Ladung faktoriert in einen gemeinsamen VaultDocLoader. - DocVisionExtractionService liest eine PDF-Seite für Seite (capped at 15), Vermischen Felder über Seiten, indem die höchste Vertrauenslesung der einzelnen Pfade. Ein einzelnes Bild wird immer noch als eine Seite gelesen (unverändertes Verhalten). - ConversionPageClient ruft ConversionService auf (reuses conversion.service.url).
· ConversionService
Full-res pro Seite PDF-Renderung für die Dokumentenextraktion
Fügt DocPageRenderService + POST /api/Umkehr/Render-Seite hinzu (Seite N - PNG unter 150 DPI, gedeckelt 300) und / Seite-Zählung. Dies ist der Lese-Qualität Begleiter der 300px Thunbnail-Pfad: die Kreditnehmer-Dokument Vision-Extraktion-Pipeline spaltet eine mehrseitige Erklärung/Rückkehr in eine lesbare PNG pro Seite, so dass jeder Vision-Anbieter (alle akzeptieren eine Bild-URL; nur einige akzeptieren eine rohe PDF) kann jede Seite lesen. Additiv - vorhandene Konvertierungsendpunkte unverändert.
· kamo-shared-library
Capture + vollständige SSN auf der Kreditnehmer-Anwendung verschlüsseln
Die Anwendungshaltung braucht die REAL Social des Kreditnehmers, nicht eine letzte-4 (ein Kreditgeber kann nichts mit 4 Ziffern auskommen. Borrower.ssnEncrypted existierte, war aber nie geschrieben - nur ssnLastFour wurde bevölkert. Nun: - BorrowerDTO gewinnt ein WRITE_ONLY (voll) Feld serialisiert zurück nach draußen; liest immer noch aussetzen nur ssnLastFour. - BorrowerSectionService verschlüsselt einen mitgelieferten vollständigen SSN in Ruhe (optional-injected SecretCipher - vorhanden in SecurityService, abwesend/booting-sicher in Kontexten wie KamoInitializer) und leitet das letzte-4 ab. Ein Pflaster, das SSN weglässt, wird jetzt erhalten der gespeicherte Wert, anstatt die letzte-4 abzuwischen. - ssnEncrypted/itinEncrypted @Size(32) -- 256 so GCM-base64 ciphertext passt die vorhandene 256-char-Spalte (keine Schemine-Änderung).
· SecurityService
Optionales ?phone= Reverse Lookup auf GET /api/security/Leads
Die Registerkarte softphone CRM löst eine aktive Anrufernummer zu einem Lead. Fügen Sie eine optionale Telefon RequestParam, das die Org-Leitliste durch kanonische Filter (letztes 10-stellige) Spiel gegen PHONE_PERSONAL/PHONE_WORK vor dem mageren LeadListDTO Projektion - keine PII-Verbreiterung, gleich unassigned-visibility gating als das ungefilterte Gitter.
· kamo-internal
Wire CRM-Integration zu echten Daten
Ersetzen Sie die Mock CRM-Tabart durch ein Live-Reverse-Phone-Lookup-Panel. - Lösen Sie die aktive Anruf-/Einwahlnummer zu einer CRM-Leitung über leadApi.searchByPhone (neues ?phone= Filter auf GET /leads). - Zeigen Sie die abgestimmte Führung: Kontakt, Status, Leihzahlen, zugewiesen Offizier; schnelle Aktionen Call / Open Lead / Log Note (media/posts) / Zeitplan Callback (wiederverwendet CallbackDialog); aktuelle Aktivität aus der Medien-Feed. - Fallback, wenn keine Lead-Matches: Adressbuch Kontakte, dann die internes Mitgliedverzeichnis (beide Client-Seite, Wiederverwendung vorhandener Daten Pfade), die als Personalausweis dargestellt werden. - Neue Helfer app/lib/phone.ts (kanonische Ziffern-Match) und app/lib/directoryLookup.ts.
· EmailService
Unterstützung "unblock für immer" Remote-Image-Zustimmung
Fügt eine Wildcard-Einwilligung hinzu (allowAll / isAlwaysAllowed), so dass sich ein Mitglied dafür entscheiden kann In jeder Nachricht werden externe Bilder angezeigt. Wiederverwendet die vorhandene Zustimmungstabelle über eine reservierte sentinel Message-id-Taste - keine Schemaänderung. Die POST /remote-image-consent endpoint akzeptiert scope=always für diese globale Wahl.
· kamo-internal
"für blockiert" Option für blockierte externe Bilder hinzufügen
Das Außenbild-Gate bietet nun zwei Aktionen: Unblock (diese Nachricht, als vor) und Unblock forever, die externe Bilder in jeder Nachricht zeigt Vorwärts gehen. Für immer freigeben ist hinter einem Bestätigungsdialog und persistiert Server-Seite (Cross-Device); eine Sendung blockiert andere offene Nachrichten sofort.
· SecurityService
Ein anderer bevorzugter Name schreibt eine neue Leitung
Ein wirklich anderer bevorzugter Name (vergleicht mit dem äußeren Abstand getrimmt) ist eine andere Person, so erstellen Sie eine brandneue Leerstelle statt Umbenennen Sie das bestehende - es wird die aktuelle Führung der GUID über findLeadByGuid's uid-desc Bestellung. Trivial Re-casing/spacing ("john" . " John" " "JOHN") nicht Gabel. Beangewandt auf den POST-Schaffe Pfad und den PATCH-Update-Pfad (der legal- name gate behält den gleichen bevorzugten Namen, so dass es nie Gabeln).
· MediaService
Erreichen Sie den EIGENEN Offizier des Kreditnehmers direkt, kein Unterstützung-Rechts-Gate
Drop die ACCEPT_SUPPORT_TICKETS Anforderung von assignToPreferredAgent: die Kreditnehmer zugewiesen Darlehen Offizier ist erreichbar, unabhängig davon, ob sie ein konfigurierter Support-Agent (die Mitglieder-ID wurde bereits als Lead-Venedig validiert Offizier in SecurityService). Halten Sie eine Org-Mitgliedschaft Kontrolle als Sicherheitsgurt so ein manipulierter Client kann eine Sitzung nicht an ein anderes org-Mitglied weiterleiten; unbekannt/cross-org IDs fallen auf die Standard-hängige Warteschlange zurück.
· APIService
Proxy GET /lo-präsenz für MediaService
Der Support-Session-Proxy gibt den rohen Körper bereits weiter, so dass das fusionierte Widget bevorzugtAgentMemberId erreicht MediaService unberührt. Fügen Sie die Anwesenheit Proxy so kann das Kreditnehmerportal abfragen, ob ihr zugewiesener Kreditbeauftragter online ist.
· MediaService
Direct-to-assigned-LO Routing + LO Präsenz Endpunkt
Macht das fusionierte LO/Chat-Widget des Kreditgeberportals: - ************ direkt-assigniert einen öffentlichen Chat Ticket zu einem SPECIFIC Agent (der Kreditnehmer zugewiesen Darlehen Offizier) statt die anstehende Warteschlange, wenn dieser Offizier ein berechtigter Support-Agent für das Thema ist (fügt sie zur Chat-Sitzung hinzu + benachrichtigt sie; zeichnet die Auswahl auf Round-Robin-Tracker). Fällt zurück, um zu Null zu sein, damit der Anrufer das Warteschlangenverhalten aufrechterhält. - ************ nimmt bevorzugtAgentMemberId und Routen zu diesem Offizier; nur pings die Org anstehende Warteschlange, wenn sie nicht geroutet. - PublicChatController: liest bevorzugtAgentMitgliedId aus dem Sitzungsgremium und fügt GET /lo-präsenz?memberId= . {online] (PresenceService.isOnline) so Widget zeigt den echten Online-Zustand des Offiziers und Auto-Cover mit KI, wenn weg.
· SecurityService
Entlare-LO-Mitglieds-ID + Telefon für direkten Chat + Präsenz
Das zusammengeführte LO/Chat-Widget muss (a) auf den zugewiesenen Beamten direkt in die Live-Support-Sitzung des Kreditnehmers und (b) frage die Live-Präsenz des Offiziers. Beide MediaService-Systeme Schlüssel auf der Mitglieder-ID, also /portal/assigned-lo jetzt kehrt loMemberId (die Aufnahme von Offiziers-Mitglieds-ID) und loPhone (von der User-Rekord) neben dem vorhandenen Namen/NMLS/E-Mail.
· SecurityService
Zuweisen Sie einem NAME-ONLY-Vorstand einen Kreditbeauftragten (vor E-Mail/Telefon)
Das Kreditnehmerportal erstellt bereits das Vorzeichen, sobald ein Name gegeben wird, aber enterAssignmentPoolIfActionable hat einen namenlosen Lead OUT of the Credit akzeptieren Pool (ein LO konnte nicht erreichen einen kontaktlosen Kreditnehmer, so akzeptieren nur brannte ein Gutschrift). Dieser Grund hält nicht mehr: ein benanntes Blei ähneln dem zugewiesenen LO der Kreditnehmer in-Portal (LoContactCard, und die kommenden zusammengeführten LO/Chat Widget), so ein Name ist selbst ein erreichbarer Kontaktpunkt. Geben Sie eine benannte führen in den Pool so ein Der Offizier kann so früh wie möglich zugeordnet werden - bevor E-Mail/Telefon ankommt.
· EmailService
Inline-CID org Logo (SVG-PNG), so dass es in Google Mail macht; entfernen Sie Nachrichteninhalte; bewahren From-Domain-Fall
- FIX (Sicherheit): Benachrichtigungs-E-Mails tragen keine Nachrichten-Körper messagePreview von template vars, ledger, Samples und den Einstellungen umschalten. - FIX (Logo): org-Logos sind SVG, die Gmail/die meisten Clients nicht zu machen verweigern. EmailLogoService rasterisiert die org SVG zu PNG (Batik) und bettet es inline über multipart/related (cid:emaillogo / emaillogomark), Redis-cached 24h, gleichzeitige holen, anmutige Rückgriff auf die SVG-URL auf jeden Ausfall. - FIX (Aus Fall): displayCasedDomain recaset das Markenetikett von der org Titel (Vorabstand, ccSLD-aware) so Von liest KamoCRM.com nicht kamocrm.com.
· kamo-internal
Verpasste-Nachricht E-Mail tiefe Links, Auth-Kontinuität Versteck, ungelesenen Chat Auto-Popup, Benachrichtigungseinstellungen
DeepLinkToolBootstrap öffnet ?openChat/?openTicket-Toolfenster (Params überleben die Login-Rundreise über ein sessionStorage-Stash vor der Aushung genommen und erhalten über /logout's wischen); AutoOpenUnreadChats knallt ungelesene Chat-Sessions einmal pro tab-Sitzung (Cap 6, Chat-only, Deep-Link entduped); Benachrichtigungen Einstellungen Registerkarte (email on/off, Vorschau, ruhige Öffnungszeiten) fortbestehende Mitteilung.eMail.message über MemberUiPreference; sessions/chat Proxy jetzt vorwärts Kategorien filtern.
· MediaService
Verpasste E-Mail-Benachrichtigungen (Chat + Support) mit pro Quelle Unterdrückung
Dauerhafter NATS-Konsum-Chat-E-Mail-Zahnvermerker auf chat.session. MESSAGE_EMAIL_NOTICES Ledger (PENDING/SENT, per-sender für Chat, pro Ticket für Unterstützung), 60er-Sweep mit Präsenztor, leise Stunden, Verdauungsfenster, Retry-with-backoff (fail geschlossen). E-Mails über EmailService Vorlagen mit X-Internal-Auth; HTML-entscaped Variablen; Member--Aser-E-Mail-Fitback; stum-aware Empfänger. Sudo-Wächter: Imitation schreibt Präsenz nicht mehr oder klärt/erzeugt Lesesignale. Eingesperrt (chat.email.enabled=true).
· EmailService
Editor Beispielvariablen für verpasste Meldungen
Vorschau-Samples für MISSED_CHAT_MESSAGE und SUPPORT_TICKET_REPLY inkl. Roh vs html-escaped sender/title Varianten, die von den kanonischen Körpern verwendet werden.
· kamo-shared-library
Verpasste E-Mail-Benachrichtigungsedger + kanonische Vorlagen
MessageEmailNotice Entität (MESSAGE_EMAIL_NOTICES, Uniquempemp +sourceKey+channel) mit PENDING/SENT Unterdrückungszuständen, Repository inkl. sudo-safe markRead/ deletePendingRead, MISSED_CHAT_MESSAGE + SUPPORT_TICKET_REPLY kanonische Vorlagen (registriert in CANONICAL_KEYS), mute-aware MediaSessionMuteRepository Lookup.
· EmailService
Microsoft 365 mail via Microsoft Graph app-only (Null pro Briefkasten-Setup)
Microsoft 365 mail jetzt liest/sendet durch Microsoft Graph App-only (Mail.ReadWrite/Mail.Send Anwendung Berechtigungen) anstelle von IMAP - eine App Anmeldeinformationen umfasst alle aktuellen und zukünftigen Briefkästen-weit, so dass eine mailbox in Kamo funktioniert einfach: kein New-ServicePrincipal, keine per-mailbox grants. - GraphMailProvider (neu): Graph ************ send/draft/search, Anpassung opaker Graph-IDs an die vorhandenen numeric-uid Vertrag über GraphMessageIdService. Ordner normalisiert auf INBOX/Sent/Drafts/ Junk/Trash/Archiv über locale-unabhängige bekannte Entdecker-ID-Auflösung. Attachment $select verwendet die DateiAnhang Typ-cast für contentId. - GraphMessageIdService (neu): stabile 52-Bit synthetische Uid; Race-Safe ON CONFLICT upsert. - Microsoft365Provider: erweitert GraphMailProvider; Mail verwendet eine App-only Graph Token (Letant aus der Mailbox-Domain, Creds von der Plattform OAuth Registry); admin ops halten das delegierte Token. - ProviderHttpClient: URI-typisierte Überlastungen (keine RestTemplate Re-Kodierung) + Binär-Government). - MailProviderResolver: MICROSOFT_365 baut keine IMAP-Credos mehr (Graph self- authentifiziert); entfernte jetzt-tote Plattform-Resolver-Verdrahtung. KamoMail und die anderen IMAP-Anbieter (Exchange/Google/Zoho/IceWarp), die Controller, Metadaten und das Frontend sind unverändert (numerisch-uid Vertrag erhalten). Benötigt die neue Shared-lib-Tab-Tabelle (KI-Lauf) und Graph Mail.ReadWrite + Mail.Senden Sie Anwendung Berechtigungen + Admin Zustimmung auf den M365 Mieter.
· kamo-shared-library
GraphMessageIdMap Unternehmen für Microsoft 365 Graph mail id Mapping
Karten undurchsichtige Microsoft Graph Message IDs zu stabilen synthetischen numerischen UIDs pro Mailbox, so Graph Mailboxen fließen durch den bestehenden numeric-uid Mail-Vertrag (Controller, Thread/Suche/Etikett-Metadaten, Frontend) ohne Änderungen. Die synthetische uid ist ein 52-Bit-Hut innerhalb JS Safe-Intger-Reich gehalten; ein Race-Safe ON CONFLICT upsert übernimmt gleichzeitigen Ersteinsicht. Additive Tabelle ************ - erstellt von KI, keine Datenmigration.
· DaemonService
Bump GENERATOR_VERSION 7 - Backfill GBIF-Fans in alle Städte
Der Vogelmotor verbraucht nun den Fauna-Block, also verfülle ihn überall: füllen Job re-drains abgestandenen Reihen bei 24/min (von Nutzern abfragte Städte zuerst), so real lokal-gemeinsame Vögel konvergieren über 14h, während der Motor der Habitat-Gilde-Gilte Fallback trägt in der Zwischenzeit jede noch nicht abgestempelte oder GBIF-düne Stadt.
· DaemonService
Beispiel vor Ort vereinsgewohnten Vögeln aus GBIF in die städtische Fauna
Fauna Client (Spiegel Petrology Client): GBIF Vorkommen Facette auf Klasse Aves in einem 27km Box um die Stadt - Top 10 Arten nach Rekordzahl - lösen taxonomy (wissenschaftlich + gebräuchlicher Name, Familie, Ordnung) + ein normalisiertes Überfüllgewicht. Echt & Habitat-spezifisch (Tucson-Mourning Dove/Gila Woodpecker/Verdin/ Annas Kolibri; Pazifikküste - Westlicher Gull/Kormorant; Everglades-White Ibis). Frei/offen, kein Schlüssel; Vogelverteilung ist nicht in den KamoUniverse Erddaten enthalten. Als optionaler Zusatzblock in CitySceneSampler verkabelt. Das Portal Vogelmotor Karten Familie/Bestellung - Flug Archetyp + Silhouette Client-Seite, so Diese Schicht bleibt eine dumme zwischengespeicherte Datenquelle. GENERATOR_VERSION unverändert: Fauna landet jetzt auf frisch gesampelten Städten und füllt sich auf der Beule, wenn das Putzen Motorschiffe (vermeidet eine vorzeitige 20k-City GBIF Sweep für Daten nichts zieht noch).
· DaemonService
63 US-ecoregion Signatur Flora überschreibt (voll besiedelt die Biome)
Städte in einem Zustand sah gleich aus, weil Flora aus nur 15 groben Biom-Ausfällen kam (+1 Mojave Override). Jetzt kuratiert echte Signatur Arten für 63 US-Ökoregionen (RESOLVE): Sierra Nevada - Riesenmawetma/ponderosa/Zuckerkiefer; N.Cal Küste - Küstenmamut- und Kochtaucher; Zentrales Tal - Tal/blaue Eiche; Sonoran - saguaro/palo verde/ocotillo; Chihuahuan - Agive/ ocotillo; Rockies - Esspen/engelmann Fichte/Lodgepole; Appalachian - Weißeiche/Taulippappel/ hickory; Everglades - Mangrove/Zypresse/Sabalpalme; Piney Woods - loblolly/longleaf; plains sparse bur Eiche/Baumwollholz; etc. So machen verschiedene Ökoregionen eines Staates jetzt unterschiedlich Bäume. GENERATOR_VERSION 6 - erneute Probe.
· DaemonService
Petrologie (Macrostrat) + Strassen (.trf) + Wasserfälle (.hyf) - Ebene der KamoUniverse Systeme
GLiM nie heruntergeladen (PANGAEA 404s; KamoUniverse selbst fällt zurück in die Default lithologie), also Petrologie kommt aus der Macrostrat Global geologic-map API: pro Punkt lithologische - eine grobe Felsklasse **************** ************ Das Straßennetz .trf Straßennetz und .hyf Wasserfall Sidecars wurden auf der Fahrt gebacken, aber ungenutzt - jetzt liest der Sampler sie auch: die größte Straße Klasse + unbefestigte Flagge in der Nähe der Stadt, und der nächste Wasserfall fallen. GENERATOR_VERSION 2 - alle Stadtprofile neu zu stichprobenartig.

Euer Universum wartet.
Fügen Sie Produkte hinzu, wann immer Sie möchten – keine Migration, keine neuen Anmeldungen.
Für immer kostenlos – keine Kreditkarte erforderlich