Changelog
Was ist neu?
Jede Verbesserung an der Plattform, wie sie geliefert wird.
· BillingService
BillingService rund um BillingGroups neu schreiben
Löscht die org-Ebene **************** Controller, Services und DTOs. Einführung: - BillingGroupController Montagegruppen, Mitglieder, Abonnements, Lizenzen, Zahlungsmethoden und Rechnungen unter /api/billing/groups. - BillingGroupService (Lebenszyklus + Default Group + Free Baseline), BillingGroupMitgliedService (eine Gruppe pro Person Durchsetzung), BillingGroupSubscriptionService (Stripe-Synchronisation mit Fallback zu FREE_DEFAULT auf Stornierung/Verfall), ************ BillingGroupInvoiceService, LicenseService (Auto-Deaktivierungspriorität + Inverse-Priority Reaktivierung). - PlanCatalogService + PlanCatalogController bei ************ - StripeWebhookService verbrauchende Abonnement / Rechnung / Zahlungsmethode Veranstaltungen. - EntitlementInvalidator veröffentlicht Redis-Invalidierungssignale. - PlatformAdminService + PlatformAdminController, der die Roll-ups perorg zurückgibt.
· kamo-shared-library
Org-Level-Rechnungen mit BillingGroup-Modell ersetzen
BillingGroup, BillingGroupMitglied, BillingGroupAbonnement, BillingGroupLicense, BillingGroupPaymentMethod, BillingGroupInvoice und BillingGroupConfig-Einheiten (alle im Rahmen gemeinsamer Handel/Billing/Billinggroup). Drops the old BillingAbonnement / BillingCustomer / BillingConfig / BillingPaymentMethod / BillingInvoice / BillingCredit / BillingUsageSnapshot komplett . jeder Org bekommt jetzt eine Standardgruppe mit einem FREE_DEFAULT KamoCRM Abonnement als Basis. Fügt SecurityModelCommerceMarket Kreuzung Verknüpfung von Sicherheitsmodellen mit Handelsmärkten per-scope enablement.
· SecurityService
Interaction Center Mitgliedslinie verwendet Berufsbezeichnungen
RBAC-Rollentitel durch jobTitleOfficial ersetzen, zurück zu JobTitle Katalogtitel für TeamMember und das Label Member für Basismitglied Aufzeichnungen im Bereich der Nutzlast-Rollenseite.
· kamo-internal
Offizielles Berufsbezeichnungsfeld für Teammitglieder auf meiner Profil-Positionskarte
· kamo-shared-library
TeamMember.jobTitleOfficial optionale String-Säule hinzufügen (60 Zeichen)
· SecurityService
Entlare und beharrliche jobTitleOfficial für Teammitglieder auf Profil- und Member-Security-APIs
· KlusterServices
Verwenden Sie ECDSA P-256 für Zertifikate-Spezifikationen und migrieren RSA
· kamo-shared-library
findTeamById für zuverlässige TeamMember-Auflösung hinzufügen
· kamo-shared-library
Filialtypen mit Sicherheitsmodellen durch org-ID laden
· kamo-shared-library
Optionale Cache-Control auf Objekt-Upload
Wird durch Themenbereitstellung verwendet, so globals.css und config.json instruct Browser und Proxys zu revalidate, anstatt abgestandene ingekachete Objekte zu dienen.
· SecurityService
ThemeRevision in Konfiguration und Cache-Header auf Themen-Assets-Assets
Emit themeRevision (epoch ms) in config.json auf jedem Schreiben; Set Cache-Control auf config, globals.css und site.webmanifest Uploads so edge caches revalidate.
· kamo-shared-library
************ für Avatar-Werber hinzufügen
Wird beim Entfernen eines Avatars verwendet, so dass das Mitglied überschreibt und auf dieselbe Zeile verweist, kann vor dem Löschen gelöscht werden.
· kamo-internal
Klarer Assistent sessionStorage auf frischer Einrichtung über ?fresh=1
Navigieren Sie von Netzwerk, um mit ?fresh=1 zu erstellen, entfernen Sie die Abfrage, und verwenden Sie eine kurzlebiges Schloss, so React Strict Mode nicht wiederherzustellen einen alten Entwurf vor persist läuft. Wizard Draft lebt in sessionStorage (nicht localStorage).
· kamo-shared-library
Maßnahmen zur Einhaltung von Alkohol/Tabak/Feuerwaffen
- CHILD_ORG_SECURITY_MODELS Spalten und Entitäts-Standards MEMBER_SELECT - DTO und ChildOrgSecurityModelService Normalisierung erstellen/aktualisieren - AppliedModelEnforcementService wendet Richtlinien für Kinder oder ATF-Flags und Singleton Alter
· SecurityService
ATF-Compliance-Richtlinien für Modelle und cretable Filialtypen aufdecken
- OrganizationController wendet Musterdurchsetzung vor Altersbehauptungen an - SecurityModelController und MasterModelController bestehen Richtlinienfelder - BranchTypeController beinhaltet Richtlinien in /branch-types/creatable
· kamo-internal
Compliance-Zauberer aus Sicherheitsmodellrichtlinien
- Zweigstellen-Typen API Karten Alkohol/Tabak/Feuerwaffen-Politik in den Assistentenzustand - Dynamic Compliance Schritt: weg von nav, wenn Modell behebt alle ATF und Alter - Alter und ATF kontrolliert nur, wenn MEMBER_SELECT oder mehrere Altersoptionen - Review zeigt nur Felder, auf die der Benutzer aufgefordert wurde; Titel Compliance-Einstellungen - Einstellungen: ATF-Politikradios unter erlaubten Mitglied Altersbereichen (Sicherheitsmodell) - Submit verwendet effektiveComplianceForSubmit für durchgesetzte Werte
· SecurityService
Align KnownAliases mit DNS und Auto-Zertscheide (Mails, Wiedergabe, Apps, Zeichen; Drop-App, Medien)
· kamo-marketing
Live-Staat mit Changelog-Link und Tageszählung anzeigen
Preview-Countdown und Anmeldung mit einem kompakten "Now LIVE" ersetzen Callout, halten Sie die changelog Link, und zeigen Sie immer die heutige Änderung zählen von der API nach dem Laden. Update VorschauBanner Strings über Locales.
· SecurityService
Machen Sie RoleRightsSyncService vollständig selbstheilend auf jedem Boot
Das Hinzufügen oder Entfernen eines RoleRightType darf nie wieder laufen KamoInitializerService. syncAll() läuft jetzt drei Phasen auf jedem Start: 1. Heal-Beschränkungen - lassen Sie jede CHECK-Beschränkung auf jede Rechtsträgerin fallen Tabelle und stellen Sie sicher, dass die beiden upsert-erforderlichen einzigartigen Einschränkungen existieren. Hibernate backt Enum-Werte in CHECK Einschränkungen bei CREATE TABLE Zeit und aktualisiert sie nie, und @UniqueConstraint wirkt nur auf CREATE TABLE, so dass beide driften, wenn Enums entwickeln. @Aufgezählt bereits gültige Werte in der Java-Layer setzt sie auf. 2. Verwaiste Rechte löschen - DELETE WHERE right_type NOT IN (current enum) Über alle sechs rechtsgelagerten Tabellen: org_role_rights, **************** member_rights, member_rights_applied, job_title_rights, dept_rights. Griffe sowohl ORDINAL int und STRING enum-name Lagerung. 3. fehlende Rechte einfügen - unverändert; sich auf die einzigartigen Einschränkungen verlässt in Phase 1 sichergestellt. Idempotent - sicher zu wiederholen. Hinzufügen/Entfernen von Enum-Werten erfordert jetzt nur der Neustart von SecurityService.
· kamo-internal
Plattform-Verwaltungseinstellungen hinzufügen - org planen Zuschüsse, Veranstaltungen, Plankatalog
- Neue Seiten unter /settings/platform (bewacht von hasPlatformAdminAccess): - /Organisationen - Liste jedes Org, grant/modify/revoke COMP-Pläne mit Gründen - /events - Audit-Feed von **************** - /pläne - Lesekatalog inklusive interner (isPublic=false) Pläne - useUserInfo: abgelöst hatPlatformAdminAccess von isGodModeActive() ODER (teamMember.isOrganizationOwner UND Organisation.isTopLevel) - billingApi: platform namespace (listOrgs, grantPlan, modifizieren Grant, revokeGrant, listPlans, listEvents) + X-God-Mode-Active Header beim Setzen von localStorage - /api/billing Proxy: leitet X-God-Mode-Active vom Client zum BillingService - Einstellungen-Hub + EinstellungenStatusWindow: neue "Plattformverwaltung"-Gruppe - BillingManager: Plattform-Besitzer-Banner ersetzt Stripe-Formular für Top-Level org (verdrahtet in /settings/account als Abrechnungs-Tab) - FeaturesManager: "Plattform-Besitzer - Innen" Header und unterdrücktes Upgrade CTAs, wenn org top-level und aktuell sub ist COMP - Organisationsklasse / OrgNetwork / PublicProvider: hinzufügen istTopLevel; entfernen toter "Typ"-Feld und die übrig gebliebenen Verbraucher in Netzwerk-Seite + Beziehung Manager - Entfernen Sie veraltete OrganisationType.ts
· BillingService
PlatformAdmin Controller + Service für Comp Plan Grants hinzufügen
- PlatformAdminController bei /api/billing/platform (Klassenebene @PlatformAdminOnly) - GET /orgs, GET /orgs/{orgId' - POST /orgs/{orgId'/grants, PATCH|DELETE /orgs/{orgId'/granants/{subId' - GET /plans (enthält isPublic=false) - GET /events - PlatformAdminService: Zuschuss schafft COMP Abonnement, löscht voraktiv sub, emittiert AbonnementEvent ************ 5s idempotency - @PlattformAdminOnly + HandlerInterceptor: zulassen, dass Gott-mode-aktive ODER (TeamMember.isOrganizationOwner AND Organization.isTopLevel, von DB neu gelesen) - AbonnementRenewalScheduler: COMP-Filiale storniert bei Ablauf (COMP_EXPIRED) und ruft Stripe nie an - BillingAdminService: MRR/ARR Aggregation schließt PaymentMethod=COMP aus - Lange als String belichtet (CockroachDB unique_rowid precision)
· InitializerService
Seed Organization.isTopLevel für Kamokrm und OWNER_UNLIMITED Selbst-Comp-Plan
- DataLoader: drop OrganizationType arg from createOrg, set isTopLevel=true on kamocrm - KamoCRMAgeReqUpdateRunner + Test: Spiel auf IS_TOP_LEVEL = TRUE statt TYPE - OrganisationTypeRemovalRunner: idempotent ALTER TABLE DROP COLUMN Typ - PlatformOwnerPlanSeeder: idempotently sicherstellen, dass der im Besitz von OWNER_UNLIMITED Plan jede Funktion abdeckt und ein permanentes COMP-Abonnement für sich hält
· kamo-shared-library
Hinzufügen von Organization.isTopLevel, PaymentMethod.COMP, COMP_* Eventtypen; Entfernen Sie OrganizationType enum
- Organisation: Ersetzen Sie totes Feld mit "isTopLevel"-Flagge für Plattform-Besitzer-Identifikation - PaymentMethod: COMP für kostenlose Plattform-admin Stipendien hinzufügen (keine Streifen) - AbonnementEventType: COMP_GRANTED, COMP_REVOKED, COMP_EXPIRED, COMP_MODIFIED hinzufügen - OrganisationRepository: findFirstByIsTopLevel hinzufügen() - OrganisationService: drop setType() call; Felder werden jetzt von isTopLevel gefahren
· kamo-internal
Abmelden-Button für das Original org des Benutzers auf Netzwerk-Seite ausschließen
· SecurityService
OrgOriginal auf Registrierung setzen und aussetzen istOriginalOrg in my-networks
· kamo-shared-library
OrgOriginal-Feld zum Benutzer zur Trackregistrierung hinzufügen org
· kamo-internal
Member-Antwort-Unterstützungs-Gating und Dual-Mode-Ticket Ansicht
- NavTop: zeigen SupportButton für jede Unterstützungsrecht (Agent oder Mitglied) - SupportButton: Gate jeder Dropdown-Artikel rechts - Erstellen/Ansicht-Tickets, Webinar anfragen, Meine Webinars nur angezeigt, wenn das Recht gehalten wird - SupportTicketListTab: Dual-Mode - Agenten siehe Volltabelle mit Thema filtern und zu-me-schalten; Mitglied-Anfragende sehen ihre eigenen Tickets nur (createdByMe=true), vereinfachte Spalten, Neues Ticket CTA - support/page.tsx: gate Tickets/My Webinars/Analytics tabs von rechts - Einstellungen Seiten (Konto, Abteilungen, Integrationen, Operationen): CONFIGURE_SYSTEM Redirect guard hinzufügen; Einstellungen Dashboard Mein Konto Abschnitt umzäunt von CONFIGURE_SYSTEM
· kamo-shared-library
Unterstützungsrechte für Mitglieder-Anhänger hinzufügen (133-136)
Fügt vier neue SUPPORT-rechte für Nicht-Agenten-Mitglieder hinzu: - **************** (133) - CREATE_SUPPORT_TICKET (134) - REQUEST_WEBINAR (135) - VIEW_MY_SCHEDULED_WEBINARS (136)
· kamo-internal
Spaltenfilter von Mitgliedern und Teammitgliedern entfernen
· kamo-internal
Sync Rights-Button zu SecurityRoleManager für Top-Level orgs hinzufügen
Button ist nur sichtbar, wenn organisatorisch.hasParent falsch ist. Anrufe POST /api/security/roles/sync-Rechte lädt dann die Rollentabelle neu auf.

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