Changelog
Was ist neu?
Jede Verbesserung an der Plattform, wie sie geliefert wird.
· kamo-signer-monorepo
Locale-aware Datumsformatierung und pro Lokale Metadaten
· kamo-signer-monorepo
Sprachschalter in die Signer-Top-Bar hinzufügen
Endonym-beschriftete Menü über die 22 unterstützten Locales. Bewahrt die Abfrage Zeichenkette auf dem Schalter ?t= ist der einzige Anmeldedaten des Unterzeichners.
· kamo-signer-monorepo
Spiegellayout für RTL-Lokale via stylis-plugin-rtl
Die MUI Thema Richtung allein Flips Komponente Logik aber verlässt physikalische CSS-Eigenschaften unberührt, so Arabisch mit LTR-Abstand gerendert. Swaps die Emotion Cache-Taste und Plugins auf Richtung. Auch fügt stylis als direkte Abhängigkeit (bisher nur transitive über Emotion) und @types/stylis, da dieses Repo isoliert pnpm node-linker nicht lösen Phantom-Abhängigkeiten und stylis 4.2.0 Schiffe keine gebündelt Typ Deklarationen.
· kamo-signer-monorepo
Route der Unterzeichner unter /{locale" mit Next-intl Middleware
Fügt i18n/routing.ts (localePrefix immer), i18n/navigation.ts hinzu und mittelware.ts und verschwindet den Route Baum unter src/app/[locale]/. request.ts löst nun von der URL anstelle des kamo-locale-Cookies, Halten Sie die Deep-Merge-Englisch Fallback. Herausragende Signer-Links funktionieren weiter: die Middleware 307-redirects unvorheredierte URLs und bewahrt das ?t= Token.
· kamo-internal
Blinken Sie das Mail-Symbol, während eine ungelesene Anzeige angezeigt wird
Allein die ungelesene Plakette war in der oberen Bar leicht zu übersehen. NavItemButton gewinnt blinkIcon Requisite, die das Symbol pulsiert (und seine Abzeichen) - getrennt von der vorhandene "Blink", die nur den baler-alerten Punkt pulsiert und MailButton dreht es auf für so lange wie ungelesene Honors bevorzugt-reduziert-Bewegung.
· kamo-marketing
Starter bei 5 Benutzern gedeckelt, Business bei 25
Neupositioniert die veröffentlichten Sitzkappen auf /preis (und den Rechner, JSON-LD bietet, und llms.txt Zusammenfassungen) um das Abonnement Katalog: Starter 25 -" 5 Benutzer, Business 100 - 25 Benutzer.
· kamo-internal
MeridianLink Marktgeheimnis ist der Inbound-Sync-Service-Cedestial (per-LO Logins auf Mitgliedsprofil)
· kamo-internal
MeridianLink Lo loan-officer Anmeldescheinkarte auf Mitgliedsprofil + Lead-Button LO Vorwarn
Phase L3 des MeridianLink LOS Loan-Officer-Mappings (pro 3,4-3,6 der Design-Spezifikation): - Neuer LOS-credential Proxy ******************** und getippte Kunde ************ app/lib/los/los/types.ts) zur Verweisung von GET/PUT/DELETE/POST an SecurityService. - Neue "MeridianLink Loan Officer Access" SectionCard auf ************ direkt nach State-Based platziert Lizenzierung. Sichtbar nur, wenn das Mitglied eine NMLS-ID UND mindestens eine hat org Markt hat eine aktive MeridianLink-Verbindung; gated auf der bestehenden ************ Rechte. Eine Reihe pro Markt (Benutzername/secret/enabled/Status chip/Test); das Geheimnis ist nur Schreib- und nie zurückgegeben. - Lead-View Erstellen Anwendungstaste jetzt Vorwarnungen: wenn eine Leitung keinen LOS hat Anwendung noch und seine zugewiesenen Darlehen Offizier ist nicht verbunden MeridianLink, der Button ist deaktiviert mit einem Tooltip, der den LO benennt. nur auf Klick ausfallen. Vervollständigt MarketConfig mit losLoName/losLoLinked (defensive Defaults für ältere SecurityService Builds). Das Backend 422 bleibt die eigentliche Garantie.
· SecurityService
LO-scoped erstellen (block if unmapped) + Mitglied MeridianLink Anmeldeinformationen API + market-config LO Link Status
Phase L2 des MeridianLink Leiharbeitnehmer-Mapping-Designs (kamo-intern ******************** 3,-3.6), gebaut auf dem L1 Shared-lib Schema/Resolver (MarketLosUserCredential, ************ Alle SOAP verspottet (Verkäufer an Bord noch anhängig). - **************** schafft jetzt die Leihgabe AS die Leitung zugewiesen Darlehensbeauftragter über resolveAnstelle anstelle des gemeinsamen Dienstes der Verbindung Identität (gesperrte Entscheidung B: blockieren, nicht zurückfallen). Keine zugewiesene LO - 422; ein zugewiesenes LO ohne verlinkten MeridianLink-Benutzer - 422 mit einem handlungsfähigen Nachricht. Der bereits gelinkte 409 Check läuft jetzt vor der Verbindung/LO prüft, pro vorheriger Rezension, so dass ein doppelter Versuch nicht zurückgehen kann 403/422 vor 409. - Neu ************ ************ (GET/PUT/{marketId?/ DELETE/{marketId'/POST /{marketId'/test), gated like MemberStateLicensingController (STATE_LICENSING_VIEW/EDIT _OWN/_ALL, Gott Bypass). Verschlüsseln-auf-Write über PlatformSecretCipher, leeres Geheimnis hält der gespeicherte Chiffretext, hatCredential-only-Ansicht, Soft-Löge, Nie-Würfe Testaktion. - LeadController market-config gewinnt losLoName/losLoLinked, also die Lead-View Button kann vor dem Schlagen der 422 vor dem Schlagen der 422 vor warnen. - Fügt BaseLosController#unverzierbar (422 Helfer). TDD: 54 Tests im gesamten LeadLosControllerTest (erweitgeprüft), ************ (neu), und LeadControllerMarketConfigTest (ererzogen) - alles grün. L3 (kamo-interne UI + Proxy) ist separate Folgearbeit.
· kamo-shared-library
Per-member MeridianLink Anmeldeinformationen (MarketLosUserCredential) + resolveForMember + LO-scoped outbound push
· kamo-internal
Bulk E-Mail-Kampagnen UI - Grid, Editor, Anbieter-Register, führt Aktion
Fügt die org-Ebene Bulk-E-Mail-Marketing-Oberfläche unter /marketing/email hinzu: - Bulk Email Registerkarte (nach Social Media) + Kampagnen AG Grid Arbeitsbereich mit Live status/sent-vs-total zählt über STOMP (/topic/campaigns/{orgId]); behebt die Marketing Tab-Tab-Gatter/Aktiv-Logik für verschachtelte Routen. - Kampagnenredakteur (/Marketing/E-Mail/Kampagne): Quill komponieren Wiederverwendung der Signatur-Header/Fußsystem + Merge Token, Empfänger aus Datei-Upload (email-column map), Lead/account/application IDs (resolve endpoint) oder manuell Eintrag, ein Preflight Panel (Skip/opt-out/maskiert/ungültige Aufschlüsselung + CAN-SPAM Wachen), und senden/entwerfen/schicksal + drosseln (all-at-once / gleichmäßig / naturalisiert + Warm-up). Akzeptiert die Leads Bulk-E-Mail-Handoff. - Bulk E-Mail Provider Einstellungen Registerkarte (separate SMTP config + real Send Test E-Mail). - Leads: "Bulk E-Mail (N)" Aktion auf multi-select . Kampagne Editor. - Abteilungen: E-Mail + Telefon/Verlängerungsfelder; Verhaltenskennzeichnung: Firmen-E-Mail. - Client APIs (emailCampaignApi, BulkEmailProviderApi, EmpfängerResolveApi), verwenden Sie EmailCampaignsWebSocket Hook und die Sicherheitslösung Proxy-Route.
· SecurityService
Bulk-E-Mail Empfänger Auflösung + Abteilung Kontaktfelder
- ************ POST /api/security/marketing-email/ Empfänger/resolve macht Lead/Account/application IDs zu E-Mail-Empfängern. Gated on MANAGE_BULK_EMAIL; wendet Lead Contact Masking unter dem Absender an (maskierte führt still übersprungen), Account.acceptsMarketing Opt-in-Gate, Kreditnehmer E-Mail für Anwendungen, syntaktaktische Validierung, Cross-Source-Dedupe + eine vollständige Überspringen/count-Zusammenbruch. - DepartmentController: Einfädeln Sie die neuen E-Mail/Telefon/Erweiterung Anfragefelder in DepartmentService erstellen/aktualisieren.
· kamo-shared-library
Shared-lib-Unterstützung für Bulk-E-Mail-Empfänger Auflösung + Firmenkontakt E-Mail
- ************ KontaktEmail Zweigstelle (Firmenkontakt E-Mail editierbar über PUT /api/security/org, verwendet als Firmen-Skop-Kampagne Ausgehend) - ApplicationRepository: polymorpher Batch-Forderer (findByUidInAndOrganization_Id) um die E-Mail eines Antrags für die Wahlkampfempfänger zu lösen - AccountBorrowerPartyRepository: findByAccount_UidIn Batch-Fortsucher (keine N+1) Nur Additive; Pakete bereits abgedeckt von ****************
· EmailService
Bulk E-Mail Kampagne Backend - Anbieter, Disponent, Compliance, Echtzeit
Backend für Org-Level-Massen-E-Mail-Kampagnen, völlig unabhängig vom Alltag E-Mail-Anbieter, so kann es nicht gedrosselt / blockiert neben Business-Mail: - Bulk SMTP Provider (BulkEmailProviderService + BulkProviderController): verschlüsselt org Konfiguration Wiederverwendung von EmailProvidEncryptionService; real Send Test E-Mail (öffnet eine Live-SMTP-Sitzung und sendet). - Kampagne CRUD + Statusmaschine (KampagneService/Controller): Entwurf, Zeitplan, Senden-jetzt, Pause, Lebenslauf, stornieren, duplizieren; Empfänger materialisiert mit Entstauben, Unterdrückungs-Tagging, pro Empfänger Tokens abmelden; CAN-SPAM-Gate (Betreff + physische Adresse + -=1 Empfänger erforderlich, um Entwurf zu verlassen). - Drosselter Disponent (CampaignDispatcher @Scheduled): all-at-once / gleichmäßig-über-Fenster / eingebürgertes-Zurück-Zurück-Schritt über pro Empfänger nextReleaseIn (restart-safe), Aufwärmfahrrampe auf maxPerHour, Hard-Bounce --Auto-Suppress. - Compliance: SuppressionService, öffentlicher Ein-Klick RFC 8058 Abmelder (+ Listen-Unsubscribe-Header), Unterdrückung erneut bei Senden überprüft. - Echtzeit: Direkter STOMP Push zu /topic/campaigns/{orgId' + abonnieren org ChannelInterceptor (schließt Cross-Tenant-Themen-Exposition). - EmailSmtpService: additive extraHeader senden() Überlastung (Liste-Unsubscribe).
· kamo-shared-library
ECOA/FCRA nachteilige Mitteilung Gerüst + sättigen Zeit
Die gemeinsame Leertaste des Emissionsmechanismus ist die Hälfte des Ausgabemechanismus. ComplianceTimerService gewinnt ************ - Flips nur ARMED ECOA_AA Zeiter zu SATISFIED (verletzt COUNTEROFFER/INCOMPLETE_NOA und bereits zufrieden unberührt), so dass eine SENT-Aktions-Benachrichtigung kann die Reg B-Uhr schließen, während ein nicht gesendet bleibt ARMED für die Verletzung Sweep. Zwei kanonische E-Mail-Vorlagen - ADVERSE_ACTION_NOTICE (ECOA/Reg B + FCRA -615(a)) und RISK_BASED_PRICING_NOTICE (FCRA -615(h)/Reg V) - registriert in CanonicalTemplateLoader. Beide sind nur STRUKTURAL Gerüste: ein gestrichelt [[IHR COMPLIANCE-APPROVED ... ]] Platzhalter der Gläubiger-Anwalt füllt in, plus strukturierte Datenvariablen (Anmelder, Datum, Hauptgründe / Trigger). Kamo liefert keine operative juristische Mitteilung Prosa.
· kamo-internal
Master Machine Remote-Desktop Launcher hinzufügen (god-gated)
Dritter Ein-Klick-Desktop neben Linux/Windows: navRegistry-Eintrag (ComputerIcon), 'Master'-Ziel über openKamoDesktop + die SSO-Proxy-Route und Versand in allen drei Action-Handler.
· SecurityService
"Master"-Ziel für Master Machine SSO Deep-Link hinzufügen
buildAutoConnectUrl prägt jetzt eine Master-Maschinenverbindung (KAMO_GUAC_MASTER_HOSTNAME, Standard 192.168.4.46); in jedem Token für die Session-Werbesen enthalten. Geknügt mit dem KlusterServices bootstrap SQL.
· KlusterServices
"Master Machine" (kamo-dev-1) RDP-Gerät zu Guacamole hinzufügen
Local Kubuntu Workstation teilt seine Live-Sitzung Plasma/Wayland über RDP über KRdp. Fügt eine idempotent bootstrap SQL-Verbindung (192.168.4.46:3389, Salbei/Shad pw, security=any, ignore-cert, color-depth 24) und READ grant hinzu. Inklusive Design-Spezifikation.
· kamo-shared-library
Bulk-E-Mail Kampagne Stiftungen + Abteilung / Kontaktfelder
Fügt die Shared-Bibliothek Stiftung für Org-Level-E-Mail-Kampagnen hinzu: - OrgBulkEmailProviderEntity (abtäglichem Anbieter abgetrennt; UNIQUE org_id) - EmailCampaignEntity / EmailCampaignRecipientEntity (+ status/scope/throttle/ source enums) Modellierung der langlebigen pro-Empfänger-Selange-Selange - EmailSuppressionEntity (CAN-SPAM Unterdrückungsliste) - Abteilung: E-Mail + Telefon/Verlängern (EmbPhoneNumber) Kontaktfelder - Organisation: contactEmail (company-scope campaign From default) - RoleRightType: VIEW_BULK_EMAIL(175), MANAGE_BULK_EMAIL(176) unter MARKETING Alle neuen Pakete sitzen unter com.kamo.z.shared.email.* (bereits abgedeckt von KamoInitializer ************ Compiliert sauber.
· kamo-shared-library
STEWARD_TASK_ROUTED kanonische Vorlage
Die routed-decision Steward Benachrichtigung benötigt eine kanonische E-Mail Vorlage. Register STEWARD_TASK_ROUTED in CANONICAL_KEYS mit seinem json/html Paar; Körper trägt das Darlehen / Entscheidung / Ausnahme Kontext und ein Steward-queue Link. Inhalte sind org-autorierbar durch das vorhandene Vorlagensystem.
· SecurityService
Gateway-Relay zu prägen ein MERS MIN für ein Abschlusspaket
POST **************** Eigentum-geprüft (requirePackageOrg) so ein Steward Mints nur für ihren eigenen Mieter. Die Vorgeschaltet ist die 7-stellige MERS-Org-ID aus der MERS-Anbindung des Mieters in der Integrationen Registerkarte; ein 400 bedeutet, dass MERS nicht konfiguriert ist oder das Darlehen keine Kreditnummer hat.
· kamo-internal
Geburtsdatum auf Bleiansicht + Formular erstellen
Fügt ein "Datum der Geburt" Feld unter Primärkontakt auf /leads/view/[id] mit einem MUI DatePicker, das zuerst für das Jahr Netz öffnet (openTo=year, disableFuture, min 1900) - der intuitive Ablauf für Geburtsdaten - plus der gleiche Picker auf der Neu-Lead-Form. Datum Hin- und Rückfahrt über date-fns parseISO/Format (lokal, nein UTC off-by-one). Anzeige ist auf canViewContact datenschutzgated; Feld ist optional. Wires dateOfBirth durch Typen, LeadApi erstellen/aktual Wachen, und die Import-Wizard Feldliste.
· SecurityService
Akzeptieren und Gate Kontakt Datum-of-Geburt (DOB)
Karten "dateOfBirth" im manuellen Import- und Anbieter-Einführungsfeld-Schalter mit eine nachsichtige Multi-Format-Parlos (ISO plus gemeinsame US M/d/yyyy Formen; unparseable Werte lassen DOB unst statt werfen). Zählt DOB als Kontakt PII in requestTouchesContactInfo so Bearbeitung auf der Leitung eines anderen Mitglieds erfordert EDIT_LEAD_CONTACT_INFO_OTHERS. Unterstützt durch die neue Shared-lib Lead.dateOfBirth.
· kamo-shared-library
Zunichte machen Kontaktdatum der Geburt zu Blei hinzufügen
Fügt eine Kontaktebene "DatumOfBirth" (java.time.LocalDate, DATE-Spalte) hinzu base Lead: entity + Create/Update/LeadDTO (fromLead), kopiert in LeadService erstellen/aktualisieren und beide Hypotheken-Sub-Klasse konvertieren Helfer, so dass es überlebt eine Marktwechsel. Geverfolgen in der Lead-History Registry (Kontakt) und maskiert als PII in maskContactInfoFromAndthers. Null, kein Standard - sicherer ALTER ADD COLUMN.
· kamo-internal
Autor Dokument-Verforderungs-Verhaltensregeln von der Steward-Konsole
Die "Was Dokumente macht dieses Darlehens Notwendigkeit" Regel Matrix hatte keine Autorisierung Oberfläche. Dies fügt eine Dokument-Voraussetzung Regeln Abschnitt auf dem Dokument & Bedingungen Bildschirm (in die in die besitzen Bildschirm, nicht ein neuer Tab), wo ein Steward Listen, Autoren, und in den Ruhestand ihrer Mieter Overlay-Regeln. Die Hilfe kopieren ist ehrlich über Umfang: ein Overlay auf der Plattform Basislinie und die AUS/Agentur-Erkenntnisse (DU/LP/GUS), die die Quelle der Wahrheit bleiben; eine Regel kann nicht genehmigen eine Bedingung ausleihen oder klar, und nichts hier ist ein gesetzlicher Auftrag. Die Form bietet die 23 RequirementDriverType-Werte und ein Free-Text-Dok-Code (das Backend validiert es gegen den Org-Bildungskatalog und gibt eine klare Inline 400 zurück, wenn der Org nicht sammeln kann es keine Hardcoded-Dobliste). Eine Legal-Wand-Abzeichen und Block-Advancement vs advisory-Plakette Render auf jeder Regel; Ruhestand bestätigt zuerst.
· SecurityService
Relay document-quirement overlay-regule authoring
Staffeln POST/GET/Ruhestand auf ************ zu MLOSDocService, mit organisatorischId Server-Stempel von der Operator-Sitzung so ein Steward Autoren und listet nur die eigenen Mieter-Regeln.
· kamo-internal
Autor bedingte LLPAs aus dem Katalog Panel
Anpassungen konnten nicht von Kreditnehmer variieren: MlosAdjustmentCondition hatte keinen Schriftsteller, und die Preis-Engine behandelt eine Anpassung ohne Bedingungen als immer-Applies, so dass jede LLPA gefeuert für jeden Kreditnehmer und ein 780-FICO Kreditnehmer nahm den gleichen Treffer wie ein 620. Diese Form Autoren eine Anpassung zusammen mit den Bedingungen, die Gate es. Modelliert auf dem Lock-Policy-Formular im selben Panel: eine Rate-Blatt-Version id, der Preis Delta und Label, und eine wiederholbare Liste von Zustandszeilen (zugeordnet + Operator + numLow, mit numHigh, das nur für WISCHEN angezeigt wird. Der Client spiegelt die Server-Wächter - mindestens einen Zustand, eine gebundene auf jede Bedingung, beide Grenzen für ZWISCHEN mit niedrigen <= hoch . so eine schlechte Regel wird inline und nicht auf einer Rundreise gefangen.
· kamo-internal
E-Mail bei der Neuzuweisung einer Führung aus der Lead-View bestätigen
Die Zuordnungskarte weist nun über LeadApi.reassignLead um, die die Server-AntigBestätige-Flagzeichen. Bei einer Umwidmung an ein neues Mitglied der Toast liest "Assignment saved . {name" wurde per E-Mail benachrichtigt; auf einer No-Op oder Selbstauftretung (wo der Server nichts sendet) bleibt die einfache Bestätigung.
· SecurityService
E-Mail an den neuen Besitzer, wenn eine einzige Leitung neu zugewiesen wird
Spiegelt den Bulk-Pfad für die Lead-View-Verweisungskarte. Wenn PUT /leads/{id] versch wendet eine Führung zu einem anderen Mitglied, das Mitglied bekommt jetzt die gleiche LEADS_ASSIGNED E-Mail (Zähl 1) der Massenfluss sendet. Best-Effort - die Senden läuft nach der update commits und scheitert nie. Brände nur auf eine echte Umwidmung: überspringt No-Op spart, wo der Empfänger ist unverändert (so Editieren Kontakt info sendet nichts), und überspringt Selbstaufgabe ein Offizier behauptet, eine Führung durch Zuweisen an sich selbst hat keinen Grund, E-Mail sich selbst. Die Antwort trägt assigneeMitte, so dass die Benutzeroberfläche kann die neue bestätigen Besitzer wurde per E-Mail geschickt. Die Pre-Update-Leitung wird nun einmal geholt und sowohl für authz als auch für die vorherige-assigne Erfassung, statt nur innerhalb der Nicht-Gedicht authz Zweig.
· SecurityService
Relay bedingt-LLPA-Authornung
Relays POST ************ durch den org-stamping Schreibhelfer, also ein Steward-Autoren bedingte Anpassungen nur für ihren eigenen Mieter.

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