Changelog
Ce qui est nouveau.
Chaque amélioration apportée à la plateforme, à mesure qu'elle est livrée.
· BillingService
Réécrire le service de facturation autour de BillingGroups
Supprime le niveau de l'ordonnance contrôleurs, services et DTO. Introduit: - Groupes de montage, membres, abonnements, licences, groupes demotocycleur, les méthodes de paiement, et les factures sous /api/facturation/groupes. - BillingGroupService (cycle de vie et groupe par défaut - niveau de référence libre), Facture de BillingGroupMemberService (reflètement d'un groupe par membre), BillingGroupSubscriptionService (Stripe sync with repli to FREE-DEFAULT) en cas d'annulation/vole), - BillingGroupInvoiceService, Licenend Service (priorité d'auto-désactivation et réactivation inverse-priorité). - PlanCatalogService et PlanCatalogController à l'adresse suivante: - StripeWebhookService consommant des abonnements / factures/méthodes de paiement. - Actif invalidant l'invalidateur publiant des signaux de Redis invalidation. - PlatformAdminService et PlatformAdminContrôleller retour par enroulement enorgé.
· kamo-shared-library
Remplacer la facturation au niveau de l'org par le modèle BillingGroup
Introduit BillingGroup, BillingGroupMembre, BillingGroupAbonnement, BillingGroupLicense, BillingGroupPaymentMethod, BillingGroupVovoice, et Les entités de FactingGroupConfig (toutes sous commerce partagé/bille/groupe de facturation). Lâche l'ancien abonnement de facturation / FacturationCouleur / BillingConfig / FacturePaymentMethod / Facture Facture / FacturationCrédit / BillingUsageSnapshot Entités entièrement - chaque org obtient maintenant un groupe par défaut avec un groupe GRATUIT Abonnement à KamoCRM en tant que valeur initiale. Adds SecurityModelCommerceMarket (engrenage de marché) lier les modèles de sécurité aux marchés du commerce avec l'élument par champ d'application.
· SecurityService
La ligne des membres du Centre d'interaction utilise des titres d'emploi
Remplacer le titre du rôle du RBAC par un posteTitreOfficial, replier sur JobTitle Titre du catalogue pour le membre de l'équipe et le label Membre pour le membre de base les enregistrements dans le domaine du rôle de la charge utile du département.
· kamo-internal
Champ du titre officiel du poste pour les membres de l'équipe sur ma carte de position
· kamo-shared-library
Ajouter TeamMember.jobTitlerOfficialoption string column (60 chars)
· SecurityService
Déplômant et maintiend/profiléTitléTitléOetillez les membres de l'équipe sur les IPA de profil et de sécurité des membres
· KlusterServices
Utiliser ECDSA P-256 pour les spécifications du certificat de certificat et migrer la RSA
· kamo-shared-library
Ajouter findTeamMemberById pour une résolution fiable de l'équipeMembre
· kamo-shared-library
Types de branchement de charge avec modèles de sécurité par org id
· kamo-shared-library
Contrôle de cache optionnel sur le téléchargement d'objets
Utilisé par provisionnement de thèmes de manière globalement.css et config.json instructent les navigateurs et des eroxydages pour revalider au lieu de servir des objets caduques.
· SecurityService
ThèmeRévision en têtes de configuration et en têtes de cache sur les ressources thématiques
Emit themeRevision (epth ms) in config.json sur chaque écriture; set Cache-Control sur config, globals.css, et site.webmanifest télécharges donc les caches edge revalidate.
· kamo-shared-library
Ajouter pour le nettoyage de l'avatar
Utilisé lors de la suppression d'un avatar, le membre passe outre le référencement de la même ligne peut être effacé avant de supprimer.
· kamo-internal
Session d'ordinage clairStorage sur la création à nouveau via ?fresh
Naviguez à partir du réseau pour créer avec ?fresh-1, désactiver la requête, et utiliser un Serrure de courte durée de sorte que React Strict Mode ne restaure pas un vieux brouillon avant persister. Wizard draft lives lives lives en sessionStorage (pas localStorage).
· kamo-shared-library
Politiques de conformité alcool/tobac/armes à feu
- Colonnes et entité par défaut de l'entité MEMBRE-SELECT DTO et ChildOrgSecurityModelService créent/mise à jour de la normalisation - AppliedModelEnforcementService applique des politiques à l'égard des drapeaux de l'ATF et de l'âge du singleton pour les enfants
· SecurityService
Exposer les politiques de conformité de l'ATF sur les modèles et les types de succursales créatables
- Le contrôleur de l'organisation applique l'application de la loi type avant les assertions d'âge - SecurityModelContrôleur et MasterModelController passe les champs - BranchTypeController inclut les politiques dans les /soupages/créables
· kamo-internal
Un magicien de la conformité des politiques du modèle de sécurité
- L'API définit les politiques relatives à l'alcool/à l'importation et aux armes à feu dans l'État de magiciens - Étape de conformité dynamique : omettre à partir de la navigation lorsque le modèle fixe tous les ATF et tous les âges - L'âge et l'ATF ne contrôlent que les options MEMBRES-SELECT ou les options d'âge multiple - L'examen montre que les champs pour lesquels l'utilisateur a été invité; - Paramètres : Radios de politique ATF dans le cadre des fourchettes d'âge des membres autorisées (modèle de sécurité) - Soumettre les utilisations effectivesComplianceForSubmit pour les valeurs appliquées
· SecurityService
Aligner KnownAliases avec DNS et auto-cert (ajouter du courrier, jouer, des applications, des applications; l'application drop, le média)
· kamo-marketing
Afficher l'état en direct avec le lien changelog et le nombre quotidien
Remplacer le compte à rebours de l'aperçu et la copie d'inscription par un compact "Now LIVE" appeler, garder le lien changelog, et toujours montrer le nombre de changements d'aujourd'hui à partir de l'API après qu'elle a des charges. Mettre à jour les chaînes de prévisualisationBanner à travers les paramètres locaux.
· SecurityService
Faire des rôlesRightsSyncService entièrement auto-cicatrant chaque boot
L'ajout ou la suppression d'un type RoleRightTpe ne doit plus jamais nécessiter de fonctionner KamoInitializeserService. syncAll() exécute maintenant trois phases à chaque startup: 1. Contraintes de guérison et chuter chaque contrainte de CHECK sur chaque droit porteur et de veiller à ce que les deux contraintes uniques requises soient mises en place. Hibernate cuit les valeurs d'enum dans les contraintes de CHECK à CREATE TABLE et ne les met à jour jamais, et la contrainte de se limiter à l'entrée en vigueur de la loi sur l'environnement. sur CREATE TABLE, donc les deux dérivent chaque fois que les enums évoluent. Dénommée impose déjà des valeurs valides à la couche Java. 2. Supprimer les droits des orphelins - DÉLORSE QUEVER LE VERROU DE RIEN DE L'ENFANT sur les six tableaux à l'appui des droits: org-role-droits, membres, membres, droits, droits, droits, droits de l'homme. Médie à la fois ORDINAL int et STRING enume-marine de stockage. 3. Insérer des droits manquants - inchangés; s'appuyer sur les contraintes uniques assuré dans la phase 1. Idémpotent - sûr à refaire. L'ajout/suppression des valeurs enum nécessite maintenant ne redémarrant que SecurityService.
· kamo-internal
Ajouter les paramètres de l'administration de la plate-forme et les subventions du plan d'orgg, les événements, le catalogue de plans
- Nouvelles pages sous/fixes/plateforme (sauvegardées par hasPlatformAdminAccess): - / organisations - liste de chaque org, subvention/modifier/revocher les plans COMP avec des raisons - /vents et flux d'audit de /plans et catalogues en lecture seule, y compris les plans internes (is publics et faux-ses) - utilisationUserInfo: dérive de la plateformeAdminAccess de isGodModeActive() OR (teamMember.isOrganizationOwner AND organization.isTopLevel) - FacturationApi: espace de noms de la plate-forme (listOrgs, grantPlan, modificationGrant, rut-royGrant, listPlans, listeEvents) et en-tête X-God-Mode-Active lorsque localStorage drapeau - /api/facturation par procuration : transmet X-God-Mode-Active du client au service de facturation - Plateau de réglages et SettingsStatusWindow: nouveau groupe "Gestion des plates-formes" - BillingManager: la bannière du propriétaire de plate-forme remplace le formulaire Stripe pour l'ordre supérieur (câbré/décentrées/comptes en tant qu'onglet de facturation) - CaractéristiquesGestionnaire: en-tête "Papier de la plate-forme et interne" et mise à niveau supprimée CTA lorsque l'ordre est supérieur et que le sous-produit actuel est COMP - Classe d'organisation / OrgNetwork / PublicProvider: ajouter est HautLevel; supprimer champ mort et les consommateurs restants dans la page et la relation entre les consommateurs Responsable - Enlever OrganizationTyp.ts déprécié
· BillingService
Ajouter PlatformAdmin contrôleur et service pour les subventions au plancomp
- PlatformAdminContrôleur à l'adresse /api/billing/plateforme (niveaux de la classe (PlatformAdminOnly) GET/orgs, GET/orgs/orgs/orgId - POST/orgs/-org-difi/grants, PATCH-DELETE/orgs/-org-/gants/sub-Id/sub-d. GET/plans (y compris Public-false) - GET/events - PlatformAdminService: subvention crée COMP SubscriptionRecord, annule le préalable actif sub, émet l'abonnementEvent et 5s idempotency Intercepteur: permettre à Dieu-activer OU (TeamMember.isOrganizationOwner AND Organization.isTopLevel, re-lecture à partir de DB) - AbonnementsRenewalScheduler: la branche COMP s'annule à l'expiration (COMP-EXPRED) et ne jamais appeler Stripe - FacturationAdminService : l'agrégation MRR/ARR exclut le paiement - Longues ids exposées sous le nom de String (CockroachDB, précision et frontine unique)
· InitializerService
Seed Organization.isTopLevel pour kamocrm et OWNER-UNLIMITED auto-comp-plan
- DataLoader: drop OrganizationType arg de createOrg, set is ToopLevel-true on kamocrm - KamoCRMAgeReqUpdateRunner - test: correspondance sur IS-TOP-LEVEL ' TRUE au lieu de TYPE Type d'organisationRemovalRunner: idempotent ALTER TABLE DROP COLUMN type - PlatformOwnerPlanSeeder: assurez-vous que le plan KPERNIMIMITED appartenant à kamocrm couvre toutes les caractéristiques et est titulaire d'un abonnement COMP permanent pour lui-même
· kamo-shared-library
Ajouter Organization.isToplevel, PaymentMethod.COMP, COMPz et supprimer OrganizationType enum
- Organisation : remplacer le champ mort par le drapeau « is ToopLevel » pour l'identification du propriétaire de la plate-forme - PaymentMethod: ajouter COMP pour les subventions gratuites de plates-formes admin (pas de Stripe) - AbonnementEventType : ajouter COMP-GRANTED, COMP-REVOKED, COMP-EXPURE, COMP-MODIFIÉ - OrganizationRepository: ajouter findFirstByIsTopLevelTrue() - OrganizationService: drop setType() call; les champs sont désormais pilotés par le niveau supérieur
· kamo-internal
Contre le bouton de désabonnement pour l'orge d'origine de l'utilisateur sur la page réseau
· SecurityService
SetorgOriginal sur l'enregistrement et l'exposition isOriginalOrg dans mes réseaux
· kamo-shared-library
Ajouter orgOriginal champ à l'utilisateur pour suivre l'enregistrement org
· kamo-internal
Le vote de départ des droits de soutien aux membres et le billet en double mode
- NavTop: montrer SupportButton pour tout droit de support (agent ou membre) - SupportButton: portez chaque élément d'appel d'offres de droite - Créer/Afficher les billets, Webinaire de demande, Mes webinaires ne sont affichés que lorsque la droite est détenue - SupportTicketListTab: bimode et agents voir le tableau complet avec thème filtrer et basculer à moi; les demandeurs membres voient leur propre tickets uniquement (crééByMe-true), colonnes simplifiées, New Ticket CTA - support/page.tsx: gate Tickets/Mes internassions/Analytics tabs de droite - Paramètres des pages (compte, départements, intégrations, opérations): Ajouter CONFIGURE-SYSTEM redirect guard; paramètres tableau de bord Mon compte section fermée par CONFIGURE-SYSTEME
· kamo-shared-library
Add membre-requis de soutien aux droits (133-136)
Ajout de quatre nouveaux droits de soutien pour les non-membres de l'agent: - - (133) - CRÉATEUR-STÉCURISÉ(EN) (134) - DEMANDE ET DE WEBINAR (135) - VEW-MY-SCHEDED-WEBINARS (136)
· kamo-internal
Supprimer les filtres de colonne des onglets des membres et des membres de l'équipe
· kamo-internal
Ajouter le bouton de synchronisation des droits à SecurityRoleManager pour les orgs de haut niveau
Le bouton n'est visible que lorsque organisation.hasParent est faux. Appels d'appels POST /api/security/roles/sync-rights puis recharge le tableau des rôles.

Votre univers vous attend.
Commencez gratuitement en quelques minutes. Ajoutez des produits quand vous êtes prêt. Pas de migration, pas de nouvelles connexions.
Gratuit pour toujours — aucune carte de crédit requise