Changelog
Ada kabar baru.
Setiap perbaikan pada platform, sebagai kapal.
· BillingService
Menulis Ulang Layanan BillingServices di sekitar Grup BillingGrup
Menghapus tingkat org- * * * * * * * * * * * * * * * * * * * * controller, layanan, dan DTOs. Perkenalan: - Pengontrol Grup Billing mengait kelompok, anggota, subscriptions, lisensi, metode pembayaran, dan faktur di bawah / api / penagihan / kelompok. - Layanan Grup Billing (lifecycle + Default Group + Free baseline), Layanan Grup Billing (satu - kelompok - penegakan anggota), Layanan Subtitles Grup BillingSubscription (Stripe sync dengan fallback ke FREE _ DEFAULT on cancel / lapse), * * * * * * * * * * * * * * * * * * Layanan Grup Billing Invoice, Layanan LicenseService (prioritas oto- non-aktifkan + inverse- prioritas reaktivasi). - PlanCatalogService + PlanCatalogController at * * * * * * * * * * * * * * - StripeWebhookService mengkonsumsi berlangganan / faktur / pembayaran-metode acara. - Entitlement Invalidator menerbitkan sinyal invalidasi Redis. - PlatformAdminService + PlatformAdminController kembali per-org menggulung.
· kamo-shared-library
Ganti nilai org- tingkat penagihan dengan model BillingGroup
Memperkenalkan BillingGroup, BillingGroupMber, BillingGroupSubscription, Billing GroupLicense, BillingGroupPayTethod, BillingGroupInvoice, dan Sentitas Grup BillingGroupConfig (semua di bawah pembagian perdagangan / bilinggroup). Menjatuhkan BillingSubscription / BillingPelanggan / BillingConfig / BillingPayDanMethod / BillingInvoice / BillingCredit / BillingUgageSnapshot entitas seluruhnya - setiap org sekarang mendapat Grup Baku dengan FREE _ DEFAULT KamoCRM berlangganan sebagai dasarnya. Tambahkan Persimpangan Periklanan SecurityModelMarket menghubungkan model keamanan ke pasar perdagangan dengan fasilitas perscope.
· SecurityService
Baris anggota Pusat Interaksi menggunakan judul pekerjaan
Ganti judul peran RBAC dengan jobTitleOfficial, fallback ke JobJudul judul katalog untuk Timber, dan label Anggota untuk dasar Anggota catatan di by- departemen payload bidang peran.
· kamo-internal
Lapangan kerja resmi untuk anggota tim pada kartu posisi saya
· kamo-shared-library
Tambahkan Kolom string opsional Anggota Team.jobTitleOfficial (60 chars)
· SecurityService
Ekspose dan bersikeras jobTitleOfficial untuk anggota tim pada profil dan anggota keamanan APIs
· KlusterServices
Gunakan ECDSA P-256 untuk spesifikasi sertifikat manajer dan bermigrasi RSA
· kamo-shared-library
Tambahkan FindTeamAnggota ById untuk resolusi TeamAnggota yang dapat diandalkan
· kamo-shared-library
Muat tipe branch dengan model keamanan oleh id org
· kamo-shared-library
Cache- Kontrol opsional pada objek upload
Digunakan oleh pengubahan tema sehingga globals.css dan config.json instruksi browser dan proksi untuk merevalidasi bukan melayani objek cache basi.
· SecurityService
Revisi Tema dalam tajuk konfigurasi dan cache pada aset tema
Keluarkan revisi tema (epoch ms) dalam konfigurasi .json pada setiap tulis; set Cache- Kontrol pada config, globals.css, dan situs. webmanifes upload sehingga edge cache revalidate.
· kamo-shared-library
Tambahkan * * * * * * * * * * * * * * * untuk pembersihan avatar
Digunakan ketika menghapus avatar sehingga anggota overrides referensi baris yang sama dapat dibersihkan sebelum menghapus.
· kamo-internal
Clear wizard sessionStorage on fresh create via? fresh = 1
Navigasi dari Jaringan untuk dibuat dengan? fresh = 1, strip permintaan, dan gunakan short-lived lock so React Strict Mode tidak mengembalikan sebuah draft lama sebelum bertahan berjalan. Para penyihir tinggal di Penyimpanan Jiwa (bukan Penyimpanan Lokalisasi).
· kamo-shared-library
Alkohol / tembakau / senjata api sesuai kebijakan
- ANAK _ ORG _ SECURITY _ MODELS kolom dan entitas default MEMBER _ SELECT - DTO dan ChildOrgans SecurityModelService membuat / update normalisasi - AppliedModelEnpretentment Service menerapkan kebijakan-kebijakan ke bendera anak org ATF dan zaman singleton
· SecurityService
Tampilkan kebijakan compliance ATF pada model dan tipe percabangan dapat dibentuk
- Kontroller Organisasi menerapkan penegakan model sebelum pernyataan usia - SecurityModelController dan MasterModelController lulus bidang kebijakan - BranchTypeController termasuk kebijakan dalam / branch-tipe / creatble
· kamo-internal
Penyihir Pujian dari kebijakan model keamanan
- Branch jenis API memetakan alkohol / tembakau / senjata api kebijakan ke negara penyihir - Langkah Komplain Dinamis: abaikan dari nav ketika model memperbaiki semua ATF dan usia - Umur dan ATF kontrol hanya ketika MEMBER _ SELECT atau pilihan beberapa usia - Tinjau hanya menampilkan ruas pengguna yang diminta untuk; Pengaturan Komplan Judul - Pengaturan: ATF radio kebijakan di bawah Barisan Anggota (model keamanan) - Kirim menggunakan effectiveCompliances ForSubmit untuk nilai yang dipaksakan
· SecurityService
Align KnownAliseses dengan DNS dan auto- cert (tambahkan surat, putar, aplikasi, tanda tangani; taruh aplikasi, media)
· kamo-marketing
Tampilkan keadaan aktif dengan link changelog dan jumlah harian
Ganti pratilik hitung mundur dan salinan pendaftaran dengan kompak "Sekarang LIVE" callout, menjaga link changelog, dan selalu menunjukkan jumlah perubahan hari ini dari (neraka) Saqar itu. Mutakhirkan previewBanner string di locales.
· SecurityService
Membuat RoleRightsSyncService sepenuhnya penyembuhan diri pada setiap boot
Menambahkan atau menghapus RoleRightType tak boleh lagi memerlukan proses KamoInitializerService. syncAll () sekarang berjalan tiga fase pada setiap startup: 1. tabel dan memastikan dua upsert-dibutuhkan batasan unik ada. Nilainya bakes Hibernate enum menjadi batasan CHECK di TABLE waktu dan tidak pernah update mereka, dan @ UniqueConstraint hanya berlaku di CREATE TABLE, sehingga kedua drift setiap kali enums berkembang. @ Enumerated telah memaksa nilai yang valid pada lapis Java. Hapus hak Yatim Yatim - DELETE MANA kanan _ type TIDAK DI (enum saat ini) seluruh enam tabel right- bantalan: org _ role _ rights, * * * * * * * * * * * * * * * * anggota _ rights, anggota _ rights _ applied, job _ title _ rights, departemen _ rights. Handle kedua ordinal int dan STRING enum-nama penyimpanan. 3. Masukkan hak yang hilang - tidak berubah; bergantung pada batasan unik dipastikan dalam tahap 1. Idempoten - aman untuk dijalankan kembali. Menambahkan / menghapus nilai enum kini diperlukan Hanya memulai ulang Layanan SecurityService.
· kamo-internal
Tambahkan pengaturan Administrasi Platform - org rencana hibah, peristiwa, katalog rencana
- Halaman baru di bawah / pengaturan / platform (dijaga oleh HasPlatformAdminAccess): - / organisasi - daftar setiap org, hibah / modifikasi / revoke COMP berencana dengan alasan - / peristiwa - audit feed dari * * * * * * * * * * * * * * * * - / rencana - katalog baca-saja termasuk internal (isPublic = false) rencana - useUserInfo: Sumber dari PlatformAdminAccess Is GodModeActive () OR (TimeUmber.isPembangunan Pemilik DAN organisasi. Adalah TopLevel) - billingApi: platform namespace (listOrgs, grantPlan, modifyGrant, revokeGrant, listPlan, listEvents) + X-God-Mode-Active header ketika localStorage flag set - / api / proksi penagihan: Depan X-God-Mode- Aktif dari klien ke Layanan BillingService - Pengaturan hub + SettingStatusWindow: grup "Administrasi Platform" baru - Manajer BillingManager: plakat -pemilik panji menggantikan bentuk Stripe untuk tingkat atas org (Kabel ke / pengaturan / akun sebagai tab penagihan) - Fitur Manajer: "Pemilik Platform - Internal" header dan ditekan upgrade CTAs ketika org berada di tingkat atas dan sub saat ini adalah COMP - Organisasi class / Organik Network / PublicProvider: tambahkan isTopLevel; hapus daerah 'type' mati dan konsumen sisa dalam halaman jaringan + hubungan manajer - Hapus Type.ts Organisasi yang sudah ditinggalkan
· BillingService
Tambahkan controler + servis PlatformAdmin untuk hibah rencana comp
- PlatformAdminController at / api / billing / platform (class-level @ PlatformAdminOnly) - GET / orgs, GET / orgs / {orgId} - POST / orgs / {orgId} / hibah, PATCH 124; DELETE / orgs / {orgId} / hibah / {subId} - GET / rencana (termasuk isPublic = salah) - GET / Event - PlatformAdminService: Hibah menciptakan COMP SubscriptionRecord, membatalkan sebelum aktif sub, emits Subscription Event * * * * * * * * * * * * * * * 5 is idempotency - @ PlatformAdminOnly + HandlerInterceptor: ijinkan mode-dewa-aktif OR (TeamAnggota. Adalah Organisasi Pemilik DAN Organisasi. TopLevel, baca ulang dari DB) - Subscription Renewaldscheduler: Cabang COMP membatalkan kadaluarsa (COMP _ EXPIRED) dan tidak pernah memanggil Stripe - BillingAdminService: kumpulan MRR / ARR excludes payment Method = COMP - Panjang id terkena sebagai String (CockroachDB unik _ rowid presisi)
· InitializerService
Seed Organzation.is TopLevel untuk kamokrm dan OWNER _ UNLIMITED sendiri-comp rencana
- DataLoader: Organisasi drop Tipe arg dari createOrg, set isTopLevel = true pada kamokrm - KamoCRMAgeReqUpdateRunner + test: cocok pada IS _ TOP _ LEVEL = TRUE daripada TIPE - Organisasi TypeRemovalRunner: idempotent ALTER TABEL tipe DROP COLUMN - PlatformOwnerPlannerSeeder: idempotently memastikan kamocrm- dimiliki OWNER _ UNLIMITED rencana mencakup setiap fitur dan memegang berlangganan COMP permanen untuk dirinya sendiri
· kamo-shared-library
Tambahkan Organisasi-.IsTopLevel, Metode PayPendan.COMP, tipe acara COMP _ *; hapus Organisasi Tipe enum
- Organisasi: mengganti daerah 'tipe' yang mati dengan flag 'isToTLevel' untuk identifikasi pemilik platform - Metode Payment: tambahkan COMP untuk dukungan platform-admin gratis (tidak ada Stripe) - Subscription EventType: tambahkan COMP _ GRANTED, COMP _ ROVOWD, COMP _ EXPIRED, COMP _ MODIFIED - Repositori Organisasi: tambahkan FindFirstByIsTopelTrue () - Layanan Organisasi: drop setType () call; field sekarang didorong oleh isTopLevel
· kamo-internal
Sembunyikan tombol unsubscribe untuk org asli pengguna di halaman jaringan
· SecurityService
Set orgOriginal pada registrasi dan ekspos adalah original org dalam jaringan saya
· kamo-shared-library
Tambahkan daerah orgOriginal ke Pengguna untuk melacak pendaftaran org
· kamo-internal
Penambahan hak dukungan rating dan tilikan dual- mode
- NavTop: Tampilkan Tombol Dukungan untuk setiap dukungan yang benar (agen atau anggota) - Pasokan Tombol: gerbang setiap butir dropdown dengan benar - Buat / Lihat tiket, Permintaan Webinar, Webinar saya hanya ditampilkan ketika kanan diadakan - SupportTicketListTab: mode dual- - agen melihat tabel penuh dengan topik filter dan assignned-to-me toggle; anggota-permintaan melihat mereka sendiri hanya tiket (creedByMe = true), kolom yang disederhanakan, New Ticket CTA - dukungan / page.sx: gates ticket / My Webinars / Analytics tab dengan benar - Halaman pengaturan (akun, departemen, integrasi, operasi): tambahkan conFIGURE _ SYSTEM redirect guard; setting dashboard My account daerah digated oleh KONFIGURE _ SISTEM
· kamo-shared-library
Tambahkan hak dukungan anggota-permintaan (133-136)
Tambahkan empat baru SUPPORT-scoped hak untuk anggota bukan agen: - * * * * * * * * * * * * * * * (133) - CREATE _ SUPORT _ TIKET (134) - REQUEST _ WEBINAR (135) - VIEW _ MY _ SCHEDULE _ WEBINARS (136)
· kamo-internal
Hapus filter kolom dari tab anggota tim dan anggota anggota anggota
· kamo-internal
Tambahkan tombol Hak SekurityRoleManager untuk tingkat-atas orgs
Tombol hanya terlihat ketika organisasi .Hasent adalah salah. Panggilan POST / api / keamanan / peran / sindikat-hak kemudian mengisi ulang tabel peran.

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