Changelog
Ce qui est nouveau.
Chaque amélioration apportée à la plateforme, à mesure qu'elle est livrée.
· kamo-internal
Disponibilité des filsAdure Fournisseur en présenceFrein
· kamo-internal
Ajouter useAvailabilityWebSocket hook and AvailabilityContext
· SecurityService
Disponibilité des membres à l'auto-ensemble DISPONIBLE sur la connexion, AWAY on logout
· MediaService
Ajouter le relais NATS-STOMP pour l'état de la disponibilité des membres
· SecurityService
Mettre à jour les critères de disponibilité pour utiliser MemberAvailabilityStatus enum
· SecurityService
Ajouter AvailabilityPublisher pour les mises à jour du statut des membres
· InitializerService
Migrate members.is-disponible à available-status enum
· kamo-shared-library
Remplacer isVailable booléen par MemberAvailabilityStatus enum
· kamo-asterisk-support
Enrichir les manifestes de téléchargement avec les données Asterisk CDR caller-ID
Ajout d'un enrichissement en CDR MySQL optionnel pour que l'onglet d'historique de téléphone logiciel puisse l'affichage qui a appelé (ou a été appelé). Lorsque ASTERISK-CDR-DSN est configuré comme un renfort secret, le secoureur: - Queries asteriskcdrdb.cdr pour l'unique-visage de l'appel avant le téléchargement - Parses CLID dans callerIdNum et callerIdName - Direction d'appel (inbound/outbound) à partir de src/dst vs extension - Inclut un bloc cdr dans le manifeste de téléchargement L'enrichissement CDR est opt-in et gracieusement dégradé: si le DSN est absent ou la recherche échoue, les téléchargements se déroulent sans appeleur-ID (comportement existant). Ajout go-sql-driver/mysql v1.7.1; Dockerfile runs go mod tidy to populate go.sum pendant la construction Docker afin qu'aucune installation locale de Go ne soit nécessaire.
· ConversionService
Champs d'identification de l'appelant de l'ID de l'action de téléchargement de l'analyseur
Lorsque le support kamo-asterisk inclut une section cdr dans le téléchargement Métamoir (rempli lorsque ASTERISK-CDR-DSN est configuré), ConversionService extraits callerIdNum, callerIdName, callDirection, et disposition et les faire passer par RecordingMetadata de manière à ce que la ligne d'enregistrement soit stockée avec un contexte complet d'appel d'identité.
· InitializerService
Ajouter les colonnes CDR caller-ID au tableau des enregistrements (ordre 40)
Ajout de l'appeler-id-num, caller-id-name, call-direction, et call-result colonnes à la table des enregistrements afin que l'onglet d'historique de téléphone logiciel puisse s'afficher qui a appelé sans compter sur le pipeline FreePBX CDR disponible.
· kamo-shared-library
Ajouter les champs CDR caller-ID à l'entité d'enregistrement
Ajout de l'appeléIdNum, callerIdName, callDirection et appelsRésultats à l'entité d'enregistrement, de sorte que le kamo-asterisk-support peut stocker le CDR d'Astérérisque métadonnées à côté du fichier audio. Rendement des gains de métadonnées d'enregistrement un constructeur rétrocompatible permet aux appelants existants de passer null pour les quatre sans changement.
· kamo-internal
Ajouter l'option de méthode de paiement COMP à l'assistant d'ordonnance d'abonnement
COMP est un backend backend PaymentMethod enum value for grillé subaltence-plate-forme-admin, mais manquait du type frontal et de l'assistant L'UI - uniquement INVOICE et AUTO-BILL ont été offerts. COMP ajouté à la SubscriptionPaymentMethod union et l'a exposé en tant qu'option radio.
· kamo-internal
Afficher le domaine kamocrm de la plate-forme sur l'entrée de domaine personnalisé
Surfacez le nom d'hôte actif sur le flux add-domain des domaines personnalisés en excluant les URL kamocrm au lieu du drapeau par défaut seul.
· kamo-internal
Afficher le mode de gestion du domaine pour les propriétaires d'une garniture de haut niveau et les membres du système
· kamo-internal
Afficher le bouton de facturation de configuration pour les propriétaires d'ag sans compte
Lorsqu'un propriétaire d'une orge ouvre l'onglet de facturation des plans et pas de comptes de facturation existent, afficher une invite bootstrap au lieu du générique "contactez votre le message du propriétaire de l'organisation. Le bouton appelle POST /api/security/account/ bootstrap-facturation (idempotent) puis recharge les comptes sur le succès.
· SecurityService
Ajouter le critère d'évaluation de la facturation bootstrap pour les orgs préexistants
POST - déclenche la même chose idempotent setup en tant que crochet de création sous-org (BillingSetupService .setupForSubgCreation) mais peut être appelé à la demande par un propriétaire d'une orgne. Cela traite les organisations qui ont été créées avant le refactoring et Il n'a donc jamais reçu de compte et d'abonnement.
· kamo-internal
Conversions de la phase 3, solution de secours et CI auto-translationné
- Remplacer toutes les chaînes anglaises codées en dur par des appels t() à travers la vague 3 composantes (chat, clubhouse, support, notes, pipelines, fils, nav, etc.) - Fusionner l'onde 3 fragments dans les messages/en.json (-19 clés) - Fixer les valeurs d'espace réservé dans la section d'accueil en en.json (accueil, tagline, texte en page, compteDesc/networkDesc Interpolation de l'UTI) - Fixer le texte d'accueil mobile dans page.tsx pour utiliser t() au lieu de chaînes codées en dur - Fix request.ts: deep-merge English as base pour tous les fichiers locaux. les fichiers locaux manquants (pré-translate-CI) servent l'anglais au lieu de s'écraser, et les lieux partiellement traduits retombent en anglais pour les clés manquantes - Mise à jour pour correspondre aux kamo-marketing Modèle de traduction-et-reconstruction: déploiement initial et transfert de port-forward :: Engager des fichiers locaux - Reconstruire l'image avec des traductions - redéployer
· kamo-register
Placer le surnom en ligne après le suffixe du nom sur la ligne de nom légal
· kamo-internal
Fil next-intl avec member.language comme source locale
Ajout d'une internationalisation basée sur le prochain angle à travers le karmo-interne sans URL préfixes locaux. La localisation active est lue à partir du cookie kamo-locale, qui reflète la préférence "langue" du membre authentifié (fixé par le biais de la préférence de l'organe authentifié) Carte de paramètres régionaux en Infrastructures: - i18n/locales.ts, i18n/request.ts: 22 locales associées à l'association kamo-marketing - /api/i18n/set-locale: écrit le biscuit kamo-locale - LocaleBootstrap: synchronise le cookie à Member.language sur la première charge authentifiée - I18nProviders: applique le noyau MUI, x-data-grid, x-date-pickers locaux et emplacement de l'adaptateur de date-fns à la langue active - utilisationFormatters: localisation-sensible date / nombre / pour cent/aide au temps relatif - MyAccountTab Regional Settings save: writes the cookie (Parfaits) lorsque l'utilisateur change de langue - scripts/tralate.ts: traduction de delta build-time contre TranslateService (le modèle de commercialisation des miroirs kamo-commercialisation) - scripts/merge-fragments.ts, et outillage pour agréger les fragments de clé par zone en messages/en.json Couverture: - messages/en.json ensemencés avec des clés communes partagées., nav., auth. extraction initiale sur plus de 67 pages et composants (tableau de bord, pistes, le commerce, les paramètres, le compte, les contacts, les paramètres/caractéristiques, les paramètres/membre, composants/réglages, composants/outils/ai-chat, etc.). Nombre de caractéristiques les surfaces ont encore besoin de passes d'extraction de suivi.
· VOIPService
Retour aux enregistrements d'imagerie pour l'historique des appels et les messages vocaux
FreePBX 17 n'expose pas de messages vocals sur REST ou GraphQL sur cette installation (le type GraphQL voiceMail retourne la configuration de boîte aux lettres, pas les messages, et /admin/api/api/rest/voiemail 404)s), et le pipeline CDR d'Asterisk est également non fonctionnel ici (ODBC DSN malconfig géré séparément dans KlusterServices). Sans cela, les onglets de softphone rendent vides même lorsque les enregistrements d'appel/VM existent du côté de l'imagerie. Lorsque provider.getCallHistory ou provider.getVoicemails ne renvoie rien, revenez à la liste des lignes de la liste du tableau kamo.record par (providerInstanceId, extension, isVm). Les métadonnées Caller-ID ne sont pas conservées sur Recording aujourd'hui donc nous laissons de/fromNumber blank - la rangée se joue toujours à travers l'outil de lecteur multimédia via recordingId. Le filtrage des archives est préservé sur les deux chemins de sorte qu'une ligne archivée via la cache reste cachée dans la décrochement.
· kamo-shared-library
Requence d'enregistrement en paginé par (instance, extension, isVm)
Utilisé par les onglets de softphone comme source canonique de vérité pour les enregistrements d'appels et les messages vocaux lorsque le fournisseur en amont ne peut pas les énumérer - par ex. FreePBX 17 n'a pas d'API REST/GraphQL voix-message, et sur cette installation le pipeline CDR d'Asterisk est également cassé (séparé ODBC mal configurée dans KlusterServices).
· SecurityService
Siège KamoCRM auto-proposition sur la création sous-orge; point d'extrémité du propriétaire de la mise en valeur de la promotion
EntitlementService walks SubscriptionMember (non AccountMember) à calculer les droits des membres - l'union des caractéristiques entre les sous-marins de licence actifs, plus la valeur de référence libre. L'écouteur Redis obtient un SUBSCRIPTION:-uid-------------------------------- Le nouveau service BillingSetup se déroule en deux flux: - Création d'Organisation (sous-org sous la direction de KamoCRM) : auto-crée un KamoCRM-org Membre du créateur en cas d'absence, trouve ou crée un compte KamoCRM avec ce membre comme principal, ouvre un compte de niveau libre ciblant le nouveau sous-org, et le créateur en tant que sous-directeur. - POST - sculpte un nouveau Compte/sous-sous-débit de KamoCRM pour un membre d'un sous-org existant, éventuellement le transfert de preneurs de licence nommés. Org-titre-titre-unique. AccountCuter routes drop isLicensee / canManageAbonnement à partir du les charges utiles au niveau du compte - ces drapeaux vivent maintenant sur SubscriptionMember.
· InitializerService
Ajouter la langue membre - par défaut - colonnes de monnaie
Ajoute deux colonnes NOT NULL au tableau des membres soutenant la nouvelle colonne Membre.language (VARCHAR DEFAULT 'ENGLISH) et Member.defaultCurrency (VARCHAR(10) Champs DEFAULT 'USD'. Les lignes existantes sont remblayées à la par défaut, de sorte que la contrainte NOT NULL est satisfaite sans temps d'arrêt Fenêtre.
· kamo-register
Ajouter une étape de la langue, cueilleur de fuseau horaire de campagne, défilement
- Nouvelle étape "My Language" à la présidence du magicien, en miroir du pays la disposition de l'étape. Institue les 22 localités bénéficiant d'un support de commercialisation comme carreaux de drapeaux avec un nom de naissance - info-taille en anglais; pré-sélectionne parmi les langues de navigateur. - L'étape "Mon pays" collecte désormais un fuseau horaire aux côtés du pays, en défaut de - et éditable avant Ensuite. Les deux champs sont nécessaires pour progresser. - L'organisme d'enregistrement envoie désormais la langue/le fuseau horaire (plus le pays existant) au point d'état d'avancement /registrer donc ils persistent sur le nouveau membre. - Fix: Le contenu de l'étape de la question de sécurité peut maintenant faire défiler verticalement - le l'étape était le seul sans conteneur de trop-plein, si longs catalogues a poussé la troisième question hors écran. - Fixer : Le bouton de finition ne reste plus désactivé lorsque avant que notre auditeur s'attache. Remplacé la course setTimeout de 100 ms par un fixation vers le haut qui draine également l'état actuel du widget sur attacher pour les auditeurs tardifs.
· kamo-internal
Ajouter la langue et la monnaie par défaut à la carte Paramètres régionaux
La carte des paramètres régionaux du profil des membres expose désormais la langue modifiable (22 sites bénéficiant d'un soutien à la mise en place du site de commercialisation) et monnaie par défaut (autocomplet consultable) aux côtés du fuseau horaire. Tous les trois épargnent ensemble via PUT/api/sûreté/sylsans/caract. Le mode de visualisation indique le nom de la langue maternelle. avec l'anglais entre parenthèses, plus le symbole de la monnaie et le nom complet.
· SecurityService
Langue/temps/fréquence de membre pendage/monnaie d'inscription
Le critère d'enregistrement/registre accepte maintenant la langue, le fuseau horaire et la fonction défaillant à côté du champ d'action existant. Pays des services d'enregistrement et le fuseau horaire sur le nouvel utilisateur et applique les quatre domaines régionaux à la Membre nouvellement créé, tirant la monnaie par défaut du pays mappage primaireCurrency quand on n'est pas fourni (et retomber à USD).
· kamo-shared-library
Carte des blocs d'adresses de client externes dans AccountAdress à l'attraction
Ajouter AdapterAddressAiderAnner assistante qui convertit un nœud d'adresse JSON à partir de n'importe quel dans une EmbAddress et l'attache à un Compte en tant que dactylographié Account Addressing (SHIPPING/Billance). Filer l'assistant dans les quatre adaptateurs dont les points d'extrémité du client sont exposés blocs d'adresses: - ShopifyCustomerAdapter: default-adresse va à la fois à la navigation, les adresses restantes[ deviennent des registres d'expédition - WooCommerceCustomerAdapter: bloc de facturation - BILLING, bloc d'expédition - - BigCommerceCustomerAdapter: adresses[- divisé par adresse-type champ - MagentoCustomerAdapter: adresses[---------------------------------------------- Adaptateurs sans données d'adresse dans leurs charges utiles de leurs clients (Ecwid, Wix, Shift4Shop, PrestaShop, OpenCart, Squarespace) continue à compiler inchangé.
· kamo-internal
/compte/nouveau exemplaire UX, champs de nom complet, double téléphone, adresse; gestion de l'adresse au niveau du compte
Front-alon: /compte/nouveau : par section "Copier à partir du plomb" boutons et tête d'enfoncer "Copier tous à partir du lead" (lorsque le param leadId) - Section Nom: préfixe, premier, milieu, dernier, suffixe - Doubles téléphones (personnels et professionnels) avec extension et basculement "Autoriser le texte" - Section d'adresse utilisant la forme EmbAdresse (ligne 1, détails, ville, subdivision, postal, pays) avec basculement "Utiliser comme facturation" (par défaut) - Soumettre le nom d'imbrication/courrier électronique/téléphoneNombres de charges utiles correspondant au backend - comptesApi: nom de compte tapé, AccountPhoneNumbers, AccountAress; nouvelles méthodes: getAAddresses, addAddress, update Addressing, deleteAddress, setPrimaryAddress - AccountViewClient: rendre l'adresse d'expédition primaire à partir du nouveau tableau d'adresses
· SecurityService
Prise en charge du nom/courrier électronique/téléphoneNumbers et des critères de gestion de l'adresse
- AccountController accepte le nom/courrier électronique/téléphoneNumbers JSON sur POST/PUT - L'adresse initiale sur POST crée la LIVRAISON (et le vacancier lorsque l'ensemble d'UtAsBillingToo), définit les pointeurs primaires - Ajouter 5 critères d'adressage : adresses GET, POST, PUT, DELETE ; PUT /adresses/-id-/primaire - Récapitulatif/détail de l'objet de nom, objet de numéros de téléphone, listes d'adresses d'expédition/de facturation, principaux pointeurs - Remarquer les notes de compte au niveau des comptes (les notes de compte ont été supprimées plus tôt)

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