Changelog
Was ist neu?
Jede Verbesserung an der Plattform, wie sie geliefert wird.
· kamo-shared-library
Fügen Sie LeadCallback-Einheit, Status enum und Projektarchiv hinzu
Unterstützt das Lead-View-Callback-Feature: ein Lead-Besessene Callback-Rekord (PENDING/CONTACTED/CANCELED) abgesenkt leadUid, mit einem weichen Verweis auf das gespiegelte E-MailService Kalenderereignis.
· kamo-internal
Erstellen Sie eine Sitzung für Gruppen-Chats von memberIds geöffnet
ChatTool ignoriert props.memberIds: eine Gruppe offen kam mit einem leeren userId und keine SitzungGuid, so dass die 1:1 erstellenSession früh gerettet und die window hat nie eine Sitzung. Jetzt, wenn memberIds anwesend ist, ChatTool löst die Sitzung über POST /sessions/chat/find-or-create { memberIds . (derselbe Endpoint ChatBox's initialMemberIds-Pfad verwendet; das Backend fügt hinzu der Anrufer selbst). Die Mitgliederliste ist als stabil sortierter String so der Effekt nicht wieder auf Array-Identität, und die gelöste guid fließt durch das vorhandene Schreibback, so dass das Gruppenfenster GUID-verankert ist für dedup.
· APIService
Öffentliche Durchfahrt für E-Mail OAuth Provider Callback
Forward GET ************ zu EmailService sessionlos (Streifen auth, keine Umleitung folgen), Spiegelung der RingCentral OAuth Callback. Dies ist die bei Microsoft/Google/Zoho registrierte öffentliche Umleitung URI.
· EmailService
Behobene öffentliche Umleitung + Gateway-Forwarded Callback
Plattform E-Mail OAuth (Microsoft 365 / Google / Zoho) hatte keine gültige Öffentlichkeit umleiten URI: die Umleitung wurde von der Anfrage Host, die in prod abgeleitet ist die Cluster-interne Service-Adresse, und der einzige Callback-Handler war POST-only. Fügen Sie eine einzige feste, öffentlich zugängliche Umleitung URI für beide verwendet der Genehmigungsantrag und der Tokentausch und ein öffentlicher GET-Callback dass der Provider den Browser umleitet (Ord wird im Zustand durchgeführt, also keine Sitzung ist erforderlich). Gibt eine selbstschließende HTML-Seite zurück.
· kamo-internal
Gate Lead Contact-info durch Zuordnung + neue Datenschutzrechte
Spiegeln Sie die drei neuen CRM-Rechte. Auf der federführenden Detailseite, Maske/sperren Sie die Primärer Kontakt, Mailing Adresse und Adressenfeldes für Leads dem aktuellen Mitglied nicht zugeordnet, es sei denn, es hält die Ansicht/Bestellung Kontaktrechte (und, für nicht zugeordnete Leads, VIEW_UNASSIGNED_LEADS); Zustand Feld ist immer sichtbar. Schalten Sie die Zuordnungs-Pause umzuwidmieren zu ASSIGN_LEADS. Auf dem /bles Gitter, Gate die unzugeordnete Filteroption von VIEW_UNASSIGNED_LEADS, lassen Sie die jetzt leeren E-Mail/street-Filter und die E-Mail-Spaltenwert und zeigen Eigenschaft-vs-Mailing Zustand über einen Flip.
· SecurityService
Blei-Kontakt-Info-Datenschutzrechte durchsetzen
getAllLeads gibt jetzt die schlanke LeadListDTO zurück und versteckt nicht geordnete Leads von Mitgliedern ohne VIEW_UNASSIGNED_LEADS. getLeadById Masken Kontakt info (State erhalten) für Leitungen, die dem Anrufer nicht zugewiesen sind, es sei denn, sie Halten Sie VIEW_LEAD_CONTACT_INFO_OTHERS und 403s nicht zugeordnete Leads für diese fehlende VIEW_UNASSIGNED_LEADS. updateLead Gates manuelle Umwidmung (ASSIGN_LEADS) und Kontakt-Info-Edits ************ Zählen von Hypotheken-Immobilienfeldern nur, wenn sie tatsächlich geändert werden. Gott umgehst.
· kamo-shared-library
Blei Kontaktdaten Datenschutzrechte + Lean List DTO
Fügen Sie drei CRM-Rechte (161-163) hinzu: "Zu anderen unterzeichnet: Ansicht/Bearbeiten von Lead Kontakt Info" und "Unzureichende Leitungen anzeigen". LeadListDTO hinzufügen - ein schlanker Projektion für das /leads-Gitter mit keiner Kontaktinformation außer der Staatsfeld. ************ zum Strip-Telefon hinzufügen/ E-Mail/mailing+property Adresse (state erhalten) für gated Reader.
· kamo-register
Mitgliedstyp von den /member und /team Pfaden senden
/Team-Anmelder erstellen ein TEAM_MEMBER (erstelltes PROSPECT, anstehende Admin-Aktivierung); /member Anmeldungen erstellen einen MEMBER. RegisterFlow nimmt eine MemberType-Requisite, die von jedem Pfad geliefert wird Wrapper und enthält es in der Registeranforderung Körper; das Backend erstellt die passende Mitgliedschaftstyp.
· SecurityService
/team erstellt ein TEAM_MEMBER (PROSPECT), /member erstellt einen MEMBER
Öffentliche Registrierung ehrt nun das MitgliedType, das die Registerseite sendet (von der /member vs /team Pfad): /team erstellt ein TEAM_MEMBER als PROSPECT, also muss ein Admin sie aktivieren bevor sie sich anmelden können (per Login-Gate) und /member erstellt eine Basis MEMBER. Angewandt sowohl auf die neuen Benutzer- als auch die bestehenden Benutzer-Verkehrspfade über createRegistrationMembership(). Die SicherheitsProvider Spiegel ist unverändert (immer eine Basis-MEMBER, und übersprungen, wenn die Org ist seine eigener Sicherheitsanbieter). Früher hat jede Registrierung eine Basis MEMBER erstellt, so dass ein /Team-Bewerber landete als ein MEMBER und konnte dann nicht als Teammitglied über die UI hinzugefügt werden (409 bereits-ein Mitglied).
· SecurityService
Expose Team-Mitglied Arbeitstelefon-Erweiterung in Team-Mitglieder-Auftragnehmer
Der /leads Agent Filter benötigt die Work-Phone-Erweiterung zu Label-Optionen als "Name (ext 8080) " Die Erweiterung existiert bereits auf TeamMember (getPhoneWorkExtension) wurde aber nicht serialisiert - nur die nackte Nummer war.
· kamo-internal
Request-Support-Popup zeigt Eltern-Or-Verteilungsthemen
Punkt der Ticket-Schöpfung Thema Dropdown auf die neue /api/support/topics/verfügter Endpunkt (own-org + parent-shared topics) so dass Kinder-Org-Nutzer die Unterstützung ihrer Eltern über die Das von den Eltern konfigurierte Thema.
· MediaService
Oberfläche Eltern-Or geteilt Themen in Anfrage-Unterstützung Popup
Child-org-Nutzer konnten die gemeinsamen Support-Themen ihrer Eltern nicht sehen (zusgebenToOwnOrg=false) beim Antrag von Unterstützung, weil nur das Popup geholte Eigenorg-Themen. GET /api/support/topics/verfügbar hinzufügen (eigene + parent-shared, no MANAGE_SUPPORT gate) und fix getParentOrgTopics zu verwenden die korrigierte Abfrage zu AssignToOwnOrgFalse. Einreichung gegen eine elterliche Anteile Thema leitet bereits das Ticket über create Ticket zum Elternteil oder in die Eltern.
· SecurityService
Neues Kind orgs erben Sicherheit ihrer Eltern
Wenn Sie ein Kind org aus kamo-internal erstellen, stellen Sie den neuen org's SecurityProvider auf der parentor org's securityProvider (die org it's created under) anstatt es zuzulassen Standard für sich selbst. Paare mit der Datenverfüllung, die auf jeden bestehenden org zeigt securityProvider auf der Top-Level KamoCRM org, so dass die Mitgliedschaft Spiegelung engagiert sich für alle Orgs und ihre zukünftigen Kinder.
· kamo-login
Konto-verknüppelte Mitteilung auf ?linked=1 anzeigen
Wenn die Registrierung ein bestehendes Konto mit einem neuen Org verknüpft, wird es hier umgeleitet ?linked=1. Zeigen Sie "Sie haben bereits ein Kamo-Konto - wir haben diese Organisation hinzugefügt es. Melden Sie sich mit Ihrem vorhandenen Passwort an". und füllen Sie die E-Mail vor. Spiegelt die bestehenden ?email_verified Handhabung.
· kamo-register
Behandeln Sie kontogelinkte Antwort für bestehende Benutzer
Wenn die eingegebene E-Mail bereits zu einem ACTIVE-Konto gehört, verlinkt das Backend dieses org und gibt ACCOUNT_LINKED zurück. Routen Sie diese Benutzer direkt zur Anmeldung (?linked=1) anstelle des E-Mail-Verifizierungsflusses - sie melden sich mit ihrem bestehenden Passwort. Neue Benutzer und Platzhalter-Anmelden halten den Überprüfungs-E-Mail-Pfad.
· kamo-internal
Wire up Mitglied/Team-Mitglied erstellen + Prospekt-Gate UI
- Fügen Sie die fehlenden POST-Proxy-Routen /api/security/members/create und /create-team-Mitglied (diese 405'd vor, so Schöpfung nie das Backend erreicht). Status + JSON Körper passieren, so dass die Form 409 "bereits ein Mitglied" Wiederverwendung Handhabung funktioniert. - MemberCreateForm: Behebt das Statusfeld der Mitgliedschaft, in dem sich das schwimmende Label überlappt hat den Platzhalter "Status auswählen" (Schrumpfsetitik + eingekerbter OutlinedInput), und fügen Sie einen hinzu Beachten Sie, dass sich nur "Active" Teammitglieder anmelden können.
· SecurityService
Bestehende Benutzer wiederverwenden, Spiegel zu securityProvider, Gate-Team-Mitglied Anmeldung
Wiederverwendung (keine doppelten Konten für die gleiche Person): - MemberCreateController nutzt jetzt einen bestehenden Benutzer per persönlicher E-Mail case-INSENSITIVELY (war case-sensitive, fehlendes Vermächtnis-Mixed-Case-E-Mails). - SecurityController.register verwendet ein bestehendes Konto, statt immer zu erstellen ein neuer Benutzer: bereits ein Mitglied des org - . 409 ALREADY_MEMBER ("bitte anmelden"); bestehende ACTIVE Konto -- Link die org, halten Sie ihr Passwort, Rückgabe ACCOUNT_LINKED; unaktivierte Platzhalter (nie überprüft UND nie eingeloggt) - . behaupten Sie es mit dem Passwort eingegeben. Ein öffentliches Formular kann niemals das globale Passwort eines aktiven Kontos überschreiben. SicherheitsProvider Spiegel: - Sowohl interne Mitglieder/Team-Mitglieder-Erstellung als auch öffentliches Register rufen jetzt an **************** so dass auch jede neue Mitgliedschaft landet unter der SicherheitProvider org der org (als Basismitglied). Team-Mitglied Aktivierungs-Gate: - Login blockiert ein Teammitglied, dessen Mitgliedschaft Status != ACTIVE mit "Ihr Konto existiert, ist aber zu diesem Zeitpunkt nicht aktiv". Regelmäßige Mitglieder und aktive Teammitglieder gehen. Aushärteung der Org-Auflösung (X-Forwarded-Host-Geschwister): - getExternalProviders und PortalController.resolveOrg verwenden den Alias-Fallback-Rechenwagen und lassen Sie die getServerName() fail-open (fehlgeschlagen statt undicht auf die Plattform org).
· kamo-shared-library
SecurityProvider-Mitgliedsspiegel + Wiederverwendung/Patch-Vorarbeit
- **************** userId): Spiegel eines Benutzers der org's securityProvider org als Basismitglied (enttungen; no-op when the org sichert sich selbst oder der Benutzer ist bereits da). Unterstützt die Regel, dass jeder neue Die Mitgliedschaft landet auch unter der Plattform/Security-Provider org. - ************ käuflich unempfindlich, multiplicity-sichere E-Mail-Nachahmung für Cross-Orgie-Konto-Wiederverwendung (E-Mail ist nicht global eindeutig, so dass ein einzelner Optionsgeber werfen würde). - **************** stoppen RücksendesicherheitProvider auf sich selbst jede org-Bearbeitung (nur Backfill, wenn Null), so dass ein Kind org hält seine Verbindung zu der Plattform-Provider der Spiegel hängt davon ab.
· kamo-internal
Wire Tasks Registerkarte zu real Backend + löschen Aktion + Live-Zählung
Fügt die Next Proxy-Routen für /leads/{id'/tasks[/{taskId] hinzu (die Registerkarte getTasks/ addTask/updateTask/completeTask Calls waren 404ing), eine Löschaktion in der Task-Raster, und leitet die 'Open Tasks'-Statistik aus der Live-Aufgabenliste, so dass es bleibt aktuell als TASK_CHANGED-Ereignisse refetch Aufgaben.
· SecurityService
Leitungsaufgaben REST API + Echtzeit TASK_CHANGED
Implements das Backend die /bles/view Tasks Registerkarte wurde bereits aufgerufen, aber das nie existiert: GET/POST/PUT/DELETE ************ (LeadTaskController + LeadTaskService), org-bewacht wie die Lock-Endpunkte. Jedes create/update/löscht TASK_CHANGED emittiert, also Open Lead Ansichten live aktualisieren.
· kamo-shared-library
LeadTask-Einheit für leitende Follow-up-Aufgaben
Zurücks die Registerkarte /bles/view Aufgaben (bisher ein Frontend-only-Stub ohne Fortgehalten). LeadTask (Tabell LEAD_TASK) spiegelt die Frontend TaskItem-Form ************ + LeadTaskDTO und Projektarchiv. Task-Mutationen senden TASK_CHANGED auf dem bestehenden Lead-Ettime-Kanal.
· kamo-internal
Echtzeit-Datennetz + Live-Vorführansicht mit per-pane Edit Locks
/leads grid ist jetzt voll live über Websocket (NATS-STOMP): Zeilen addieren/entfernen/aktualisieren gegen den aktiven Filter automatisch und veränderte Zellen blinken einmal für andere Die Bearbeitungen der Mitglieder; der Dead Refresh Button wird entfernt. /leads/view/[id] gilt live Lead/History/Task/stats aktualisiert und gewinnt exklusive Edit-Locks pro Pane mit einem 'derzeit Bearbeitung' Dienstplan, Live-Countdowns und Auto-Speichern im Leerlauf/Disconnect. Fügt useLeadsRealtime Haken, leadLocksApi + Next Proxy-Routen, und ein wiederverwendbares MemberContactCard (Name + Arbeitserweiterung, Click-to-Call Softphone / Open-Chat). Lead-Updates verschmelzen null-konservieren, so dass teilweise Nutzlasten niemals leere Zellen sind.
· MediaService
Org-guard das /topische/bles/rt/{orgId' Echtzeit-Abonnement
Cross-Tenant SUBSCRIBE Wache für das neue Lead-Real-Time-Thema, Spiegelung der vorhanden /topic/social/feed guard: ein Mitglied darf sich nur zu seinem eigenen abonnieren org's Lead Stream. Der bestehende ************ schon gibt security.leads.rt.* an /topic/leads/rt/* weiter, so dass keine Relaisänderung erforderlich ist.
· SecurityService
Per-Panel Edit-Lock REST API + Auto-Save-Kehrer
Fügt /api/security/leads/{id'/locks **************** mit LeadLockService: exklusive Reservierung pro Pane, Draft-Puffering Herzschläge, die einen 5-Min-Leerlauf-TTL und einen geplanten Kehrkehrer zurücksetzen, der die gepufferten automatischen speichern Draft und Releases auf Leerlauf-Versuch oder Präsenz-Gnade Timeout. Idle-Versuch ist emittiert als absolute Epoche Milli s. Config unter lead.lock.* (configmap).
· kamo-shared-library
Echtzeit NATS Publishing + pro Pane Edit-Lock-Entität
Veröffentlichen org-scoped Lead-Events auf security.leads.rt.{orgId' (erstellt/ gelöscht mit Änderungsfeld-Tasten, Geschichte-anwendbar) so die /bles Gitter und /leads/view Seite kann live aktualisiert werden. **************** kehrt zurück die geänderten Registrierungsschlüssel, die verwendet werden, um die UI blinken zu fahren. Fügt die LeadPaneLock Entität (Tisch LEAD_PANE_LOCK, eindeutig (LEAD_UID,PANE)) und Repository zur Sicherung der exklusiven pro-Pane-Edit-Schösser; der Verlag sendet die Leerlauf als absolute Epochemiller (Zeitzonen-sichere Nummer) für den Countdown.
· kamo-internal
Integrieren Sie primäre Tabs in den Header auf verbleibenden Style A Seiten
Follow-up zum Style A-B Sweep, der Seiten abdeckt, die nicht durchlaufen Einstellungenansicht: - /kb: KbNavBar wird mit den Artikeln/Ressourcen/ Bewertungen Registerkarten integriert und die Neue Artikel-Aktion rechts ausgerichtet; Layout erhält den gemeinsamen radialen Hintergrund. - ************ der Mini-Halskopf + Allgemein/ Domains MUI Tabs zu einem Gradienten Helden Header mit integrierten Tabs. - /leads/view/[id]: Die primären Registerkarten bewegen sich in den HeaderBar-Gradiversen Header; der Inline-Status/Sub-Status-Editor wird an den Header angefügt rechts ausgerichtete Aktionen (gestylt für den Gradienten), anstelle des separaten tabs Karte.
· kamo-internal
Verlagern Sie unten Zählstangen in die Header über soziale, importiert Tabs
Wendet die Anbieter-Tab-Behandlung auf die Geschwister CRM-Einstellungen an, so dass die Standalone "x • y" Zusammenfassungsleiste am unteren Rand nicht mehr frisst Seite Immobilien: - Social Connections & Automated Imports: Header-Aktionen Bottom-Aalign und die die Anzahl der Linienstapel direkt über den Refresh + Add/Create Buttons. - Manual Importiert Sub-Tabs (Past Imports, Import Vorlagen): die linke des einsamen Refresh-Symbols (Space-zwischen), die untere Latte fallen lassen.
· kamo-internal
Verschieben Sie Hersteller/Produktzahl über die Header-Aktionen, Bottom-align Refresh + Vendor hinzufügen
Recapers die Seite Immobilien die Standalone unten Zusammenfassung bar verwendet, um beset besetzen die "x vendors • x products" Linie stapelt sich jetzt über der Aktion Buttons im Header, und die Tasten unten-ausrichten mit dem Titelblock.
· kamo-internal
Integrieren Sie primäre Tabs in den Seitenkopf (Style B) über Style A-Seiten
Jede Gradient-Helden-Seite, die ihre primären Tabs in einer separaten Karte wiedergegeben hat unter dem Header macht sie nun innerhalb des Gradienten-Headers selbst, passend /Konto und /support. - EinstellungenAnsicht: Tab-Leiste in den Gradienten-Header verschoben (umwandelt alle -23 / Settings/*-Seiten auf einmal); Hilfe-Spalte, headerAction, backHref, und die tab icon/glow/alignRight Extras erhalten; hideTitle behält immer noch seine Registerkarten. - /leads/reports: Berichte Tabs in den Header verschoben. - /commerce (PipelineView): pro-Markt-Tabs (mit vertikalen Symbolen) in die Header; Single-Market/onboarding Staaten unverändert.
· kamo-internal
Zurück Pfeil im Header kehrt zu /leads zurück
Fügen Sie einen optionalen BackHref/BackTooltip zu SettingsView hinzu, der ein Weiß macht Pfeil links vom Titel, und verdrahten Sie die CRM-Einstellungen Seite, um die Mitglied zurück zu /leads. Tooltip nutzt die vorhandene lokalisierte Leads.view.header.backToBrowser ('Back to Lead') String.

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