Jurnal de schimbări
Ce e nou.
Fiecare îmbunătățire a platformei, pe măsură ce se livrează.
· kamo-shared-library
Adaugă entitatea LeadCallback, status enum și depozit
Backs the lead-view callback feature: a lead-counted callback record (PENDING/CONTACTED/CONCEDAT) tastat în afara leaduid, cu o trimitere ușoară la evenimentul din calendarul EmailService oglindit.
· kamo-internal
Creează o sesiune pentru chat-uri de grup deschise de membri
ChatTool a ignorat recuzita.membreIds: un grup deschis a sosit cu un gol UserId și nici o sesiuneGuid, astfel încât 1:1 creeazăSesiune salvat devreme și Fereastra nu a primit o sesiune. Acum când membrii sunt prezenţi ChatTool rezolvă sesiunea prin intermediul POST /sessions/chat/find-or-create {membri} (același criteriu final de utilizare a traseului iniţial al membrilor ChatBox; platforma adaugă apelantul în sine). Lista de membri este tastată ca un şir stabil de caractere sortate astfel încât efectul nu refoc pe identitatea matricei, și curge guid rezolvat prin scrierea existentă astfel încât fereastra de grup este GUID-anchored pentru Dedoup.
· APIService
Passthrough public pentru e-mail OAuth furnizor apelback
Înainte GET ********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************* (strips auth, no redirection following), oglindind apelul RingCentral OAuth. Aceasta este redirecționarea publică fixă URI înregistrată pe Microsoft/Google/Zoho.
· EmailService
Redirecționare publică fixă + revenire prin poartă
Platforma de email OAuth (Microsoft 365 / Google / Zoho) nu a avut public valid redirecţionarea URI: redirecţionarea a fost derivată din gazda cererii, care în prod este adresa de serviciu cluster-internă, și singurul handler apelback a fost Doar post. Adăugați o singură redirecționare fixă, accesibilă publicului, utilizată pentru ambele cererea de autorizare și schimbul de jetoane, și un apel GET public înapoi că furnizorul redirecționează browser-ul la (org este efectuat în stare, deci nu Este necesară sesiunea). Description.
· kamo-internal
Portile de contact-info prin atribuire + noi drepturi de confidentialitate
Oglindeşte cele trei noi drepturi CRM. Pe pagina de detaliu principal, masca / blocare Contact primar, adresa de mail și câmpurile de adrese de proprietate pentru piste neatribuită membrului curent decât dacă acesta deține vizualizarea/editul drepturile de contact (și, pentru pistele nealocate, view UNASsignED LEADS); Câmpul statal este întotdeauna vizibil. Comută poarta de transfer-pană la Assign LEADS. Pe grila /liders, poarta opțiunea filtru Nealocat prin VIEK UNASsignED LEADS, picătură acum-goale e-mail / filtru stradă și valoarea e-mail coloană, și arată proprietatea-vs-mail prin intermediul unui flip.
· SecurityService
Întărirea drepturilor de confidenţialitate a contactului principal-info
allLeads returnează acum LeadListDTO slab și ascunde conduce nealocate din partea membrilor fără VIew UNASsignED LEADS. obține contact cu măștile LeadById informații (se păstrează starea) pentru pistele care nu sunt atribuite apelantului decât dacă acestea să dețină view LEAD CONTACT INFO Others și 403s conduce nealocate pentru cei lipsă de vedere deschiși piese. updateLead porti reasignare manuala (ASSIGN LEADS) și editarea contact-info - Nu. numărarea câmpurilor de proprietate ipotecară numai atunci când de fapt s-au schimbat. Bypass Dumnezeu.
· kamo-shared-library
Drepturile de confidenţialitate în contact cu plumb-info + lista slabă DTO
Adaugă trei drepturi CRM (161-163): "Atribuit altora: View/Edit Lead Informaţii de contact" şi "View Unasigned Leads." Adaugă LeadListDTO proiecție pentru grila de /conducere care nu conține informații de contact cu excepția Campul statului. Add ***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** adresa de e-mail/mail+property (state conservate) pentru cititorii poarta.
· kamo-register
Trimite tipul de membru din /membru si /team
/Echipele de înscrieri creează o TEAM MINTE (creat PROSPECT, în așteptarea activării admin); /membru Înscrierile creează un membru. ÎnregistrareFlow ia un suport de tip membru furnizat de fiecare cale ambalaj și include-l în organismul de cerere de înregistrare; backend creează potrivire tipul de membru.
· SecurityService
/echipa creează o TEAM MINTE (PROSPECT), /membru creează un membru
Înregistrare publică onorează acum membrulTip site-ul de înregistrare trimite (din /membru vs /echipa calea): /echipa creeaza o TEAM newday înainte de a putea semna în (per poarta de conectare) și /membru creează un membru de bază. Aplicat atât pentru noii utilizatori, cât și pentru căile existente de reutilizare a utilizatorilor, prin intermediul creării de membri ai Registrului (). ă oglindă de securitateProvider este neschimbat (întotdeauna un membru de bază, și sarit atunci când org este sale furnizor propriu de securitate). Anterior, fiecare înregistrare a creat un membru de bază, astfel încât un / solicitant de echipă a aterizat ca o Membru și apoi nu a putut fi adăugat ca membru al echipei prin UI (409 deja membru).
· SecurityService
Expuneţi extinderea telefonului de lucru pentru membrii echipei în contractori
Filtrul /conduce agentul are nevoie de extensia de telefon de lucru pentru a eticheta opțiunile ca "Numele (următorul 8080) ." Extinderea există deja pe TeamMember (getPhoneWorkExtensie) dar nu a fost serializat .
· kamo-internal
Cererea-support popup prezintă teme comune părinte-org
Îndreptaţi subiectul de creare a biletelor către noul /api/support/topics/possible end (own-org + partsed topics) astfel încât utilizatorii de copii-org pot contacta sprijinul org părinte prin intermediul Subiectul configurat al părinţilor.
· MediaService
Tematici comune pentru părintele de suprafață în popup-ul de susținere a cererii
Utilizatorii Child-org nu au putut vedea subiectele de suport comune ale org-ului părinte (atribuitTownOrg=fals) atunci când solicită sprijin, deoarece popup numai A adus subiecte proprii-org. Adăugați GET /api/support/topics/disponibile (propriu + part-shared, no MANAGE SUPPORT Gate) și repara obține ParentOrgTopics pentru a utiliza interogarea corectă Assign ToOwnOrgFalse. Filarea împotriva unei părtășii părinte Subiectul deja direcţionează biletul către org-ul părinte prin intermediul CreateTicket.
· SecurityService
Orgi noi pentru copii moștenesc securitatea părinților lorProvider
Atunci când se creează un copil org din kamo-internă, setați noua org de securitateProvider la Siguranţa părintelui OrgProvider (orgul sub care este creat) în loc să-l lase implicit pentru sine. Pereche cu backfill de date care indică fiecare org existent SecurityProvider la nivelul superior KamoCRM org, astfel încât oglindirea membrilor se angajează pentru toate orgile şi viitorii lor copii.
· kamo-login
Arată anunțul legat de cont pe ?linked=1
Când registrul conectează un cont existent la un nou org, acesta redirecționează aici cu ?linked=1. Afișează "Aveți deja un cont Kamo Ea. Conectați-vă cu parola existentă." și prefillați e-mailul. Oglinzile existente ?email verificat de manipulare.
· kamo-register
Gestionarea răspunsului în legătură cu contul pentru utilizatorii existenți
Când e-mail-ul introdus aparţine deja unui cont activ, backend-ul leagă acest org to it and returns Account linked. Traseul acei utilizatori direct la sign-in (?linked=1) in loc de e-mail-verification flow Parola. Noii utilizatori și înscrieri la locul de tranzacționare păstrează calea de verificare-email.
· kamo-internal
Wire up member/team-member create + Prospect-gate UI
- Adăugaţi rutele proxy Post lipsă /api/securitate/membri/creaţi şi /creează-membru de echipă (aceste 405'd înainte, astfel încât creația nu a ajuns niciodată la backend). Stare + Corpul JSON trece prin astfel încât 409 forma "deja un membru" refolosire manipulare funcţionează. - MemberCreateForm: stabileşte domeniul statutului de membru în cazul în care eticheta plutitoare se suprapune "Selectaţi un statut" locholder (etichetă de shrink + crestat OutlinedInput), şi adăugaţi un Notaţi că numai membrii echipei "Active" pot semna.
· SecurityService
Reutilizați utilizatorii existenți, oglinda pentru securitateProvider, poartă-membru de echipă sign-in
Reutilizare (nicio copie a conturilor pentru aceeași persoană): - MemberCreateController reutilizează acum un utilizator existent prin e-mail personal caz-insensivitiv (a fost caz sensibil, lipsa moștenire e-mailuri mixte caz). - SecurityController.Înregistrare reutilizează un cont existent în loc să creeze întotdeauna un utilizator nou: deja membru al org - > 409 ALREADY MINTE "vă rugăm să semnaţi"; cont activ existent -> link org, păstrați parola lor, returnați cont LINKED; deţinătorul neactivat (niciodată verificat şi nu s-a logat) - > revendicaţi-l cu tastat parola. O formă publică nu poate suprascrie niciodată parola globală a unui cont activ. Oglindă de securitate: - Ambele membri interni/membri ai echipei și registrul public apelează acum Toti membrii noi sunt la fel. sub securitatea orgProvider org (ca membru de bază). Poarta de activare a echipei: - login blochează un membru al echipei al cărui statut de membru! există, dar nu este activă în acest moment." Membrii obişnuiţi şi membrii activi ai echipei trec. Întărirea sistemului de rezoluție (X-frații anteriori): - a lua Providers External și PortalController.resolveOrg utilizaţi soluţionarea alias-cădere înapoi și drop the getServerName () fail-open (nu se închide în loc de scurgerea org platforma).
· kamo-shared-library
SecurityProvider membru oglinda + reutilizare / patch teren
- ***************** userId: oglindeşte un utilizator în orgul de securitate al orguluiProvider ca membru de bază (dezmembrat; nu-op atunci când org se asigură în sine sau utilizatorul este deja acolo). Sustine regula ca fiecare nou membru, de asemenea, aterizează sub platforma / org de securitate-furnizor. - *************** insensibil la caz; Căutare prin e-mail multifuncţională pentru reutilizarea contului cross-org (emailul nu este global) unic, astfel încât un singur-opțional găsitor ar arunca). - *********** **** opri resetarea de securitateProvider la sine pe fiecare org edita (doar backfill atunci când nul), astfel încât un copil org păstrează legătura cu furnizorul platformei depinde de oglindă.
· kamo-internal
Wire Tab Tab Tasks to real backend + șterge acțiunea + live count
Adaugă următoarele rute proxy pentru /liders / {id}/tasks[/{taskId}] (tab's getTasks/ addTask/updateTask/completeTask calls were 404), a stergeTask action in the grila de sarcini, și derivă "Open Tasks" Stat din lista de sarcini live astfel încât să rămână curent ca TASK CHANGED evenimente refac sarcinile.
· SecurityService
Sarcini principale REST API + în timp real TASK CHANGED
Implementează backend tab-ul /liders/view Tasks a fost deja de asteptare, dar că Nu a existat niciodată: GET/POST/PUT/DELETE - Nu. (LeadTaskController + LeadTaskService), org-păzit ca obiectivele de blocare. Fiecare creare/actualizare/eliminare emite TASK CHANGED atât de vizualizări deschise de plumb reîmprospătare live.
· kamo-shared-library
Entitatea LeadTask pentru sarcinile de monitorizare a conducerii
Backs tab-ul /lides/view Tasks (în trecut un ciot doar frontend cu nr. persistenţă). LeadTask (tabla LEAD TASK) reflectă forma frontend TaskItem - Nu. + LeadTaskDTO și depozit. Mutațiile de sarcină difuzate TASK CHANGED pe canalul de plumb existent în timp real.
· kamo-internal
Real-time datagrid + live lead view with per-pane edit locks
/grila de plumb este acum pe deplin live peste websocket (NATS→STOMP): rânduri adăugare/eliminare/actualizare împotriva filtrului activ automat și a celulelor modificate clipește o dată pentru alta editarea membrilor; butonul de reîmprospătare mort este eliminat. /liders/view/[id] aplica live lead/history/task/stats actualizări și câștiguri per-pane exclusiv Editare încuietori cu o "în prezent editare" listă, numărătoare live, și auto-salvare pe inactiv / deconectare. Adaugă utilizareLeadsCârlig Realtime, leadLocksApi + Trasee proxy următoare, și un reutilizabil MembruContactCard (nume + extensie de lucru, click-to-call softphone / open-chat). Actualizările de plumb fuzionează nul-conservând astfel de încărcături utile parţiale niciodată celule goale.
· MediaService
Org-guard abonamentul în timp real /topic/liders/rt/{orgId}
Paza subscribe cross-tenant pentru noul subiect de plumb în timp real, oglindind actual /topic/social/feed guard: un membru poate abona doar la propria lor Fluxul de plumb al Orga. The existing ***************** deja relee de securitate.leads.rt.* la /topic/liders/rt/*, astfel încât nu este necesară nici o schimbare releu.
· SecurityService
Per-pane edit-lock REST API + auto-salvare maturator
Adds /api/security/leads/{id}/locks ************* susţinut de LeadLockService: rezervare exclusiva per-pane, batai de inima care Resetați un TTL inactiv de 5 min, și un maturator programat care salvează automat tamponat schița și eliberarea pe time-expiry inactiv sau prezența-grace timeout. Idle-expiry este emis ca epocă absolută milis. Config sub plumb.lock.* (configrap).
· kamo-shared-library
Editare NAT în timp real + entitate de editare per-pană
{orgId} (creat/actualizat/ șterse cu taste de câmp schimbat, istoric-appended) astfel încât grila /conduce și /liders/view page can update live. Acum se întoarce. cheile de registru modificate utilizate pentru a conduce clipi UI. Adaugă entitatea LeadPaneLock (tabelul LEAD PANE LOCK, unic (LEAD UID, PANE)) și depozitul care susține încuietorile de editare exclusive per-pane; editorul emite Expiră inactivă ca epocă absolută milis (număr mediu de siguranţă) pentru numărătoarea inversă.
· kamo-internal
Integrați file primare în antet pe paginile rămase Style A
Urmărire a style A→B matura, acoperind pagini care nu se deplasează prin ConfigurăriView: - /kb: KbNavBar devine un antet erou gradient cu articolele/Resursele / Revizuiri tab-uri integrate şi acţiunea Noului articol aliniată corect; aspect devine fundalul radial comun. - *************** antetul mini-săgeată spate + General/ Domenii MUI file devin un antet erou gradient cu file integrate. - /liders/view/[id]: filele de înregistrare primare se deplasează în gradient HeaderBar antet; Starea/Substatusul editorului este anexat la antetul acțiuni aliniate la dreapta (stilate pentru gradient), înlocuind separat carte de file.
· kamo-internal
Relocați barele de numărare în antet peste file sociale, importuri
Se aplică tratamentul de vânzători-tab pe fratele CRM setări suprafeţe astfel încât bara de rezumat "x • y" în partea de jos nu mai mănâncă pagina imobiliare: - Conexiuni sociale şi importuri automate: acţiuni header de jos şi numărați stivele de linii direct deasupra butoanelor Refresh + Adăugați/Creați. - Subtabele manuale privind importurile (Past Imports, Import Models): numărul trece la stânga de pictogramă Refresh singur (spaţiu-între), în scădere bara de jos.
· kamo-internal
Mută numărul vânzătorului/produsului deasupra acțiunilor antet, antet de linie de jos Refresh + Adăugați Vendor
Recaptures pagina imobiliare bara de rezumat independent de jos utilizate pentru Ocupați butoane în antet, și butoanele de jos-align cu blocul titlu.
· kamo-internal
Integrați file primare în antetul paginii (Style B) peste Pagini Style A
Fiecare pagină de gradient-erou care a transformat filele sale primare într-o carte separată sub antet le face acum în interiorul antetul gradientul în sine, potrivire /cont și / sprijin. - SetăriView: bară de tab mutat în antetul gradient (convertește toate ~23 /settings/* pages at once); help column, headerAction, backHref, and the fila pictogramă/lumină/alignDreptul suplimentar păstrat; HideTitle păstrează încă file sale. - /conducere/reportări: rapoarte tab-uri mutat în antet. - /commerce (PipelineView): file per-market (cu icoane verticale) mutate în antetul; piața unică/la bordul navei este neschimbată.
· kamo-internal
Înapoi săgeată în antet se întoarce la / conduce
Adăugați un backHref/backTooltip la SetăriView care face un alb înapoi săgeată stânga a titlului, și sârmă CRM setări pagina pentru a trimite membru înapoi la / conduce. Tooltip refolosies the existing localized Leads.view.header.back toBrowser ('Back to leads') sfoara.

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