Jurnal
Modul «Jurnal» di Platform OneEntry memungkinkan administrator untuk melacak baik tindakan administrator lain dalam sistem maupun aktivitas publik dari Content API. Modul ini terdiri dari empat tab:
| Tab | Apa yang ditampilkan |
|---|---|
| Jurnal tindakan admin | Semua tindakan administrator dalam sistem: pembuatan, perubahan, penghapusan entitas. |
| Lalu lintas admin | Sesi login administrator: kapan masuk, kapan keluar, dari perangkat mana. |
| Statistik Content API | Penghitung panggilan semua endpoint publik situs untuk periode yang berbeda. |
| Kesalahan Content API | Semua respons 4xx/5xx dari API publik dengan detail permintaan dan stack trace. |
Di antarmuka modul, tab ditandai sebagai: Jurnal Admin, Log Akses ke Aplikasi Admin, Statistik Content API, Kesalahan Content API.
Setiap tab tersedia di bawah izin terpisah — lihat Izin untuk jurnal.
Jurnal tindakan admin
Tab utama yang menunjukkan semua tindakan administrator dalam sistem. Sebelumnya disebut hanya "Jurnal tindakan admin" — sekarang diubah namanya menjadi "Jurnal tindakan admin" untuk membedakannya dari tab baru.
Elemen antarmuka
Tab ini terdiri dari dua blok:
- Filter
- Daftar tindakan
Filter
Untuk memfilter tindakan, tersedia bidang berikut:
- Dari — kolom teks untuk tanggal mulai yang diperlukan untuk memfilter tindakan.
- Ke — kolom teks untuk tanggal akhir yang diperlukan untuk memfilter tindakan.
Tanggal dapat dimasukkan sebagai string dalam format tanggal wilayah Anda, serta memilih tanggal yang diperlukan menggunakan kalender yang muncul saat mengklik kolom input tanggal.
- ID Administrator — kolom input numerik untuk pengidentifikasi unik administrator.
- Tindakan pengguna — daftar dropdown tindakan pengguna:
- Pembuatan
- Perubahan
- Penghapusan
- Status — daftar dropdown status tindakan:
- Berhasil
- Kesalahan
- Nama modul — daftar dropdown nama modul:
- Administrators
- Sets of attributes
- Backup
- Managing blocks
- Event management
- General settings
- Uploading files
- File editor
- Managing forms
- Localization
- Markers
- Menu
- Modules
- Content management
- Products
- Order management
- Basic settings
- Payment management
- Product status management
- USER
- Authentication providers and users management
- Template management
- Preview template management
- ID Rekaman — kolom input numerik untuk pengidentifikasi unik rekaman.
Di bawah blok filter terdapat dua tombol:
- Hapus data — menghapus rekaman jurnal tindakan admin untuk periode yang ditentukan oleh kolom Dari / Ke (lihat Pembersihan jurnal secara manual).
- Reset — mengatur ulang filter yang diterapkan.
Daftar tindakan
Daftar tindakan disajikan dalam bentuk tabel dengan enam kolom:
- Tindakan pengguna
- Status
- Login pengguna
- Nama modul
- ID Rekaman
- Tanggal dan waktu
Untuk setiap kolom ada kemungkinan untuk mengurutkan data dengan mengklik judul kolom. Klik pertama akan mengurutkan secara menurun, klik kedua secara meningkat, klik ketiga akan mengatur ulang pengurutan.
Audit visibilitas blok
Setiap peralihan visibilitas blok (toggle "tampilkan/tidak tampilkan" di admin blok) secara otomatis dicatat dalam Jurnal tindakan admin. Terlihat, administrator mana dan kapan mengubah status blok tertentu.
Toggle visibilitas blok tidak dicatat dalam jurnal — tidak mungkin untuk mengetahui siapa dan kapan menyembunyikan/menampilkan blok. Sekarang ini ada, dan operasi ditampilkan dalam daftar umum dengan tipe "Managing blocks".
Lalu lintas admin (Log Akses Admin)
Tab «Lalu lintas admin» menunjukkan setiap login dan logout administrator dalam sistem sebagai catatan terpisah. Sekarang Anda dapat langsung melihat siapa dan kapan masuk ke admin — tanpa perlu merujuk ke Grafana/Loki. Berguna untuk audit (terutama untuk tim besar dengan beberapa administrator).
Kolom tabel
Tabel terdiri dari enam kolom:
| Kolom | Apa artinya |
|---|---|
| Login | login administrator |
| IP | alamat IP dari mana admin masuk |
| Waktu Login | tanggal dan waktu login |
| Waktu Logout | tanggal dan waktu logout (untuk sesi yang masih terbuka — kosong) |
| Durasi | durasi sesi (untuk yang aktif — dari login hingga saat ini) |
| Alasan | alasan penutupan sesi: logout (sendiri menekan "Keluar") atau admin_revoked (administrator lain memaksa menyelesaikan sesi, misalnya melalui logoutAll) |
Seperti di Jurnal tindakan admin, setiap kolom dapat diurutkan dengan mengklik judulnya.
Kedaluwarsa token (expired) dan reautentikasi (refresh) tidak dicatat sebagai catatan terpisah — sesi tersebut hanya ditandai sebagai ditutup secara malas, ketika sebenarnya tidak lagi digunakan.
Filter
- Dari / ke — periode (kolom input tanggal dengan kalender).
- ID Administrator — kolom numerik untuk memfilter berdasarkan administrator tertentu.
- Status Sesi — daftar dropdown status sesi: Semua / Aktif / Tutup.
Tombol "Hapus data"
Menghapus catatan sesi untuk periode yang ditentukan oleh kolom Dari / Ke. Saat ditekan, dialog konfirmasi akan muncul:
Konfirmasi tindakan — Hapus semua sesi yang ditutup untuk periode yang ditentukan? Tindakan ini tidak dapat dibatalkan. Sesi aktif akan tetap ada.
Hanya sesi yang ditutup yang dihapus. Sesi aktif (dengan otorisasi terbuka) tidak akan terpengaruh — ini adalah perlindungan dari "pembunuhan" rekan kerja yang sedang bekerja secara tidak sengaja.
Statistik Content API
Tab «Statistik Content API» menunjukkan penghitung panggilan semua endpoint publik situs (storefront API) untuk periode yang berbeda — 1 jam, 24 jam, 7 hari.
Apa yang ditampilkan
- Daftar semua endpoint publik (
GET /api/content/...) — secara otomatis dikumpulkan dari kode, tidak perlu pemeliharaan manual. - Penghitung di samping setiap endpoint — berapa kali endpoint tersebut dipanggil selama periode yang dipilih.
- Angka diambil dari metrik Prometheus terpusat nginx-ingress, yang bertanggung jawab atas lalu lintas kami. Tidak ada penghitung terpisah yang dibuat di database proyek.
Elemen antarmuka
- Periode — daftar dropdown periode: Jam Terakhir / 24 Jam Terakhir / 7 Hari Terakhir (secara default — 24 Jam Terakhir).
- Segarkan — tombol untuk memaksa pembaruan data.
Data disajikan dalam tabel dengan empat kolom:
| Kolom | Apa artinya |
|---|---|
| Path | jalur endpoint (/api/content/...) |
| Metode | metode HTTP (GET, POST, …) |
| Deskripsi | deskripsi singkat tentang endpoint |
| Permintaan | jumlah panggilan selama periode yang dipilih |
Di bagian atas halaman ditampilkan banner informasi:
Pembersihan otomatis tidak berlaku — Data dibaca secara real-time dari Prometheus, retensi dikonfigurasi di tingkat infrastruktur pemantauan. Tab ini tidak menyimpan data di database CMS.
Jika Prometheus tidak tersedia, di atas tabel akan muncul peringatan "Metrik sementara tidak tersedia. Semua endpoint ditampilkan dengan jumlah nol." — daftar endpoint tetap ditampilkan, tetapi dengan penghitung 0.
Data disimpan di Prometheus dengan retensi tingkat infrastruktur (biasanya 30 hari). Untuk analisis yang lebih lama, perlu disimpan secara mandiri. Banner informasi di bagian atas halaman memperingatkan tentang hal ini.
Mengapa ini diperlukan
Tim pemasaran dan produk dapat melihat fitur mana dari storefront API yang benar-benar digunakan, dan mana yang tidak aktif. Juga berguna untuk memantau "apakah semuanya berjalan baik" — penurunan tajam dalam panggilan satu endpoint biasanya menunjukkan masalah di sisi frontend.
Respons dicache selama 60 detik di Redis — untuk menghindari memanggil Prometheus setiap kali menekan "Segarkan".
Kesalahan Content API
Tab «Kesalahan Content API» menunjukkan semua respons 4xx/5xx yang diberikan oleh API publik selama periode tersebut. Para pengembang yang mengintegrasikan aplikasi klien dengan API kami sekarang tidak memerlukan akses ke log server — semua kesalahan dari permintaan mereka dapat dilihat langsung di admin.
Apa yang ditampilkan
Setiap catatan adalah kesalahan HTTP terpisah. Tabel terdiri dari lima kolom:
| Kolom | Apa artinya |
|---|---|
| Waktu | cap waktu kesalahan |
| Status | status HTTP (4xx / 5xx) |
| Metode | metode permintaan (GET, POST, …) |
| Path | jalur (/api/content/...) |
| Pesan | teks kesalahan |
Jika tidak ada kesalahan selama periode yang dipilih, pesan "Tidak ada kesalahan yang dicatat untuk periode yang dipilih" akan ditampilkan alih-alih tabel.
Kolom «Detail» membuka layar detail dengan:
- Badan permintaan (tanpa rahasia — kata sandi, token, header otorisasi disamarkan)
- Query — parameter string permintaan
- Headers
- Stack trace — diperluas (hingga 8 KB)
Filter
- Dari / ke — periode (kolom input tanggal dengan kalender).
- Status HTTP — daftar dropdown status. Dapat memilih grup (4xx - Sisi Klien, 5xx - Sisi Server) atau kode tertentu: 400, 401, 403, 404, 422, 500, 502, 503.
- Path — kolom teks untuk memfilter berdasarkan jalur (misalnya,
/api/content/blocks/*).
Tombol "Hapus data"
Menghapus catatan kesalahan untuk periode yang ditentukan oleh kolom Dari / Ke. Jika periode tidak ditentukan — menghapus semua kesalahan.
Keamanan — sanitiser
Sanitiser secara otomatis menghapus data sensitif. Kolom password, token, authorization, api_key, x-app-token, cookie, set-cookie (tanpa memperhatikan huruf besar/kecil) diganti dengan ***. Badan yang besar dipotong hingga 2 KB.
Arsitektur
Kesalahan dicatat melalui antrean ringan Bull, agar pencatatan dalam jurnal tidak menghambat pemrosesan permintaan. Jika antrean penuh (lebih dari 1000 tugas yang menunggu) — kesalahan baru akan dibuang dengan tenang, untuk menghindari "menjatuhkan" Redis.
Pembersihan jurnal secara manual
Catatan jurnal dibersihkan secara manual — di setiap tab yang menyimpan data di database, ada tombol «Hapus data»:
| Tab | Apa yang dihapus |
|---|---|
| Jurnal tindakan admin | catatan tindakan admin untuk periode yang dipilih |
| Lalu lintas admin | hanya sesi yang ditutup untuk periode yang dipilih |
| Kesalahan Content API | catatan kesalahan untuk periode yang dipilih |
Periode penghapusan ditentukan oleh kolom Dari / Ke di filter tab. Jika periode tidak ditentukan — semua catatan dari tipe yang sesuai akan dihapus. Sebelum penghapusan, dialog konfirmasi «Konfirmasi tindakan» selalu ditampilkan, tindakan ini tidak dapat dibatalkan.
Tombol "Hapus data" di tab "Lalu lintas admin" tidak menghapus sesi aktif administrator — bahkan jika periode ditentukan, yang mencakup saat ini, sesi terbuka rekan kerja yang sedang bekerja tidak akan dihapus. Hanya sesi yang ditutup yang dihapus.
Data statistik dibaca secara real-time dari Prometheus dan tidak disimpan di database CMS, oleh karena itu tidak ada tombol "Hapus data" di tab ini — hal ini diinformasikan oleh banner "Pembersihan otomatis tidak berlaku".
Izin untuk jurnal
Setiap tab jurnal tersedia di bawah izin terpisah dalam pohon hak:
| Tab | Izin |
|---|---|
| Jurnal tindakan admin | journal.viewAdminActions (izin yang ada, tanpa perubahan) |
| Lalu lintas admin | journal.viewAdminAccess (izin baru) |
| Statistik Content API | journal.viewContentApiStats (izin baru) |
| Kesalahan Content API | journal.viewContentApiErrors (izin baru) |
Saat memperbarui sistem, kedua izin baru (journal.viewContentApiStats, journal.viewContentApiErrors) secara otomatis diberikan kepada semua administrator yang ada dengan izin admins.get — melalui migrasi seed. Untuk peran saat ini tidak ada yang rusak.