Changelog
Co nowego.
Każde ulepszenie platformy, jak to wysyła.
· kamo-shared-library
Zamień fakturowanie na poziomie orgłowania modelem BillingGroup
Przedstawia BillingGroup, BillingGroupMember, BillingGroupSubskrypcja, BillingGroupLicense, BillingGroupPaymentMethod, BillingGroupInvoice, i Podmioty BillingGroupConfig (wszystkie w ramach wspólnego handlu/billinggrup). Kroplami starego BillingSubscription / BillingCustomer / BillingConfig / BillingPaymentMethod / BillingInvoice / BillingCredit / BillingUsageSnapshot - Kto żyje Podmioty w całości – każdy org otrzymuje teraz domyślną grupę z FREE_DEFAULT Subskrypcja KamoCRM jako jego podstawa. Dodaje SecurityModelCommerceMarket węzeł Połączenie modeli zabezpieczeń z rynkami handlowymi z włączeniem do przeobstu.
· SecurityService
Linia członkowska Interaction Center wykorzystuje tytuły stanowisk
Zastąp tytuł ról RBAC w jobTitleOfficial, powrót do JobTitle Tytuł katalogowy dla TeamMember, a label Member dla członka podstawowego Zapisy w polu pracy ładunku przez departament.
· kamo-internal
Oficjalne pole tytułów zawodowych dla członków zespołu na mojej karcie pozycji
· kamo-shared-library
Dodaj TeamMember.jobTitleOficjalna opcjonalna kolumna łańcuchowa (60 znaków)
· SecurityService
Wyeksponuj i uporczyw się pracyTitleOfficial dla członków zespołu ds. profili i API bezpieczeństwa członkowskiego
· KlusterServices
Użyj ECDSA P-256 dla specyfikacji certyfikatu cert-manager i migracja RSA
· kamo-shared-library
Dodaj findTeamMberById dla niezawodnej rozdzielczości TeamMember
· kamo-shared-library
Załaduj typy gałęzi z modelami bezpieczeństwa przez org id
· kamo-shared-library
Opcjonalne Cache-Control na przesyłanie obiektów
Używany przez rezerwowanie tematu, więc globals.css i config.json instruują przeglądarki I proxies do realidate zamiast serwowania nieświeżych przedmiotów w przęsło.
· SecurityService
ThemeRewizja w nagłówek konfig i pamięci podręcznej na tematach
Emit themeRewizja (epoch ms) w config.json na każdym pismie; ustaw Cache-Control na config, globals.css i site.webmanifest przesyła tak podręcznikowe biesiady.
· kamo-shared-library
Dodać do czyszczenia awatara
Używany po usunięciu awatara, więc członek nadpisuje ten sam wiersz, można wyczyścić przed usunięciem.
· kamo-internal
Przejrzysta sesja czarodziejaStorage na świeżym zakresie tworzenia przez ?fresh1
Nawiguj z sieci, aby utworzyć za pomocą ?fresh1, rozegrać zapytanie i użyć Krótkotrwały zamek, więc React Strict Mode nie przywraca starego szkicu przed Utrzymuje biegi. Wizard draft żyje w sessionStorage (nie localStorage).
· kamo-shared-library
Polityka zgodności z alkoholami / tytoniami i bronią palną
- Kolumny i jednostki CHILD_ORG_SECURITY_MODELS domyślnie MEMBER_SELECT - DTO i ChildOrgSecurityModelService normalizacja tworzenia/aktualizacji - AppliedModelEnforcementService stosuje zasady dotyczące flag ATF dla dzieci org i wieku jednostkowych
· SecurityService
Eksponuje zasady zgodności ATF dotyczące modeli i typów gałęzi łacinowych
- Administrator stosuje modelowe egzekwowanie przepisów przed dochodzeniem w zakresie wieku - SecurityModelController i MasterModelController mijają pola polityki - BranchTypeController zawiera zasady w /branch-types/kreatable
· kamo-internal
Kreator zgodności z zasadami modelu bezpieczeństwa
- typy oddziałów API mapuje zasady dotyczące alkoholu/tytoń/broń palnych w stan czarodzieja - Dynamiczny krok zgodności: pomiń z nav, gdy model utrwala wszystkie ATF i w różnym wieku - Wiek i ATF kontrolują tylko wtedy, gdy MEMBER_SELECT lub opcje wielokrotnego wieku - Recenzja pokazuje tylko pola, do których poproszono użytkownika; Ustawienia zgodności z tytułem - Ustawienia: Radiotelefony zasad ATF w ramach dozwolonej gamy wiekowej członków (model bezpieczeństwa) - Prześlij używa skutecznegoComplianceForSubmit dla wymuszonych wartości
· SecurityService
Align KnownAliases z DNS i auto-cert (dodać pocztę, odtwarzanie, aplikacje, podpis; aplikacja upuść, media)
· kamo-marketing
Pokaż stan na żywo z linkiem do changelogu i liczeniem dziennym
Zamień odliczanie podglądu i zarejestruj kopię zwartym "Now LIVE" Wezwanie, utrzymuj link na stronie changelogu i zawsze pokaż dzisiejszą liczbę zmian Z API po załadowaniu. Zapowiedź aktualizacjiKlity kupy w różnych lokalizacjach.
· SecurityService
Make RoleRightsSyncSyncSyService w pełni samoleczy na każdym uruchomieniu
Dodawanie lub usunięcie RoleRightType nigdy nie może wymagać już biegania KamoInitializerService. syncAll() działa teraz trzy fazy każdego startupu: 1. Ulecz ograniczenia - zniżaj każde ograniczenie CHECK na każde prawostronne Tabela i upewnij się, że istnieją unikatowe unikalne ograniczenia i dwa wymagane przez upsery. Hibernate bakuje wartości enum w ograniczeniach CHECK w TABLEC Czas i nigdy ich nie aktualizuje, a „Unijwokokon” działa tylko Na TWARZY TABLE, więc oba dryfują za każdym razem, gdy ewoluują enums. - Wyliczanie Wzmusza już prawidłowe wartości w warstwie Java. 2. Usunąć prawa osierocone — DELETE WHERE right_type NOT IN (current enum) We wszystkich sześciu stołach nośnych: org_role_rights, - member_rights, member_rights_applied, job_title_rights, dept_rights. Uchwyty zarówno ORDINAL int, jak i STRING en-name. 3. Wstawianie brakujących praw – bez zmian; zależy od unikalnych ograniczeń Zapewnione w fazie 1. Idempotent – bezpieczny do ponownego uruchomienia. Dodawanie/usuwanie wartości enum teraz wymaga Tylko ponowne uruchomienie SecurityService.
· kamo-internal
Dodaj ustawienia administracji platformy — dotacje planowe org, wydarzenia, katalog planu
- Nowe strony pod /settings/platform (strzeżone przez hasPlatformAdminAccess): - /organizacje — wymieniają co org, grant/modyfikuj/modyfikuj plany COMP z przyczynami - /wydarzenia — kontrola wskazań . - /plany — katalog do odczytu zawierający plany wewnętrzne (isisPublic-false) - useUserInfo: pochodzi hasPlatformAdminAccess isGodModeActive() LUB (teamMembernetyka.isOrganizationOwner AND Organization.isTopLevel) - billingApi: przestrzeń nazw platformy (ListaOrgs, grant Plan, zmianaGrant, cofnięcieGrant, ListPlans, listaWydarzeniaWydarzenia) + X-Bóg-Mode-Active nagłówek, gdy ustawianie flagi localStorage - /api/billing proxy: przekazuje X-God-Mode-Active od klienta do BillingService - Lista ustawień + SettingsStatusWindow: nowa grupa "Platform Administration" - BillingManager: baner właściciela platformy zastępuje formularz Stripe dla orgi na najwyższym poziomie (przewodowe w /settings/konto jako zakładkę rozliczeniową) - FunkcjeManager: "Platform Owner — Wewnętrzny" nagłówek i stłumiona aktualizacja CTA, gdy org jest na najwyższym poziomie, a obecny podwodny jest COMP - Klasa organizacji / OrgNetwork / PublicProvider: add isTopLevel; Martwa dziedzina „typ” i resztek konsumentów w stronie sieciowej + relacja Kierownik - Usuń przestarzałą organizacjęType.ts
· BillingService
Dodaj kontroler PlatformAdmin + serwis dotacji na plan kom,
- PlatformAdminController na /api/billing/platform (poziom klasowy ?PlatformAdminOnly) - GET /orgs, GET /orgs/'orgId' - POST /orgs/'orgId'/grants, PATCH|DELETE /orgs/'orgIad'/grants/'subId' - GET / plans (obejmuje ispllic-false) - GET / ewentuacje - PlatformAdminService: grant tworzy COMP SubscriptionRecord, anuluje wcześniej aktywny sub, emituje SubscriptionEvent ? 5s idempotpotency - PlatformAdminOnly + HandlerInterceptor: pozwól na działanie boga-mode-aktywnie LUB (TeamMember.isOrganizationOwner AND Organization.isTopLevel, przeżycie z DB) - SubscriptionRenewalScheduler: oddział COMP anuluje po wygaśnięciu (COMP_EXPIRED) I nigdy nie dzwoni do Stripe - BillingAdminService: Agregacja MRR/ARR wyklucza płatnośćMethod-COMP - Długie idi odsłonięte jako String (CockroachDB unique_rowid precyzja)
· InitializerService
Seed Organization.isTopLevel dla kamocrm i OWNER_UNLIMITED self-comp Plan
- DataLoader: drop OrganizationType arg from createOrg, zestaw isTopLevel-true on kamocrm - KamoCRMAgeReqAktualizacjaZakazowy + test: mecz na IS_TOP_LEVEL - PRAWDA zamiast TYP - OrganizacjaTypeRemovalRunner: idempotent ALTER TABLE DROP COLUMN typ - PlatformOwnerPlanSeeder: idempotężnie zapewnia plan OWNER_UNLIMITED dotyczący każdej funkcji i posiada stałą subskrypcję COMP dla siebie
· kamo-shared-library
Dodaj do koszyka Organization.TopLevel, PaymentMethod.COMP, COMP_; usuwanie enum OrganizationType
- Organizacja: zastąpienie martwego pola typu "typ" flagą "isTopLevel" dla identyfikacji właściciela platformy - PaymentMethod: dodaj COMP dla bezpłatnych grantów platform-admin (no Stripe) - SubscriptionEventType: dodaj COMP_GRANTED, COMP_REVOKED, COMP_EXPIRED, COMP_MODIFIED - Organizacyjna repozytorium: dodaj findFirstByIpTopLevelTrue() - Usługa organizacyjna: drop setType() wywołanie; pola są teraz napędzane przez isTopLevel
· kamo-internal
Ukryj przycisk rezygnacji z subskrypcji dla oryginalnego org użytkownika na stronie sieci
· SecurityService
Ustaw orgriginal na rejestracji i expose jestOriginalOrg w my-sieci
· kamo-shared-library
Dodaj pole orgOriginal do użytkownika, aby śledzić rejestrację org
· kamo-internal
Zwolennik państw członkowskich wspiera prawa do giingu i dual-mode ticket
- NavTop: pokaż przycisk wsparcia dla dowolnego prawa do pomocy technicznej (agent lub członek) - Przysługa: bramka każdego elementu rozwijanego po prawej stronie — Create/View Bilet, Webinar, My Webinaria pokazane tylko wtedy, gdy prawo jest trzymane - SupportTicketListTab: dual-mode — agenci patrz pełny stół z tematem Filtr i przydzielony do przełączania; żądania członkowskie-poszukiwacze widzą swój własny Tylko bilety (createdByMe'etrue), uproszczone kolumny, Nowy bilet CTA - support/page.tsx: gate Tickets/My Webinaria/Analytics Zakładki po prawej stronie - Ustawienia strony (konto, działy, integracje, operacje): Dodaj CONFIGURE_SYSTEM redirect guard; pulpit nawigacyjny ustawień Mój rachunek Sekcja zamknięta przez CONFIGURE_SYSTEM
· kamo-shared-library
Dodać uprawnienia do wsparcia dla członków (133-136)
Dodaje cztery nowe prawa w zakresie wsparcia dla członków niebędących agentami: - Nr (133) - CREATE_SUPPORT_TICKET (134) - REQUEST_WEBINAR (135) - VIEW_MY_SCHEDULED_WEBINARS (136)
· kamo-internal
Usuń filtry kolumnowe z kart członków i członków zespołu
· kamo-internal
Dodaj przycisk Synchronizacja praw do SecurityRoleManager dla orgs na najwyższym poziomie
Przycisk jest widoczny tylko wtedy, gdy organizacja. ma rodzica jest fałszywy. Połączenia POST /api/bezpieczeństwo/role/syn-prawy, a następnie ponownie ładuje tabelę ról.
· SecurityService
Wyciąg RoleRightsSyncSyService i dodaj punkty końcowe praw syndobowych
- RoleRightsSyncSnasSynService: centralizacja logiki synchronizacji praw ról dla obu OrgRole tabele; startup i na żądanie - DataLoader: delegaci do RoleRightsSyncService.syncAll() w celu uruchomienia - SecurityRoleController: POST /sync-rights triggers triggers without restart

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