Aller au contenu
KAMOUniverse

Changelog

Ce qui est nouveau.

Chaque amélioration apportée à la plateforme, à mesure qu'elle est livrée.

  1. · AIService

    Point à YugabyteDB et utiliser PostgreSQLDialect

    CockroachDB a été remplacé par YugabyteDB. Les chaînes de connexion se déplacent à partir de cockroachdb-public:26257 to yb-tserver-service:5433, et le dialecte Hibernate à PostgreSQLDialect.

  2. · KlusterServices

    Schémas uniques de sourd() et non publics dans YugabyteDB

    La cale est une séquence ensemencée au maximum de la production plus une marge. Le les semences comportent deux exigences, pas une: elle doit dépasser toutes les ids existantes ou le premier insérer après la coupure entre en collision, et il doit dépasser 2 x 53 parce que les ids au-dessus de cette sérialisation en tant que chaînes et les contrats API l'assument déjà. Vérifié: retours 2x53 et max, 1000 appels tous distincts, et "INT8 DEFAULT unique-rowid()" fonctionne mot pour mot en tant que valeur par défaut de colonne -- qui est le point, puisqu'il permet la totalité des 520 strings de définition de la colonne dans le donotmodifier la bibliothèque partagée reste byte-for-byte inchangée. Contient également les cinq schémas non publics. Hibernate ne crée pas Schémas à moins que hbm2ddl.create-namespaces-true, ce que KamoInitializerService n'est pas fixée, donc sans ces mêmes 34 tables manqueraient à nouveau.

  3. · KlusterServices

    Schémas uniques de sourd() et non publics dans YugabyteDB

    La cale est une séquence ensemencée au maximum de la production plus une marge. Le les semences comportent deux exigences, pas une: elle doit dépasser toutes les ids existantes ou le premier insérer après la coupure entre en collision, et il doit dépasser 2 x 53 parce que les ids au-dessus de cette sérialisation en tant que chaînes et les contrats API l'assument déjà. Vérifié: retours 2x53 et max, 1000 appels tous distincts, et "INT8 DEFAULT unique-rowid()" fonctionne mot pour mot en tant que valeur par défaut de colonne -- qui est le point, puisqu'il permet la totalité des 520 strings de définition de la colonne dans le donotmodifier la bibliothèque partagée reste byte-for-byte inchangée. Contient également les cinq schémas non publics. Hibernate ne crée pas Schémas à moins que hbm2ddl.create-namespaces-true, ce que KamoInitializerService n'est pas fixée, donc sans ces mêmes 34 tables manqueraient à nouveau.

  4. · KlusterServices

    Déployer le noeud unique YugabyteDB 2026.1.0.1 aux côtés de CockroachDB

    Les deux moteurs sont maintenant roulés côte à côte sur k1m1; CockroachDB n'est pas touché et reste le chemin de retournement. Trois choses qui n'étaient pas évidentes : - La version du diagramme de Helm n'est pas l'étiquette Docker. Graphique 2026.1.0 Cartes à app version 2026.1.0.0-b118, donc l'image: yugabytedb/yugabyte:2026.1.0 est ImagePullBackOff. Eccléré à 2026.1.0.1-b1, le plus récent patch de stable 2026.1. - hostNetwork met les gousses sur les interfaces réelles de k1m1, où deux Yugabyte les défauts sont déjà pris: 9000 par MinIO et 9100 par node-exporter. Le Le serveur web serveur passe à 9010 et son RPC à 9110. Les deux services d'accueil vérifiés non affectés par la suite. - Le TLS n'est pas facultatif. Les 31 chaînes de connexion du consommateur portent toutes les 31 chaînes de connexion sslmode - requis, donc YSQL sans chiffrement refuserait à chaque client à Coupe-coupes. Les certificats sont créés à partir de bande, avec le cockroachdb-public alias le nom de la liste SAN parce que les consommateurs continuent à l'utiliser par le biais de la coupure. Délibérément non câblé en CI: ajouter une étape de déploiement édi .forgejo/, qui déclenche une réconciliation complète qui retourne la dérive vivante.

  5. · KlusterServices

    Déployer le noeud unique YugabyteDB 2026.1.0.1 aux côtés de CockroachDB

    Les deux moteurs sont maintenant roulés côte à côte sur k1m1; CockroachDB n'est pas touché et reste le chemin de retournement. Trois choses qui n'étaient pas évidentes : - La version du diagramme de Helm n'est pas l'étiquette Docker. Graphique 2026.1.0 Cartes à app version 2026.1.0.0-b118, donc l'image: yugabytedb/yugabyte:2026.1.0 est ImagePullBackOff. Eccléré à 2026.1.0.1-b1, le plus récent patch de stable 2026.1. - hostNetwork met les gousses sur les interfaces réelles de k1m1, où deux Yugabyte les défauts sont déjà pris: 9000 par MinIO et 9100 par node-exporter. Le Le serveur web serveur passe à 9010 et son RPC à 9110. Les deux services d'accueil vérifiés non affectés par la suite. - Le TLS n'est pas facultatif. Les 31 chaînes de connexion du consommateur portent toutes les 31 chaînes de connexion sslmode - requis, donc YSQL sans chiffrement refuserait à chaque client à Coupe-coupes. Les certificats sont créés à partir de bande, avec le cockroachdb-public alias le nom de la liste SAN parce que les consommateurs continuent à l'utiliser par le biais de la coupure. Délibérément non câblé en CI: ajouter une étape de déploiement édi .forgejo/, qui déclenche une réconciliation complète qui retourne la dérive vivante.

  6. · kamo-internal

    Diviser le journal d'accès et ses règles de détection en sous-tabs

    Les règles qui décident de ce qui est signalé étaient un accordéon au-dessous de la grille effondrés par défaut, donc la configuration était quelque chose que vous deviez savoir était Là-bas, et en l'élargissant, il a combattu la grille pour la même vitre. Ce sont deux points de vue. d'un sujet, et chacun veut toute la hauteur. Les sous-tabulaires basculent maintenant entre eux, en faisant correspondre le modèle des Tabs l'onglet OAuth2 suivant porte déjà utilisé. L'onglet règles n'existe que pour un membre détenant DISPOSITIONS ET DISPOSITIONS DE LA DISPOSITIONS DE LA GESTION ET DE LA DISPOSITION ET DE LA DISPOSITION ET DE LA DISPOSITIONNELE, et le point de vue actif est dérivé plutôt que un effet: vérifierRight responses false jusqu'à utilisationUserInfo s'installe, ce qui serait d'autre laisser un membre debout sur une languette qui disparaît alors. Les règles sont les suivantes: frais en entrant dans l'onglet, alors qu'ils étaient en expansion de l'accordéon, et le Le panneau ne porte pas son propre compte maintenant que l'onglet le nomme. Échange également l'icône du bouton d'édition: c'était un plus, sous une incrustation "Edit rule".

  7. · kamo-internal

    Flèche de retour à domicile sur les principaux en-têtes de l'espace de travail

    Porte la flèche de la page des paramètres sur le reste de l'application: Comptes, Plombins, Commerce, Commercialisation (tous les quatre onglets, via la mise en page partagée), Base de connaissances, RH, Réseau, Gestionnaire de documents, Calendrier, Interlocutes contacts et notes. Le bouton sort des composants/réglages vers les composants/BackToHomeButton Maintenant qu'il s'agit d'un chrome à l'échelle de l'application plutôt que de paramètres chromés. Le marketing et les ressources humaines possèdent un héros de pente pour chaque tab en dessous d'eux, donc la flèche atterrit dans leur la disposition et chaque onglet en hérite. Commerce et Notes rendent leur en-tête à partir d'un seul usage Composant (PipelineView, NotesHeader), qui est l'endroit où la flèche va pour ces deux-là.

  8. · kamo-internal

    Groupes explicatifs sur chaque lien à barres d'administrateur

    Quelqu'un qui a créé son organisation il y a dix minutes rencontre neuf liens n'ont aucun moyen de lire. Passer ou focaliser un d'entre eux déploie maintenant un panneau qui répond. dans l'ordre: ce que cet écran est, trois choses que vous pouvez faire là-bas, et où trouver à nouveau à travers Paramètres une fois que la barre n'est plus nouvelle. Le panneau s'étend hors de la bande plutôt que de flotter près de lui - il pousse vers le bas à partir du bord de la bande avec un caret soudé à son entrée, et l'entrée reste allumé pendant qu'il est dehors, donc les deux se lisent comme un objet. Le contenu s'installe dans un bref étalon derrière lui. Le mouvement réduit maintient le fondu enchaîné et laisse tomber le travel; réduction de la transparence laisse tomber le flou. Deux détails gagnent leur place. Les blocs et les journaux sont à court sur la barre mais le panneau les têtes avec leurs vrais noms, les blocs d'accès et les journaux d'accès système, parce que C'est ce que quelqu'un va chercher dans Paramètres plus tard. Et chaque panneau se ferme avec la piste de retour à l'écran, donc l'apprendre une fois fait le raccourci optionnel plutôt que porteur. S'ouvre survol après un battement, instantanément une fois qu'un panneau est déjà sorti, et instantanément au focus au clavier; Escape le ferme. Un pointeur tactile n'en ouvre jamais un a tap est juste le lien, sans panneau bloqué derrière lui.

  9. · kamo-internal

    Serre la barre d'administration et l'étiquette de l'adresse, les noms d'audit courts, l'absence de lacune

    Trois modifications de la manière dont la barre se lit en neuf liens: L'entrée des membres de l'équipe porte maintenant l'étiquette plurielle de l'orge de Behavior L'étiquetage, donc un org qui les appelle des agents de prêt reçoit des agents de prêt ici. C'est la seule entrée sans clé d'étiquette - le nom est l'orge, pas une traduction. Les blocs d'accès et les journaux d'accès au système raccourcissent les blocs et les journaux sous leur propre les touches plutôt que le menu des paramètres. Renommer les clés partagées aurait renommés ces onglets partout où ils apparaissent; dans ce groupe, à côté de ces icônes, la moitié de l'"accès" de chaque nom ne faisait aucun travail. L'écart entre les entrées disparaît donc le bourrage de chaque lien est la séparation et les champs de hover se rencontrent bord à bord - une bande plutôt qu'une rangée de puces.

  10. · kamo-internal

    Flèche de retour à domicile laissée de chaque titre de page de réglages

    Les pages de paramètres n'étaient pas revenus au pas de lancer avant le pas de route. ParamètresView optionnel backHref est maintenant par défaut à la maison et rend inconditionnellement, donc les 20 pages construites sur elle choisissent le fléchissants gratuitement; les six pages qui dessinent leur propre en-tête obtiennent le même contrôle en ligne. Éditeurs nichés (marchés, produits, plans, fournisseur de courrier électronique, webhooks, modèles d'états, l'agent) studio) déjà ramènent un mireau à leurs parents et sont laissés seuls, comme c'est le cas dans les cadres de plomb, dont la flèche revient délibérément à/leads.

  11. · kamo-internal

    Le reste de la configuration essentielle sur le barreau de l'administrateur

    Les rôles de sécurité, les départements et les titres d'emploi rejoignent le groupe de formation, à gauche de la paire d'audits. Ce sont les trois onglets Essentiels de configuration dont la barre manquait. Behavior - Labeling portait ce sujet seul, donc le seul écran a L'administrateur atteint à partir d'ici était celui qui se trouve être son premier onglet. Chacun réutilise l'icône et la clé d'étiquetage que les paramètres atterrissent déjà lui donnent, et les trois sont couvertes par la porte CONFIGURE-SYSTEM de la barre existante.

  12. · kamo-internal

    Blocs d'accès dans la barre d'administrateur, liens d'audit vers le bord de fuite

    Les blocs d'accès et les journaux d'accès système sont les deux écrans de la barre qui répondent "qui est entré et qui ne l'a pas fait" plutôt que de configurer quoi que ce soit, donc ils se regroupent ensemble et chevauler le bord de fuite de la bande, loin de la configuration liens. Une marge de démarrage en ligne automatique le fait - pas d'élément d'espacement, et la paire suit simplement le reste une fois que la ligne s'enroule sur une fenêtre étroite. Les deux sont déjà couverts par la porte de la barre MANAGE-ACCESS-RULES, et Access Les blocs réutilise l'icône et la clé d'étiquetage que les paramètres atterrissent déjà.

  13. · kamo-internal

    Nom et édition des carnets d'adresses, et reconstruction de la page autour d'eux

    L'ajout d'un livre POST a d'un nom d'espace réservé sans prompt, et rien n'importe où pouvait renommer un - donc chaque livre qu'un orgif avait été appelé la même chose, de manière permanente. Les livres et les groupes sont maintenant créés et édités par un dialogue avec un nom, description et accent, renommé et amovible à partir d'un menu de ligne. Les groupes n'ont jamais été ramassés du tout: la barre latérale est issue d'une liste qui ne fait que croître. quand vous en avez créé un, donc un groupe a disparu à nouveau. Les contacts ont été mis en cache par livre et fusionné dans le navigateur, donc "All Contacts" a montré seulement les livres que vous aviez Visiter et trier la cache. Les deux viennent maintenant du service, avec le scope (livre, groupe, requête, ordre) conduisant une demande ordonnée, comptée. Le reste de la page suit l'idiome de la console du reste de l'application utilise: - Barbare latérale: livres avec leur comptage de contact, groupes imbriqués avec des comptages de membres, actions de rangée pour renommer / ajouter groupe / exportation / supprimer - Liste: recherche et commande côté serveur, sélection et sélection de la gamme des postes, rouleau infini, squelettes, un rail A-z, et états vides qui diffèrent pour "Pas de contacts" et "rien de correspondance" - Barre de sélection : déplacer, ajouter au groupe, exporter, supprimer. Les cases à cocher par ligne ont Il y a eu tout le long de rien à appeler - Panneau de détail: tout dans le dossier, chaque fait copiable et actionnable, et un seul éditeur partagé avec le dialogue de création afin que les deux ne puissent pas dériver - L'importation indique ce qu'elle a sauté, de sorte qu'une importation partielle ne ressemble pas à une perte Les contacts par procuration ont transformé tous les 204 en un supplément de 500 euros. échec - parce qu'il a analysé un corps vide en tant que JSON. Pas d'option au niveau org sur un nouveau livre: listBooks retourne chaque livre dans l'ordonnance indépendamment du propriétaire, donc offrir le choix promettrait à la vie privée le chemin de lecture n'exécute pas.

  14. · EmailService

    Persister et servir l'ensemble du contact, pas seulement son nom

    La couche REST a directement sérialisé les entités JPA. Un contact n'a pas de cartographie pour ses courriels, téléphones, adresses, organisations, URL, IM ou relations sont des tables séparées - donc aucun de tout cela n'a jamais été dans une réponse, et Jackson en silence Tout cela a laissé tomber sur le chemin. Le dialogue de création a rassemblé sept sections et n'a persisté. Les livres et les groupes sont revenus avec leurs associations paresseuses rendues comme nul, c'est pourquoi la barre latérale ne pouvait pas attribuer un groupe à un livre. En dessous, la création d'un contact n'a pas pu réussir du tout: CONTACT. NON NULL et rien ne le place, à partir de l'UI, à partir d'une importation de vCard, ou d'un CardDAV PUT. Importer uniquement la carte brute stockée uniquement et laissé FORMATÉTER-NAME nul, que la colonne rejette; l'exportation lit la même carte brute en retour, donc tout ce qui est créé dans le UI exportée vide. - - les formes de fil, avec le compte les besoins de la barre latérale et le total dont un pager a besoin - ContactDetailStore: chargements par lots et remplacement des sept tables satellite et appartenance à un groupe; suppression d'un contact qui ne les orphelin plus - ContactQueryStore : compte, une liste ordonnée/filtrée/page-wide, et a recherche qui correspond également aux parties de nom, aux numéros de téléphone et aux organisations - ContactVCardMapper: l'importation et l'exportation passent par une cartographie de champ, donc a le contact survit à un aller-retour. BDAY est écrit comme une date partielle et le résolution à un instant décalé le jour pour les lecteurs dans un autre fuseau horaire - updateBook n'applique que les champs envoyés: renommer un livre utilisé pour effacer son description et couleur, et jeter sur le NOT NULL estVisible - supprimerBook cascades; l'erreur d'org est refusée plutôt que de casser vérifier la contrainte de chaque livre d'ordres de niveau dépend - les points d'arrivée de la liste de suppression/déplacer/de grouper les cases à cocher n'avaient rien à appeler La création de livres établit toujours un propriétaire et ignore un isOrgDefault fourni par le client: un livre sans propriétaire n'est légal que car l'ordonnance par défaut, et une seconde défaillance le serait quitter le choix arbitraire d'OrgObilotien.

  15. · kamo-internal

    Barre d'administrateur au-dessus des cartes du pavé de lancement

    Cinq écrans qu'un administrateur d'orge s'ouvre en permanence - membres de l'équipe, comportement étiquetage, statistiques et coûts, applications et caractéristiques, logs d'accès au système, deux ou trois chacun clique en profondeur à travers le menu des paramètres aujourd'hui. Ils obtiennent une rangée en haut de la partie supérieure de le pavé de lancement, au-dessous de l'en-tête et au-dessus des cartes. Chaque entrée réutilise l'icône et la clé d'étiquetage que sa destination porte déjà les réglages atterrissant, donc le même écran lit le même où qu'il soit offert. La bande est le gradient d'orgge NavTop/NavPri avec des liens blancs, ce qui fait Il se lit comme du chrome plutôt qu'une sixième carte. La visibilité est le rôle d'administrateur (plein d'accès), qui a exprimé la seule manière de session l'expose: les trois droits que ce rôle détient et l'absence de rôle de base en dessous le fait. Tous trois sont nécessaires, et ce sont exactement ce que les cinq destinations La barre, donc la barre n'offre jamais un lien qui refuserait le membre.

  16. · BillingService

    Lire l'utilisation de l'imagerie à partir d'un passage d'un dalpage

    Suive la variation de la bibliothèque partagée à une charge par fichier distinct organisation. Le résumé et l'auteur de l'instantané quotidien prennent un single Passer et lire tous les domaines à partir de celui-ci, plutôt que de refaire le même grouper une fois par domaine et dix-huit domaines signifiant la même requête dix-huit fois pour un chargement de page.

  17. · kamo-shared-library

    Compter chaque fichier une fois par organisation, pas une fois par téléchargement

    La facturation était par enregistrement d'impgs, donc une organisation qui a téléchargé le même fichier cinq six fois ont été facturés cinq fois. La règle du propriétaire est une charge par fichier distinct. par organisation: Kamo stocke toujours le fichier une fois que le système est à l'échelle, chaque organisation le maintien est toujours compté, et le téléchargement de quelque chose que vous avez déjà n'est pas une nouvelle redevance. Les chiffres d'imagerie proviennent maintenant d'un laissez-passer par organisation qui efface les enregistrements dans des fichiers distincts. Mesurée sur la production de KamoCRM: 52 enregistrements live deviennent 28 les fichiers facturables, 6 886 309, 250 octets deviennent 5 441 174 177. Un dossier détenu sous deux associations est compté en une seule, c'est-à-dire le plus faible ordinal. Il apparaît dans le cadre de ce fait, parce que le compter dans les deux cas, le facturerait deux fois. Deux dossiers de production sont dans cette position, et avec cette règle les catégories partitionner les fichiers de l'organisation et la somme exacte à son total. Période Figures clés sur le moment où l'organisation détient un fichier, donc à nouveau le chargement Ce qu'elle avait déjà eu n'est pas une nouvelle redevance dans une période ultérieure. Généré les aperçus sont mis à la clé par fichier pour la même raison, et la démargie d'un fichier Je n'ai rien à voir cinq fois. imagingUsage() sert le courant, la durée de vie et s'ajoute à partir d'une seule passe, car chaque domaine d'imagerie a besoin du même groupement et de l'informatique par domaine une douzaine de fois pour un résumé.

  18. · kamo-internal

    Sautez le téléchargement alors que la plate-forme dispose déjà du fichier

    L'envoi de la même vidéo à trois personnes signifiait trois téléchargements complets. Dedup les a effondrés dans un objet stocké, mais seulement une fois que chaque transfert a été terminé - donc l'économie était stockage, jamais le temps ou la bande passante du membre. Le compositeur demande maintenant avant d'envoyer. Une sonde de taille d'abord, parce qu'un contenu identique doit avoir un nombre d'octets identique: il exclut une correspondance pour presque toutes les choses réellement nouvelles fichier au prix d'une petite demande, de sorte que le hachage n'est payé que lorsqu'il peut payer off. Ce n'est qu'alors que BLAKE3 et SHA3-256 sont calculés et proposés au serveur, qui attache directement le contenu stocké. Un raté tombe sur un téléchargement normal. Hassant les ruisseaux. Les assistants existants appellent file.arrayBuffer() une fois par hachage, donc un fichier réside en mémoire deux fois plus de - amende pour un document fatal pour une vidéo de 3 GiB. Le nouveau un passe-passe le fichier en 4 tranches MiB alimentant les deux hasys, donc la mémoire de pointe est un un morceau de n'importe quelle taille, et des rendements entre les morceaux parce que SHA3-256 est pur JavaScript et Sinon, le compositeur congelait pendant des minutes. Dedup est une optimisation et jamais une porte: toute défaillance dans la sonde, le hachage ou le lien retombe au téléchargement, ce qui est toujours correct. Le panneau nomme la pause Il ne se lit donc pas comme un stalle.

  19. · MediaService

    Joindre un fichier déjà stocké sans le télécharger à nouveau

    Le transfert d'une vidéo de 2 Go à trois collègues a coûté trois téléchargements complets. Stockage les dédoubler en un seul objet, mais seulement après chaque transfert et a été Jetez - le membre a payé pour chaque octet, trois fois, pour produire une copie la plate-forme avait déjà. Deux critères d'évaluation le règlent avant que les octets ne bougent. /tachements/sonde répond si un Un fichier de cette taille pourrait exister du tout, ce qui est bon marché et permet à un client de sauter le hachage pour presque tous les nouveaux fichiers réellement nouveaux. /pièces de liaison/lien prend le client se comparait et, lorsqu'ils se résolvent à stocker du contenu, crée la pièce jointe un 404 signifie "jamais vu, télécharger" et est une réponse ordinaire plutôt qu'une l'échec. Les hachages sont une revendication, et non une autorisation: ils ne se contentent jamais de se résoudre contre le contenu déjà stocké dans la gamme de dadup de l'appelant, et les deux points d'extrémité nécessitent une session l'adhésion comme toute autre voie d'attachement. Télécharger et partager des liens en un seul rang le chemin à dessein - que les octets aient voyagé ou été reconnus, l'attachement qui les terres dans la conversation doivent être indiscernables.

  20. · kamo-internal

    Afficher le stockage de prévisualisation généré comme sa propre ligne

    Les vignettes et les images de prévisualisation comptent maintenant pour le total de l'organisation, donc le le client devrait être en mesure de voir ce qu'il a coûté plutôt que de les trouver repliés dans un autre numéro. Une infobulle dit ce qu'ils sont et qu'un document multi-pages produit un aperçu par page, de sorte que le chiffre est explicable plutôt que mystérieuse.

  21. · SecurityService

    Mesurer les vignettes et les pistes générées à partir de chaque fichier

    Les clés d'objet sont traitées par le contenu comme le segment avant que le premier soulignement identifie le fichier a dérivé est venu de. Les tailles sont additionnées par ImgDat : un ensemble physique par fichier dépliqué. la facturation les attribue à travers chaque enregistrement d'impgs qui pointe. C'est la seule façon de répondre à la question. img-dats.THUMB-FILE-SI-E tient un une valeur unique pour ce qui peut être des dizaines de vignettes de page, était peuplée pour 5 de 84 rangées dans la production, et jamais recouvertes d'objets de piste du tout - ensemble sous-estimation de la stockage de dérivé réel d'environ 37%. Objets hérités de l'actif mis à la clé par un id numérique précéder l'adressage de contenu, ne correspondent pas de fichier, et sont comptés pour personne; le nombre est enregistré plutôt que passé silence.

  22. · InitializerService

    Schéma de la vignette et du stockage de la piste mesurée

    les enregistrements d'imposants, par fichier stocké, la taille réelle de l'octet de tout Kamo en a généré. Il remplace img-dats.THUMB-FILE-SI-E comme source pour cette figure: cette colonne contient une valeur pour ce qui peut être des dizaines de pages vignettes et a été peuplée pendant 5 des 84 rangs de production. Run contre la production 2026-08-09; tableau et indice vérifiés.

  23. · kamo-shared-library

    Billez des vignettes générées à l'organisation

    Les vignettes et les pistes par canal sont des causes de stockage des téléchargements d'une organisation, Ainsi, sur l'instruction du propriétaire, ils comptent maintenant pour le total de cette organisation. plutôt que d'être absorbé par Kamo. GENERATED-PREVIEWS est un domaine facturé. Mesurée à partir de la réserve d'objets, et non à partir de img-dats.THUMB-FILE-SI-E. Cette colonne détient une valeur unique pour ce qui peut être des dizaines de vignettes de page La production a été peuplée pendant 5 des 84 lignes. sous-estimation du stockage dérivé réel d'environ 37% et oubli d'objets de voie Les immg-dat-derivatives enregistrent ce qu'un balayage retume en fait. L'attribution est par dossier, la même règle que le dossier lui-même: facturation joins-impgs à img-dat-derivatives, de sorte que deux organisations détenant un dossier sont chaque facture pour ses avant-premières et sa déduplication maintient l'épargne de Kamo plutôt que le client. Périodes chiffres de la date des prévisualisations par le téléchargement qui les a provoqués, donc un aperçu tombe dans la même période que son fichier plutôt que chaque fois que le balayage a été exécuté. Le dérivé du rapport de plateformeBytes lit maintenant la même source mesurée, donc il ne cesse de sous-estimer les coûts du traitement d'images. Schéma vérifié en production avant cette terre: img-dat-derivatives existe après un KI.

  24. · kamo-internal

    Laissez un membre garder une pièce jointe vidéo ou audio, pas seulement la lire

    Le joueur répond à une intention. Vouler le fichier sur le disque est différent, et vidéo et audio étaient les deux types de pièces jointes sans aucun moyen de le faire - un document a avait un bouton de téléchargement depuis le début, et une image en a un dans sa boîte à lumière. Enterrements de chrome un téléchargement dans le menu de débordement de l'élément vidéo; Firefox et Safari n'offrent pas un Tout d'abord, donc la qualité doit être la nôtre pour être fiable. Les deux portent maintenant une légende nommant le fichier avec sa taille et un bouton de téléchargement, en utilisant le même attribut href et téléchargement de même origine, la puce de document utilise déjà. Il laisse également tomber la taille toujours-KB sur la puce du document. Cela a cessé de mettre à l'échelle le moment les pièces jointes peuvent être gigaoctets: un fichier de 2 Go lire '2130125 KB'. Il utilise maintenant la même chose FormatPare le compositeur montre pour ce fichier avant son envoi.

  25. · kamo-internal

    Stockage de marque et stockage de documents Docstive

    Les deux sont écrits directement dans le magasin d'objets sans taille enregistrée dans le base de données, donc ils se lisent comme zéro jusqu'à ce qu'un balayage les mesure. Ils ont maintenant leur les lignes propres.

  26. · SecurityService

    Mesurer le marquage et le stockage des documents Docstives

    Ce sont les deux seules choses qu'une organisation stocke qui n'ont pas de taille n'importe où dans la base de données et les actifs de marque vont directement dans le seau public sous le préfixe de domaine de l'organisation, l'espace de travail des documents sous son id. les deux lire comme zéro jusqu'à ce que quelque chose lit l'objet stocke en retour. L'attribution recule, préfixe à l'organisation. Déterrasse de chaque organisation préfixe et balayage ceux qui manqueraient silencieusement tout ce qui est stocké sous un préfixe Personne ne pensait que dériver; au lieu de cela, chaque préfixe de haut niveau est cartographié à travers widget, partage, défaut, plus tout lâche à la racine de seau) atterrit en aucun le total du client. Les membres/sous-arbres sont délibérément exclus. Les avatars vivent sous un fixe, préfixe indépendant de l'organisation par conception, et comptage de l'héritage per-domaine Des copies factureraient à une organisation un dossier pour l'utilisateur d'une autre organisation qui en est le propriétaire. Le critère d'évaluation du déclenchement suit LosInternalApplyController : comparaison à temps constant contre le secret de cluster, faillir lorsqu'il est non configuré.

  27. · InitializerService

    Schéma pour la mesure de stockage réservée aux objets

    object-storage-days enregistre ce qu'un balayage lit en retour de MinIO pour les deux les choses qui n'ont pas de taille dans la base de données: les actifs de marque et les documents l'espace de travail. Sortant par le dernier jour modifié donc une fenêtre de facturation somme exactement. Exécuté contre la production 2026-08-08; tableau et indices vérifiés.

  28. · kamo-shared-library

    Marquage du comptage et stockage des documents Docstive

    Presque tout ce qu'une organisation stocke enregistre sa propre taille quelque part - un imgs row, une ligne kb-media, une mesure de boîte aux lettres. Deux choses ne le font pas. Marquage ressources (logos, favicons, images de fond, thème CSS et config) sont écrits directement dans le seau public sous le préfixe de domaine de l'organisation, et docs workspace est écrit sous son id. Ni l'un ni l'autre ne laisse rien dans la base de données en disant combien il est grand, donc les deux lisent comme zéro. object-storage-days tient ce qu'un balayage lit à partir de la mémoire d'objet, bousculé par le dernier jour modifié, donc une fenêtre de facturation arbitraire somme exactement exactement que de s'arrondir à des mois entiers. :: Taille des fournitures et dépouillées en dernier ordre par clé entre les nœuds. La réplication de site met le même objet sur plusieurs noeuds, et le compter une fois par noeud multiplierait le projet de loi d'une organisation par la taille de le groupe. BRANDING exclut délibérément les membres/sous-arbres. Les avatars membres vivent sous un préfixe fixe, indépendant de l'organisation par conception - un utilisateur peut appartenir à plusieurs organisations, donc un avatar n'est pas la propriété d'un quelconque d'entre eux - et le les copies per-domaine sont l'héritage. Leur comptage facturerait une organisation pour une fichier l'utilisateur d'une autre organisation. Schéma vérifié dans la production avant cet atterrissage: object-storage-days existe avec sa contrainte unique après une course KI.

  29. · kamo-internal

    Afficher le stockage de la pièce jointe au message texte

    Les pièces jointes MMS en ligne dans la base de données en tant que données: URI plutôt que sous forme de fichiers, Ils n'avaient donc aucun record de taille et n'ont jamais été comptés. Ils ont maintenant leur propre ligne.

  30. · kamo-shared-library

    Compter les pièces jointes à un message texte

    Les pièces jointes MMS sont stockées et n'ont pas été comptées. Ils ne sont pas non plus ce qu'ils Ressemble à: VoipMessageService encode la pièce jointe en tant que données: URI et écrit il est en ligne dans VOIP-MESSAGES.ATTACHMENT-URL, de sorte qu'ils ne deviennent jamais des objets MinIO et il n'y a pas de fichier à stat - la mesure est la longueur de caractères stockée, via l'orge de la conversation. Base64 fonctionne environ un tiers plus grand que les octets qu'elle code, et ce qui gonflé c'est vraiment ce qui occupe la base de données, c'est ce qui est compté.

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