Changelog
Co nowego.
Każde ulepszenie platformy, jak to wysyła.
· kamo-internal
Utwórz sesję dla czatów grupowych otwartych przez memberIds
ChatTool zignorował rekwizyty.memberIds: grupa otwarta z pustą userId i brak sesjiGuid, więc 1:1 creates bać się wcześnie i Okno nigdy nie dostało sesji. Teraz, gdy memberIds jest obecny ChatTool Udziela sesji za pośrednictwem POST /sessions/chat/find-or-create ? memberIds (w tym samym punkcie końcowym używa się pierwszej ścieżki ChatBox; backend dodaje Sam rozmówca). Lista członków jest kluczowana jako stabilny posortowany ciąg znaków, więc Efekt nie na nowo natrzał na identyfikację tablicy, a rozwiązane przepływy przewodowe Za pomocą istniejącego zapisu, aby okno grupy było zakotwiczane w GUID Dedup.
· APIService
Przejść publiczny dla wiadomości e-mail OAuth callback
Przewiń GET - do sesji EmailService bezzaowo (paski auth, brak przekierowania), odzwierciedlając oddzwoń RingCentral OAuth. Jest to stały publiczny przekierowanie URI zarejestrowane w Microsoft/Google/Zoho.
· EmailService
Naprawiono publiczne przekierowanie + zwrotne z powrotem na bramę
Poczta elektroniczna Platformy OAuth (Microsoft 365 / Google / Zoho) nie miała ważnego miejsca publicznego przekierowanie URI: przekierowanie pochodziło z hosta wniosku, który w prod Jest to adres służby współżytku klastra, a jedynym operatorem callback był Tylko na nie. Dodaj pojedynczy stały, osiągalny publiczny przekierowanie URI używany dla obu Wniosek o pozwolenie i wymianę tokenów oraz publiczne oddzwonień GET Na adres dostawca przekierowuje przeglądarkę (org jest przenoszona w stanie, więc nie Sesja jest już wymagana). Zwraca samozamykającą się stronę HTML.
· kamo-internal
Gate lead contact-info przez przydział + nowe prawa do prywatności
Odzwierciedlać trzy nowe prawa CRM. Na stronie głównej szczegółów, mask/zablokuj Podstawowe pola Kontaktu, Adres e-mail i pola adresu nieruchomości dla leadów Nieprzypisany do obecnego członka, chyba że posiada widok/edycję Prawa do kontaktu (i, dla nieprzydzielonych leadów, VIEW_UNASSIGNED_LEADS); Pole państwowe jest zawsze widoczne. Przełącz przydział bramy przydziału przydziału Assignment-pane Przejdź do ASSIGN_LEADS. Na siatce /liads, bramka do filtra Unassigned VIEW_UNASSIGNED_LEADS, upuść teraz puste filtry e-mail/ulica i Wartość kolumny e-mail i wyświetlaj nazwę nieruchomości-vs-mailing za pośrednictwem przewracania.
· SecurityService
Enforce lead contact-info praw do prywatności
getAllLeads teraz zwraca szczupły LeadListDTO i ukrywa nieprzypisane tropy Od członków bez VIEW_UNASSIGNED_LEADS. getLeadByD. Kontakt masekLeadByD Informacje (zachwycony stan) dla przewodów nieprzydzielonych dzwoniącemu Utrzymuje VIEW_LEAD_CONTACT_INFO_OTHERS i 403s nieprzypisane leady dla tych Brak VIEW_UNASSIGNED_LEADS. aktualizacjiObraty bramek ręcznych zmiany (ASSIGN_LEADS) i edycje infotencji kontaktowych Liczenie pól nieruchomości hipotecznych tylko wtedy, gdy faktycznie się zmieniło. Obejście Boga.
· kamo-shared-library
Lead contact-info praw do prywatności + lista lean DTO
Dodaj trzy prawa CRM (161-163): "Zasygnowane do innych: Widok / Edytuj Ołów Kontakt Info” i „Zobacz Owoce podpisane Unassign”. Dodaj LeadListDTO — szczupła Projekcja siatki /liads bez informacji kontaktowych z wyjątkiem Pole stanowe. Dodaj do striptizerki telefonu / Adres e-mail/mailing+property adres (zapasa państwa) dla zamkniętych czytelników.
· kamo-register
Wyślij typ członkostwa ze ścieżek /członka i /zespołu
/zapisy zespołu tworzą TEAM_MEMBER (utworzony PROSPECT, oczekujący na aktywację administratora); / członek Zapisy tworzą MEMBER. RegisterFlow przyjmuje rekwizyt typu użytkownika dostarczony przez każdą ścieżkę Owijawka i włącza je do organu wnioskującego o rejestrację; backend tworzy dopasowanie Rodzaj członkostwa.
· SecurityService
/team tworzy TEAM_MEMBER (PROSPECT), /member tworzy datę porozumiewcza
Rejestracja publiczna honoruje teraz członkaType, który wysyła strona rejestru (od / członka vs /team tworzy TEAM_MEMBER — jako PROSPECT, więc administrator musi je aktywować Zanim będą mogli się zalogować (na bramkę logowania) – i / członek tworzy numer podstawowy. Stosowany Zarówno na nowych, jak i istniejących ścieżkach użytkowania użytkowników poprzez utworzenieRegistrationMembership(). W tym, w powt. w poty, w pog w, w pot w tym, z w, w, w pot w, w pot w, w pot w, w pot w, w pot w, w pot w, w pot w, w Zwierciedło zapewnia ochronęNieruchomo (zawsze jest to miejsce w numerze bazy i pominięty, gdy org jest Własny dostawca zabezpieczeń). Wcześniej każda rejestracja utworzyła podstawowy MEMBER, więc wnioskodawca / drużynowy wylądował jako Członkostwo, a następnie nie można było dodać jako członek zespołu za pośrednictwem UI (409 już-członkostwo).
· SecurityService
Rozszerzenie telefonu zespołowego na zespół w zespole-członków-kontrakonta
Filtr agenta /leads potrzebuje rozszerzenia telefonu roboczego do opcji etykietowania jako "Nazwij (odstępna 8080)". Rozszerzenie istnieje już w TeamMember (getPhoneWorkExtension), ale nie był serializowany – tylko goły numer był.
· kamo-internal
Popup-sługa pokazuje rodzic-org udostępnione tematy
Wskaż, że temat sprzedaży biletu-rezynacji w nowym /api/support/topics/available punkt końcowy (własny-org + tematy współdzielone przez rodzicielstwo) Użytkownicy dzieci-org mogą skontaktować się z wsparciem swojego rodzica org org poprzez Skonfigurowany temat rodzica.
· MediaService
Surface parent-org podzieliły się tematami w popupie wspierającej zapytanie
Użytkownicy Child-org nie mogli zobaczyć wspólnych tematów wsparcia dla rodziców org (przypisToOwnOrg-false) podczas żądania wsparcia, ponieważ tylko wyskakujące okienko Pobrane tematy własne-org. Dodaj GET /api/support/topics/dostępne (własne + Rogo-wspólne, bez MANAGE_SUPPORT gate) i napraw getParentOrgTopics do użycia Poprawione zapytanie AssignToOwnOrgFalse. Złożenie przeciwko rodzicowi-podzielonemu Temat już kieruje bilet do rodzica org za pośrednictwem createTicket.
· SecurityService
Nowe orgi dziecka dziedziczą bezpieczeństwo rodzicaProvidera
Podczas tworzenia orgi dziecka z kamo-internal, ustaw bezpieczeństwo nowego orgiProvidera na Ochrona rodzica org (oznacz, pod którym jest stworzony), zamiast pozwolić mu Nie domyślnie wobec siebie. Pary z zapasem danych, które wyznaczają wszystkie istniejące orgi Zapewnienie bezpieczeństwa na najwyższym poziomie KamoCRM org, więc członkostwo odzwierciedla dla Wszystkie orgi i ich przyszłe dzieci.
· kamo-login
Pokaż powiadomienie związane z kontem na ?linked 1
Po zarejestrowaniu istniejącego konta z nowym orgiem, przekierowuje tutaj z ?linked nr 1. Pokaż "Masz już konto Kamo - dodaliśmy tę organizację do To się stanie. Zaloguj się za pomocą istniejącego hasła." i wstępnie wypełnij wiadomość e-mail. Lustrami istniejące Obsługa ?email_verified.
· kamo-register
Obsługa odpowiedzi powiązanej z kontami dla istniejących użytkowników
Gdy wprowadzona wiadomość e-mail jest już do konta ACTIVE, backend łączy to org do niego i zwraca KONTA_LINKED. Trasuj tych użytkowników prosto do logowania (?linked1) zamiast przepływu weryfikacji e-mail – logują się wraz ze swoją istniejącą Hasło. Nowi użytkownicy i rejestracje zastępców-znośniki utrzymują ścieżkę weryfikacji e-mail.
· kamo-internal
Podsłuchijczłonek / członek zespołu tworząc + Prospect-gate UI
- Dodaj brakujące trasy proxy POST /api/security/members/create oraz /create-team-członek zespołu (te 405'd wcześniej, więc stworzenie nigdy nie dotarło do zaplecza). Status + ciało JSON przechodzi przez tak, aby 409 "już członek" ponownie wykorzystała formę - Działa. - MemberCreateForm: napraw pole Status członkostwa, na którym nałożyła się pływająca etykieta Oznaczenie zastępcze "Wybierz status" (sygnatariuszu kurki + wycięte OutlinedInput) i dodaj Należy pamiętać, że tylko "Aktywni" członkowie zespołu mogą się zalogować.
· SecurityService
Ponowne wykorzystanie istniejących użytkowników, lustro do zabezpieczeniaProvider, zalogin.
Ponowne użycie (bez zduplikowanych kont dla tej samej osoby): - MemberCreateController ponownie wykorzystuje istniejącego użytkownika za pomocą osobistej poczty e-mail Sprawa-INSENSITIVELY (była wrażliwa na przypadek, brakujące starsze e-maile mixed-case). - SecurityController.register ponownie korzysta z istniejącego konta zamiast zawsze tworzyć nowy użytkownik: już członek org -> 409 ALREADY_MEMBER ("pros się zaloguj"); istniejące konto ACTIVE -> link org, zachować hasło, zwrócić konto_LINKED; Nieaktywowany symbol zastępczy (nigdy nie zweryfikowany ORAZ nigdy nie zalogował się) -> roszczą się do tego Wpisane hasło. Formularz publiczny nigdy nie może nadać globalnego hasła aktywnego konta. BezpieczeństwoPrzeszust dla zapewnienia: - Zarówno utworzenie członków / członków zespołu, jak i rejestr publiczny dzwonią teraz - tak więc każde nowe członkostwo również ląduje Pod adresem orwidenta org (jako podstawowy Członek). Brama aktywacyjna człon-członka zespołu: - login blokuje członka TeamMem członkowskiego, którego status członkostwa! ACTIVE z "Twoje konto Istnieje, ale nie jest aktywny w tym czasie”. Zwykli członkowie i aktywni członkowie zespołu przechodzą. Utwardnienie Org-resolution (X-Forwarded-Host rodzeństwo): - openanters i PortalController.resolveOrg użyj dezorientującego alias-fallback i upuść getServerName() fail-open (zawiesić zamkniętą zamiast przeciekać na platformę org).
· kamo-shared-library
Wzemne członkostwa w zabezpieczeniach + ponowne wykorzystanie / pochwy
- userId): odwróć uwagę użytkownika orzistra ochrony org org jako podstawowy Członek (zadeptowany; no-op, gdy org Zabezpiecza się lub użytkownik już tam jest). Popara zasadę, że każdy nowy Członkostwo jest również w ramach platformy/zapalca zabezpieczenia org. - - niewrażliwe na przypadki, Bezpieczne posiłkowe adresy e-mail dla ponownego użycia konta cross-org (e-mail nie jest globalnie Wyjątkowy, więc jednoopysywnik rzucał). - - przestań resetować bezpieczeństwoProjer do siebie Każda edycja org (tylko zasypanie zapasowe, gdy jest zerowe), więc org dziecięcy zachowuje swój link do Od dostawcy platformy zależy lustro.
· kamo-internal
Zakładka Zadań druciek do prawdziwego zaplecza + delete akcji + liczba na żywo
Dodaje Następne trasy proxy dla /liads/'id'/tasks[/ataskId] (zakładka getTasks/ addTask/updateTask/completeTask to 404ing), akcja deleteTask w Zasłona zadaniowa i czerpie statystykę "Otwarte zadania" z listy zadań na żywo, aby pozostała Aktualny jako TASK_CHANGED zdarzenia powtarzają zadania.
· SecurityService
Zadania Leadowe REST API + w czasie rzeczywistym TASK_CHANGED
Wdraża zaplecza zakładkę /leads/view Tasks już dzwonił, ale to Nigdy nie istniał: GET/POST/PUT/DELETE (LeadTaskController + LeadTaskService) strzeżony jak punkty końcowe blokady. Każdy create/upend/delete emituje TASK_CHANGED, aby otworzyć widoki lead odświeży się na żywo.
· kamo-shared-library
Podmiot leadTask do zadań następczych
Backs the /liads/view Tasks tab (wcześniej z przodu tylko stub z no Uporczywość). LeadTask (table LEAD_TASK) odzwierciedla frontendowy kształt TaskItem + LeadTaskDTO i repozytorium. Mutacje zadań nadają TASK_CHANGED na istniejącym wiodącym kanale w czasie rzeczywistym.
· kamo-internal
Datagrid w czasie rzeczywistym + widok na żywo z zamkami edycji per-pane
/liads jest teraz w pełni na żywo przez websocket (NATS-STOMP): wiersze dodają/usuń/aktualnia Do aktywnego filtra automatycznie i zmienione komórki mrugają raz na inne Edycje członków; przycisk ślepego odświeżania jest usuwany. /leads/view/[id] ma zastosowanie na żywo Lead/history/takcję/stats aktualizuje i zyskuje ekskluzywne zamki edytujące z a) "Obecnie edytując" skład, odliczanie na żywo i automatyczne oszczędzanie na bezczynności / odłączaniu. Dodaje useLeadsRealtime hak, leadLocksApi + Następne trasy proxy i wielokrotnego użytku MemberContactCard (nazwisko + rozszerzenie robocze, click-to-call softphone / open-chat). Aktualizacje ołowiu łączą zwięzły z null-przechowywania, tak częściowe ładunki nigdy nie są puste komórki.
· MediaService
Org-guard the /topic/leads/rt/orgId ?subskrypcja w czasie rzeczywistym
Cross-tenant SUBSCRIBE strażniczny dla nowego głównego tematu w czasie rzeczywistym, odzwierciedlający Istniejąca/ostrzeżenia /topij/społeczna: członek może subskrybować tylko własne Ołowiany strumień orgzaczny. Istniejące już : Przekaźniki security.leads.rt. do /topic/leads/rt/a, więc nie jest konieczna zmiana przekaźnika.
· SecurityService
Per-pane edit-lock REST API + automatyczny zamiatacz
Dodaje /api/security/odźwierne/ogienia/zamki LeadLockService: ekskluzywna rezerwacja per-szenu, bicie serca, które Zresetuj 5-miliminowy TTL i planowaną zamiatacz, która automatycznie oszczędza buku Pojawi się i wydaj na czas bezczynności lub wygaśnięcie ważenia. Idle-wygaśnie jest Wymieszana jako absolutna epoka millis. Config under lead.lock. (configmap).
· kamo-shared-library
Wydanie NATS w czasie rzeczywistym + jednostka edycji per-pane
Opublikuj org-scoped lead event na security.leads.rt.orgId (utworzony/aktualizowany/aktualizowany/ Usunięto z zmienionymi kluczami pola, za pomocą zapisanej w historii) tak: sektu /leads i /liads/view page może aktualizować na żywo. Zmienione klucze rejestru używane do kierowania mrugnięciem interfejsu użytkownika. Dodaje podmiot LeadPaneLock (table LEAD_PANE_LOCK, unikalny (LEAD_UID,PANE) i Repozytorium wspierające ekskluzywne zamki do edycji per-pane; wydawca emituje Wygaśnięcie bezczynności jako absolutny epokowy millis (numer bezpieczny w strefie czasowej) dla odliczania.
· kamo-internal
Zintegruj główne zakładki z nagłówkiem na pozostałych stronach Style A
Następne do przeczesania stylu A-B, obejmujące strony, które nie przechodzą UstawieniaView: - /kb: KbNavBar staje się nagłówkiem gradient bohatera z Artykułami/Zasobami/ Zintegrowane karty Recenzje i działanie nowego artykułu w odpowiednim rodzaju; układ Okonie dzieli się promieniowe tło. - - mini nagłówek tylnej strzały + Ogólne/ Domeny zakładki MUI stają się nagłówkiem bohatera gradient ze zintegrowanymi zakładkami. - /leads/view/[id]: podstawowe karty rekordów przesuwają się do gradientu HeaderBar Nagłówek; edytor stanu / podstatusu jest dołączony do nagłówka Działania na właściwe (w stylu gradientu), zastępujące odrębną - Zakładka kartka.
· kamo-internal
Przeniesiej pręty dolnej liczenia do nagłówka w całym świecie, zakładki importu
Stosuje obróbkę z taśmą dostawców do powierzchni ustawień CRM rodzeństwa, więc Samodzielny pasek podsumowujący "x ? y" na dole nie je już nieruchomości na stronie: - Połączenia społecznościowe i zautomatyzowane importy: działania nagłówkowe dolnej i dolnej linii Liczb linii stosuje się bezpośrednio nad przyciskami Refresh + Add/Crec. - Ręczny importuje pod-taby (Past Imports, Import Templates): liczba się przesuwa Lewa z ikony samotnego odświeżenia (kosmos- pomiędzy), upuszczając dolny pasek.
· kamo-internal
Przenieś dostawcę / liczbę produktów powyżej akcji nagłówka, odśwież dolny + Dodaj dostawcę
Reuturetuje nieruchomość na stronie, do której używa się samodzielny dolny pasek podsumowania Zajmij — linia "x vendors - x produkty" teraz układa się ponad akcją Przyciski w nagłówku, a przyciski dolny-wyrównaj z blokiem tytułu.
· kamo-internal
Zintegruj podstawowe karty w nagłówku strony (Style B) na stronach Style A
Każda strona gradient-bohatera, która renderowała swoje podstawowe zakładki w osobnej karcie Poniżej nagłówek teraz renderuje je wewnątrz samego nagłówka gradientu, dopasowując się /kon i / wsparcie. - UstawieniaView: tatkarka przesunęła się do nagłówka gradientu (przekonwertuje wszystkie nr 23 /settings/ strony na raz); kolumna pomocy, nagłówekAkcja, backHref i Tabu icon/glow/aprzypisW-sprawozdania Zachowane dodatki; hideTitle nadal trzyma swoje zakładki. - /leads/reports: zakładki raportów przesunęły się do nagłówka. - /hand (PipelineView): karty na rynek (z ikonami pionowymi) Nagłówek; stany jednorynkowe/nagranowe bez zmian.
· kamo-internal
Strzałka do tyłu w nagłówku powraca do /łowia
Dodaj opcjonalny backHref/backTooltip do SettingsView, który renderuje biały Strzałka do tyłu po lewej stronie tytułu i prześlij stronę ustawień CRM, aby wysłać Członek z powrotem do /leads. Tooltip ponownie wykorzystywać istniejące zlokalizowane lead.view.header.backToBrowser ('Back to lead') string.
· kamo-internal
Odważne ustawienia "CRM:" prefiks, separatory rur, tylko podliska na kartach
Przedstaw kartę ustawień CRM z pogrubionym napisem "Ustawienia CRM:" (nowy klucz), oddzielne linki z '' |' Zamiast nagiej przestrzeni i przełączaj linki z zawsze wystatekonymi na Niepowtkniona na hover.

Twój wszechświat czeka.
Rozpocznij bezpłatnie w kilka minut.Dodaj produkty, kiedy tylko będziesz gotowy — bez migracji, bez nowych logowań.
Bezpłatne na zawsze — nie wymaga karty kredytowej