Jurnal de schimbări
Ce e nou.
Fiecare îmbunătățire a platformei, pe măsură ce se livrează.
· BillingService
Rescrie serviciul de facturare în jurul grupurilor de facturare
Şterge nivelul de org controlori, servicii şi DTO. Introduce: - BillingGroupController grup de montare, membri, abonamente, licențe, metode de plată și facturi la /api/billing/grupuri. - BillingGroupService (lifecycle + Implicit Group + Free baseline), BillingGroupMemberService (un singur grup-per-membru de aplicare); BillingGroupSubscriptionService (Sync stripe with back to FREE DEFAULT la anulare/lamă), ******************* BillingGroupInvoiceService, LicenseService (auto-dezactivation priority + invers-priority reactivation). - PlanCatalogServicii + PlanCatalogController la ************* - StripeWebhookServicii consumatoare de abonament / facturi / evenimente de plată-metodă. - DreptulInvalidator publicarea Redis semnale de invalidare. - PlatformAdminService + PlatformAdminController revenind la roll-up-uri per-org.
· kamo-shared-library
Înlocuiți facturarea org cu modelul BillingGroup
Prezintă BillingGroup, BillingGroupMember, BillingGroupSubscription, BillingGroupLicense, BillingGroupMetoda de plată, BillingGroupInvoice și ENTITĂȚI CONFIG GROUP DE BILLING (toate în cadrul comerțului partajat/grupului de facturare/facturare). Drops the old BillingSubscription / BillingClient / BillingConfig / BillingPaymentMetoda / BillingInvoice / BillingCredit / BillingUtilizareSnapshot entităţi în întregime Abonarea KamoCRM ca bază. Adaugă joncţiune de securitateModelCommerceMarket corelarea modelelor de securitate cu piețele comerciale cu activarea per-scop.
· SecurityService
Interactiune Linia de membru a Centrului foloseste titluri de job
Înlocuire titlu rol RBAC cu loc de muncăTitlul Oficial, rezervări la titlul postului catalogul pentru TeamMember și eticheta pentru membrul de bază înregistrări în câmpul de rol de sarcină utilă de la distanță.
· kamo-internal
Domeniul oficial al titlului de job pentru membrii echipei pe cardul meu de poziţie
· kamo-shared-library
Adaugă TeamMember.jobTitlulBiroul oficial al stringului opţional (60 de caractere)
· SecurityService
Expunerea și persistența postuluiTitlul Oficial pentru membrii echipei pe profil și API-uri de securitate a membrilor
· KlusterServices
Utilizați ECDSA P-256 pentru specificațiile certificatului de certificare și migrează RSA
· kamo-shared-library
Adăugați găsește EchipaMemberById pentru rezoluția de încredere a membrilor echipei
· kamo-shared-library
Încarcă tipurile de ramură cu modele de securitate prin org id
· kamo-shared-library
Cache-Control opțional privind încărcarea obiectului
Utilizat prin furnizarea de teme astfel globals.css și config.json instrui browsere și proxy-uri de revalidare în loc de servire obiecte vechi cache.
· SecurityService
TemaRevision in config and cache headers on theme actives
Emit temaRevision (epoch ms) în config.json pe fiecare scriere; set Cache-Control pe config, globals.css, și site-ul. Webmanifest uploads so edge caches revalidate.
· kamo-shared-library
Adaugă *************** pentru curăţarea avatarului
Utilizat atunci când eliminați un avatar, astfel încât membrul suprascrie corelarea același rând poate fi șters înainte de ștergere.
· kamo-internal
Clear sessionStorage on fresh create via ?proaspete=1
Navighează din rețea pentru a crea cu ?proaspete=1, dezbracă interogarea și utilizează o sistem de blocare cu durată scurtă de viață astfel încât să reacționeze modul strict nu restabilește un proiect vechi înainte continuă să alerge. Proiectul vrăjitorului trăieşte în sesiuneStorage (nu Storage local).
· kamo-shared-library
Politici de conformitate privind alcoolul/tobacco/arme de foc
-Child ORG SECURITY MODELS coloane și entități defaults MEMBRU SELECT - DTO si ChildOrgSecurityModelService creeaza/actualizeaza normalizarea - AplicatModelEnforcementService aplică politici pentru copii org ATF steaguri și vârste singleton
· SecurityService
Expunerea politicilor ATF de conformitate cu modelele și tipurile de sucursale care pot fi create
- OrganizationController aplică aplicarea modelului înainte de afirmaţiile de vârstă - SecurityModelController și MasterModelController trec domeniile de politică - SucursalaTypeController include politici în / tipuri de ramuri/creatabile
· kamo-internal
Expert de conformitate din politicile de model de securitate
- Tipuri de sucursale API hărţi alcool / tutun / arme de foc politici în stare vrăjitor - Treaptă dinamică de conformitate: omite din navigaţie atunci când modelul fixează toate ATF şi vârstele - Vârstă și ATF controlează numai atunci când MEMBRU SELECT sau opțiuni de vârstă multiplă - Revizuire arată numai câmpurile pentru care a fost solicitat utilizatorul; Setări de conformitate titlu - Setări: Radiouri de politică ATF în limitele de vârstă permise ale membrilor (model de securitate) - Submit folosește eficientComplianceForSubmite pentru valorile aplicate
· SecurityService
Aliniere Aliase cunoscute cu DNS și auto-cert (add mail, play, aplicații, semn; drop app, media)
· kamo-marketing
Arată starea în direct cu link-ul de schimb și numărul zilnic
Înlocuiți numărătoarea inversă a previzualului și copia de înscriere cu un compact "Acum LIVE" Callout, păstrați link-ul de schangelog, și întotdeauna arată astăzi se schimbă conta de la API după ce se încarcă. Actualizare previzualizareSfoara Banner peste localuri.
· SecurityService
Face RoleRightsSyncService complet auto-vindecare pe fiecare boot
Adăugarea sau eliminarea unui RoleRightType nu trebuie să mai necesite niciodată rulare KamoInitializerService. SyncToate() rulează acum trei faze la fiecare pornire: 1. Constrangeri de vindecare Tabelul și să se asigure existența celor două constrângeri unice necesare pentru a se adapta. Hibernatul coace valorile enum în constrângerile de verificare la tabelul CREATE timp și niciodată nu le actualizează, și @UniqueConstraint are efect numai pe TABLE CREATE, astfel încât ambele derivă ori de câte ori enums evoluează. @Enumerate aplică deja valori valabile la stratul Java. 2. Şterge drepturile orfanilor în toate cele şase mese portante: Org role rights, *************** membru drepturi, membru drepturi aplicat, job title rights, dept rights. Se manipuleaza atat int ORDINAL cat si stocare enum-name. 3. Se introduc drepturile lipsă asigurată în faza 1. Idempotent Acum este nevoie de adăugarea/eliminarea valorilor enum doar repornirea Serviciului de Securitate.
· kamo-internal
Adăugați setările de administrare a platformei
- Pagini noi sub /setări/platformă (păzită de hasPlatformAdminAccess): - /organizatii -/evenimente -/feed audit de *************** - /planuri catalog numai citire, inclusiv planuri interne (isPublic=fals) - useUserInfo: drives hasPlatformAdminAccess from Este GodModeActive () SAU (membru al echipei.isOrganizareOwner ȘI organizare.esteTopLevel) - facturareApi: namespace platforma (listOrgs, grantPlan, modificatorGrant, revocareGrant, listPlanuri, listeEvenimente) + header X-God-Mode-Active atunci când se stabilește steagul localStorage - /api/facturare proxy: forwards X-God-Mode-Active de la client la BillingService - Setări hub + SetăriStatusWindow: nou grup "Administrare Platform" - BillingManager: platforma-proprietar banner inlocuieste Stripe forma pentru org de nivel superior (conectat în /setări/cont ca filă de facturare) - FeaturesManager: "Platform Owner CTA atunci când org este de nivel superior și sub curent este COMP - Clasa Organizatie / OrgNetwork / PublicProvider: adauga iTopLevel; elimina morți de tip de teren și restul consumatorilor în pagina de rețea + relație manager - Elimină depreciate OrganizationType.ts
· BillingService
Adăugați platformaAdmin controler + serviciu pentru granturile de plan comp
- PlatformAdminController la /api/billing/platform (class-level @PlatformAdminOnly) - GET /orgs, GET /orgs / {orgid} - POST /orgs/{orgId}/grants, PATCH - GET / Plans (include isPublic=fals) - GET / evenimente - PlatformAdminService: grant creeaza COMP AbonamentRecord, anuleaza activa anterioara sub, emite AbonamentEvent Nu-ţi face griji. idempotență 5s - @PlatformAdminOnly + HandlerInterceptor: permite God-mode-active OR (TeamMember.isOrganizationOwner and Organization.isTopLevel, re-read from DB) - AbonamentReînnoireScheduler: sucursala COMP anulează la expirare (COMP EXPIRED) şi niciodată nu-l cheamă pe Stripe. - BillingAdminService: Agregarea MRR/ARR exclude metoda de plată=COMP - Id-uri lungi expuse ca string (CockroachDB unic rowid precizie)
· InitializerService
Seed Organization.isTopLevel for kamocrm and HOTHER UNLIMITED auto-comp plan
- DataLoader: drop Organization Tip arg de la creaseOrg, set isTopLevel=true on kamocrm - KamoCRMAgeReqUpdateRunner + test: meci pe IS TOP LEVEL = TRUE în loc de TIP - OrganizationTypeRemovalRunner: idepotent ALTER Table DROP COLUMN tip - PlatformOwnerPlanSeeder: idepotently ensure kamocrm-proprietar UNLIMITED plan acopera fiecare functie si detine un abonament permanent COMP pentru sine
· kamo-shared-library
Add Organization.isTopLevel, PaymentMetode.COMP, COMP * tipuri de evenimente; eliminați Organizația Tip enum
- Organizatie: inlocuieste campul mort cu steagul pentru identificarea proprietarului platformei - Metoda de plată: adăugați COMP pentru granturi gratuite platforma-admin (fără Stripe) - AbonamentEventType: Adaugati COMP GRANETED, COMP REVOKED, COMP EXPIRED, COMP MODIFICAT - OrganizationRepository: add find FirstByIsTopLevelTrue() - OrganizationService: drop setType () call; câmpurile sunt acum conduse de isTopLevel
· kamo-internal
Ascunde butonul de dezabonare pentru org original al utilizatorului pe pagina de rețea
· SecurityService
Set orgOriginal privind înregistrarea și expunerea isOrig în rețelele mele
· kamo-shared-library
Adaugă câmp orgOriginal la Utilizator pentru a urmări org
· kamo-internal
Drepturile de sprijinire a cererii de aderare și vizualizarea biletelor în două moduri
- NavTop: arată SuportButton pentru orice drept de sprijin (agent sau membru) - SuportButton: poarta fiecare element dropdown de dreapta Cere Webinar, Webinarii mei arată doar atunci când dreptul este deținut - SuportTicketListTab: dual-mode filtru și comutație atribuită mie; cei care solicită un membru își văd propria persoană numai bilete (createdByMe=true), coloane simplificate, New Ticket CTA - suport/pagină.tsx: Bilete poarta / Webinars mea / Analytics file de dreapta - Setări pagini (cont, departamente, integrări, operațiuni): Adăugaţi protecţie de redirecţionare CONFIGURE SISTEM; setări bord Contul meu Sectiune poarta de CONFIGURE SISTEM
· kamo-shared-library
Adaugă drepturile de sprijin ale membrilor (133-136)
Adăugă patru noi drepturi de sprijin pentru membrii neagenți: - *************** (133) - CREATE support TICKET (134) - CERERE WEBINAR (135) - view MY SCHEDULED WEBINARS (136)
· kamo-internal
Elimină filtrele de coloană din filele membrilor și membrilor echipei
· kamo-internal
Adaugă butonul Sync Rights la SecurityRoleManager pentru orgile de nivel superior
Butonul este vizibil doar atunci când organizația.Are Parent este fals. Apeluri Post /api/security/rols/sync-rights apoi reîncărcați tabelul de roluri.

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