Salta al contenuto
KAMOUniverse

Changelog

Cosa c'è di nuovo.

Ogni miglioramento alla piattaforma, come si spedisce.

  1. · BillingService

    Riscrivere BillingService attorno a BillingGroups

    Elimina il livello di org. controllori, servizi e DTO. Introduce: - Gruppi di montaggio BillingGroupController, membri, abbonamenti, licenze, metodi di pagamento e fatture sotto /api/billing/groups. - BillingGroupService (lifecycle + Default Group + Free baseline), BillingGroupMemberService (applicazione di un gruppo per membro), BillingGroupSubscriptionService (Stripe sync with fallback to FREE DEFAULT E' una cosa da fare. Servizio fatturazione, LicenseService (priorità di disattivazione automatica + riattivazione inversa). - PlanCatalogService + PlanCatalogController a ************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** - StripeWebhookServizio che consuma abbonamento / fattura / eventi di pagamento-metodo. - EntitlementInvalidator che pubblica segnali di invalidazione Redis. - PlatformAdminService + PlatformAdminController di ritorno per-org roll-up.

  2. · kamo-shared-library

    Sostituisci fatturazione a livello org con il modello BillingGroup

    Presenta BillingGroup, BillingGroupMember, BillingGroupSubscription, BillingGroupLicense, BillingGroupPaymentMethod, BillingGroupInvoice, e Enti BillingGroupConfig (tutti in commercio condiviso/billing/billinggroup). Getta il vecchio BillingSubscription / BillingCustomer / BillingConfig / BillingPaymentMethod / BillingInvoice / BillingCredit / BillingUsageSnapshot entità del tutto — ogni org ora ottiene un gruppo di default con un GRATIS DEFAULT Abbonamento KamoCRM come base. Aggiunge la giunzione SecurityModelCommerceMarket collegare modelli di sicurezza ai mercati di commercio con abilitazione per-scope.

  3. · SecurityService

    Interaction Center member line utilizza i titoli di lavoro

    Sostituisci il titolo di ruolo RBAC con il lavoroTitleOfficial, fallback a JobTitle titolo di catalogo per TeamMember, e l'etichetta Member for base Member record nel campo di ruolo payload by-department.

  4. · kamo-internal

    Campo ufficiale del titolo di lavoro per i membri del team sulla mia scheda di posizione

  5. · kamo-shared-library

    Aggiungi TeamMember.jobTitleOfficial colonna stringa opzionale (60 chars)

  6. · SecurityService

    Esposizione e persistere del lavoroTitleOfficial per i membri del team su API di profilo e di sicurezza dei membri

  7. · KlusterServices

    Utilizzare ECDSA P-256 per cert-manager Certificati specifiche e migrare RSA

  8. · kamo-shared-library

    Aggiungi trovareTeamMemberById per una risoluzione TeamMember affidabile

  9. · kamo-shared-library

    Carico tipi di branch con modelli di sicurezza per org id

  10. · kamo-shared-library

    Cache-Control opzionale sul caricamento degli oggetti

    Utilizzato per il provisioning del tema così globals.css e config.json istruire i browser e proxy per rivalidate invece di servire oggetti cache stanti.

  11. · SecurityService

    ThemeRevision in config e cache intestazioni su asset tematici

    Emettere temaRevision (epoch ms) in config.json su ogni scrittura; set Cache-Control su config, globals.css e sito. webmanifest carica così le cache dei bordi rivalutano.

  12. · kamo-shared-library

    Aggiunta di **********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************

    Utilizzato quando si rimuove un avatar in modo che il membro overrides arbitrare la stessa riga può essere cancellato prima di eliminare.

  13. · kamo-internal

    Clear wizard sessionStorage su fresco creare via ?fresh=1

    Navigare da Rete per creare con ?fresh=1, rimuovere la query e utilizzare una blocco di breve durata in modo React Strict Modalità non ripristina una vecchia bozza prima persistere corre. Mago progetto di vite in sessioneStorage (non localStorage).

  14. · kamo-shared-library

    Politiche di conformità alle armi da fuoco/ alcool

    - CHILD ORG SECURITY MODELS colonne ed entità default MEMBER SELECT - DTO e ChildOrgSecurityModelService creano/aggiornamento normalizzazione - AppliedModelEnforcementService applica le politiche per il bambino org bandiere ATF e età singleton

  15. · SecurityService

    Esporre le politiche di conformità ATF sui modelli e sui tipi di branch creati

    - OrganizationController applica l'applicazione del modello prima delle assenze di età - SecurityModelController e MasterModelController passano i campi - BranchTypeController include politiche in /branch-types/creatable

  16. · kamo-internal

    Mago di conformità dalle politiche dei modelli di sicurezza

    - I tipi di rami API mappano le politiche di alcol/tobacco/firearms in stato wizard - Fase Dynamic Compliance: omit from nav when model fixs all ATF and ages - Età e ATF controlla solo quando MEMBER SELECT o più opzioni di età - La recensione mostra solo i campi per cui l'utente è stato richiesto; - Impostazioni: radio di politica ATF sotto Amministrazioni di età consentite (modello di sicurezza) - Inviare usi efficaciComplianceForSubmit per valori forzati

  17. · SecurityService

    Allineare KnownAliases con DNS e auto-cert (add mail, play, app, segno; drop app, media)

  18. · kamo-marketing

    Mostra lo stato dal vivo con link changelog e conteggio giornaliero

    Sostituisci l'anteprima conto alla rovescia e firma copia con un compatto "Now LIVE" callout, mantenere il link changelog, e mostrare sempre il numero di cambiamento di oggi dall'API dopo che si carica. Aggiornare l'anteprimaBanner stringhe tra le località .

  19. · SecurityService

    Rendere RoleRightsSyncService completamente self-healing su ogni boot

    Aggiungere o rimuovere un RoleRightType non deve mai più richiedere la corsa KamoInitializerService. syncAll() ora esegue tre fasi su ogni startup: 1. I vincoli di guarigione — abbassare ogni vincolo CHECK su ogni porta destra tavolo e garantire i due vincoli unici upsert-required esistono. Hibernate cuoce valori enum in vincoli CHECK a TABELLA CREATA il tempo e non li aggiorna mai, e @UniqueConstraint solo prende effetto su TABELLA CREATA, così entrambi alla deriva ogni volta che gli enum si evolvono. @Enumerated già applica valori validi allo strato Java. 2. Eliminare i diritti orfani — DELETE DOVE right type NON IN (attuale enum) attraverso tutti e sei i tavoli portanti: # Org role rights # member rights, member rights applied, job title rights, dept rights. Maniglie sia ORDINAL int che STRING enum-name storage. 3. Inserire i diritti mancanti — invariati; si basa sui vincoli unici assicurata nella fase 1. Idempotent — sicuro da rifare. Aggiunta / rimozione dei valori di enum richiede ora Riavvia solo il SecurityService.

  20. · kamo-internal

    Aggiungere le impostazioni dell'Amministrazione della Piattaforma — borse di org, eventi, catalogo di piani

    - Nuove pagine sotto /settings/platform (guardate da hasPlatformAdminAccess): - /organizzazioni — elencare ogni org, concedere/modificare/rivocare piani COMP con motivi - Eventi - mangimi di controllo di... - /plans — catalogo di sola lettura compresi i piani interni (isPublic=false) - useUserInfo: deriva haPlatformAdminAccesso da isGodModeActive() O (teamMember.isOrganizationOwner AND Organization.isTopLevel) - fatturazioneApi: piattaforma namespace (listOrgs, grantPlan, changeGrant, revocaGrant, listPlans, listEvents) + Intestazione X-God-Mode-Active quando impostata bandiera localeStorage - /api/billing proxy: inoltra X-God-Mode-Active dal cliente a BillingService - Impostazioni hub + SettingsStatusWindow: nuovo gruppo "Platform Administration" - BillingManager: banner platform-proprietario sostituisce il modulo Stripe per org di alto livello (wired in /settings/account come scheda di fatturazione) - FeaturesManager: "Platform Owner — Interno" intestazione e aggiornamento soppresso CTA quando org è di livello superiore e sub corrente è COMP - Classe di organizzazione / OrgNetwork / PublicProvider: aggiungere isTopLevel; rimuovere campo `di tipo` morto e i consumatori a sinistra in pagina di rete + rapporto manager - Rimuovere deprecated OrganizationType.ts

  21. · BillingService

    Aggiungi PlatformAdmin controller + servizio per borse di comp plan

    - PlatformAdminController a /api/billing/platform (class-level @PlatformAdminOnly) - GET /orgs, GET /orgs/{orgId} - POST /orgs/{orgId}/grants, PATCH|DELETE /orgs/{orgId}/grants/{subId} - GET /plans (include èPublic=false) - GET / eventi - PlatformAdminService: la sovvenzione crea COMP SubscriptionRecord, cancella la prima attiva sub, emette SubscriptionEvent E' il momento giusto. 5s idempot - @PlatformAdminOnly + HandlerInterceptor: consentire dio-mode-attivo O (TeamMember.isOrganizationOwner AND Organization.isTopLevel, re-read from DB) - AbbonamentoRenewalScheduler: Il ramo COMP annulla alla scadenza (COMP EXPIRED) e mai chiama Stripe - BillingAdminService: L'aggregazione MRR/ARR esclude il pagamentoMethod=COMP - Long ids esposti come String (CockroachDB Unique rowid precision)

  22. · InitializerService

    Seed Organization.isTopLevel per kamocrm e OWNER UNLIMITED autocomp

    - DataLoader: drop Organization Digitare arg da creareOrg, set isTopLevel=true su kamocrm - KamoCRMAgeReqUpdateRunner + test: match su IS TOP LEVEL = TRUE invece di TYPE - OrganizzazioneTypeRemovalRunner: Idempotent ALTER TABLE DROP COLUMN type - PlatformOwnerPlanSeeder: idempotently garantire kamocrm-owned OWNER UNLIMITED piano copre ogni caratteristica e detiene un abbonamento COMP permanente per sé

  23. · kamo-shared-library

    Aggiungere Organization.isTopLevel, PaymentMethod.COMP, tipi di eventi COMP *; rimuovere Organizzazione Tipologia

    - Organizzazione: sostituire il campo `type` morto con la bandiera `isTopLevel` per l'identificazione del proprietario della piattaforma - PaymentMethod: aggiungi COMP per le borse gratuite di platform-admin (no Stripe) - AbbonamentoTipo: aggiungere COMP GRANTED, COMP REVOKED, COMP EXPIRED, COMP MODIFIED - OrganizzazioneRepository: aggiungere findFirstByIsTopLevelTrue() - OrganizationService: drop setType() call; i campi sono ora guidati da isTopLevel

  24. · kamo-internal

    Nascondi il pulsante di cancellazione per l'org originale dell'utente nella pagina di rete

  25. · SecurityService

    Impostare orgOriginal sulla registrazione ed esporre èOriginalOrg in mynetworks

  26. · kamo-shared-library

    Aggiungi campo orgOriginal all'Utente per monitorare la registrazione org

  27. · kamo-internal

    Diritti di sostegno dei richiedenti e visione dei biglietti a doppia modalità

    - NavTop: mostrare SupportButton per qualsiasi diritto di supporto (agente o membro) - SupportButton: cancello ogni elemento a discesa a destra — creare / visualizzare i biglietti, Richiesta Webinar, My Webinars mostrato solo quando si tiene il diritto - SupportTicketListTab: dual-mode — gli agenti vedono la tabella completa con l'argomento filtrare e attivare le operazioni assegnate; i richiedenti dei membri vedono i propri solo biglietti (createdByMe=true), colonne semplificate, Nuovo Biglietto CTA - supporto/page.tsx: gate Biglietti/My Webinars/Analytics schede a destra - pagine delle impostazioni (account, reparti, integrazioni, operazioni): aggiungere CONFIGURE SYSTEM redirect guard; Impostazioni dashboard My Account sezione gated by CONFIGURE SYSTEM

  28. · kamo-shared-library

    Aggiungere diritti di sostegno ai richiedenti (133-136)

    Aggiunge quattro nuovi diritti SUPPORT-scoped per i membri non esperti: - No, no. - CREATE SUPPORT TICKET (134) - REQUEST WEBINAR (135) - VIEW MY SCHEDULED WEBINARS (136)

  29. · kamo-internal

    Rimuovere i filtri delle colonne dalle schede membri e membri del team

  30. · kamo-internal

    Aggiungi il pulsante Sync Rights a SecurityRoleManager per gli org di alto livello

    Pulsante è visibile solo quando l'organizzazione.hasParent è falso. Chiamate POST /api/security/roles/sync-rights poi ricarica la tabella dei ruoli.

Il tuo universo ti sta aspettando.

Aggiungi i prodotti quando sei pronto: nessuna migrazione, nessun nuovo login, nessuna richiesta di pagamento.

Gratis per sempre — nessuna carta di credito richiesta