İçeriye geçin
KAMOUniverse

Değişiklik Günlüğü

Yeni ne var?

Gemideki her iyileştirme.

  1. · kamo-shared-library

    Kont text message eks

    MMS ekleri depolanır ve sayılmamıştır. Onlar aynı zamanda onların da değiller Örneğin: VoipMessageService, eki bir veri olarak kodlar: URI ve yazar VOIP MESSAGES.ATTACHMENT URL, bu yüzden MinIO nesneler haline gelmiyorlar Ve istatistik için bir dosya yok - ölçüm depolanmış karakter uzunluğu, Konuşmanın org aracılığıyla. Base64, kodlayanlardan daha büyük bir üçüncü çalışır ve bu şişirmiş Form gerçekten veritabanını kaplıyor, bu yüzden sayılıyor.

  2. · kamo-internal

    Her depolama kategorisini ayrı ayrı göster

    Kayıtlar, sesli postalar, sohbet ekleri, HR kaynakları ve pazarlama Her biri bir "Documents ve görüntüler" paylaşmak yerine kendi çizgilerini alır. Aynı masada yaşamak için gerçekleşen diğer her şeyle sıralayın. Görseller için iki sonuç. Fourteen kategoriler herhangi bir şeyi aşıyor Categorical palette kodlanabilir - yaklaşık sekiz, eklenmiş hues stop being end Renkli-kör okuyucular için separable ve dekorasyon haline gelir - bu yüzden kimlikdir Etiket ve pay barı tarafından yapılan, bir hue'yi tamamen büyüklükte bir cue olarak kullanır. Ve trend şu anda on dört yönlü bir yığın yerine tek bir seri: Bir trend cevabı soru "benim depolama büyümem" ve hangi kategoriye İçinde büyüdü, masanın tam olarak yaptığı masanın işi.

  3. · kamo-shared-library

    Her çeşit depolama dosyasını kendi kategorisi olarak sayın

    Kayıtlar, sesli postalar, sohbet ekleri, HR kaynakları, pazarlama Malzemeler, toplantılar kayıtları ve her tür belge, imgs'te tüm sıralardır, Sadece ImageAssocType tarafından ayırt edildi ve hepsi bir kova paylaşıyor, çünkü Bir depolama sınırı yerine metadata. Onları rapor olarak raporlayın Tek çizgi doğru ve işe yaramazdı: Bir üretim organizasyonu için sakladı 5.09 GB ayak izi 5.08 GB sohbet ekleri idi. Her birlik şimdi bir alana ait, bu yüzden bir organizasyon ne olduğunu görebilir Aslında depolamasını tek farksız toplamdan ziyade tüketin. StorageDomainCoverageTest bir inşa başarısızlığı yapar: her şey ResimAssocType tam olarak bir alan tarafından iddia edilmelidir - öngörülemeyen araçlar yüklemeler anlamına gelir depolanır ve asla fatura edilmez, iki kez faturalanan anlamına gelir. Tarafından Gerçekleştirilmiş Prodüksiyon: HR RESOURCE'yi kendi alanından uzaklaştırmak, nedeni ile inşa edemez, Sessizce geçmemek yerine. MEET RECORDINGS her iki kaynağını, toplantı recordings masasını ve tabloyu özetliyor MEET RECORDING birliği. MeetRecording Hizmet sadece eski yazar, bu yüzden çakışmazlar.

  4. · EmailService

    Her org'un kendi KamoMail posta kutuları

    Walks every mailbox Kamo host and records, percoming day, the RFC822 bytes it - Başlıklar, vücut ve kodlanmış ekler, dahil her klasörde Trash ve Junk, Trash'ta bir mesaj hala disk üzerinde. Bir yuvarlak yolculuk klasörü: Jakarta Mail IMAP sağlayıcısı FetchProfile'i genişletiyor. Item.ENVELOPE to ENVELOPE INTERNALDATE Connect822.SIZE, bu yüzden boyut ve varış tarihi bir araya gelir. Dovecot'un adres için kimliklerine sahip olup olmadığına karar verilir, adres için değil Sağlayıcı ayarını okuyarak. Sanal users'teki Presence IS the definition of "Kamo bu posta kutusunu saklar", ancak bir sağlayıcı sütunu durabilir, miras alınabilir Bir ebeveynden veya ortadan. Microsoft veya Google’ın verdiği bir posta kutusu Hiçbir bilgi ve atılır, bu yüzden organizasyonu hiçbir şey suçlamaz. Her postabox'ın kendi veyag id'den gelen için kim sayılır. KamoMail tek bir tek değil Tenant - üretim bir organizasyon altında 18 posta kutusu ve 41 altında Bir başka, dört alan arasında yankılandı - bu yüzden bir alan veya postayı özetle Başka bir posta için bir organizasyona işaret edecekti. Adresler daha düşük. Dovecot'un kullanıcı masası ve posta yolları Posta kutusu masası posta kutusunun ne yarattığına devam ederken daha düşük davalar oluşturuldu Bununla birlikte, ve burada yanlış bir eşleştirme zaten bir kez teslimat ve retrieval İki farklı postada. Ayrıca, son nokta tarafından uç noktası yerine bir bütün olarak /api/internal'i korur. The The The The The The The The /api/internal/calendar ve /api/internal/lead-comms olarak adlandırılan filtre Bu yüzden bir sonraki kontrolör bu ekin altında monte edildi - bu bir - olurdu Gizli, sessizce ve maruz kalma yönünde ulaşılamaz. Bağlanmayı kapsayan 6 yeni test, vaka işleme ve ev sahibi olmayan dava; 152 Toplam, tüm geçiş.

  5. · InitializerService

    Per-Mailbox depolama ölçüm için Schema for per-mailbox storage ölçüm

    ************, posta kutusu ve varış günü, RFC822 posta kutusu tutuyor. Depolama muhasebesi dürüst kaynak kaynağı yoktu e-posta kutusu için: arama indeksi, indekslenmiş olan sadece mesajları kapsar ve Onları kimin depoladığına bakılmaksızın kapsar. ORG ID e-provider. e-provider.mailboxes so per-organizasyon Aggregation bir indekslenmiş bir rakamdır ve bu yüzden alıntı posta kutusu başına kalır - birkaç tane Kuruluşlar KamoMail'de bir kez ve bir domainin postası tutabilir Farklı organizasyonlara ait posta kutuları. Üretime karşı 2026-08; masa ve indeksler doğrulandı.

  6. · kamo-shared-library

    Posta Kamo aslında ev sahipliği yapıyor, posta kutusu başına

    EMAIL e-metadata.search index'den kaynaklandı, ikisi de yanlıştı Yollar. KamoMail'i tamamen kaçırdı - KAMO MAIL'da bir org mesajlarına sahip Grubun kendi Dovecot postası, 62 MB üretimde, Sıfır olarak sayılıyor. Ve Microsoft 365 veya Google'da bir veyag şarj etmiş olurdu Bu sağlayıcının disklerinde oturan posta için iş alanı, Kamo nerede hiçbir şey tutar Ancak kendi başına bir arama indeksi. **************** Bunun yerine: posta kutusu, varış günü başına, Total RFC822 bytes - Başlıklar, vücut ve kodlanmış ekler, hangisidir Postayı kaplar. Her mesajdan ziyade güne atarak masayı tutar Günlerle e-posta ile orantılı olarak, hala keyfi bir fatura penceresine izin verirken Tam olarak tüm aylara yuvarlanmış gibi özetlenebilir. Attribution kendi org id aracılığıyla posta kutusu başınadır, asla domain başına ve asla başına değil postadir. KamoMail tek bir kiracı değil: üretim zaten 18 posta kutusu var Bir veyag ve 41'in altında, bir masada dört alan arasında bir araya geldi. Bir alan ya da postayı bir bütün olarak şarj etmek, bir ya da başkanın için bir ya dag faturası olacaktır. posta. Schema bu inişten önce üretimde doğrulandı: e-provider .mailbox storage days, bir KI'den sonra eşsizlik kısıtlamaları ile var.

  7. · kamo-internal

    Posta kutusu depolamanın neden sıfır okuyabilebileceğini söyle

    Mailbox bytes sadece posta Kamo aslında ev sahipliği yapıyor. Bir organizasyon Microsoft 365 veya Google Workspace bu sağlayıcının disklerine ilişkin mesajlarına sahiptir, bu yüzden Mailboxes sıra haklı 0 - hangi, açıklanamaz, kırık bir şekilde okur Doğru olanı yerine numara.

  8. · BillingService

    Bir platform yöneticisi talep üzerine süpürücüyü çalıştıralım

    Sualtı, dönem geri çekilmeleri ve ömür boyu toplamları için yapan şeydir Her şeyde zor alanlar cevaplanabilir, bu yüzden günler bir kesintiye kaybolur Boşluk dolduğunda kalıcı olarak. Sonraki 04:20 run için beklemek bir şey değil kurtarma planı. Sualtı zaten 14 gün yakalar ve idempotent (org, gün, alan) Bu yüzden tekrarlanan aramalar çift hesabı yerine yerleşmektedir. Bu sadece onu ortaya çıkarır, arkasında @PlatformAdmin Sadece ve satır sayısını döndürür, böylece caller çalışabileceğini görebilir.

  9. · kamo-internal

    Hesap stats sekmesinde depolama kullanımı göster

    Sekme, her organizasyon için “Bu süre için mevcut hiçbir veri” dedi. billingApi.getCurrentUsage(), { metre geri dönen bir stub: [] } ve UseMeters Boş durumunu sıfır metrede yapar - bu yüzden mesaj stub'u rapor ediyordu, Veriler değil. StorageUsagePanelPanel gerçek BillingService endpoint okur ve iki noktayı gösteriyor taraf tarafından şişirmek kolay olan rakamlar: organizasyon ne tutuyor Şu anda, dosyaları silindiğinde hangi düşüyor ve ona eklediği şey ömür boyu, ki bu değil. Bunların yanı sıra, bu dönemi ve bir aya taşıdılar. Belgeler, posta kutuları, bilgi tabanı medyası, toplantı Kayıtlar ve açıklamalar. Bir rakam bir ölçüm yerine bir zemin nerede, diyor ki - bir geri yükleme Bunun arkasında açılmayan veya bir depolama alanı için toplam olarak Bu, kayıtlarını zorlaştırır. Bir çip rekor temelini açıklıyor: bir org Kamo'nun sahip olduğu her dosyayı saymasına rağmen tutar. trend sadece iki gün tarih var; bir nokta bir trend değil, Ve çizim, henüz toplanmamış bir tarih anlamına gelir. Serisi renkler doğrulanmış kategorik siparişdir - en kötü bitişik CVD {{E 9.1, Bu yüzeyde en kötü bitişik normal tasarım 345E 19.6. Three sit below 3:1 Aksine, kırılma masası dekoratif değildir: renkli okuma değildir Aynı verilerden. Byte countlar bitmek için son kalır (BillingService serializes Long via through Serializer) ve sadece büyüklüğün kanıtlanabilir güvenli olduğu yerde genişletilir.

  10. · BillingService

    Bir organizasyonun depolandığı rapor

    Hesap stats sekmesi her zaman “Bu süre için mevcut hiçbir kullanım verileri”, dedi. Her organizasyon için, çünkü kamo-internal'de CurrentUsage() bir stububub sıfır metre geri döndü ve hiçbir şey hiçbir zaman toplam depolamadı. depolama alanı başına üç farklı rakam servis eder, artı toplam: - organizasyon şu anda ne tutar, hangi dosyalar silindiğinde düşüyor - ömür boyu eklenmiş olan şey, ki bu - Mevcut fatura döneminde neler taşındı Yoktur - depolama masası zamanları bir deactivation, o zamandan beri EmbRecordState.DATE UPDATED kullanılabilir=false ve asla yenilemez - tıpkı yenilemez - Açılış + ekledi - dönem açılış snapshot'ına karşı mevcut. Hayır Açılış snapshot'ı çöp zamanlarına geri düşer ve kendisini bir antamp olarak bildirir Bir ölçüm olarak tahmin etmek yerine zemin. Lifetime tam olarak nerede Kaldırılmış satırlar hayatta kalır ve yaptıkları snapshot'lardan bir şeyler alır; ikisi de değil; Hangi olduklarını söylüyorlar, böylece UI da olabilir. BillingPeriodResolver canlı bir abonelik dönemi tercih eder ve geri döner Org'un zamanındaki takvim ayında. Bu geri dönüş, tüm özelliktir Üretim: Her abonelik NULL current time start ve Mevcut time end, bu yüzden dönem rakamları olmadan her şey için boş olurdu Var olan organizasyon - aynı otobüs sınıfı olarak yerini alır. StorageSnapshotSweep her org tarihinin günlük konumunu yazıyor, bağlıdır. 14 kaçırılmış güne kadar yetişmek ve sorgulanabilir bir ilk snapshot'ı tohumlamak Yaşam bu yüzden takip sıfırda yeniden başlamaz. Platform uç noktası fiziksel olarak depolananlara karşı faturalandı. Müşteriler Müşteriler Kayıt başına faturalanır; img dats, birçok orgs'in sahip olduğu bir kopyasını tutar. Bu dosya ve tırnaklar ve dönüşümler kimse için fatura edilmez. Her ikisi de her ikisi de boşluklar Kamo'nun ekonomisidir, bu yüzden @PlatformAdmin'in arkasında otururlar. 21 yeni test, 113 toplam, tüm geçiş.

  11. · InitializerService

    Schema koşucusu org storage snapshots için

    Aynalar OrgStorageSnapshot, ev tarzı başına açık DDL olarak - ddl-auto İlk önce masa yaratır, bu yüzden CREATE bir geri çekilmedir ve SET DEFAULTs are a fallback. Aslında düz SQL'den (Hibernate hiçbir sütun varsayılanı yaymıyor) Çünkü varlık Java'da doldurur. Ayrıca (ORG ID, DATE CREATED) ve (ORG ID, DATE TRASHED). Depolama Aggregation hem her özet istekte hem de mevcut indekslerin hepsinin hepsidir. Assoc- ve klasör şeklinde. Üretime karşı 2026-08; org storage snapshots tüm 1626-08-08; veyag storage snapshots ile doğrulanan 16 sütunlar ve paylaşılan-lib varlığından önce eşsizlik kısıtlaması itildi.

  12. · kamo-shared-library

    Per-organizasyon depolama kullanımı modeli

    Hiçbir şey hiçbir zaman organizasyon başına depolamayı özetlemiyor. Altı varlık bir aste taşır Not per file, and no code aggregated any of them, which is why the account stats sekmesi her org için "Bu süre için mevcut olan hiçbir veri" oluşturur. Aggregation'ın ihtiyaç duyduğu paylaşılan modeli ekleyin: - StorageDomain - beş org-attributable depolama alanı, her biri ilan Kaldırılmış kayıtları hayatta kalsa. Belgeler ve KB media soft-delete, bu yüzden Bir ömür boyu toplam düz bir sorgu; posta kutuları, kayıtları ve açıklamaları Hard-delete, bu yüzden onların sadece bir ilerleme kaydedebilir. - OrgStorageSnapshot - bir satır başına (org, gün, alan). Üç kişi için var Gerçekten sonra keşfedilmemiş rakamlar: ömür boyu toplamlar için Sert devretme alanları, dönem geri yüklemeleri olan açılış pozisyonu Karşılığa karşı fark edilen bir tablo, bir deactivation – EmbRecordState's DATE UPDATED eklenebilir=false ve asla yenilemez), ve bir süre kapalı Dönem sona erdiğinde sayı sabitlendi. - OrgStorageAggregator - her per-domain bir sınıfta toplanır. Toplamlar şunlardır: Kayıtlar üzerine özetleyin, asla depolanmış nesneler: img dats bir fiziksel fiziksel tutar Ancak birçok veyags bu dosyayı tutuyor ve bu tasarruf Kamo'nun. Aggregator kasıtlı olarak hiçbir stereotip taşımaz. Her hizmet çalışır @ComponentScan ("com.kamo), bu yüzden onu tüm ~40'ta inşa edecekti Onlar; BillingService bean'ı ilan ediyor. Ayrıca, e-posta boyutunu geri yükleme ihtiyaçlarını sorgular - boyut bays Dizin yaratıldığından beri zor bir kodlanmış 0 olarak yazılmıştır, bu yüzden posta kutusu depolama depolama Bu satırlar tamir edilene kadar platform çapında sıfır okur. Schema bu inişten önce üretimde doğrulandı: org storage snapshots var KamoInitializer'den sonra tüm 16 sütunla.

  13. · InitializerService

    Declare the ************ app bölünmüş

    Geri dolum sadece eksik olan bir plan sırasını doldurdu - kasıtlı olarak, bu yüzden sessizce sessiz olamazdı Bir tier hareket edin - ilk önce onları koyduğunuz yerde asla fiyatlanamayan uygulamalar. Satış Noktası ve Pazarlama Araçları bu şekilde sona erdi, bu da Free'in sattığı şey değil. Her planın zaten fiyat sayfasında ne vaat ettiğini ortaya koydu, bu yüzden matrix ve pazarlama kopyası sürüklenemez: Ücretsiz değerlendirme (CRM, sohbet, docs, notlar, KB, hesaplayıcı); Start uygulamaları bir araya getirir İş ticaretleri (support, trade, pazarlama); Business premium set artı telephony ekliyor, envanter ve kulüp evi; Enterprise yasal ekliyor. E-posta barındırması ve iki kaynaklama sistemi aittir Hiçbir tier - e-posta herhangi bir planda koltuk başına fiyatlanır, kaynaklama sistemleri kredi veren başına pazarlık edilir. Geri yüklemenin aksine, boşlukları doldurmak yerine bu uzlaştırmalar, bu da kaynağın kaynağıdır. Gerçek: Bir tier değişikliği burada, yorumda, bir UI değişikliğinde bir sonraki çalıştırın iptal edilmesi değil. Prod'a Uygulamalı: 11 sıra değişti. POS ve Pazarlama Ücretsiz, ve dört yayınlanmamış uygulama, verilen Gemileri ne zaman karalayacaklar, bu yüzden bir sahne veri değişikliğinden ziyade bir aşamadır. İkinci bir koşu sıfır değişiklikleri bildiriyor.

  14. · kamo-internal

    Split Uygulamaları ve Özellikleri kullanılabilir / Mevcut değil / Deprecated

    Bir düz liste platformun yaptığı şeylerle karışık uygulamalar ve bunlar değil Emekli oldu, bu yüzden operatör onları ayrı anlatmak için her çipi okumak zorunda kaldı. Kovalar önce özel ve deprecation test edilir: Emekli bir uygulama yapılır Geçerlilik bayrağının hala söylediği her şeyi emekli etti, bu yüzden sadece altında görünüyor Deprecated. Bu aynı zamanda per-row "Deprecated" çipi ve dkk Reddant - bu sekmedeki her satır emekli edilir - bu yüzden her ikisi de gitti. Katılımcılık, taslaktan ziyade sunucu durumunu okur, bu yüzden iddia edilene işaret ediyor Değiştirin, dışarı çıkmak yerine toprağı kurtarıncaya kadar sırayı yere bırakır. Düzenleme altından.

  15. · SecurityService

    A onant-readable app katalog for Branch types

    Sınıf Türleri -> İzin verilen uygulamalar, uygulama listesini / platform oluşturma/app-catalog'dan yüklemeye başladı. Üst düzey bir org sahibi gerektirir. Ev sahibi sayfa CONFIGURE SYSTEM'de kapalıdır, bu yüzden her şey için GET 403'd: editör sıfır uygulamaları ve kurtarma handler daha sonra tasarruf etmeyi reddetti Her şeyde güvenlik modeli – adını, yaş aralıklarını, rollerini ve ticaret türlerini engeller, bunların hiçbiri Katalogu içerir. Ayrıca bir KamoCRM yöneticisi için de başarısız oldu. ****************, CONFIGURE SYSTEM altında aynı çözülebilir kataloga hizmet eder, çünkü a kasıtlı olarak dar projeksiyon: tip, ekran adı, açıklama, sahne, mevcut, deprecated. Hiçbir operatör notu, hiçbir varsayılan varsayılan, yazılı tanı yoktur - bunlar platformun nasıl olduğunu tanımlar koşmak ve yazı sadece platform sahibi kalıyor.

  16. · kamo-internal

    Bir Uygulama ve Özellikler sekmesi ekleyin ve İzinli Uygulama listesini düzeltin

    Yeni sekme, organizasyonların hakkı için, her organizasyonun ne olduğunu kontrol eder Teklif edilir: kullanılabilirlik, gelişim aşaması, ekran adı, açıklama, an operatör notu ve deprecation. Erişilebilirlik artık aşamadan elde edilmez, Bu yüzden bir uygulama hala test yaparken veya sonrasında tekrar yapılabilir Tamam; aşama şimdi sadece kötü ve barı sürüyor. Overridden fields are işaretli ve bireysel olarak revize edilir ve deprecation - bu bir uygulamayı gizler Her onant onu kullanarak - uygulamanın adını doğrulamaya ihtiyaç duyar. Güvenlik model editöründeki izin verilen uygulamalar bir el-maintained TypeScript HizmetType.java'nın kopyası, editörlerin onu uyumlu tutmasını talep eden bir yorumla. O sürüklendi, invisibly: MLOS tamamen eksikti, bu yüzden hiçbir güvenlik modeli ipotek veremez Her şeyden kaynaklanma. - LOS "Mortgage Credit Origination System" etiketlendi - kişisel olarak anlamına geliyor 2026-08'den bu yana krediler, bu yüzden editör kişisel-loans yazdı ipotek verdiklerini düşünen bir operatör için hibe edin. - POS ve ESIG, sevk edildikten sonra uzun süre PLANNING gösterdi. Bu listeye kullanılabilirlik göstergeleri eklemek sadece bunu yapardı Güvenilir bir şekilde yanlış, bu yüzden şimdi yeni sekmenin aynı katalogunu okur ve yazıyor Bununla aynı fikirde olamaz. Tasarruf katalog yüklerine kadar bloke edilir: her şey AppConfigs bunu yapar, bu yüzden boş bir liste boş olurdu Modelin hibeleri.

  17. · SecurityService

    Uygulama kataloğunu servis edin ve onunla özellikleri okuyun

    Özel Kontroller, enum'un dört aşamasından "bu uygulama teklif edildi" elde etti Ayrı yerler, bu yüzden cevap sadece işe alım tarafından değiştirilebilir platform. Her biri şimdi AppCatalogHizmetini okur, birlikte Ekran adı, açıklaması ve deprecation. Bir davranışçı kök-org kapısıdır. "Uygun" okumak için kullanılır COMPLETED değil, bu yüzden çocuk ya dags bunu mümkün olmayabilir" - köpek yemek yolu. Bu Şimdi "The platform şu anda bunu sunmuyor" diyor. Override olmasa da Bunlar aynı cümledir, çünkü başlangıç dışı kullanılabilirlik çözmeleri Sahne == COMPLETED. Bir operatör hala içinde olan bir uygulamayı yayınlar TESTING, sadece yeni form doğru şeyi yapar: uygulama olmadan uygulama doğru olurdu Her çocuk ya dag için sessizce engel olun. PlatformAppCatalogController üst düzey düzey teknoloji sahipleri için kapalıdır, aynı zamanda aynı Komşu platform sekmeleri olarak seyirciler ve mevcut olup olmadığını bildiriyor Uygulama aslında plan matrixindedir - bir uygulama hiçbir plan çözmez Operatörün seçtiği her şeyden daha açık ayar.

  18. · kamo-shared-library

    İş zamanında uygulama kullanılabilirliği ve sahne düzenlenebilir

    Her şey uygulamaları ayarlar sayfası oluşturur - ekran adı, açıklama, Sahne, deprecation - ServiceType enum'da bir derleme zamanı sabitti, Ve "Available" hiç depolanmadı: Sahne olarak elde edildi == COMPLETED UI'de ve üç yerde server-side. Herhangi bir değişiklik düzenleme anlamına geliyordu Paylaşılan kütüphane ve platformu yeniden çalıştırın. PLATFORM APP CATALOG, her override sütunu ile bir satır tutar nullable ve AppCatalogService override'yi çözüyor? Enum. Eksik bir sıra Enum fiilatim anlamına gelir, bu yüzden bu değişiklikleri hiçbir davranışı yüklemeyin. Erişilebilirlik kendi değeri haline gelir, bu yumuşak bir başlangıç yapan şeydir (offered Yine de TESTING) veya bir tanesi COMPLETED uygulamasını ifade etti. Onun geri dönüşü Enum'un yerine RESOLVED aşamasını okur, bu yüzden sadece hareket eden bir operatör COMPLETED için bir uygulama da geçiş yapmadan kullanılabilir.

  19. · InitializerService

    Uygulama başına düzgün bir şekilde kategorize edilmiş katalog sırası, her başlık kökünde

    Dokuz uygulama – POS, Pazarlama Araçları, Hesap, Club, Inventory, Yasal, Oyunlar ve iki Originasyon sistemleri – tümünde katalog gösterimi yoktu: Hiçbir fiyat satırı, kategori yok. 12 diğerleri zaten bir pazarlama çizgisi tarafından tarif edildi, bu yüzden bağlayıcı ve paralel bir paralellik ekledi. APP * satır iki sıraya bir Hizmet Türü verildi ve PlanWorkIncluded bağımlısı yaptı iteration order. koşucu şimdi katalogu yerine birleştirir: - tarif ettiği uygulama için yayınlanan bir pazarlama sırasını bağlar (VIDEO CONF ile tanışın, MESSAGING Chat), Kodunu, adını, kategori ve katmanı değerlerini tutmak, böylece yayınlanan matrix hareket etmez; - bir uygulama için bir satır oluşturun katalog tarif etmez, gerçek bir kategoride - yeni bir kategori de dahil - Ticaret ve Originasyon kategorisi; - daha önceki APP * yer sahibini gerçek kimliğine teşvik eder ve düz uygulamaları silir Bir kez boş; - aynı uygulama için tekrar satırları kaldırır, pazarlama sırasını tercih eder. APP fallback solunda yok: Her uygulama okunabilir bir koda sahiptir ve yayınlanan katalogu uygulamalar Zaten isimleri, tam kodu bu kadar bir veyag'in kendi matrixi ve birini tarif etmeden yeniden kullanılabilir Aynı şekilde aynı ürün. Bu önemli - işaret.pink'in pazarlama matrisi yok ve onunla birlikte kaldı Enum sabitlerinden sonra adlandırılan on bir satır. MLOS ve Kişisel Krediler kurumsal olarak kabul edilir, per-seat: null fiyat, FLAT fiyatlandırma modeli, Sadece CUSTOM tipi planlarla uyumlu (Enterprise), herhangi bir tier'i paketledi. Onlar yaratılmışlardır. Platform veyag sadece - beyaz etiketli bir ürün veyag onları yeniden satın almaz ve iki yaratılan Önceki bir geçişle işaret.pink devre dışı bırakılır. Çalışandan sonra prod karşı doğrulandı: 0 APP * kodlar ayrıldı, 0 tekrar servis tip satırları, 21 uygulama Her kök, 0 ortaya çıkan plan-by-app kombinasyonları ve bir re-run bir no-op.

  20. · kamo-internal

    Server-paginated Organization konsol

    Sekme bir istekte her organizasyona yüklenen ve her biri bir kart vermiştir. Backend fanning out per org ile, o zaman hesap başına, abonelik başına. Arama, tür, filtre ve paging şimdi tüm mülke karşı sunucu-side çalıştırıyor, Bu nedenle sayfa maliyeti birçok organizasyonun var olduğu önemli değildir. Sıra aynı zamanda şu anda doğru nesnedir. Bir abonelik bir hesap tarafından HELD ve TARGETS bir org, bu yüzden eski kart - sahibine anahtarlandı - baskı yapmak zorunda kaldı Hedefin adı nested bir tablonun içinde ve müşteri ya dags dizeler olarak ortaya çıktı Diğer orgs’ satırları sıralardan ziyade. Her satır şimdi entitlement (inbound: bu ya dag) ve faturalama ne yapar (geçir: faturalar ne için Diğerleri) ayrı yüzler olarak. Tasarım: Her satırın sol kenarını ve orantılı bir emlak barını bir statü ray, Bu nedenle bir sayfa, bir kelimeden önce ticari sağlığın renkli histogramı olarak okur Okumaya devam edin; sıfırlarla tabular çıplak, çünkü bir fatura arazisinde çoğu hücre sıfır. Masa devleti URL'de yaşar, böylece filtreli bir görünüm bağlantılanabilir - yazılı “tabın”ı koruyan bir kopya aracılığıyla ve aktifTab yayınlamadan, hangi TabSync'e ait.

  21. · SecurityService

    Uygulamalarda başarısız kapalı bir plan asla bahsetmez

    Turns kamo.entitlement.fail-open off now that AppEntitlementKatalogMigration has run against against against against against against against against against against against against against karşı. Prod ve her aktif plan hem de entitlement kökleri (KamoCRM, Sign Pink) açık bir plan taşır Tüm 21 non-core uygulama için sıra - doğrulanmış sıfır ortaya çıktı plan-by-app kombinasyonlar, bu yüzden orada var Gerçekten pahalı olmayan bir uygulama dışında yakalamak için inkar etmek için hiçbir şey kalmadı. Bugün herhangi bir org'un kullanabileceği şeyleri değiştirmez: sevk edilen uygulamalar açıkça dahil edilir ve MLOS Ve kişisel-loan uygulaması zaten açık bir şekilde reddedildi, bağlı=false satırları, hangi bağlar Bu bayrak ne olursa olsun. Yakın olan şey, asla ortaya çıkan fiyatlarla bir uygulama kaymasıdır Bir planın matrixinde hepsi. Yeni bir başlık kökü bunun için koşmadan önce eklenmişse gerçekliğe geri dönün.

  22. · BillingService

    Filtrelenmiş, sıralanmış, paginated page

    GET /orgs sayfa/size/q/sort/dir artı yedi filtre alır ve eve döner Emlak çapında agresyonlarla sayfa. GET /orgs/{orgId} tam ayrıntılı hizmet vermektedir Konsolun matkap-in çekmecesi için, per-account fan-out iyi çünkü Bir ya dag'e bağlı. ListeAllOrgs(), bir truncat delege olarak tutulması yerine değiştirildi: bu vardı Tam olarak tek bir caller (bu kontrolör), ve ön listeOrgları() tam olarak tam olarak vardı Bir (Resulüm yeniden yazılır), bu yüzden bir uyumluluk shim sadece bir eklenecek Buna bağlı olarak hiçbir şeye bağlı olmayan sessiz eğitim riski.

  23. · BillingService

    Batched page hidr at a constant query count

    Ebeveyn başlıkları, birincil alan, entitlement ve the user titles, the plan/market behind the entitlement and the Abonelik-catalog bayrağı, tüm sayfadaki her bir grup halindedir. Bu yüzden 100-row sayfası aynı altı ifadeyi 1row sayfası olarak tutar. Test Eşitliği doğrudan iddia ediyor - bu değiştirmelerin uygulanması puan alır 600'e karşı 6. Yönetim aboneliği EntitlementModeResolver tarafından seçilir, aynı kod Bu, sıranın modunda karar verdi, bu yüzden gösterilen plan her zaman devlete ait. Gösterdi. Queries, Yeni repository yöntemlerinden ziyade EntityManager üzerinden geçiyor Her hizmetin bağlı olduğu kamo-shared-library, değiştirmek zorunda değildir.

  24. · BillingService

    Rehber sıra / Sayfa DTO ve yerli sorgu havuzu

    PlatformOrgRow, iki yüzü ayrı taşır: entitlement (inbound subs Org'u hedeflemek - onu yöneten şey) ve billing (ya dag'ın kendilerini saymak) - sadece platform veya bayiler için değil. Aggregates tarif eder Tüm filtreli set, sayfa değil, bu yüzden KPI şerit anlam değiştirmiyor Operatör sayfaları. Her sürücü değeri, Sayı/Boolean'dan ziyade şarj edilir: a kömürlerce (...,0) bu maçların hiçbir satırları geri dönmediği Integer'i aynı sütunun aynı sütunu nerede ile birlikte döndürür satırlar Long'i geri döndürür ve prod'a atlar. Para para haçlar Bir decimal dizesi olarak tel.

  25. · BillingService

    Org directory SQL per-facet CTEs ile

    Held hesaplar, inbound abonelikler, üyeler, lisanslar ve her biri Kendi CTE'lerinde orgs'e katılmadan önce bir araya gelir. Onlara bir tanede katılın Geçiş her SUM'u sarsacak ve şişirecektir. Saf ve birim test edildi (26 test): Hayır ‘: dökümler, her değer sınır, tür anahtarlar OrgSort aracılığıyla beyaz listelendi. Testler pin iki şey çünkü onlar kolay "tidy" böceklere - ORDER BY ve elde edilen predikatlar (mode rank, has stripe) CTE'nin proje sütunları adı olmalıdır, çünkü “o” alias kapsamı dışındadır. Dış sorguda; ve bir PENDING denemesi, sonsuzluktan ziyade bir tarih rapor etmiyor En son sona ermişti. Canlı kümeye karşı doğrulandı: Her iki ifade de geçerlidir, sayı aynı fikirde satırlarla ve filtreler / saldırganlar uygulanır. Index kullanımı kanıtlanmamıştır - 12 veyags / 9 subs CockroachDB, doğru şekilde dolu.

  26. · BillingService

    Geçerli, sıkıştırılmış veya g directory isteği

    Boyutlar [1,100] ve tanınmayan bir tür başlık için geri döner, bu yüzden bir el-edited URL, tüm mülkleri ne de SQL'ye kadar götürebilir Ücretsiz metin. OrgSort enum beyaz listedir.

  27. · BillingService

    Bir paylaşılan, deterministic bir çözümleyici aracılığıyla alıntı modu

    DenemeAdminService, ilk()'i bulmakla deneme aboneliklerini aldı sipariş edilmemiş liste, bu yüzden hem bekleyen hem de aktif bir denemeyi tutan bir org Ya da rapor. Gelecek organizasyon rehberinin bir çeşit ve filtre olması gerekiyor Bu devlet ve bir sorgu, bir nondeterministic kuralı yeniden üretemez. Öncekilik şimdi ************ arasında yaşıyor Canlı denemeler, devam eden kazanımlar üzerinden aktif kazanır ve aktif expiry bildirilen en son olanı. Durum() tam yanıt şeklini tutar. İlk testler bu repo (11).

  28. · InitializerService

    Backfill app entitlement rows into the platform plan katalog

    Entitlement şimdi bir tip hizmet tip sütununda çözüyor, ancak katalog satırı bir tane taşıdı, bu yüzden Her plan hala başarısız açık varsayılan ile ‘her şey dahil’ için çözüldü. Bu tohumları bu tohumları matrix so kamo.entitlement.fail-open sonunda karanlık tehdit uygulamaları olmadan kapatılabilir. - AppEntitlementKatalogMigration (@Order (51), PlatformOwnerPlan görünümünden sonra): idempotent Geri yükleme. Bir 'Uygulamalar' özellik kategorisini, canlı olmayan uygulama başına bir BOOLEAN sıra ile oluşturun HizmetType'a bağlı olarak, koda sahip olan önceden ortaya çıkan herhangi bir sırayı yeniden birleştirin, ancak kodu yok, Servis Türü ve eksik plan-to-app sıralarını tier. Sadece izin verin - Asla silmiyor ve hiçbir zaman bir operatörün yazdığını yazmadı, bu yüzden bir tier düzenlenmiş ayarlar UI yeniden başlar. Ayrıca mevcut VİDEO CONF / AI ASSISTANT / HR SYSTEM / ESIGN formlar / EMAIL HOSTING add-ons, ki bu hiçbir şey vermiyordu. - KamoCRMPricingLoader: taze bir küme için aynı matrix. Uygulama satırları içeride tıkılır Tezler ikinci bir geçişte yazmak yerine, çünkü upsertPlanİşleri silinir Planın sıralarını eklemeden önce – ikinci bir çağrı pazarlama matrixini sessizce silecektir. Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not Not NotNote Bu yükleyici devre dışı bırakılır (özellikle geri döner ve DataLoader çağrısı yorumlanır), hangisi yorumlanır). Yukarıdaki göç neden üretim yolu.

  29. · SecurityService

    Kapı ipotekleri ve kişisel-loan dikeyleri

    Bir MORTGAGE pazarı, MLOS uygulamasından bağımsız olarak / ticarette ortaya çıktı ve /features/enable'in hiç bir fatura çeki yoktu - ayarlar UI'deki pedlock sunum yapıldı Sadece, bu yüzden doğrudan bir POST, unentitled uygulamasında geçti. - FeatureController: Planın uygulama dahil etmediğinde 403; serileştirin Her iki özellik üzerinde de "ödün" kararı [] ve mevcut[], böylece UI pedlock ve 403 Aynı hizmet tarafından hesaplandı ve aynı fikirde olamaz. - TicaretPazar Kontrolü: GET /allowed-types for the market-type picker (model let-liste izin-liste) Entitlement ile iç içe; piyasa listesi unentitled dikeyleri düşürdü – gizli, asla saklı, asla arşivlendi, bu yüzden planı geri getiriyor piyasayı verileri bozulmamış. - ************ her / {marketId} / ... alt-route. AppAvailability Interceptor bunu ifade edemez - ek haritası bir ekin için HizmetType ve / e-ticaret-pazarları POS altında yedi dikey hizmet vermektedir. - POSController: abonelik kataloğunun halka açık çağrıcıları artık bir uygulamaya bağlı olarak görmüyor Bu, COMPLETED'ye ulaşmamıştır, bu yüzden COMPLETED'ye bir Hizmet Türü taşımak, onu yayınlayan şeydir. Pazarlama sitesi. İç çağrıcılar hala önceden fiyat kazanmak için her şeyi görüyorlar. - MortgageVerticalResolver: Sadece POS'u ölçmeye hazır, bu yüzden MLOS'u hiç satın almamış bir org Hazır olarak okuyun; şimdi de MLOS'u 'kabul' olarak bildiriyor.

  30. · kamo-internal

    Rename LOS to MLOS, kişisel Kredi Originasyon Sistemi ekleyin, kapı ticaret dikeyleri

    Uygulamalar sekmesi şimdi ‘Ticaret: Mortgage Kredi Origination System’ (başlangıçtan servis edilir). backend enum, TS aynası değil) ve yeni bir 'Ticaret: Kişisel Kredi Originasyon Sistemi' altında Mevcut değil. MORTGAGE ve PERSONAL LOANS pazarları uygulamalarında kapalıdır. - AppType/ServiceType aynaları: MLOS(14) + yeni LOS (25); ayrıca önceden ortaya çıkan sürükleleri düzeltiyor Aynalar Java enum ile aynı fikirde değil. Organizasyon:Mlos ekledi;Los şimdi kişisel krediler anlamına geliyor.Los'un sıfır tüketicisi vardı. ÖzelliklerManager: gating sunucu tarafından "entitled" bayrağını okur. Yeniden inşa edildi müşteri-side billingApi, kim CurrentSubscription atlar ve AvailablePlanlar geri döner [] stubs), bu yüzden her uygulama sessizce ‘hızlı’ ve hiç pedlock’a karar verdi. - Pazar seçicileri: hem yaratma hem de düzenleme sayfaları kendi zor kodlanmış COMMERCE TYPES serisini gerçekleştirdi; Şimdi GET **************** Bu yüzden bir dikey ya dag satın almamıştır Seçilemez değil. Düzenleme sayfası da bir-MORTGAGE-per-org kuralını atmıştı. tutar Piyasanın mevcut türü bu kadar kused veyag hala açık ve yeniden adlandırılabilir. - Mortgage ayarları üzerinde kapı,Pos'tan ziyade Mlos'dur.

Evreniniz sizi bekliyor.

Birkaç dakika içinde ücretsiz olarak başlatın. Hazır olduğunuzda ürünleri ekleyin - göç yok, yeni girişler yok.

Sonsuza kadar ücretsiz — kredi kartı gerekmiyor