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

121
README.md
View File

@ -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

View File

@ -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;