|
MSJ GROUP
|
PT MATAHARI SAKTI JAYA | |||||||
| INSTRUKSI KERJA PENGEMBANGAN SISTEM | ||||||||
| Proyek: MSJ Guidelines — Brand Guidelines Management System | ||||||||
|
||||||||
Instruksi kerja ini disusun untuk mendokumentasikan seluruh pekerjaan pengembangan sistem MSJ Guidelines yang merupakan aplikasi Brand Guidelines Management System berbasis web. Sistem ini berfungsi sebagai portal terpusat untuk mengelola dan mendistribusikan aset brand, tipografi, mockup, komponen visual, dan dokumen panduan desain kepada seluruh stakeholder PT Matahari Sakti Jaya. Dokumen ini mencakup deskripsi fitur, arsitektur modul, dan panduan penggunaan dari setiap bagian sistem.
Sistem MSJ Guidelines mencakup modul-modul berikut:
Berikut adalah commit terkini yang tercatat pada repository datamismsj/msjguidelines:
| No | Commit ID | Tanggal | Deskripsi Perubahan | Author |
|---|---|---|---|---|
| 1 | b9565c7 | 08-04-2026 | Perbaikan tampilan highlight konten pada halaman guest mockup | Althaf |
| 2 | 55bb55e | 08-04-2026 | Perbaikan highlight seeder — data konten highlight mockup diperbarui | Althaf |
| 3 | b647f4d | 07-04-2026 | Penambahan tampilan desktop pada highlight mockup — responsive desktop view | Althaf |
| 4 | 13caf65 | 06-04-2026 | Perbaikan dan penambahan konten brand dan seeder pada sistem guidelines | Althaf |
| 5 | 80bc4f4 | - | Hapus user bodong & kartu nama belakang (Adel) | Adel |
| 6 | ce4415c | - | Update views guest & branch (Radif) | Radif |
| 7 | 0743b3c | - | Revisi image proxy & update AOS | Adel |
| 8 | 7e9a2f4 | - | Update asset yang masih salah pada visual component bahasa Indonesia | Radif |
| 9 | 0ccdc80 | - | Update Photopea — URL langsung tanpa proxy | Radif |
| 10 | b74abc8 | - | Fix revisi Photopea — duplikat header | Radif |
| 11 | 7c211d1 | - | Revisi tampilan mockup (Adel) | Adel |
/) — Halaman selamat datang dengan informasi visi & misi MSJ. Dapat diakses tanpa login. Tersedia dalam 2 bahasa (EN/ID).
session('lang')) dan dapat diubah via route /language/english atau /language/indonesian.
/brand): Menampilkan layout brand yang aktif beserta konten (logo, panduan warna, dll.) dan link unduhan. Filter: dmenu='msbrnd', isactive='1', bahasa sesuai session.
/typography): Menampilkan font dan panduan tipografi. Mendukung unduhan file font (TTF/OTF) dan preview via Photopea.
/mockup): Menampilkan template mockup dengan tampilan highlight desktop yang telah diperbarui (commit b647f4d). Mendukung download ZIP per konten.
/visual-component): Komponen visual dan elemen UI yang dapat diunduh.
/document): Dokumen panduan brand dalam format PDF dan lainnya.
/search?q=...): Mencari kata kunci di seluruh konten brand, tipografi, mockup, visual component, dan dokumen.
/image-proxy): Melayani gambar eksternal untuk kebutuhan CORS pada editor Photopea.
index() — Menampilkan halaman master brand. Ambil otorisasi dari sys_auth berdasarkan role user. Ambil daftar menu dari sys_gmenu. Load enum cardtype, photopea, filetype dari sys_enum.
getLayouts() — AJAX endpoint JSON: Ambil semua layout untuk dmenu='msbrnd' sesuai bahasa session. Urut berdasarkan position ASC.
storeLayout() — Simpan layout baru. Validasi: header required, card_type required, lang required. Auto-assign posisi = max position + 1. Normalisasi deskripsi HTML kosong menjadi string kosong.
updateLayout() — Update layout. Validasi sama seperti store + position required integer. Reorder posisi layout lain secara otomatis jika posisi berubah (geser ke atas/bawah).
destroyLayout() — Hapus layout:
isactive='1': Soft delete (set isactive ke 0)isactive='0': Hard delete — hapus semua konten brand, link file fisik, dan layout secara permanenstoreContent() — Tambah konten brand ke layout. Validasi file: mimes:jpeg,png,svg, max:16384. File thumbnail disimpan ke public/assets/thumbnails/brands/. Link file disimpan ke public/assets/links/brands/. Validasi tidak boleh duplikat tipe link (kecuali slider_image).
activateLayout() / deactivateLayout() — Toggle status aktif layout via PATCH request.
activateContent() / deactivateContent() — Toggle status aktif konten brand.
previewLayout() — Menampilkan pratinjau tampilan layout sebelum dipublikasikan.
sys_log via Function_Helper::log_insert() dengan tipe: V (View), I (Insert), U (Update), X (Delete).
MsbrndController. Setiap controller memiliki method yang sama: index(), getLayouts(), storeLayout(), updateLayout(), destroyLayout(), getContents(), storeContent(), updateContent(), destroyContent(), activateLayout(), deactivateLayout(), previewLayout().
$dmenu, model yang digunakan (Brand/Typography/Mockup/VisualComponent/Document), dan path penyimpanan file.
assets/thumbnails/typographies/ & assets/links/typographies/assets/thumbnails/mockups/ & assets/links/mockups/assets/thumbnails/visualComponents/ & assets/links/visualComponents/assets/thumbnails/documents/ & assets/links/documents/foreach ($mastermenu as $menu => $config) di web.php, sehingga semua 5 modul master tercover dengan struktur route yang seragam.
photopea='1' akan menampilkan tombol edit online di halaman guest. File dibuka langsung di editor Photopea via image proxy.
index() — Memuat data dashboard: statistik ringkasan, data unduhan per kategori menu, top downloaders, aktivitas per role, dan aktivitas terkini.
getDashboardStats()):
sys_log.tipe='D')links.isactive='1')getDownloadsByMenuType()): Menampilkan jumlah unduhan per kategori (Brand, Typography, Document, Mockup, Visual). Mendukung filter berdasarkan rentang tanggal atau preset (week/month/year/all).
getVisitorsData()): Data kunjungan oleh user terautentikasi, dapat difilter per role dan periode (harian/bulanan/tahunan).
username='-').
LoginController::login()): Autentikasi user via username + password. Mendukung SSO via token (/auth/{token}).
/profile): Menampilkan dan memperbarui data profil user. Method update() di PageController menangani penyimpanan perubahan data profil.
/changepass): Form untuk mengubah password akun. Validasi kekuatan password diterapkan.
auth.
tabel_sys_app, tabel_sys_auth, tabel_sys_role, tabel_sys_gmenu, tabel_sys_dmenu — Konfigurasi aplikasi, hak akses, role pengguna, dan menu navigasi.
php artisan db:seed --class=NamaSeeder
position) menentukan kategori mana yang muncul pertama kali di halaman Guest.
Seedermockupbaru untuk menambahkan koleksi aset baru secara massal tanpa merusak struktur layout yang sudah ada.
add_content_dokumen. Dokumen ini tersedia dalam dua bahasa (English/Indonesia) untuk menjangkau pengguna internal dan eksternal secara luas.
assets/links/documents/.
PEDOMAN BRAND & DESIGN.png. Hal ini penting agar user dapat mengenali dokumen panduan utama dengan cepat di antara daftar dokumen lainnya.
| Tabel | Fungsi | Relasi Utama |
|---|---|---|
layouts |
Grup/kategori konten. Berisi header, deskripsi, tipe kartu, posisi, bahasa (lang), dan status aktif. Field dmenu menentukan modul (msbrnd/mstypo/msmock/msvis/msdocs). |
One-to-Many → brands, typographies, mockups, visual_components, documents |
brands |
Konten aset brand (logo, panduan warna). Berisi header, deskripsi, file_path thumbnail, flag photopea, dan isactive. | Many-to-One → layouts One-to-Many → links |
typographies |
Konten font dan tipografi perusahaan. | Many-to-One → layouts One-to-Many → links |
mockups |
Template dan mockup desain. Mendukung tampilan highlight desktop. | Many-to-One → layouts One-to-Many → links |
visual_components |
Elemen visual dan komponen UI. | Many-to-One → layouts One-to-Many → links |
documents |
Dokumen panduan brand dalam berbagai format. | Many-to-One → layouts One-to-Many → links |
links |
File yang dapat diunduh. Berisi type (filetype), address (path file), dmenu, layoutid, contentid. Memungkinkan satu konten memiliki banyak format unduhan. | Many-to-One → brands/typographies/mockups/visual_components/documents |
sys_log |
Log aktivitas sistem. Tipe: L=Login, V=View, D=Download, I=Insert, U=Update, X=Delete, E=Error. | Many-to-One → users |
sys_enum |
Data master enum (cardtype, photopea, filetype, dll.) untuk dropdown dan konfigurasi dinamis. | — |
sys_auth |
Hak akses per role per menu. Field: idroles, dmenu, add, edit, delete, excel, pdf, print. | Many-to-One → sys_roles |
| Modul | Admin | User Login | Publik (Guest) |
|---|---|---|---|
| Homepage (/) | ✓ Lihat | ✓ Lihat | Akses Penuh |
| Brand (/brand) | ✓ Lihat | Lihat + Unduh | — |
| Typography (/typography) | ✓ Lihat | Lihat + Unduh | — |
| Mockup (/mockup) | ✓ Lihat | Lihat + Unduh | — |
| Visual Component (/visual-component) | ✓ Lihat | Lihat + Unduh | — |
| Document (/document) | ✓ Lihat | Lihat + Unduh | — |
| Master Brand (msbrnd) | Full CRUD | — | — |
| Master Typography (mstypo) | Full CRUD | — | — |
| Master Mockup (msmock) | Full CRUD | — | — |
| Master Visual (msvis) | Full CRUD | — | — |
| Master Document (msdocs) | Full CRUD | — | — |
| Dashboard Analytics | Full | — | — |
| Profil (/profile) | Full | Full | — |
| Topik | Catatan |
|---|---|
| Bilingual System | Bahasa disimpan di session key 'lang' (nilai: 'en' atau 'id'). Semua query konten otomatis filter berdasarkan bahasa aktif. Default: English. |
| Generalized Controllers | Kelima modul master (msbrnd, mstypo, msmock, msvis, msdocs) menggunakan struktur controller yang identik. Perubahan arsitektur pada satu modul harus direplikasi ke modul lain. |
| File Upload Validation | Thumbnail: mimes:jpeg,png,svg, max:16384 (16MB). Link file: mimes:jpeg,jpg,png,svg,zip,ai,pdf,psd,doc,docx,ttf,otf,ppt,pptx, max:16384. Validasi duplikat tipe link diterapkan (kecuali slider_image). |
| Duplikat Tipe Link | Dalam satu konten, tipe link tidak boleh duplikat (misal tidak bisa 2 link bertipe PDF dalam satu konten), kecuali tipe slider_image yang mengizinkan multiple. |
| Soft Delete vs Hard Delete | Layout dengan isactive='1' hanya soft-deleted (isactive ke 0). Layout dengan isactive='0' dapat di-hard-delete bersama seluruh konten dan file fisik terkait. |
| Photopea Integration | Konten dengan photopea='1' menampilkan tombol edit di halaman guest. Image proxy (/image-proxy) diperlukan untuk mengatasi CORS saat Photopea mengakses file dari server lokal. |
| Download ZIP | Dibuat dengan ZipArchive. File ZIP sementara disimpan di storage/app/temp/ dan dihapus otomatis setelah response dikirim (deleteFileAfterSend(true)). |
| Audit Log (sys_log) | Setiap aksi (View, Insert, Update, Delete, Download, Login) dicatat otomatis via Function_Helper::log_insert($tipe, $dmenu, $keterangan, $status). Data ini menjadi sumber Dashboard Analytics. |
| Posisi Layout | Posisi layout dikelola manual via field position. Saat update posisi, sistem otomatis menggeser posisi layout lain untuk menghindari duplikat posisi. |
| HTML Description Normalization | Deskripsi yang hanya berisi HTML kosong ( , tag tanpa teks) dinormalisasi menjadi string kosong sebelum disimpan ke database. |
| Metrik | Jumlah / Keterangan |
|---|---|
| Total Controller Utama | 8 Controller (MsbrndController, MstypoController, MsmockController, MsvisController, MsdocsController, DashboardController, GuestController, PageController) |
| Modul Master Data | 5 Modul (Brand, Typography, Mockup, Visual, Document) |
| Halaman Guest Publik | 6 Halaman (Homepage, Brand, Typography, Mockup, Visual, Document) |
| Bahasa yang Didukung | 2 Bahasa (English, Bahasa Indonesia) |
| Jumlah Seeder | 10+ Seeder (konten + konfigurasi sistem) |
| Commit Terbaru Althaf | 4 Commit (Highlight mockup desktop & seeder) |
| Framework | Laravel (PHP) + Blade Templating |
| Status Keseluruhan | AKTIF & PRODUCTION |
Dokumen ini dibuat berdasarkan analisis kode sumber — Repository: gitlab.com/datamismsj/msjguidelines — Dicetak: 08 April 2026