Jump to content
KAMOUniverse

Changelog

Ada kabar baru.

Setiap perbaikan pada platform, sebagai kapal.

  1. · kamo-internal

    Tampilkan setiap kategori penyimpanan secara terpisah

    Panggilan rekaman, pesan suara, lampiran obrolan, sumber daya HR dan pemasaran material masing-masing mendapatkan baris mereka sendiri bukannya berbagi satu "Dokumen dan gambar" baris dengan segala sesuatu yang lain yang kebetulan hidup di meja yang sama. Dua konsekuensi untuk visual. Empat belas kategori melebihi apa pun palet kategori dapat menyandi - lewat sekitar delapan, ditambahkan warna berhenti menjadi dipisahkan untuk warna-buta pembaca dan menjadi dekorasi - jadi identitas adalah dilakukan oleh label dan berbagi bar menggunakan satu hue murni sebagai isyarat skala. Dan tren sekarang total satu seri daripada empat belas cara tumpukan: pertanyaan jawaban tren adalah "adalah penyimpanan saya tumbuh", dan kategori yang itu tumbuh di adalah pekerjaan meja, yang tabel tidak persis.

  2. · kamo-shared-library

    Menghitung setiap jenis berkas disimpan sebagai kategori sendiri

    Panggilan rekaman, pesan suara, lampiran obrolan, sumber daya HR, pemasaran material, rekaman pertemuan dan setiap jenis dokumen semua baris di Imgs, dibedakan hanya oleh ImageAssType dan semua berbagi satu ember, karena Asosiasi adalah metadata daripada batas penyimpanan. Melaporkan mereka sebagai satu baris akurat dan tidak berguna: untuk satu organisasi produksi itu tersembunyi bahwa 5.08 GB dari jejak kaki 5.09 GB adalah lampiran percakapan. Setiap asosiasi sekarang milik domain, sehingga organisasi dapat melihat apa yang benar-benar mengkonsumsi tempat penyimpanannya daripada satu jumlah yang tidak diketahui. StorageDomainCoverageTest membuat sebuah kelalaian kegagalan build: setiap Tipe ImageAstist harus diklaim oleh tepat satu domain - tidak diklaim berarti uploads disimpan dan tidak pernah ditagih, diklaim dua kali berarti ditagih dua kali. Diverifikasi oleh probe: menghapus HR _ RESOURCE dari domain nya gagal membangun dengan alasan, daripada lewat dengan tenang. MEETING _ RECORDINGS jumlah kedua sumbernya, pertemuan _ tape tabel dan Asosiasi Meet _ RECORDING. Meet Recording Layanan hanya menulis mantan, jadi Mereka tidak tumpang tindih.

  3. · EmailService

    Mengukur kotak surat milik masing-masing org

    Berjalan setiap kotak surat Kamo host dan catatan, per hari kedatangan, RFC822 byte itu dipegang - header, tubuh dan lampiran terkode, di seluruh folder termasuk Sampah dan Junk, karena pesan di Tong Sampah masih ada di disk. Satu putaran perjalanan per folder: penyedia IMAP Surat Jakarta memperluas FetchProfile. Item.ENVELOPE ke ENVELOPE INTERNALDATE RFC822.IZE, sehingga ukuran dan tanggal kedatangan tiba bersama-sama. Apa yang penting diputuskan oleh apakah Dovekot memiliki kredensial untuk alamat, bukan dengan membaca pengaturan penyedia. Kehadiran dalam _ pengguna virtual IS definisi dari "Kamo menyimpan kotak surat ini", sedangkan kolom penyedia dapat basi, diwarisi dari orang tua, atau migran. Sebuah kotak surat yang diselenggarakan oleh Microsoft atau Google menghasilkan tidak ada kredensial dan dilewati, sehingga organisasinya dikenakan biaya apa-apa. Siapa yang menghitung berasal dari masing-masing kotak surat sendiri org _ id. KamoMail tidak satu pun Penyewa - produksi memiliki 18 kotak surat di bawah satu organisasi dan 41 di bawah lain, bercampur di empat domain - sehingga meringkas domain atau maildir akan menagih satu organisasi untuk surat lain. Alamat yang cocok dengan lowercased. Tabel pengguna Dovekot dan path maildir adalah huruf kecil sementara meja kotak surat menyimpan apapun casing kotak surat dibuat dengan, dan kasus yang tidak cocok di sini sudah sekali pengiriman split dan pengambilan di dua surat yang berbeda. Juga melindungi / api / internal sebagai keseluruhan daripada titik akhir dengan titik akhir. The filter bernama / api / internal / kalender dan / api / internal / lead- komunikasi individu, sehingga controller berikutnya dipasang di bawah awalan yang - yang satu ini - akan telah Dapat dicapai tanpa rahasia, diam-diam dan dalam arah paparan. 6 tes baru meliputi attrude, penanganan kasus dan tidak-diselenggarakan kasus; 152 total, semua lewat.

  4. · InitializerService

    Skema untuk pengukuran penyimpanan perbox

    * * * * * * * * * * * memegang, per kotak surat dan per hari kedatangan, RFC822 byte kotak surat yang memegang. Akun penyimpanan tidak memiliki sumber yang jujur untuk kotak surat bytes: indeks pencarian hanya mencakup pesan yang diindeks, dan Tak peduli siapa yang menyimpannya. ORG _ ID ditandai dari email _ provider.mailbox begitu per- organisasi kumpulan adalah satu diindeks sum, dan sehingga atcores tetap per kotak surat - beberapa organisasi dapat berada di KamoMail sekaligus dan satu domain 's maildir dapat terus Kotak surat milik organisasi yang berbeda. Jalankan terhadap produksi 2026-08-08; tabel dan indeks diverifikasi.

  5. · kamo-shared-library

    Mengukur surat Kamo sebenarnya host, per kotak surat

    EMAIL adalah sumber dari email _ metadat.search _ index, yang salah dalam keduanya Arah. Ini melewatkan KamoMail seluruhnya - sebuah org di KAMO _ MAIL memiliki pesan-pesannya dan lampiran dalam cluster sendiri Dovekot maildir, 62 MB itu dalam produksi, dihitung sebagai nol. Dan itu akan dikenakan biaya sebuah org pada Microsoft 365 atau Google Area kerja untuk surat yang ada pada disk penyedia, di mana Kamo tidak menyimpan apapun tetapi indeks pencarian sendiri. * * * * * * * * * * * * * * * menggantikan itu: per kotak surat, per hari kedatangan, total RFC822 bytes - header, tubuh dan dikodekan lampiran, yang adalah apa menduduki maildir. Bucketing demi hari daripada per pesan terus tabel proporsional ke hari dengan -mail ketika masih membiarkan jendela penagihan sewenang-wenang akan dirangkum persis bukan bulat ke seluruh bulan. Atribut adalah per kotak surat melalui org _ id sendiri, tidak pernah per domain dan tidak pernah per maildir. KamoMail bukan penyewa tunggal: produksi sudah memiliki 18 kotak surat di bawah satu org dan 41 di bawah lain, bercampur di empat domain di satu meja. Summing a domain, or the maildir as a whole, would Bill one org for another 's mail. Skema diverifikasi dalam produksi sebelum ini mendarat: e _ provider email .mailbox _ storage _ days ada dengan batasan uniknya setelah KI dijalankan.

  6. · kamo-internal

    Katakanlah mengapa penyimpanan kotak surat dapat membaca nol

    Bytes mailbox hanya menghitung surat Kamo sebenarnya host. Sebuah organisasi di Microsoft 365 atau Google Workspace memiliki pesan pada disk penyedia, jadi baris Mailbox secara sah 0 - yang, tidak dapat dijelaskan, dibaca sebagai rusak nomor daripada yang benar.

  7. · BillingService

    Biarkan sebuah platform admin menjalankan snapshot menyapu atas permintaan

    Sapuan adalah apa yang membuat penghapusan periode dan total seumur hidup untuk domain hard-deleting menjawab sama sekali, sehingga hari hilang untuk pemadaman hilang secara permanen kecuali kesenjangan akan diisi. Menunggu 04 berikutnya: 20 run bukan Rencana pemulihan. Penyapuan telah menangkap 14 hari dan idempoten per (org, hari, domain), jadi panggilan berulang selesai daripada double-count. Ini hanya mengekspos itu, di belakang @ PlatformAdminOnly, dan kembali jumlah baris sehingga penelepon dapat melihatnya bekerja.

  8. · kamo-internal

    Tampilkan penggunaan penyimpanan pada tab statistik akun

    Tab mengatakan "Tidak ada data penggunaan tersedia untuk periode ini" untuk setiap organisasi. billingApi.getRecentAsing () adalah stub yang kembali {meter: []}, dan UgageMeters menghasilkan keadaan kosong pada nol meter - sehingga pesan itu melaporkan stub, Bukan datanya. StorageUagePanel membaca titik akhir Layanan BillingService yang sebenarnya dan menunjukkan dua angka yang mudah untuk berkumpul berdampingan: apa organisasi sedang memegang sekarang, yang jatuh ketika berkas dihapus, dan apa yang telah ditambahkan di atasnya seumur hidup, yang tidak. Di samping mereka, apa yang bergerak periode ini, dan merusak domain melalui dokumen, kotak surat, mengetahui media dasar, rapat Rekaman dan pengungkapan. Dimana angka adalah lantai bukan pengukuran, ia mengatakan begitu - penghapusan total tanpa pembuka snapshot di belakangnya, atau total seumur hidup untuk area penyimpanan yang sulit menghapus catatan. Sebuah chip menjelaskan dasar rekaman: sebuah org adalah dihitung untuk setiap file yang ada meskipun Kamo menyimpan satu salinan per hash. Tren ini hanya menghasilkan dua hari sekali dalam sejarah. dan menggambarnya akan menyiratkan sejarah yang belum dikumpulkan. Series colours are the validated kategorical order - terburuk berdekatan CVD 9.1, yang paling dekat dengan penglihatan normal tahun 19.6 di permukaan ini. Tiga duduk di bawah 3: 1 kontras, sehingga tabel breakdown tidak dekoratif: itu adalah pembacaan bukan warna Dari data yang sama. Byte jumlah stay string end to end (BillingService serializes Long via ToStringSerializer) dan hanya melebar di mana besarnya mungkin aman.

  9. · BillingService

    Laporkan organisasi apa yang disimpan

    Tab statistik akun selalu mengatakan "Tidak tersedia data penggunaan untuk periode ini", untuk setiap organisasi, karena mendapatkan mata uang () dalam kamo- internal adalah stub Kembali nol meter dan tidak ada di balik itu pernah berkumpul penyimpanan. Melayani tiga angka yang berbeda per area penyimpanan, ditambah total: - Apa organisasi memegang sekarang, yang jatuh ketika file dihapus - Apa yang telah ditambahkan selama hidupnya, yang tidak - apa yang bergerak selama periode penagihan saat ini Removal diturunkan - tidak ada penandaan waktu penyimpanan, karena EmbRecordState.DATE _ UPDATED adalah menyisipkan tabel = false dan tidak pernah menyegarkan - sebagai pembukaan + ditambahkan - saat ini terhadap snapshot pembukaan periode. Dengan tidak membuka snapshot itu jatuh kembali ke sampah penanda waktu dan laporan sendiri sebagai lantai daripada menyajikan menebak sebagai pengukuran. Lifetime tepat di mana baris dihapus bertahan hidup dan akumulasi dari snapshot di mana mereka tidak; keduanya Katakanlah yang mereka, sehingga UI bisa juga. BillingPeriodresolver lebih suka berlangganan langsung periode dan jatuh kembali ke bulan kalender di zona waktu org. Bahwa fallback adalah seluruh fitur dalam produksi: setiap langganan ada membawa NULL _ titik saat ini _ start dan current _ period _ end, so without it the period figure would be empty for every organisasi yang ada - sama kelas bug sebagai stub menggantikan. StorageSnapShotSweep menulis posisi harian masing-masing sejarah org tergantung pada, mengejar hingga 14 hari yang tidak terjawab dan bibit snapshot pertama dari kuiri seumur hidup sehingga pelacakan tidak restart di nol. Platform titik akhir melaporkan ditagih terhadap byte yang disimpan secara fisik. Pelanggan yang ditagih per catatan; img _ dats memegang satu salinan per hash namun banyak organ memiliki bahwa berkas, dan thumbnails dan konversi biaya bytes tidak ada yang ditagih untuk. Keduanya kesenjangan adalah ekonomi Kamo, sehingga mereka duduk di belakang @ PlatformAdminOnly. 21 tes baru, total 113, semua lewat.

  10. · InitializerService

    Pelari skema untuk org _ storage _ snapshots

    Cermin Penyimpanan Organik Sebagai DDL eksplisit, sesuai gaya rumah - ddl- otomatis Membuat tabel pertama, sehingga KREATE adalah fallback dan SET DEFAULIT adalah apa yang sebenarnya membuatnya dapat digunakan dari plain SQL (Hibernasi memancarkan ada baku kolom untuk nilai entitas mengisi dalam Java). Juga indeks di (ORG _ ID, DATE _ CREATED) dan (ORG _ ID, DATE _ TRASHED). Penyimpanan kumpulan membaca baik pada setiap ringkasan permintaan dan indeks yang ada semua Aster- dan folder- berbentuk. Jalankan terhadap produksi 2026-08-08; org _ storage _ snapshot diverifikasi dengan semua 16 kolom dan batasan keunikan sebelum entitas shared- lib didorong.

  11. · kamo-shared-library

    Model penggunaan penyimpanan perorganisasi

    Tidak ada yang pernah meringkas penyimpanan per organisasi. Enam entitas membawa sebuah byte hitungan per berkas, dan tidak ada kode yang berkumpul salah satu dari mereka, itulah sebabnya account statistik tab render "Tidak ada data penggunaan tersedia untuk periode ini" untuk setiap org. Tambahkan model bersama yang diperlukan agregasi: - StorageDomain - lima org- daerah penyimpanan yang disebabkan, masing-masing menyatakan apakah catatan dihapus bertahan. Dokumen dan media KB soft- delete, jadi total seumur hidup adalah query langsung; kotak surat, rekaman dan pengungkapan Hapus keras, sehingga mereka hanya bisa menumpuk ke depan. - Organ StorageSnapshot - satu baris per (org, hari, domain). Ini ada untuk tiga angka yang tidak dapat dipulihkan setelah fakta: total seumur hidup untuk domain hard-deleting, posisi pembukaan bahwa penghapusan periode adalah differenced terhadap (tidak ada penanda waktu tabel sebuah menonaktifkan - EmbRecordState 's DATE _ UPDATED adalah menyisipkan = false dan tidak pernah menyegarkan), dan sebuah period- close nomor tetap ketika periode berakhir. - Organisme StorageAggregator - setiap per- domain berkumpul di satu kelas. Totals summed atas catatan, tidak pernah lebih disimpan objek: img _ dats menyimpan satu fisik salinan per hash namun banyak orgs memegang file itu, dan tabungan itu adalah Kamo. Para penyerang sengaja tidak membawa stereotip. Setiap layanan berjalan @ ComponentPindai ("com.kamo"), jadi mengganggu itu akan membangunnya dalam semua ~ 40 dari BillingService mendeklarasikan kacang. Juga menambahkan pencarian indeks-indeks ukuran email yang dibutuhkan backfill - size _ bytes ditulis sebagai hardcode 0 sejak indeks dibuat, jadi kotak surat penyimpanan dibaca sebagai platform-lebar nol byte sampai baris-baris diperbaiki. Skema diverifikasi dalam produksi sebelum ini mendarat: org _ storage _ snapshot ada dengan semua 16 kolom setelah menjalankan KamoInitializer.

  12. · InitializerService

    Uraikan * * * * * * * * * * * * * * * * * * * * * * aplikasi split

    Isi ulang hanya pernah mengisi baris rencana yang hilang - sengaja, sehingga tidak bisa diam-diam memindahkan tingkat - yang meninggalkan aplikasi yang belum pernah harganya mana pun pertama kali menempatkan mereka. Titik Sale Dan Alat Pemasaran berakhir di Free seperti itu, yang tidak apa Bebas dijual sebagai. Anchored ke apa masing-masing rencana sudah menjanjikan pada halaman harga, sehingga matriks dan salinan pemasaran tidak dapat mengalungkan: Free is evaluasi (CRM, chat, docs, catatan, KB, kalkulator); Starter menambahkan aplikasi Perdagangan bisnis dengan (dukungan, perdagangan, pemasaran); Bisnis menambahkan set premium ditambah telefonus, inventaris dan clubhouse, Enterprise menambahkan Legal. Surel host dan dua sistem asal milik untuk tidak ada tingkat - email harga per kursi pada rencana apapun, sistem asal adalah dinegosiasikan per lentur. Tidak seperti backfill ini berdamai daripada mengisi kesenjangan, yang merupakan titik menjadi sumber kebenaran: perubahan tingkat milik di sini, dalam tinjauan, tidak dalam UI edit run berikutnya akan kembali. Terapan pada prod: 11 baris berubah. POS dan Pemasaran off Bebas, dan empat aplikasi yang belum dirilis diberikan Lebih tinggi mereka akan mendarat ketika mereka kapal, sehingga penerbitan satu adalah flip tahap daripada perubahan data. Sebuah laporan kedua tidak ada perubahan.

  13. · kamo-internal

    Layers-action

    Satu daftar rata aplikasi campuran platform yang ditawarkan dengan yang tidak dan yang itu telah pensiun, jadi operator harus membaca setiap chip untuk memberitahu mereka terpisah. Ember eksklusif dan deprekasi diuji pertama: aplikasi pensiunan pensiun apa pun bendera tersedia masih mengatakan, sehingga muncul hanya di bawah Ditinggalkan. Itu juga membuat chip perrow "Depreceous" dan meredup redundan - setiap baris dalam tab yang pensiun - sehingga keduanya hilang. Partisi membaca keadaan server daripada draft, jadi menghitung yang sudah ditinggalkan switch leaves the row in place until the save lands instead of yanking it out dari bawah editan.

  14. · SecurityService

    Suatu katalog aplikasi yang mudah dibaca untuk Jenis Branch

    Jenis Branch - > Diijinkan Apps mulai memuat daftar aplikasi dari / platform-config / app- katalog, yang membutuhkan pemilik org tingkat atas. Halaman host digated pada KONFIGURE _ SISTEM sebagai gantinya, jadi untuk setiap Menyewa GET 403d: penyunting tidak menghasilkan aplikasi dan penangan penyimpanan kemudian menolak untuk menyimpan model keamanan sama sekali - memblokir namanya, usia berkisar, peran dan jenis perdagangan, tidak ada yang melibatkan katalog. Gagal untuk admin KamoCRM tanpa pemilik Organisasi juga. * * * * * * * * * * * * melayani katalog diselesaikan yang sama di bawah CONFIGURE _ SYSTEM, sebagai Proyeksi yang lebih kecil sengaja: tipe, nama tampilan, deskripsi, panggung, tersedia, tak berlaku lagi. Tidak ada catatan operator, tidak ada enum default, tidak ada hak diagnosis - mereka menggambarkan bagaimana platform ini jalankan, dan menulis tinggal platform- owner- saja.

  15. · kamo-internal

    Tambah tab Apps & Features dan perbaiki daftar Apps yang diijinkan

    Tab baru, di sebelah kanan Organisasi, mengontrol apa setiap organisasi ditawarkan: ketersediaan, tahap pengembangan, nama tampilan, deskripsi, sebuah Operator catatan, dan deprekasi. Kemampuan tidak lagi berasal dari panggung, sehingga aplikasi dapat diterbitkan sementara masih dalam pengujian atau ditahan setelah itu adalah selesai; panggung sekarang drive hanya lencana dan bar. Ruas yang ditimpa adalah ditandai dan kembali individual, dan deprekasi - yang menyembunyikan aplikasi dari setiap penyewa menggunakannya - perlu nama aplikasi diketik untuk konfirmasi. Diijinkan Apps dalam penyunting sekuity- model adalah TypeScript yang dijaga oleh tangan salinan ServiceType.java, dengan komentar meminta editor untuk tetap selaras. Itu telah melayang, tak terlihat: - MLOS hilang seluruhnya, jadi tidak ada model keamanan yang bisa memberikan hipotek Asli sama sekali. - LOS diberi label "Mortgage Loan System" - itu berarti pribadi pinjaman sejak 2026-08-08 rename, sehingga editor menulis sebuah personal- pinjaman Hibah untuk operator yang berpikir mereka pemberian hipotek. - POS dan ESIG menunjukkan PLANNING lama setelah mereka dikirim. Menambahkan indikator tersedia ke daftar itu hanya akan membuatnya secara percaya diri salah, sehingga kini membaca katalog yang sama yang ditulis tab baru dan tidak bisa setuju dengan itu. Menyimpan diblokir sampai beban katalog: setiap appcigs building iterates itu, sehingga daftar kosong akan dilucuti Model hibah.

  16. · SecurityService

    Layers-action

    FeatureController turunan "adalah aplikasi ini ditawarkan" dari tahap enum dalam empat terpisah tempat, sehingga jawabannya hanya bisa diubah dengan menyebarkan kembali platform. Setiap salah satu dari mereka sekarang membaca AppCatalogService, bersama dengan tampilkan nama, deskripsi dan deprekasi. Salah satu perilaku halus adalah gerbang root-org. Ini digunakan untuk membaca "panggung adalah tidak COMPLETED, sehingga orgs anak mungkin tidak memungkinkan ini "- jalur dogfooding. Ini sekarang baca "platform saat ini tidak menawarkan ini". Sementara tidak ada override ada mereka adalah kalimat yang sama, karena tersedia unset menyelesaikan ke panggung = = COMPLETED. Setelah operator menerbitkan aplikasi yang masih masuk TESTING, hanya bentuk baru melakukan hal yang benar: tanpa aplikasi akan tetap diam diblokir untuk setiap anak org. PlatformAppalogController digated ke atas- pemilik org, sama penonton sebagai tab platform tetangga, dan melaporkan apakah tersedia app sebenarnya dalam matriks rencana - sebuah aplikasi tidak ada rencana menyebutkan pemecahan melalui set terbuka- daripada melalui apapun operator memilih.

  17. · kamo-shared-library

    Membuat aplikasi tersedia dan tahap dapat disunting pada waktu-jalan

    Setiap atribut pengaturan halaman aplikasi render - tampilkan nama, deskripsi, tahap, deprekasi - adalah konstanta compile- waktu dalam ServiceType enum, dan "Tersedia" tidak disimpan sama sekali: itu diturunkan sebagai tahap = = KOMPLESI di UI dan di tiga tempat server-side. Mengubah semua itu berarti mengedit perpustakaan bersama dan menyebarkan kembali platform. PLATFORM _ APP _ CATALOG memegang satu baris per aplikasi dengan setiap kolom override Numble, dan Appalog Service menyelesaikan override?? enum. Baris yang hilang berarti enum verbatim, jadi menginstal perubahan ini tidak ada perilaku. Ketersediaan menjadi nilai sendiri, yang membuat peluncuran lembut (ditawarkan sementara masih men-TESTING) atau sebuah aplikasi yang dirahasiakan di COMPLETED. Yang jatuh kembali membaca Panggung RESODED daripada enum, jadi operator yang hanya bergerak aplikasi untuk COMPLETED akan tersedia tanpa juga membalik saklar.

  18. · InitializerService

    Satu kategori yang benar baris per aplikasi, pada setiap akar hak

    Sembilan aplikasi sistem awal - tidak memiliki katalog representasi sama sekali: tidak ada baris harga, tidak ada kategori, tidak ada tingkat. Dua belas lainnya sudah digambarkan oleh baris pemasaran, sehingga mengikat mereka dan menambahkan paralel Baris APP _ * akan memberikan satu ServiceType dua baris dan membuat planFeatureIncluded bergantung pada perintah iterasi. Pelari sekarang mengkonversi katalog sebagai gantinya: - mengikat baris pemasaran yang diterbitkan ke aplikasi yang dijelaskan (VIDEO _ CONF is Meet, MESSAGING is Chat), menjaga kode, nama, kategori dan nilai tingkat sehingga matriks yang diterbitkan tidak bergerak; - Membuat baris untuk sebuah aplikasi katalog tidak menjelaskan, dalam kategori nyata - termasuk baru Kategori perdagangan & Asli; - mempromosikan sebarang plakat APP _ * sebelumnya ke identitas aslinya dan menghapus Aplikasi datar ember sekali kosong; - menghapus baris duplikat untuk aplikasi yang sama, memilih baris pemasaran. Tidak ada APP _ fallback yang tersisa: setiap aplikasi memiliki kode yang dapat dibaca, dan aplikasi katalog yang diterbitkan nama sudah menggunakan kode yang tepat sehingga org dengan matriks sendiri dan satu tanpa menggambarkan produk yang sama identik. Yang penting - sign.pink tidak memiliki matriks pemasaran dan tersisa dengan sebelas baris bernama setelah enum konstanta. MLOS dan Personal Loans adalah inerprise- dinegosiasikan, bukan per-seat: harga kosong, FLAT harga model, kompatibel hanya dengan tipe rencana CUSTOM-Enterprise, terbungkus ke dalam tingkat tidak ada. Mereka diciptakan pada platform org saja - produk white- label org tidak menjualnya kembali, dan keduanya dibuat pada signor.pink oleh sebuah lulus sebelumnya dinonaktifkan. Verifikasi terhadap prod setelah berjalan: 0 kode APP _ * kiri, 0 duplikasi baris layanan _ type, 21 aplikasi di setiap root, 0 ditemukan plan-by-app kombinasi, dan re- run adalah no- op.

  19. · kamo-internal

    Konsol organisasi paginasi server

    Tab dimuat setiap organisasi dalam satu permintaan dan diberikan kartu masing-masing, dengan backend menyebar keluar per org, kemudian per account, kemudian per langganan. Cari, sort, filter dan paging sekarang jalankan server-sisi terhadap seluruh estate, sehingga biaya halaman datar tidak peduli berapa banyak organisasi ada. Baris juga merupakan objek yang tepat sekarang. Sebuah langganan adalah HELD oleh akun dan TARGETS an org, jadi kartu lama -- mencentang pada pemegang -- harus mencetak nama target dalam tabel bersarang, dan orgs pelanggan muncul sebagai string di dalam orgs lain 'baris bukan sebagai baris. Setiap baris sekarang membawa hak (inbound: apa yang mengatur org ini) dan penagihan diadakan (outbound: apa tagihan untuk lain) sebagai aspek terpisah. Desain: status rel bawah tepi kiri setiap baris dan proporsional estate bar, sehingga halaman membaca sebagai histogram warna kesehatan komersial sebelum kata adalah baca; angka tabular dengan nol bermutasi, karena sebagian besar sel pada real penagihan nol. Keadaan tabel hidup di URL sehingga tampilan disaring dapat digunakan -- ditulis melalui sebuah salinan yang mempertahankan 'tab', dan tanpa menerbitkan activeTab, yang milik tabsync.

  20. · SecurityService

    Gagal ditutup pada aplikasi rencana tidak pernah menyebutkan

    Turn kamo.reallement.fail -open now that Appentitlement CatalogMigrasi has run against prod dan setiap rencana aktif pada kedua akar hak (KamoCRM, Tanda Merah Muda) membawa eksplisit baris untuk semua 21 bukan-core apps - diverifikasi nol ditemukan plan-by-app kombinasi, jadi ada tidak ada yang tersisa untuk deny-by-default untuk menangkap kecuali aplikasi benar-benar tidak berharga. Ini tidak mengubah apa pun yang org dapat gunakan hari ini: aplikasi dikirim secara eksplisit disertakan, dan MLOS dan aplikasi personal- pinjaman telah ditolak oleh baris eksplisit disertakan = salah, yang mengikat Terlepas dari bendera ini. Apa yang menutup adalah aplikasi tergelincir melalui harga tidak pernah muncul dalam matriks rencana sama sekali. Balik ke true jika akar hak baru ditambahkan sebelum migrasi telah berjalan untuk itu.

  21. · BillingService

    Sajikan direktori org sebagai halaman yang disaring, diurutkan, paginasi

    GET / orgs mengambil halaman / ukuran / q / sort / dir ditambah tujuh filter dan mengembalikan rumah halaman amplop dengan estate- luas agregat. GET / orgs / {orgId} melayani detail penuh untuk penggerudian konsol - dalam laci, di mana penggemar per- account baik-baik saja karena itu terikat dengan satu org. listAllOrgs () diganti daripada disimpan sebagai delegasi pemotongan: itu persis satu pemanggil (pengontrol), dan listOrg front () memiliki persis satu (tab sedang ditulis ulang), sehingga shim kompabilitas hanya akan menambahkan Silent-pemotongan risiko dengan apa-apa tergantung pada hal itu.

  22. · BillingService

    Hidrasi halaman yang ditempel pada hitungan pencarian konstan

    Judul induk, domain utama, rencana / pasar di belakang hak dan subscription-katalog flag masing-masing backed IN (: id) di seluruh halaman, sehingga 100-baris biaya enam pernyataan yang sama sebagai halaman 1-baris. Tes asserts bahwa kesetaraan langsung - implementasi ini menggantikan akan skor 6 lawan 600. Konsep pemerintahan dipilih oleh Entitlement ModeResolver, kode yang sama yang memutuskan mode baris, sehingga rencana yang ditampilkan selalu milik negara ditampilkan. Kueri melalui EntityManager daripada metode repositori baru jadi kamo- shared- perpustakaan, yang setiap layanan tergantung pada, tidak perlu berubah.

  23. · BillingService

    Direktori baris / halaman DTOs dan repositori query native

    PlatformOrganrow membawa dua bagian secara terpisah: hak (inbound subs menargetkan org -- apa yang mengatur itu) dan penagihan dipegang (akun org memiliki -- bukan-nol hanya untuk platform org dan penggambar). Agregates menjelaskan seluruh set disaring, bukan halaman, sehingga strip KPI tidak mengubah makna sebagai halaman operator. Setiap nilai driver dipaksa melalui Nomor / Boolean daripada cast: a coalesce (..., 0) yang cocok tidak ada baris mengembalikan Integer di kolom yang sama dengan baris kembali Long, yang akan berlalu di dev dan melemparkan dalam prod. Uang melintasi kawat sebagai string desimal.

  24. · BillingService

    Direktori org SQL dengan per-facet CTES

    Ditahan rekening, inbound langganan, anggota, lisensi dan anak-anak masing-masing berkumpul di CTE mereka sendiri sebelum bergabung dengan orgs. Bergabung dengan mereka dalam satu lulus akan mengalikan baris dan meningkat setiap SUM. Murni dan unit- dites (26 tes): tidak ':' cast, setiap nilai terikat, urutkan kunci putih melalui Organ. Dua hal pin tes karena mereka mudah untuk "rapi" menjadi bug -- ORDER BY dan predikat turunan (mode _ rance, has _ stripe) harus nama dasar kolom yang diproyeksikan CTE, karena alias 'o' di luar lingkup dalam query luar, dan sidang PENDING laporan tidak ada tenggat waktu daripada terbaru berakhir satu. Diverifikasi terhadap cluster hidup: kedua pernyataan eksekusi, jumlah setuju dengan baris, dan filter / agregat berlaku. Penggunaan indeks TIDAK ditunjukkan -- pada 12 organ / 9 subs CockroachDB penuh-scan terlepas, benar.

  25. · BillingService

    Permintaan direktori org yang divalidasi

    Ukuran penjepit ke [1.100] dan sebuah jenis tidak dikenal jatuh kembali ke judul, jadi URL yang diedit secara langsung tidak dapat meminta seluruh properti atau mencapai SQL sebagai teks bebas. Organ enum adalah semacam whitelist.

  26. · BillingService

    Mode hak Derive melalui satu berbagi, deterministik resolver

    TrialAdminService memilih uji coba berlangganan dengan findFirst () lebih dari daftar tidak diurut, sehingga org memegang baik tertunda dan percobaan aktif bisa laporan baik. Direktori organisasi mendatang harus mengurutkan dan menyaring negara ini, dan query tidak dapat mereproduksi aturan nondeterministik. Presedence sekarang tinggal di * * * * * * * * * * * * * di antara percobaan hidup, menang aktif atas tertunda menang atas berakhir, dan yang aktif berakhir Dilaporkan adalah yang terbaru. status () menyimpan bentuk respon yang tepat. Tes pertama pada repo (11) ini.

  27. · InitializerService

    Isi ulang baris hak aplikasi ke dalam katalog rencana platform

    Entlement kini memecahkan kolom layanan _ type yang telah diketik, tapi tidak ada baris katalog yang memuat satu, jadi setiap rencana masih diselesaikan untuk 'semuanya termasuk' melalui default fail-open. Benih ini matriks sehingga kamo.fearment.fail-terbuka akhirnya dapat dimatikan tanpa aplikasi gelap-menembak. - AppEntlement CatalogMigrasi (@ Order (51), setelah PlatformOwnerPlanseader): idempoten backfill. Membuat kategori fitur 'Aplikasi' dengan satu baris BOOLEAN per aplikasi bukan inti terikat ke ServiceType nya, kembali mengikat baris sebelumnya-ada yang memiliki kode tapi tidak ada ServiceType, dan memasukkan plan-to- app baris per tier yang hilang. Insert--if-missing only - tidak pernah menghapus dan tidak pernah overwrite sebuah operator tidak disertakan, sehingga tingkat diedit dalam pengaturan UI bertahan reboot. Juga mengikat VIDEO _ CONF / AI _ ASSISTANT / HR _ SISTEM / ESIGNATURES / EMAIL _ HOSTING add- ons, yang tidak memberikan apa-apa. - KamoCRMPricingLoader: matriks yang sama untuk cluster segar. Baris aplikasi ditambahkan di dalam upsertFeatures daripada ditulis dalam pass kedua, karena upsertPlanFeatures menghapus Rencana baris sebelum memasukkan - panggilan kedua akan diam-diam menghapus matriks pemasaran. Catatan loader ini dinonaktifkan (awal kembali, dan panggilan DataLoader nya berkomentar), yaitu mengapa migrasi di atas adalah jalan produksi.

  28. · SecurityService

    Gate hipotek dan personal-pinjaman verticals pada hak aplikasi

    Sebuah pasar mortgage muncul di / perdagangan kapanpun POS berada, terlepas dari aplikasi MLOS, dan / fitur / aktifkan tidak memiliki pemeriksaan penagihan sama sekali - gembok gembok dalam pengaturan UI adalah presentasi Hanya, sehingga POST langsung diaktifkan aplikasi yang tidak berhak. - FeatureController: 403 aktif ketika rencana tidak termasuk aplikasi; serialisasi sebuah 'berjudul' putusan pada kedua fitur [] dan tersedia [] sehingga UI padlock dan 403 adalah dihitung oleh layanan yang sama dan tidak bisa tidak setuju. - CommerceMarketController: GET / allowed -types untuk pasar-type picker (model allow-list Dipotong dengan hak-hak); daftar pasar tetes vertikal tidak berhak - tersembunyi, tidak pernah arsip, jadi mengembalikan rencana membawa pasar kembali dengan data utuh. - * * * * * * * * * * * * * kegagalan-tertutup penjaga atas setiap / {pasar} /... sub-rute. Ketersediaan Interceptor tidak dapat mengekspresikan ini - peta awalannya adalah satu prefiks ke satu ServiceType dan / komersial - melayani semua tujuh vertikal di bawah POS. - POSController: penelepon publik katalog berlangganan tidak lagi melihat baris terikat ke aplikasi yang belum mencapai COMPLETED, sehingga memindahkan ServiceType untuk KOMPLETED adalah apa yang menerbitkannya ke situs pemasaran. Penelepon internal masih melihat semuanya untuk harga terlebih dahulu. - MortgageVerticalresolver: kesiapan mengukur POS saja, jadi org yang tidak pernah membeli MLOS masih dibaca sebagai siap; sekarang melaporkan MLOS dalam 'hilang' juga.

  29. · kamo-internal

    Ubah nama LOS ke MLOS, tambahkan Sistem Originasi Loan Pribadi, gerbang perdagangan vertikal

    Tab Apps sekarang menampilkan 'Commerce: Mortgage Loan System' (judul disajikan dari Backend enum, bukan TS mirror) dan 'Commerce: Personal Loan Origination System' di bawah Tidak Tersedia. Pasar Mortage and PERSONAL-LOANS gated on their app. - AppType / ServiceType mirror: MLOS (14) + new LOS (25); juga perbaikan drift sebelum-ada dimana cermin tidak setuju dengan enum Java. - Organisasi: isMlos ditambahkan; isLos sekarang berarti pinjaman pribadi. IsLos tidak punya konsumen. - Fitur Manajer: Menandai membaca flag server- yang diberikan 'berjudul'. Itu dibangun kembali klien-sisi dari billingApi, yang mendapatkan mata uang subscription melempar dan getvalePlans kembali [] (warisan stubs), jadi setiap aplikasi diam-diam diselesaikan untuk 'ungated' dan tidak ada gembok yang pernah diberikan. - Pemotongan pasar: baik halaman pembuatan dan penyuntingan mereka sendiri hardcode PERINTAH _ TIPES array; sekarang mereka render GET * * * * * * * * * * * * * * * * jadi vertikal org tidak membeli adalah tidak bisa dipilih. Halaman penyuntingan juga telah melewatkan aturan -MORTGAGE-per-org. Ini terus tipe pasar saat ini dapat dipilih sehingga org lapsed masih dapat membuka dan mengubah nama itu. - Pengaturan hipotek menghadap gerbang IsMlos daripada isPos.

  30. · kamo-shared-library

    Selesaikan hak aplikasi oleh ServiceType; ganti nama LOS ke MLOS

    Entitlement sololved ServiceType.name () against * * * * * * * * * * * * * * * Kode katalog ini adalah kode pemasaran (USERS, VIDEO _ CONF, HR _ SYSTEM,...) dan tidak pernah cocok, sehingga planFeatureInserved missing- baris default diberikan setiap aplikasi pada setiap rencana - billing- to-app link itu inert. baris katalog kini membawa sebuah tipe nuable service _ type dan resolusi melalui itu, sehingga aplikasi dapat diganti nama tanpa bergerak hak. - * * * * * * * * * * * * * * typed layanan _ type kolom (bertahan sebagai id). - * * * * * * * * * * * * * * menyelesaikan oleh ServiceType; add- ons kehormatan melalui Sebelumnya belum dibaca * * * * * * * * * * * * * jsonb; hilang perilaku baris dibelakang kamo.reallement.fail terbuka (baku benar sampai matriks katalog dijahit). - Subscription Service: carry serviceType through create / update / DTOs, and earn feature _ code dari nama ketika diabaikan - dialog pengaturan tidak pernah dikirim, jadi setiap penciptaan dari UI memukul batasan NULL NOT. - CommerceType: ikat tiap vertikal ke aplikasi yang diperlukan (MORGAGE- > MLOS, PERSONAL _ LOANS - > LOS). - AppliedModelEnforceService: getAlloedCommerceTypes berpotongan dengan model keamanan allow- list dengan hak; assertCommerceTypeAllowed telah mencakup pembuatan dan edit. - ServiceType: LOS - > MLOS menjaga id 14 (ORG _ FELARES tetap id, bukan nama, jadi tidak ada migrasi data); LOS (25) baru untuk pinjaman pribadi - id 25 karena menggunakan ulang 14 akan menugaskan kembali setiap baris hipotek yang ada. - RoleRightType: MLOS _ * rebound, ids 139- 144 unchanged; personal- pinjaman LOS _ * ditambahkan di 190- 195. - PhiModule. PLOS ditambahkan: rename meninggalkan aplikasi personal- pinjaman dipetakan ke PHI hipotek modul dan hipotek tidak dipetakan, yang dikompilasi bersih.

Alam semestamu menunggu.

Mulai gratis dalam beberapa menit. Tambahkan produk kapanpun Anda siap — tidak ada migrasi, tidak ada login baru.

Gratis selamanya — tidak diperlukan kartu kredit