Dokumentasi Kode dan Penjelasan di Readme
This commit is contained in:
parent
6fb2ab0d57
commit
bd1a63d16c
119
README.md
119
README.md
|
|
@ -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
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue