Changelog
Qué hay de nuevo.
Cada mejora de la plataforma, a medida que se envía.
· BillingService
Reescribe BillingService alrededor de BillingGroups
Elimina el nivel de org **************** controladores, servicios y DTO. Introduce: - BillingGroupControllermontes grupos, miembros, suscripciones, licencias, métodos de pago y facturas en /api/facturación/grupos. - BillingGroupService (ciclo de vida - Grupo por defecto - línea base gratuita), BillingGroupMemberService (ejactuación de un solo grupo por miembro), BillingGroupSubscriptionService (Stripe sync con retroceso a FREE-DEFAULT en cancel/lapse), **************** BillingGroupInvoiceService, LicenciaService (prioridad de autodesactivación - reactivación inversa-prioritaria). - PlanCatalogService . PlanCatalogController en ******************* - StripeWebhookService consumiendo suscripción / factura / pago-método eventos. - DerechosInvalidadores editoriales de reinavización de señales de invalidación. - PlatformAdminService . PlatformAdminController devolviendo rodillos per-org.
· kamo-shared-library
Reemplazan facturación a nivel de org con modelo de BillingGroup
Presenta a BillingGroup, BillingGroupMember, BillingGroupSubscription, BillingGroupLicense, BillingGroupPaymentMethod, BillingGroupInvoice, y Destrucciones de BillingGroConfig (todas ellas en el marco de comercio compartido/facturación/cocinero). Deja caer la antigua BillingSubscripción / BillingCustormer / BillingConfig / BillingPaymentMethod / BillingInvoice / BillingCredit / BillingUsageSnapshot entidades totalmente, cada org ahora obtiene un Grupo por defecto con un GRATIS-DEFAULT Suscripción de KamoCRM como referencia. Añade SeguridadModelCommerceMarket enlaza vincular modelos de seguridad a los mercados de comercio con la habilitación porcopio.
· SecurityService
Línea de miembros del Centro de Interacción utiliza títulos de trabajo
Reemplazar el título de RBAC por trabajoTítulo Oficial, se le da la vuelta a JobTitle título del catálogo para TeamMember, y el miembro de la etiqueta de miembro de base registros en el campo de funciones de carga útil por departamento.
· kamo-internal
Campo oficial de empleo para los miembros del equipo en la tarjeta de posición de mi perfil
· kamo-shared-library
Añadir TeamMember.jobTillatleOta de la cadena opcional (60 chars)
· SecurityService
Exponer y persistir trabajoTítulo Oficial para los miembros del equipo en perfiles y API de seguridad de miembros
· KlusterServices
Utilo ECDSA P-256 para especificaciones de certificado cert-gerente y migrar RSA
· kamo-shared-library
Agregar encontrarTeamMemberById para una resolución de equipo fiable
· kamo-shared-library
Tipos de rama de carga con modelos de seguridad por org id
· kamo-shared-library
Cache-Control opcional en la carga de objetos
Utilizado por el aprovisionamiento temático para globals.css y config.json instruct browsers y proxies para revalidar en lugar de servir objetos ranos en la caché.
· SecurityService
ThemeRevision en encabezados de config y caché sobre activos temáticos
Emitir temaRevisión (epoch ms) en config.json en cada escritura; set Cache-Control en config, globals.css, y las subidas de sitio.webmanifest para revalidar los alijos de borde.
· kamo-shared-library
Añadir ************* para la limpieza de avatar
Utilizado al eliminar un avatar para que el miembro anúe la referencia a la misma fila puede ser despejado antes de borrar.
· kamo-internal
Asistente despejeDeseoStorage en nueva creación vía ?fresh=1
Navegue de Network para crear con ?fresh=1, desnudar la consulta y utilizar un candado de corta duración para que React Strict Mode no restablezca un viejo borrador antes persist corre. Wizard draft vive en sesiónStorage (no localStorage).
· kamo-shared-library
Políticas de cumplimiento de alcohol/tabaco/mafuegos
- Columnas de la entidad y predeterminación de la entidad de los QUIENDO-ETIJELíficos - DTO y ChildOrgSecurityModelService crear/actualizar la normalización - AppliedModelforcementEl servicio aplica políticas a las banderas de la ATF infantil y edades de singleton
· SecurityService
Expong las políticas de cumplimiento de la ATF en modelos y tipos de sucursales creadora
- OrganizaciónControla de aplicación modelo de aplicación de la ley antes de las afirmaciones de edad - SecurityModelController y MasterModelController aprueban campos de políticas - BranchTypeController incluye políticas en /branch-types/creatable
· kamo-internal
Asistente de cumplimiento de las políticas de modelos de seguridad
- Tipos de sucursales API mapea políticas de alcohol/tobaco/-armas en el estado del asistente - Paso dinámico de cumplimiento: omitido de nav cuando el modelo fija todo ATF y edades - La edad y la ATF solo se controlan cuando se han desproporunado o múltiples opciones de edad - La reseña muestra sólo campos por los que el usuario fue impulsado; Configuración de Cumplimiento de Títulos - Ajustes: radios de política de la ATF en rangos de edad de miembros permitidos (modelo de seguridad) - Enviar utiliza eficazCienciaParamisión para valores aplicados
· SecurityService
Alinear KnownAliases con DNS y auto-cert (add mail, play, apps, letr; aplicación de caída, medios)
· kamo-marketing
Mostrar estado en vivo con enlace de cambio y conteo diario
Reemplaza la cuenta atrás y la copia de registro con una "Ahora en vivo" compacta llamando, mantenga el enlace de cambio, y siempre muestre el conteo de cambios de hoy de la API después de que se carga. Previsualización de actualizaciónLas cadenasBanner a través de los locales.
· SecurityService
Hacer RoleRightsSyncService totalmente auto-curación en cada bota
Agregar o eliminar un RoleRightType no debe exigir de nuevo ejecutar KamoInitializerService. syncAll() ahora ejecuta tres fases en cada startup: 1. Limitaciones de curación - bajar todas las restricciones de CHECK a todos los derechos que se deben a todos los derechos mesa y asegurar que existan las dos limitaciones únicas requeridas por la información. Hibernate hornea valores enum en las restricciones CHECK en la tabla de CREATE el tiempo y nunca los actualiza, y la "UniqueConstraint" sólo entra en vigor en CREATE TABLE, por lo que ambos van a la deriva cada vez que evolucionan los enums. Enumerado ya hace cumplir valores válidos en la capa de Java. 2. Borrar los derechos huérfanos de la Libertad con ETA DE DONDE derecho. NO IN (current enum) en las seis tablas de la derecha: orgole.rights, **************** relaciones derechas, member-rights-applied, job-title-rights, dept-rights. Maneje tanto el int ORDINAL como el almacenamiento de nombre enum. 3. Añádase derechos que faltan y sin cambios; se basa en las limitaciones únicas garantizado en la fase 1. Idempotente, seguro de volver a correr. Añadir/eliminar valores enum ahora requiere sólo reiniciar SecurityService.
· kamo-internal
Añadir la Configuración de la Administración de Plataformas - org plan grants, eventos, catálogo de plan
- Nuevas páginas bajo /settings/plataforma (guardada por hasPlatformAdminAccess): - / organizaciones - listar todos los planes org, subvención/modificar/revocar COMP con razones - /eventos, alimentación de auditoría de **************** - /planos de catálogo de sólo lectura incluyendo planes internos (esPublic=false) - useUserInfo: deriva haPlatformAdminAccess de esGodModeActive () OR (equipoMember.isOrganizationOwner AND organization.isTopLevel) - facturaciónApi: espacio de nombre de la plataforma (listOrgs, grantPlan, modifyGrant, revokeGrant, listPlans, listEventos) - Cabeza X-God-Mode-Active cuando local se establece la bandera de Storage - /api/billing proxy: forwards X-God-Mode-Active de cliente a BillingService - Configuración del centro de configuración deStatusWindow: nuevo grupo "Gestric de Plataforma" - BillingManager: banner de plataforma-propietario reemplaza la forma de Stripe para org de primer nivel (conectado en /settings/cuenta como la ficha de facturación) - FeaturesManager: "Platform Owner" cabecera interna y actualización suprimida CTAs cuando org es de primer nivel y la subestunda actual es COMP - Clase de organización / OrgNetwork / PublicProvider: add isTopLevel; eliminar campo de "tipo" y los consumidores sobrantes en la página de la red - relación gerente - Retirar despreciado OrganizationType.ts
· BillingService
Añadir Controlador PlatformAdmin , servicio para subvenciones del plan de compensación
- PlatformAdminController at /api/billing/plataforma (nivel de clase .PlatformAdminOnly) - GET /orgs, GET /orgs/EorgId. - POST /orgs/orgIdá/grants, PATCH-DELETE /orgsio/-orgIdá/grants/-subId. - GET /plans (incluye esPublic=false) - GET /events - PlatformAdminService: subvención crea la suscripción COMPRecord, cancela activo previo sub, emite SuscriptionEvent ************* 5s idempotency - PlatformAdminOnly HandlerInterceptor: permite la OR-mode-activo de diod-moactiva (TeamMember.isOrganizationOwner AND Organization.isTopLevel, re-leído de DB) - SuscripciónRenewalScheduler: COMP se cancela al expirar (COMP-EXPIRED) y nunca llama a Stripe - BillingAdminService: MRR/ARR agregación excluye el pagoMethod=COMP - Largos ids expuestos como String (CockroachDB unique-rowid precision)
· InitializerService
Semilla Organization.isAoptor para el plan de autocompcomp de kamocrm y OWNER-UNLIMITED
- DataLoader: drop OrganizationType arg de createOrg, set isTopLevel=true on kamocrm - KamoCRMAgeReqUpdateRunner . prueba: match on IS-TOP-LEVEL = TRUE en lugar de TYPE - OrganizationTypeRemovalRunner: idempotente ALTER TABLE DROP COLUMN tipo DROP - PlatformOwnerPlanSeeder: idempotentemente asegúrese de que el plan OWNER-UNLIMITED, propiedad de kamocrm, cubra todas las funciones y tenga una suscripción COMP permanente para sí mismo
· kamo-shared-library
Añadir Organization.isTopLevel, PaymentMethod.COMP, tipos de eventos COMP-*; eliminar OrganizationType enum
- Organización: sustituir el campo muerto por la bandera de la plataforma y la identificación de los propietarios de la plataforma - PagoMethod: añadir COMP para becas de plataforma-admin gratuito (no Stripe) - SuscripciónEventType: añadir COMP-GRANTED, COMP-REVOKED, COMP-EXPIRED, COMP-MODIFIED - OrganizationRepository: add findFirstByTopLevelTrue() - OrganizationService: drop setType() call; los campos son impulsados por isTopLevel
· kamo-internal
Ocultar el botón de cancelación de sucríbate para el org original del usuario en la página de red
· SecurityService
Set orgOriginal en el registro y la exposición esOriginalOrg en mis redes
· kamo-shared-library
Añadir campo orgOriginal al Usuario para rastrear org de registro
· kamo-internal
Solicitante de los miembros apoya la calificación de los derechos y la vista de entradas de doble modo
- NavTop: mostrar SupportButton para cualquier derecho de apoyo (agente o miembro) - SupportButton: portón de cada elemento desplegable a la derecha . Crear/Ver entradas, Solicitar Webinar, Mis Webinars se muestran sólo cuando se mantiene la derecha - SupportTicketListTab: dual-mode - agentes ver mesa llena con tema filtro y desgarro asignado a mí; los miembros-requesores ven su propio boletos solamente (creadoByMe=true), columnas simplificadas, Entradas Nueva CTA - soporte/page.tsx: entradas de la puerta/Mis pestañas Webinars/Analytics por derecha - Páginas de configuración (cuenta, departamentos, integraciones, operaciones): Añade CONFIGURE-SYSTEM redireccional guard; configuración de tablero Mi cuenta sección cerrada por CONFIGURE-SYSTEM
· kamo-shared-library
Añádan los derechos de apoyo a los miembros-petanores (133-136)
Añade cuatro nuevos derechos de APOORT para los miembros no agentes: ******************* (133) - CREATE-SUPPORT-TICKET (134) - REQUEST-WEBINAR (135) - VIEW-MY-SCHEDULED-WEBINARS (136)
· kamo-internal
Eliminar filtros de columna de los miembros y las pestañas de los miembros y miembros del equipo
· kamo-internal
Añadir botón Sincronización de Derechos a SecurityRoleManager para orgs de alto nivel
Button sólo es visible cuando la organización.hasParent es falso. Llamadas POST /api/security/roles/sync-rights luego recarga la tabla de roles.

Tu universo está esperando.
Comience gratis en minutos y agregue productos cuando esté listo, sin migración ni nuevos inicios de sesión.
Gratis para siempre: no se requiere tarjeta de crédito