Dokumentasi Kode dan Penjelasan di Readme

This commit is contained in:
iFannJR 2026-07-28 21:41:15 +07:00
parent 6fb2ab0d57
commit bd1a63d16c
2 changed files with 121 additions and 10 deletions

119
README.md
View File

@ -11,7 +11,7 @@ # Salin env
# Database (MySQL) # Database (MySQL)
# Set di .env: DB_CONNECTION=mysql, DB_DATABASE=..., DB_USERNAME=..., DB_PASSWORD=... # Set di .env: DB_CONNECTION=mysql, DB_DATABASE=..., DB_USERNAME=..., DB_PASSWORD=...
# php artisan migrate php artisan migrate #hati2 saat migrate jika ada data asli takutnya data yang sudah ada terhapus dan terupdate
php artisan db:seed php artisan db:seed
# Storage link (untuk gambar produk) # Storage link (untuk gambar produk)
@ -24,10 +24,121 @@ # Saat development: jalankan di terminal terpisah: npm run dev
``` ```
## Menjalankan ## Menjalankan
```bash ```bash
php artisan serve php artisan serve
# Buka http://localhost:8000 # 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

View File

@ -354,16 +354,16 @@ protected function buildMatrix(Collection $products, Collection $criterias): arr
$matrix = []; $matrix = [];
foreach ($products as $product) { foreach ($products as $product) {
$row = ['product_id' => $product->id]; $row = ['product_id' => $product->id]; //Membangun baris matriks untuk setiap produk, dimulai dengan ID produk.
foreach ($product->criterias as $pc) { 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); $criteria = $criterias->firstWhere('id', $pc->id);
if ($criteria) { 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) { foreach ($criterias as $c) {
if (!isset($row[$c->name])) { if (!isset($row[$c->name])) { //
$row[$c->name] = $c->name === 'Harga' ? (float) $product->price : 0; $row[$c->name] = $c->name === 'Harga' ? (float) $product->price : 0; //Menyusun nilai kriteria default untuk produk tersebut.
} }
} }
$matrix[$product->id] = $row; $matrix[$product->id] = $row;