From bd1a63d16c5b0929638fea605323f180e6bd34d0 Mon Sep 17 00:00:00 2001 From: iFannJR Date: Tue, 28 Jul 2026 21:41:15 +0700 Subject: [PATCH] Dokumentasi Kode dan Penjelasan di Readme --- README.md | 121 +++++++++++++++++++++- app/Services/ToyRecommendationService.php | 10 +- 2 files changed, 121 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index cf3a293..6a947f2 100644 --- a/README.md +++ b/README.md @@ -11,8 +11,8 @@ # Salin env # Database (MySQL) # Set di .env: DB_CONNECTION=mysql, DB_DATABASE=..., DB_USERNAME=..., DB_PASSWORD=... -# php artisan migrate -php artisan db:seed +php artisan migrate #hati2 saat migrate jika ada data asli takutnya data yang sudah ada terhapus dan terupdate +php artisan db:seed # Storage link (untuk gambar produk) php artisan storage:link @@ -24,10 +24,121 @@ # Saat development: jalankan di terminal terpisah: npm run dev ``` ## Menjalankan - ```bash php artisan serve # Buka http://localhost:8000 -- Admin: `admin@toy.com` / `password` -- User: `user@toy.com` / `password` + + ``` +# WebSAW-LOCAL +Sistem Penjualan Mainan Anak Berbasis Website dengan Rekomendasi Produk Menggunakan Metode SAW (Simple Additive Weighting). + +## Fitur Utama +- Login & Register User +- Manajemen Produk +- Manajemen Kriteria SAW +- Sistem Rekomendasi Mainan +- Keranjang Belanja +- Checkout +- Riwayat Transaksi +- Dashboard Admin +- Perhitungan SAW Otomatis + + +## Teknologi +- Laravel 12 +- MySQL +- Bootstrap / Tailwind CSS +- JavaScript +- Chart.js +- Metode SAW (Simple Additive Weighting) + +#### AuthController +Mengelola proses autentikasi pengguna. + +| Method | Fungsi | +|----------------|--------------------------------| +| login() | Menampilkan halaman login | +| authenticate() | Proses login | +| register() | Menampilkan halaman registrasi | +| store() | Menyimpan akun baru | +| logout() | Keluar dari sistem | +--------------------------------------------------- + +### Admin +- Admin: `admin@toy.com` / `password` + +#### DashboardController +Mengelola dashboard admin. + +| Method | Fungsi | +|-------------|---------------------------------| +| index() | Menampilkan statistik penjualan | +| chartData() | Menampilkan data grafik | +------------------------------------------------- + +#### ProductController +Mengelola data produk mainan. + +| Method | Fungsi | +|-----------|---------------------------| +| index() | Menampilkan daftar produk | +| create() | Form tambah produk | +| store(). | Menyimpan produk | +| edit() | Form edit produk | +| update() | Memperbarui produk | +| destroy() | Menghapus produk | +----------------------------------------- + +#### CriteriaController +Mengelola kriteria SAW. + +| Method. | Fungsi | +|-----------|--------------------| +| index() | Daftar kriteria | +| store() | Menambah kriteria | +| update() | Mengubah kriteria | +| destroy() | Menghapus kriteria | +---------------------------------- + +#### TransactionController +Mengelola transaksi penjualan. + +| Method. | Fungsi | +|----------------|---------------------------| +| index(). | Daftar transaksi | +| show(). | Detail transaksi | +| updateStatus() | Mengubah status transaksi | +---------------------------------------------- + +## Controller Logic SAW +| Method | Fungsi | +|--------------------------------|-----------------------------------------------------| +| getRecommendations() | Menghasilkan rekomendasi produk | +| getRecommendationsWithMatrix() | Menampilkan matriks keputusan dan normalisasi | +| getFilteredProducts() | Filter produk berdasarkan usia, kategori, dan budget| +| buildWeightsFromPriorities() | Mengubah prioritas pengguna menjadi bobot | +| buildMatrix() | Membentuk matriks keputusan | +| normalizeMatrix() | Melakukan normalisasi matriks | +| calculatePreferenceScores() | Menghitung nilai preferensi | +| ageRangeOverlaps() | Mengecek kesesuaian usia | + + +### User +- User: `user@toy.com` / `password` + +#### RecommendationController +Mengelola sistem rekomendasi produk. + +| Method | Fungsi | +|-------------|-------------------------------| +| index() | Form rekomendasi | +| calculate() | Proses perhitungan SAW | +| result() | Menampilkan hasil rekomendasi | +----------------------------------------------- + +## Implementasi Metode SAW +Logika perhitungan SAW berada pada: + +```bash +app/Services/ToyRecommendationService.php \ No newline at end of file diff --git a/app/Services/ToyRecommendationService.php b/app/Services/ToyRecommendationService.php index b0f88f4..1c27a8e 100644 --- a/app/Services/ToyRecommendationService.php +++ b/app/Services/ToyRecommendationService.php @@ -354,16 +354,16 @@ protected function buildMatrix(Collection $products, Collection $criterias): arr $matrix = []; foreach ($products as $product) { - $row = ['product_id' => $product->id]; - foreach ($product->criterias as $pc) { + $row = ['product_id' => $product->id]; //Membangun baris matriks untuk setiap produk, dimulai dengan ID produk. + foreach ($product->criterias as $pc) { //Menyusun nilai kriteria untuk setiap produk berdasarkan relasi many-to-many antara produk dan kriteria. $criteria = $criterias->firstWhere('id', $pc->id); if ($criteria) { - $row[$criteria->name] = (float) $pc->pivot->value; + $row[$criteria->name] = (float) $pc->pivot->value; //Menyimpan nilai kriteria untuk produk tersebut dalam baris matriks. } } foreach ($criterias as $c) { - if (!isset($row[$c->name])) { - $row[$c->name] = $c->name === 'Harga' ? (float) $product->price : 0; + if (!isset($row[$c->name])) { // + $row[$c->name] = $c->name === 'Harga' ? (float) $product->price : 0; //Menyusun nilai kriteria default untuk produk tersebut. } } $matrix[$product->id] = $row;