Editor Kustom
Ada pekerjaan yang tidak ada di panel mana pun karena hanya milik Anda: perhitungan ulang harga dengan formula pemasok, pencocokan katalog dengan sistem akuntansi pihak lain, layar "isi karakteristik batch dalam satu kali jalan". Bagian "Editor Kustom" memungkinkan Anda menulis mini-editor seperti itu sendiri (atau memesankannya) dan menjalankannya di dalam admin panel — di dalam sandbox, dengan akses tepat ke data yang Anda izinkan.
Buka: Panel Admin → Editor Kustom (admin.cenaly.com/custom-editors). Bagian ini diaktifkan melalui kartu "Editor Kustom (SDK)" di toko aplikasi — secara default tersembunyi. Tombol "📌 Ke sidebar" di halaman itu sendiri menambahkannya ke menu samping saat sering dibutuhkan.
Apa itu bagian ini#
Plugin adalah skrip yang sudah dibangun (index.js) dan deskripsinya (manifest.json). Panel memuat skrip ke dalam frame terisolasi: skrip tidak memiliki akses ke sesi Anda, kode admin panel, maupun jaringan. Skrip hanya dapat berkomunikasi dengan data melalui bridge — kumpulan permintaan yang diizinkan, masing-masing diperiksa berdasarkan hak yang diberikan.
Halaman terdiri dari blok-blok:
| Blok | Isinya |
|---|---|
| Editor Terpasang | kartu per plugin: nama, "Versi", "Hak", "Penempatan", "Host jaringan yang diizinkan", "Diperbarui", sumber (repositori dan tag berupa tautan). Tindakan: "Buka", "Aktifkan" / "Nonaktifkan", periksa pembaruan, "Hapus" |
| Pasang editor | pemasangan dari file di disk |
| Pemasangan dari GitHub | pemasangan melalui alamat repositori publik dan tag |
| 🤖 Pengembangan dengan AI (vibe coding) | templat proyek, prompt untuk agen AI, dan snapshot katalog sebagai data uji |
| 👩💻 Akses pengembang | hibah sementara kepada kontraktor untuk mode pengembang |
| 🛠️ Mode pengembang | menjalankan plugin langsung dari komputer Anda, tanpa pemasangan |
Editor yang terbuka memenuhi seluruh layar, dan alamat halaman mendapat penanda ?app=<identifikasi> — tautan seperti itu dapat dibagikan kepada yang memiliki akses.
Yang dibutuhkan untuk menjalankan#
| Apa | Untuk apa |
|---|---|
| Kartu "Editor Kustom (SDK)" di toko aplikasi | bagian ini bersifat khusus dan secara default dimatikan |
| Anda — pemilik akun | hanya pemilik yang dapat memasang, mengaktifkan, menghapus plugin, dan memberikan hibah; karyawan hanya melihat daftar sebagai pembaca |
Plugin yang sudah dibangun: index.js + manifest.json |
baik milik Anda, dari pengembang, atau rilis di repositori GitHub publik |
| Untuk pengembangan — akun karyawan untuk pengembang | mode pengembang diberikan melalui e-mail login kerjanya |
Langkah 1. Tentukan siapa yang akan menulis editor#
Ada tiga jalur, dan perbedaannya terletak pada siapa yang memegang kode:
| Jalur | Cocok untuk | Caranya |
|---|---|---|
| Agen AI dengan templat kami | pemilik yang siap menjelaskan tugas dengan kata-kata | blok "Pengembangan dengan AI": templat + prompt → agen membangun rilis → Anda memasangnya |
| Pengembang sendiri atau sewaan | ada kontraktor atau pengembang di tim | berikan hibah mode pengembang, ia menulis dan men-debug di akun langsung, Anda memasang rilis yang sudah jadi |
| Rilis siap pakai dari GitHub | plugin sudah ditulis (oleh Anda atau untuk Anda) | "Pemasangan dari GitHub": alamat repositori dan tag |
Dalam ketiga kasus, pemasangan tetap di tangan pemilik: bahkan pengembang dengan hibah hanya dapat menjalankan kodenya sendiri di mode pengembang, tetapi tidak dapat memasangnya ke akun.
Langkah 2. Pengembangan dengan AI (vibe coding)#
Blok "🤖 Pengembangan dengan AI (vibe coding)" memberikan empat hal agar Anda dapat menyerahkan tugas kepada agen AI (Claude Code, Cursor, dan sejenisnya) tanpa harus menjelaskan kontrak dari awal:
- "⬇️ Unduh templat proyek (zip)" — kerangka plugin siap pakai: manifes, titik masuk, deskripsi kontrak (
GUIDE.en.md), dan instruksi untuk agen. Arsip dibangun langsung di browser, tidak perlu mengunduh apa pun dari luar. - "📋 Salin prompt untuk agen" — teks tugas dalam bahasa Inggris: mulai dari templat, cocokkan dengan panduan, cara memeriksa hasil.
- Konfigurasi set alat untuk agen — dengan ini agen membangun plugin, menjalankan stand lokal salinan sandbox, mengambil tangkapan layar dan snapshot status, dan pada akhirnya membangun rilis: zip untuk pemasangan manual atau rilis di GitHub.
- "⬇️ Unduh snapshot katalog (fixture uji)" — kategori dan item Anda dalam bentuk file, agar agen menguji dengan data nyata, bukan data karangan.
⚠️ Dari snapshot, kolom kustom plugin lain dipotong seluruhnya: data yang disimpan ekstensi pihak lain pada kartu Anda tidak meninggalkan akun bersama fixture.
Langkah 3. Pasang editor#
Dari file. Blok "Pasang editor": pilih "Bundel (index.js)" dan "Manifes (manifest.json)" → "Periksa dan pasang". Panel terlebih dahulu memeriksa manifes — identifikasi, nama terlokalisasi, versi, versi SDK minimum, penempatan, hak, dan daftar host jaringan — lalu menampilkan persetujuan: "Editor ini meminta:" dan daftar hak dalam bahasa manusia. Selama Anda belum menekan "Pasang", tidak ada yang dipasang.
Dari GitHub. Blok "Pemasangan dari GitHub": kolom "Repositori (URL atau owner/repo)", kolom "Tag (kosong = rilis terakhir)", dan tombol "Periksa repositori". Konvensinya sederhana: manifest.json di akar repositori, dist/index.js yang sudah dibangun di tag, tag berformat v{versi}. Manifes dan bundel diambil langsung dari browser Anda. Dalam kedua kasus, saat pemasangan dihitung dan disimpan sidik jari bundel (sha256): jika file kemudian diganti, eksekusi akan diblokir, dan panel akan meminta pemasangan ulang editor.
Hak dan tempat penempatan#
Hak (disebut juga scope) diminta plugin di dalam manifes, dan Anda mengonfirmasinya saat pemasangan. Daftar lengkapnya — inilah dia, Bridge tidak bisa melakukan apa pun di luar ini:
| Hak | Apa yang dibuka |
|---|---|
| Membaca katalog | kategori, item, karakteristik, dan kolom kustom kartu |
| Membuat dan mengubah item katalog | pembuatan dan penyuntingan item, impor batch, kolom sendiri, dan definisi karakteristik |
| Mengubah harga, ketersediaan, dan daftar stok habis per cabang | hal yang sama seperti yang dilakukan panel di menu cabang |
| Membaca buku acuan produk gudang | nomenklatur gudang secara baca |
| Menyimpan pengaturannya sendiri di penyimpanan Anda | kunci milik plugin di akun Anda (hingga 1 MB per kunci) |
| Bagian server ekstensi | pemanggilan kode plugin di server kami — satu-satunya cara baginya mengakses internet |
Apa yang tidak ada sama sekali dalam daftar — itu tidak akan didapat plugin dengan pengaturan apa pun: tamu dan pelanggan, pesanan, struk, keuangan, karyawan, percakapan, dan panggilan tidak diberikan oleh Bridge.
Tempat penempatan (slot) — ada tiga:
| Slot | Di mana muncul |
|---|---|
| Halaman sendiri | butir di dalam bagian “Editor kustom”, terbuka layar penuh |
| Tombol di halaman katalog | alat di samping katalog item |
| Tab bagian “Gudang” | plugin digambar sebagai tab gudang — begitulah ekstensi bawaan kami “VetIS” dikemas |
Mode pengembang dan akses untuk kontraktor#
Mode pengembang (blok “🛠️ Mode pengembang”) memasang plugin langsung dari komputer Anda: kolom “URL bundel” hanya menerima alamat localhost / 127.0.0.1, di sampingnya — “JSON manifes”, tombol “Mulai sesi dev”. Sidik jari tidak dipatok, dan sesi hidup sampai tab ditutup; “Hentikan sesi dev” mematikannya seketika.
Hibah untuk pengembang (blok “👩💻 Akses pengembang”) diperlukan ketika yang menulis bukan pemilik. Pengembang dibuatkan akun karyawan biasa, lalu pemilik memberikan hibah: “Email pengembang (login staff-nya)”, “Hak yang diizinkan”, “Masa berlaku (hari)”, dan catatan opsional → “Berikan akses”. Pencabutan bisa dilakukan kapan saja dengan tombol “Cabut”.
Apa yang diberikan hibah, dan apa yang tidak:
- memberikan — hanya mode pengembang dengan hak yang Anda tandai (bawaan masa berlaku 14 hari, maksimum 90);
- hak dipangkas berdasarkan irisan: apa yang diminta manifes dan apa yang diberikan hibah; plugin tidak akan mendapat yang berlebih, bahkan jika memintanya di manifes;
- tidak memberikan — pemasangan, pengaktifan, dan penghapusan plugin: itu tetap milik pemilik.
Pembaruan, pengaktifan, dan penghapusan#
| Tindakan | Cara |
|---|---|
| Buka | tombol “Buka” di kartu (atau tautan dengan ?app=…) |
| Matikan sementara | “Matikan” — plugin tetap terpasang, tetapi tidak dijalankan dan tidak ditampilkan di tempat-tempatnya |
| Perbarui | untuk plugin dari GitHub — “Periksa pembaruan” lalu “Perbarui ke …”; jika versinya terbaru, panel akan mengatakan “Versi terbaru sudah terpasang”. Plugin dari berkas diperbarui dengan pemasangan ulang |
| Hapus | “Hapus” dengan konfirmasi: pengaturan dan butirnya dihapus, rilis yang diunggah tetap tersimpan di penyimpanan |
Pembaruan otomatis sengaja tidak ada: versi baru dari kode orang lain adalah sidik jari baru dan mungkin hak baru, jadi pembaruan selalu tindakan sadar pemilik.
Ekstensi bawaan#
Sebagian modul kami sendiri dikemas dalam format yang sama — itu terlihat dari perilakunya, tetapi tidak perlu dipasang: modul-modul itu datang bersama panel dan diaktifkan lewat kartu di toko aplikasi, bukan di bagian ini.
Saat ini modul semacam itu ada satu — “Mercury/VetIS” untuk Rusia: ia hidup sebagai tab bagian “Gudang”, dijalankan di sandbox yang sama dan dengan pemeriksaan sidik jari yang sama. Ekstensi bawaan tidak masuk ke daftar editor yang terpasang.
Apa yang bisa dan tidak bisa dilakukan editor#
| Bisa | Tidak bisa |
|---|---|
| Membaca dan mengubah katalog dalam batas hak yang diberikan | mengetahui kata sandi Anda atau memakai sesi Anda |
| Menampilkan antarmukanya sendiri, notifikasi, dan permintaan konfirmasi | membuka kode atau data admin di sekitarnya |
| Membuka editor item bawaan panel | mengakses internet langsung dari jendela plugin |
| Menyimpan pengaturannya sendiri di akun Anda | melihat data plugin lain di kartu-kartu Anda |
| Mengakses internet melalui bagian server — dan hanya ke alamat https yang tercantum di manifes (tidak lebih dari delapan) | dijalankan setelah berkas diganti: ketidakcocokan sidik jari memblokir peluncuran |
Plugin pihak ketiga ditandai di kartu dengan peringatan: “Aplikasi pihak ketiga di sandbox — ia tidak pernah menanyakan kata sandi.” Jika plugin meminta login panel, data pembayaran, atau kode SMS — itu penipuan, bukan cara kerja ekstensi.
Batasan#
- Bagian ini nonaktif secara default dan ditujukan bagi mereka yang menulis kode (atau memesankannya): pemilik biasa tidak perlu masuk ke sini.
- Semua tindakan selain melihat hanya bisa dilakukan pemilik akun. Karyawan hanya melihat hub secara read-only; mode pengembang hanya aktif dengan hibah yang masih berlaku.
- Repositori GitHub privat tidak didukung — repositori harus publik, pemasangan dilakukan berdasarkan tag.
- Tidak ada pembaruan otomatis: pembaruan plugin selalu dijalankan oleh pemilik.
- Tidak ada toko plugin pihak ketiga. Ekstensi siap pakai tidak dipublikasikan atau dijual melalui panel — sumbernya hanya file Anda atau repositori Anda.
- Tersedia tiga slot (halaman sendiri, tombol katalog, tab gudang) — plugin tidak dapat menyisipkan diri ke layar panel mana pun secara bebas.
- Bridge tidak memberikan data tamu, pesanan, keuangan, karyawan, dan percakapan — ini tidak bisa dilewati dengan hak akses, karena permintaan semacam itu memang tidak ada.
- Tidak ada log khusus "plugin melakukan hal tertentu". Hak akses terlihat di kartu, sedangkan perubahan katalog masuk ke riwayat item biasa; jika perlu kontrol, mulailah dari plugin yang hanya diberi hak baca.
- Batas teknis: bundel hingga 4 MB, hingga 8 alamat jaringan di manifes, hingga 1 MB per kunci penyimpanan; eksekusi sisi server — hingga 30 detik dan hingga 50 permintaan internet sekaligus.
- Data plugin tetap berada di cloud merek Anda: untuk akun di
cenaly.ru, status sisi server berada di kontur Rusia.
Pemecahan masalah#
| Gejala | Yang perlu diperiksa |
|---|---|
| Bagian tidak ada di menu | apakah kartu "Editor Kustom (SDK)" aktif di toko aplikasi; apakah bagian sudah dipindahkan dengan tombol "📌 Ke sidebar" |
| Karyawan tidak melihat tombol pemasangan | memang begitu: pemasangan, penghapusan, dan hibah hanya untuk pemilik akun |
| "Bundel di penyimpanan tidak cocok dengan sidik jari yang terpasang. Peluncuran diblokir" | file plugin diganti setelah pemasangan — pasang ulang editor untuk mencatat sidik jari baru |
| "Editor tidak mulai tepat waktu (tidak ada connect() dalam 10 detik)" | plugin tidak terhubung: ada kesalahan di kodenya atau file yang dikompilasi salah |
| "Gagal memuat bundel editor" | rilis tidak tersedia atau file rusak — pasang ulang |
"Editor tidak ditemukan atau nonaktif" saat membuka tautan ?app=… |
plugin dihapus atau dinonaktifkan di kartunya |
| "Gagal mengambil editor dari GitHub" | repositori privat, tidak ada manifest.json di root, tidak ada dist/index.js di tag, atau tag tidak mengikuti konvensi v{versi} |
| "Hanya alamat localhost / 127.0.0.1 yang diizinkan" | mode pengembang sengaja tidak menerima alamat eksternal — jalankan build secara lokal |
| Plugin tidak melihat data yang dibutuhkan | periksa "Hak akses" di kartu; untuk pengembang dengan hibah, hak aksesnya juga dipangkas oleh irisan dengan hibah |
| Plugin tidak dapat mengakses layanan pihak ketiga | tidak ada jaringan langsung dari sandbox: akses dilakukan oleh sisi server, dan alamatnya harus ada di manifes |
| "Editor melaporkan ada perubahan yang belum disimpan. Tetap tutup?" | plugin sendiri melaporkan adanya draf — simpan pekerjaan di dalamnya sebelum menutup |
Pertanyaan umum#
Apakah perlu bisa memprogram?#
Untuk memasang rilis yang sudah jadi — tidak. Untuk mendapatkan rilisnya sendiri — ya: rilis ditulis oleh pengembang atau agen AI berdasarkan templat kami dari blok "Pengembangan dengan AI". Bagian ini adalah alat untuk kode, bukan pembuat "dengan mouse".
Bisakah plugin pihak ketiga melihat klien atau pendapatan saya?#
Tidak. Plugin berjalan di sandbox dan hanya menerima data melalui bridge, sedangkan bridge hanya bisa melakukan tepat enam hal: katalog, harga dan stop-list, direktori gudang, penyimpanannya sendiri, pemanggilan sisi servernya sendiri, dan elemen antarmuka. Tamu, pesanan, struk, keuangan, karyawan, dan percakapan tidak ada di sana sejak awal. Apa yang diizinkan untuk plugin tertentu selalu terlihat di kartunya pada baris "Hak akses".
Bagaimana menyerahkan pengembangan ke kontraktor tanpa memberinya akses ke seluruh akun?#
Buatkan akun karyawan untuknya, lalu berikan hibah di blok "Akses pengembang": centang hanya hak yang diperlukan dan tetapkan jangka waktu (default 14 hari, maksimum 90). Ia akan mendapatkan mode pengembang dan tidak lebih; pemasangan plugin tetap menjadi tanggung jawab Anda. Hibah dapat dicabut dengan satu tombol.
Apakah plugin akan diperbarui sendiri saat penulis merilis versi baru?#
Tidak. Pembaruan dijalankan oleh pemilik: "Periksa pembaruan" → "Perbarui ke …". Dengan begitu versi baru tidak akan muncul di akun tanpa sepengetahuan manusia — bersama versi, hak akses yang diminta juga bisa berubah.
Di mana plugin menyimpan pengaturan dan datanya?#
Di akun Anda, di penyimpanan terpisah berdasarkan identifikatornya (hingga 1 MB per kunci), plus, jika digunakan, di bidang kustom kartu Anda — setiap plugin hanya melihat ruangnya sendiri. Untuk akun di cenaly.ru, sisi server dan statusnya tetap berada di kontur Rusia.
Apa bedanya dengan API dan MCP?#
API untuk pengembang dan MCP PBX Anda sendiri diperlukan ketika program bekerja dari luar: situs sendiri, sistem akuntansi pihak ketiga, agen AI. Editor kustom justru sebaliknya, antarmuka di dalam panel: karyawan membukanya seperti halaman admin biasa dan tidak keluar dari jendela kerja.
Bagian terkait#
- Toko aplikasi — tempat bagian ini dan ekstensi bawaan diaktifkan
- Gudang — tab tempat ekstensi seperti "VetIS" berada, dan direktori barang
- Impor katalog — jalur standar pengunggahan item, jika hanya itu yang dibutuhkan
- Toko online dengan kode sendiri (headless) — kontrak data terbuka untuk situs eksternal
- API dan MCP PBX Anda sendiri dan Guest API untuk agen AI — bekerja dari luar, bukan di dalam panel
- Karyawan dan shift — akun untuk pengembang dan peran
- Keamanan dan data — tempat data disimpan dan siapa yang memiliki akses
- Dukungan — ke mana harus menulis jika plugin berperilaku mencurigakan