Pencarian menyaring indeks berkas. Untuk kalimat pada bab, gunakan pencarian browser. Tombol cetak mengabaikan kode asli agar hasil tetap ringkas.
01 · Cara memakai panduan
Panduan ini membahas kode Rajawali Computer yang tersedia untuk diperiksa. Tiap berkas memiliki fungsi, lokasi perubahan, daftar fungsi atau metode, petunjuk pembacaan, dan tombol kode asli dengan nomor baris.
- Untuk menjawab penguji, cari nama fitur, klik berkasnya, lalu klik fungsi yang diminta.
- Untuk ngoding manual, buka bagian Latihan perubahan. Contoh latihan diberi label belum dipasang.
- Semua path proyek dihitung dari root proyek. Pada VPS root yang kamu sebut adalah
/home/rajawalicompgresik/rajawalicompgresik. - Kode aplikasi dan ZIP tidak diubah dalam pekerjaan penulisan ini. Panduan merupakan satu file baru khusus belajar kode.
- Nomor baris mengikuti snapshot sumber dalam panduan. Setelah kode diedit, gunakan nama fungsi sebagai penanda utama.
| Dasar pembacaan | Keterangan |
|---|---|
| Sumber utama | Rajawali_SOURCE_DIPERIKSA.zip, unggahan 17 Oktober 2026. |
| Overlay revisi | Rajawali_PATCH_REVISI_FITUR_SAJA_17Okt2026_KOREKSI.zip versi 5, revisi 19 Oktober 2026. |
| Pendukung | Berkas deployment, aset teks, factory, dan sebagian tes dari salinan sebelumnya. Ditandai per berkas. |
| Jangkauan | 459 berkas teks kode atau konfigurasi, 578 metode PHP aplikasi, dan 248 fungsi bernama JS atau TS aplikasi. |
| Bukan bukti deployment | Penerapan ZIP versi 5 ke VPS belum dikonfirmasi dari keluaran pengguna yang tersedia. |
| Batas materi | Implementasi vendor dan node_modules tidak disertakan sumber. Peran dependensi dijelaskan dari manifest, bukan dengan mengklaim membaca seluruh kode vendor. |
| Status pengujian | Pembacaan dan pemeriksaan panduan tidak menjalankan ulang Laravel, PostgreSQL, browser aplikasi, Burp, atau UAT manusia. |
02 · Arsitektur dan alur request
| Lapisan | Tugas | Berkas penunjuk |
|---|---|---|
| Browser | Menampilkan form dan mengirim request | resources/js/*.tsx |
| Halaman awal | Mengirim shell HTML dan entry aset | |
| Entry React | Memilih katalog, login atau aktivasi | |
| Route | Memilih URL, HTTP method, controller dan middleware | |
| Middleware | Memeriksa session, role, tenant, body dan header | |
| Request atau DTO | Memeriksa bentuk serta isi input | |
| Controller | Menghubungkan HTTP dengan layanan | app/Http/Controllers |
| TP atau workflow | Menjalankan perubahan bisnis yang dibatasi | |
| IVP | Memeriksa invariant sebelum hasil diterima | |
| Database | Menyimpan, mengunci, dan membatasi perubahan stok | |
| Audit dan realtime | Merekam perubahan lalu meminta UI memperbarui data |
Alur konkret tombol Simpan penjualan
| Urutan | Apa yang terjadi | Penunjuk kode |
|---|---|---|
| 1 | Form kasir menyusun item dan uang bayar. | |
| 2 | Axios membawa cookie dan header XSRF. | |
| 3 | POST /api/penjualan melewati session, akun, role dan tenant. | |
| 4 | SaleRequest memeriksa izin dan rules dari SaleData. | |
| 5 | Controller mengubah input menjadi objek SaleData. | |
| 6 | TP memeriksa aktor dan tenant terbaru. Harga dibaca dari master. | |
| 7 | Header serta item ditulis dan fungsi PostgreSQL mengurangi stok. | |
| 8 | IVP memeriksa total, pembayaran, garansi dan persamaan stok. | |
| 9 | Audit CDI dicatat sebelum transaksi tenant commit. | |
| 10 | JSON hasil diterima UI. Event perubahan mengawali refresh data. |
Tiga database bisnis
| Koneksi | Isi utama | Catatan penting |
|---|---|---|
| master | cabang, pengguna, supplier, produk, mutasi, session, coordinator, pengaturan pembayaran dan metadata provisioning. | Data referensi bersama tidak berarti semua tabel bisnis dicampur. |
| tenant_samanhudi | pelanggan, stok, pembelian, penjualan, servis, garansi, retur, nota dan audit cabang Samanhudi. | Identitas tenant ditentukan server. |
| tenant_peganden | Jenis tabel tenant yang sama untuk cabang Peganden. | ID transaksi yang sama antar database belum tentu transaksi yang sama. |
Nested DB::transaction pada koneksi berbeda tidak otomatis menjadi transaksi terdistribusi. Coordinator 2PC eksplisit hanya dipakai operasi mutasi yang didaftarkan di .
Cara membaca schema dan relasi database
| Definisi | Arti dan batas |
|---|---|
| primary atau increments | Identitas unik record. increments juga menyediakan nomor bertambah. Detail item tertentu memakai primary key gabungan. |
| foreign, references, on | Database memeriksa hubungan ke tabel pada database yang sama. Tidak membuat foreign key PostgreSQL langsung ke database master lain. |
| unique | Mencegah duplikasi nilai atau pasangan kolom sesuai indeks. Pemeriksaan aplikasi saja dapat kalah oleh request bersamaan. |
| nullable dan default | Nullable mengizinkan null. Default dipakai ketika kolom tidak diisi, bukan ketika nilai salah secara eksplisit dikirim. |
| integer dan bigInteger | Bilangan bulat dengan rentang berbeda. Harga atau total harus mengikuti kapasitas tipe dan validasi input. |
| timestampTz | Waktu dengan informasi zona. Tampilan lokal dan penyaringan tanggal harus memakai aturan zona yang konsisten. |
| CHECK | Invariant SQL, misalnya stok tidak negatif atau status dalam himpunan yang dikenal. |
| restrictOnDelete | Melarang penghapusan record induk yang masih dirujuk sesuai constraint. |
| belongsTo dan hasMany | Relasi pembacaan Eloquent. Relasi model bukan pengganti seluruh constraint atau verifikasi referensi lintas database. |
| Referensi tenant ke produk master | Kode mengambil serta memeriksa produk pada master. Shared lock mempertahankan referensi selama transaksi terkait berjalan. |
03 · Cara membaca sintaks yang dipakai
| Bentuk kode | Arti praktis |
|---|---|
namespace App\Services\Transactions | Alamat logis kelas PHP. Harus sesuai pemetaan App pada composer.json. |
use App\Services\Security\BusinessAccess | Mengimpor nama kelas. Ini berbeda dari trait use di dalam kelas. |
class … extends Controller | Mewarisi perilaku kelas induk. Nama file dan kelas sebaiknya sesuai autoload. |
final readonly class SaleData | Objek input tidak diturunkan lagi dan properti tidak dapat diganti setelah diisi. Isinya tetap perlu divalidasi. |
public function / private function | Public dapat dipanggil pemakai kelas. Private hanya dipakai dalam kelas itu sendiri. |
__construct(private BusinessAccess $access) | Constructor property promotion. Container Laravel memasok dependensi bertipe tersebut. |
$actor / $this->access / self::rules() | Variabel lokal, properti objek saat ini, dan pemanggilan anggota static kelas sendiri. |
?int / int|string / : array | Nullable integer, union type, dan tipe hasil fungsi. Type hint bukan pemeriksaan izin pengguna. |
$user?->isOwner() ?? false | Panggil metode jika objek tidak null. Pakai false jika hasil null. |
=== / !== | Perbandingan nilai sekaligus tipe. Berguna agar angka dan teks tidak tertukar diam-diam. |
$input + ['id_cabang' => $branch] | Union array PHP mempertahankan key di sebelah kiri. Pemetaan field wajib ditinjau agar input tidak menimpa field otoritas. |
...$items / ...$roles | Menyebarkan isi array atau menerima daftar argumen variadic menurut konteksnya. |
fn ($row) => … | Arrow function untuk pemetaan singkat. Closure function use membawa variabel ke callback transaksi. |
DB::connection($name)->transaction(fn () => …) | Membuka batas commit atau rollback pada koneksi itu. Exception harus keluar dari callback untuk membatalkan. |
transaction($callback, 3) | Mengizinkan percobaan ulang pada konflik concurrency yang dikenali framework. Bukan izin mengulang semua side effect sembarangan. |
sharedLock() / lockForUpdate() | Menahan referensi saat dibaca atau mengunci baris yang akan diputuskan atau diubah. |
where('id_produk', $id) | Query builder mengikat nilai sebagai parameter. Nama kolom dinamis tetap perlu allowlist. |
selectRaw('… ?', [$limit]) | SQL tambahan tetap memakai binding nilai. Jangan menggabungkan input pengguna menjadi sintaks SQL. |
abort_unless($condition, 403) | Hentikan request bila syarat tidak terpenuhi. abort_if menghentikan bila kondisi justru benar. |
throw new IntegrityViolation(…) | Melempar kegagalan invariant ke pemanggil. Dalam callback transaksi yang sesuai, exception memicu rollback. |
$request->validated() | Hanya data yang lolos aturan Request. Data tetap diperiksa lagi pada batas DTO atau TP bila implementasinya menyediakan itu. |
items.*.jumlah / array:id_produk,jumlah | Aturan setiap jumlah dalam array dan pembatasan key setiap item. Mencegah harga atau status tambahan dari browser. |
$guarded = ['*'] | Mass assignment model ditutup. Kode tepercaya dapat mengisi atribut eksplisit, sehingga TP tetap menjadi batas bisnis. |
casts() => ['jumlah' => 'integer'] | Konversi representasi atribut saat model dibaca. Ini bukan pengganti CHECK database. |
export default function InventoryPanel(…) | Komponen React yang diekspor sebagai komponen utama berkas. Nama menu tetap dipetakan di InternalPanels. |
type Props / interface / <Summary> | TypeScript memeriksa kontrak saat pengembangan. Payload browser tetap harus divalidasi backend. |
useState / setState | Nilai tampilan dan fungsi perubahan state. Mengubah state tidak otomatis menyimpan ke database. |
useEffect(() => …, [revision]) | Menjalankan sinkronisasi ketika dependensi berubah. Return callback dipakai membersihkan listener, timer atau request. |
useMemo / useRef | Memo menyimpan hasil hitungan menurut dependensi. Ref menyimpan nilai atau elemen tanpa menjadwalkan render. |
onSubmit / event.preventDefault() | Menangani submit melalui React dan mencegah navigasi form bawaan browser. |
async / await / try / finally | Menunggu operasi, menangani kegagalan, dan memulihkan state loading atau busy pada semua jalur. |
{rows.map(row => <… key={…}/>)} | Menggambar daftar. Key harus stabil dan membedakan cabang serta produk pada keranjang. |
value={query} onChange={…} | Controlled input. Teks di layar mengikuti state komponen. |
response.data.data | data pertama milik respons Axios. data berikutnya adalah struktur JSON aplikasi. |
history.state / pushState / popstate | State navigasi browser dan event Back atau Forward. Ini tidak menjadi bukti otorisasi. |
sessionStorage | Penyimpanan browser per tab untuk keranjang. Tidak boleh dipercaya sebagai harga, pembayaran atau tenant otoritatif. |
textContent / JSX {value} | Isi ditampilkan sebagai teks pada jalur ini. Jangan menggantinya dengan HTML mentah dari input. |
04 · Peta fitur ke kode
Bab ini mengacu snapshot kode panduan sebelumnya. Pembaruan peran Admin, satu pengiriman dan audit 20 Oktober dijelaskan pada Bab 14. Source paket revisi bukan bukti bahwa paket sudah terpasang pada VPS.
| Fitur | Frontend | Controller | Validasi | Layanan utama | Data |
|---|---|---|---|---|---|
| Login pegawai | pengguna, sessions | ||||
| CAPTCHA dan kode email | session auth_challenge | ||||
| Profil dan password | pengguna, sessions, audit_hak_pengguna | ||||
| Pegawai dan undangan | pengguna, employee_invitations | ||||
| Produk, supplier, cabang | produk, supplier, cabang | ||||
| Pelanggan | pelanggan, audit_log | ||||
| Persediaan dan karantina | Validasi pada controller atau DTO | produk_cabang | |||
| Pembelian | pembelian, detail_pembelian, produk_cabang | ||||
| Kasir dan riwayat toko | penjualan, detail_penjualan, produk_cabang | ||||
| Harga khusus | penjualan, detail_penjualan, audit_log | ||||
| Retur jual | retur_penjualan, detail_retur_penjualan, produk_cabang | ||||
| Retur beli | retur_pembelian, detail_retur_pembelian, produk_cabang | ||||
| Katalog dan checkout | pelanggan, penjualan, detail_penjualan, pengiriman | ||||
| Pesanan internal | penjualan, pengiriman, produk_cabang | ||||
| Transfer stok | Validasi pada controller atau DTO | mutasi_stok master dan stok kedua tenant | |||
| Servis | servis, log_servis, sparepart_servis | ||||
| Garansi | klaim_garansi, audit_log | ||||
| Nota instansi | nota_instansi, histori_nota_instansi | ||||
| Pembayaran owner | payment_settings, payment_settings_audit | ||||
| Laporan dan audit | Validasi pada controller atau DTO | query master atau tenant sesuai jenis | |||
| Tugas dan dashboard | Validasi pada controller atau DTO | data operasional, tanpa tabel notifikasi khusus pada alur ini |
Klik nama berkas untuk membuka penjelasan dan kode asli. Satu controller dapat memiliki beberapa endpoint. Daftar metode lengkap berada pada kartu berkasnya.
05 · Implementasi keamanan yang perlu kamu tunjukkan
Batas izin efektif merupakan gabungan middleware, Request, BusinessAccess, registry TP, tenant, dan syarat pelaku dalam workflow. Menyembunyikan tombol tidak cukup untuk melarang request langsung.
| Kemampuan | Owner | Admin | Kasir | Teknisi |
|---|---|---|---|---|
| Kasir dan online order internal | Ya, tetap tunduk SoD | Ya, mewarisi kasir | Ya | Tidak |
| Pembelian, supplier, produk, nota, transfer | Ya | Ya | Tidak, kecuali pembacaan produk yang diizinkan | Tidak, kecuali pembacaan produk yang diizinkan |
| Tahap teknis servis atau klaim | Ya dengan syarat pelaku dan penugasan | Tidak dari pewarisan admin saja | Tidak | Ya dengan syarat tahap dan penugasan |
| Pegawai, pembayaran, laporan, audit | Ya | Tidak | Tidak | Tidak |
| Mengubah registry sertifikasi dari UI | Tidak tersedia | Tidak tersedia | Tidak tersedia | Tidak tersedia |
Aturan pewarisan dibaca dari . Role owner tidak otomatis menghapus larangan pengaju sama dengan pemutus. Larangan itu diperiksa berdasarkan ID akun pada TP yang bersangkutan.
Peta bukti keamanan
| Kontrol | Implementasi yang ditunjukkan | Cara membuktikan |
|---|---|---|
| Session dan CSRF | Request perubahan tanpa session atau token CSRF sah ditolak. Bedakan cookie session HttpOnly dari cookie XSRF yang memang dibaca klien. | |
| Session lama | Ubah penempatan atau status akun dalam data latihan lalu coba session lama. | |
| Isolasi cabang | Coba membaca atau mengubah transaksi cabang lain dengan akun pegawai cabang pertama. | |
| Harga server | Kirim tambahan harga, status atau id_pengguna melalui alat request. Backend harus menolak atau tidak memakainya sesuai batas input. | |
| Kunci stok | Dua transaksi bersamaan pada stok terakhir tidak boleh menghasilkan stok negatif. | |
| Bukti privat | File tidak dapat diakses sebagai path publik mentah dan akses cabang berbeda ditolak. | |
| CSP dan header | Lihat header domain publik. Proxy dapat mengganti header yang dibuat PHP. | |
| Error aman | Respons gagal tidak memuat SQL, credential atau stack trace produksi. | |
| Audit | Transaksi berhasil memiliki audit sesuai entity dan jalur modifikasi audit ditolak. | |
| Tautan sementara | Parameter signature atau token diubah, waktu habis, atau keputusan diulang harus ditolak. |
06 · Clark–Wilson dalam kode dan pembuktiannya
| Istilah | Arti singkat | Contoh sistem ini |
|---|---|---|
| UDI | Masukan yang belum dipercaya. | Input form atau JSON dan bukti pembayaran yang belum diverifikasi. |
| CDI | Data yang harus mempertahankan aturan integritas. | Stok, transaksi, keputusan dan audit dalam batas kebijakan. |
| TP | Prosedur perubahan yang diizinkan. | CreateRetailSale dan fungsi rajawali_stock_issue. |
| IVP | Pemeriksa keadaan data terhadap invariant. | SaleIntegrity dan GlobalIntegrityVerifier. |
| Aturan | Makna singkat | Lokasi implementasi | Bukti dan batas klaim |
|---|---|---|---|
| C1 | IVP memastikan CDI valid saat diperiksa. | Tes GlobalIntegrityVerificationTest dan verifier domain. | |
| C2 | TP mempertahankan keadaan CDI yang sah. | IVP dipanggil dalam transaksi sebelum commit. Registry memberi relasi, bukan sertifikat pihak independen. | |
| C3 | Relasi pelaksana memenuhi pemisahan tugas. | Pengaju dan pemutus berbeda. ServiceAccess serta histori klaim memeriksa pemisahan lain. | |
| C4 | TP menambah log untuk merekonstruksi operasi. | Audit CDI memakai snapshot dan transaksi yang sama. Perilaku audit kejadian keamanan berbeda. | |
| C5 | UDI diterima menjadi perubahan sah atau ditolak. | Rules, normalisasi, harga server, pembatasan field dan IVP. | |
| E1 | CDI berubah melalui TP yang berwenang. | Batas database eksplisit ada pada produk_cabang kedua tenant awal. Jangan perluas klaim menjadi seluruh tabel. | |
| E2 | Pelaksana hanya menjalankan relasi TP dan CDI yang sah. | Registry, RoleAccess, akun terbaru, dan tenant diperiksa bersama. | |
| E3 | Identitas pelaksana TP harus diautentikasi. | Session SPA dan identitas akun terbaru memeriksa pelaksana internal. Input publik memiliki batas UDI tersendiri. | |
| E4 | Pengubah relasi sertifikasi terpisah dari eksekutor. | deployment_certifier di luar role runtime. Kontrol perubahan source atau deployment masih memerlukan bukti proses operasional. |
Definisi C1 sampai C5 dan E1 sampai E4 diringkas dari Clark dan Wilson, 1987, bagian formal model, halaman tercetak 189 sampai 191. Pemetaan ke berkas merupakan hasil pembacaan kode proyek ini.
Contoh pembuktian aritmetika stok
| Skenario | Sebelum | Input | Hasil sah |
|---|---|---|---|
| Pembelian baik dan rusak | Tersedia 10, karantina 2 | Diterima 5, rusak 1 | Tersedia 14, karantina 3. |
| Penjualan | Tersedia 10 | Terjual 3 | Tersedia 7. Karantina tidak berubah. |
| Retur rusak dengan tukar | Tersedia 10, karantina 2 | Retur 1 rusak dan pengganti 1 | Tersedia 9, karantina 3. |
| Retur pembelian | Karantina 3 | Dikembalikan 2 | Karantina 1. |
| Transfer disetujui | Asal 10, tujuan 4 | Dipindah 3 | Asal 7, tujuan 7. Total dua cabang tetap 14. |
Mengapa fungsi SQL awal INVOKER lalu menjadi DEFINER
- Migration menyediakan kelima fungsi dan algoritma stok dengan SECURITY INVOKER.
- Installer E1 memindahkan ownership ke guardian NOLOGIN, mengganti fungsi menjadi SECURITY DEFINER, menetapkan STRICT dan search_path, lalu memberi EXECUTE kepada runtime.
- DML langsung runtime dicabut. Hak UPDATE hanya pada updated_at diperlukan untuk row lock PostgreSQL, tetapi trigger ALWAYS tetap menolak perubahan langsung.
- Superuser atau administrator yang dapat mengganti ownership berada di luar batas akun runtime. Bukti E1 harus memakai identitas role yang benar.
Buka untuk daftar objek dan privilege yang diverifikasi. Nama registry certified dan status preflight tidak sama dengan pembuktian formal semua properti sistem.
07 · Pemetaan OWASP yang sesuai edisinya
Penomoran berikut memakai OWASP Top 10 edisi 2025, sesuai berkas . Penomoran 2021 berbeda. Jangan menggabungkan nama kategori dua edisi.
| Kategori 2025 | Kontrol kode | Berkas pengujian yang tersedia | Apa yang belum otomatis terbukti |
|---|---|---|---|
| A01 Broken Access Control | RequireRole, EnsureTenantAccess, ServiceAccess | ClarkWilsonBoundaryTest, FinalRoleSecurityTest | Uji akses objek dan cabang langsung melalui API. |
| A02 Security Misconfiguration | SecurityHeaders, ProductionConfiguration, proxy | CspAndCookieSecurityTest, DeploymentSecurityTest | Nilai efektif domain publik harus diperiksa. |
| A03 Software Supply Chain Failures | composer.json, lockfile, Dockerfile, build | Owasp2025RegressionTest | Lockfile bukan bukti tidak ada CVE. Audit dependensi dan image terpisah. |
| A04 Cryptographic Failures | hashing Argon2id, session encrypt, Crypt, HTTPS | SessionEncryptionTest, AuthSecurityTest | Enkripsi session tidak berarti seluruh database terenkripsi. |
| A05 Injection | Binding query, allowlist entity atau sort, render teks | Owasp2025RegressionTest, PrintDocumentSecurityTest | Query raw aman hanya jika sintaks tetap dan nilai dibinding. |
| A06 Insecure Design | TP, IVP, SoD, status machine dan batas stok | ClarkWilsonControlsTest, OnlineOrderConcurrencyTest | Uji penyalahgunaan alur, bukan hanya validasi teks. |
| A07 Authentication Failures | LoginService, limiter, session baru, challenge opsional | AuthSecurityTest, OwnPasswordChangeTest | CAPTCHA dan kode email belum terbukti aktif dari log VPS sebelumnya. |
| A08 Software or Data Integrity Failures | IVP, protected stock functions, signed link, verifikasi patch | ClarkWilsonFormalCertificationTest, StockTransferTest | Hash artefak mendeteksi perubahan terhadap hash acuan yang dipercaya, tidak menyatakan siapa pembuatnya. |
| A09 Security Logging and Alerting Failures | AuditLogger, OperationalAlert, logging | OperationalAlertingTest, MasterRightsAuditTest | Penerima alert dan arsip log eksternal memerlukan konfigurasi serta bukti penerimaan. |
| A10 Mishandling of Exceptional Conditions | SafeApiErrors, transaksi, 2PC recovery, cleanup file | ApiFailureBoundaryTest, DistributedTransactionTest | Respons 500 aman harus disertai pemeriksaan rollback dan status pemulihan. |
Nama kategori merujuk OWASP Top 10 2025 resmi. Tabel kontrol adalah pemetaan implementasi proyek. Keberadaan tes tidak berarti tes tersebut sudah dijalankan atau lulus pada VPS.
08 · Cara kerja frontend, keranjang, dan URL
Bab ini mengacu snapshot kode panduan sebelumnya. Pembaruan peran Admin, satu pengiriman dan audit 20 Oktober dijelaskan pada Bab 14. Source paket revisi bukan bukti bahwa paket sudah terpasang pada VPS.
| Bagian frontend | Tugas dan tempat perubahan |
|---|---|
| Entry | app.tsx memilih EmployeeActivationPage, AuthApp atau OnlineStoreApp dari pathname. |
| Menu internal | InternalPanels.menu membentuk daftar. JSX panel memilih komponen. Keduanya perlu ditambah ketika membuat menu. |
| State form | useState menyimpan teks, data hasil API, pilihan, modal, busy dan error. State bukan database. |
| Pengambilan data | useEffect dan fungsi load memanggil api. Dependensi filter atau revision memicu pembacaan ulang. |
| Tabel | RajawaliDataTable menangani rendering responsif. Pagination dan pencarian dilakukan panel serta API, bukan fitur bawaan DataTables. |
| Realtime | subscribeTenant mengirim pemberitahuan minimal. revision berubah agar panel memuat ulang data. |
| Waktu pembaruan | UpdatedAt menunjukkan waktu pemuatan UI, bukan timestamp commit lintas seluruh database. |
| Cetak | printDocument memakai elemen DOM dan textContent. Format ada pada print.css dan data cetak disusun panel. |
| Gaya | app.css dan className TSX. Teks pada className tidak mengubah aturan akses backend. |
Keranjang beberapa cabang
cart["ID_CABANG:ID_PRODUK"] = jumlahmembedakan produk sama pada dua cabang.cartProductsmenyimpan metadata produk.cartLinesmenghitung item dengan cabang dan subtotal.cartGroupsmengelompokkan item agar cabang terlihat sebelum checkout.branchIdadalah preferensi cabang detail produk.checkoutBranchIdmenentukan satu kelompok yang sedang checkout.checkoutLinesdancheckoutTotalhanya memakai cabang checkout. Backend tetap menerima satu id_cabang per order.removePurchasedLinesmengurangi jumlah yang berhasil dibuat. Isi cabang lain tetap tersimpan.- Perubahan cabang satu item meminta konfirmasi dan memeriksa hasil gabungan jumlah terhadap stok cabang tujuan.
Penunjuk kode dan . Nilai keranjang yang diubah melalui DevTools tetap tidak boleh menentukan harga atau status transaksi server.
URL tanpa tanda pagar
| Bentuk | Makna | Implementasi atau batas |
|---|---|---|
| /login#pegawai | Fragment dibaca browser dan tidak dikirim dalam request HTTP. | app.tsx dan clearUrlFragment menghapus fragment lama. Backend tidak dapat mengandalkan fragment untuk kontrol akses. |
| /login | Path halaman login. | Menu internal dipulihkan lewat history.state, user dan cabang. URL menu tidak menjadi deep link mandiri yang dapat dibagikan. |
| /?/// | Query mentah yang tidak diterima aturan halaman. | SecurityHeaders mengirim 302 ke /. Path tidak diubah menjadi endpoint baru. |
| /url-tidak-ada | Path tanpa route. | HTTP 404 dan halaman error Rajawali. |
| /?tracking=… | Query yang memang dipakai fitur tracking. | Dipertahankan bila bentuk URL sesuai pemeriksaan. API signed tetap memvalidasi signature. |
Dasar perilaku browser merujuk MDN Fragment dan MDN History API. Pilihan penggunaan history.state adalah implementasi proyek ini.
09 · Latihan perubahan kode manual
Seluruh perubahan pada bagian ini adalah latihan yang belum dipasang ke aplikasi. Ketik pada salinan pengembangan dengan PostgreSQL latihan. Contoh berkas baru di bawah adalah instruksi latihan, bukan file tambahan yang dibuat bersama panduan ini.
L01 · Menemukan kode dari pertanyaan penguji
rg -n "function menu|id: 'pos'|panel === 'pos'" resources/js/InternalPanels.tsx
rg -n "penjualan|SalesController" routes/api.php
rg -n "actorFor|verifyCompleted|recordCdi" app/Services/Transactions/CreateRetailSale.php
rg -n "rajawali_stock_issue" app database| Dari permintaan | Cari awal | Lanjutkan |
|---|---|---|
| Tulisan atau tombol | Teks tampil di resources/js. | Periksa onClick, onSubmit dan state terkait. |
| Data kosong atau salah | URL API yang dipanggil panel. | Cocokkan JSON, cabang aktif, filter dan pagination. |
| Izin ditolak | Route dan middleware. | Periksa Request, RoleAccess, actorFor dan syarat pelaku. |
| Stok atau total salah | Service transaksi. | Ikuti TP stok, IVP, transaksi dan audit. |
L02 · Mengganti nama menu tanpa memutus fungsinya
Buka . Pada item kasir, ubah label saja. ID pos tetap dipakai pemilih panel, notifikasi, dashboard dan history.
{ id: 'pos', label: 'Kasir' }{ id: 'pos', label: 'Penjualan Toko' }- Judul di dalam halaman diubah terpisah pada PosPanel jika perlu.
- Periksa menu owner, admin dan kasir, klik item, lalu coba Back dan Forward.
- Mengganti label tidak memerlukan migration atau perubahan route.
L03 · Menambah menu Ringkasan Stok untuk owner
Latihan ini menambah endpoint baca saja. Tidak ada perubahan CDI, sehingga tidak menambah TP tulis baru. Izin owner, session dan tenant tetap diperiksa backend.
| Urutan | Berkas latihan | Yang dikerjakan |
|---|---|---|
| 1 | app/Http/Controllers/StockSummaryController.php | Ketik controller lengkap berikut. |
| 2 | routes/api.php | Tambahkan import dan route di luar group lain yang sudah ditutup. |
| 3 | resources/js/StockSummaryPanel.tsx | Ketik komponen berikut. |
| 4 | resources/js/InternalPanels.tsx | Tambahkan import, item menu dan kondisi render. |
| 5 | tests/Feature/StockSummaryTest.php | Uji izin dan respons kosong. Uji isolasi cabang juga diperlukan dengan stok latihan berbeda. |
<?php
namespace App\Http\Controllers;
use App\Services\Security\BusinessAccess;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class StockSummaryController extends Controller
{
public function index(Request $request, BusinessAccess $access): JsonResponse
{
return DB::connection('master')->transaction(function () use ($request, $access): JsonResponse {
$actor = $access->actor($request->user(), ['owner']);
$tenant = $access->tenant($actor);
$row = DB::connection($tenant->connection)->table('produk_cabang')
->where('id_cabang', $tenant->cabang->id_cabang)
->selectRaw('COUNT(*)::integer AS jenis_produk, COALESCE(SUM(stok_tersedia), 0)::bigint AS tersedia, COALESCE(SUM(stok_karantina), 0)::bigint AS karantina')
->first();
return response()->json(['data' => [
'jenis_produk' => (int) $row->jenis_produk,
'tersedia' => (int) $row->tersedia,
'karantina' => (int) $row->karantina,
]]);
});
}
}| Baris konsep | Penjelasan |
|---|---|
| actor dalam transaksi master | Memeriksa akun terbaru sambil mempertahankan shared lock referensi. |
| tenant dari BusinessAccess | Tidak menerima id_cabang kiriman browser sebagai pengganti tenant session. |
| where cabang | Membatasi aggregate pada cabang yang ditentukan server. |
| selectRaw statis | Tidak menyisipkan input pengguna ke SQL. COALESCE memberi nol ketika tidak ada stok. |
| Respons data | Struktur dipasangkan dengan tipe Summary pada React. |
Tambahkan import ini bersama import controller pada .
use App\Http\Controllers\StockSummaryController;Tambahkan route ini pada tingkat atas routes/api.php. Prefix /api sudah diberikan Laravel.
Route::middleware(['spa.session', 'auth:sanctum', 'account.session', 'tenant', 'role:owner'])
->get('/ringkasan-stok', [StockSummaryController::class, 'index'])
->name('api.ringkasan-stok');import { useEffect, useState } from 'react';
import { api, errorMessage } from './lib/api';
type Summary = { jenis_produk: number; tersedia: number; karantina: number };
export default function StockSummaryPanel({ revision }: { revision: number }) {
const [summary, setSummary] = useState<Summary | null>(null);
const [error, setError] = useState('');
useEffect(() => {
let active = true;
setSummary(null);
setError('');
api.get<{ data: Summary }>('/api/ringkasan-stok')
.then(({ data }) => { if (active) setSummary(data.data); })
.catch(reason => { if (active) setError(errorMessage(reason)); });
return () => { active = false; };
}, [revision]);
if (error) return <p role="alert">{error}</p>;
if (!summary) return <p role="status">Memuat ringkasan stok…</p>;
return <section aria-label="Ringkasan Stok">
<h2 className="text-xl font-bold">Ringkasan Stok</h2>
<p>Jenis produk {summary.jenis_produk}</p>
<p>Unit tersedia {summary.tersedia}</p>
<p>Unit karantina {summary.karantina}</p>
</section>;
}Pada InternalPanels.tsx tambahkan import bersama import panel.
import StockSummaryPanel from './StockSummaryPanel';Pada array items grup Persediaan di fungsi menu, tambahkan spread berikut sebagai satu elemen array. Jangan menempelkannya di luar array.
...(role === 'owner' ? [{ id: 'ringkasan-stok', label: 'Ringkasan Stok' }] : []),Di deretan kondisi render panel, tambahkan kondisi ini. allowed dibentuk otomatis dari menu(role). Ikon default tetap dapat dipakai.
{panel === 'ringkasan-stok' && role === 'owner' && <StockSummaryPanel revision={revision} />}<?php
namespace Tests\Feature;
use Tests\PostgresSecurityTestCase;
class StockSummaryTest extends PostgresSecurityTestCase
{
public function test_guest_cannot_read_summary(): void
{
$this->spa('GET', '/api/ringkasan-stok')->assertUnauthorized();
}
public function test_cashier_cannot_read_owner_summary(): void
{
$this->login($this->employee())->assertOk();
$this->spa('GET', '/api/ringkasan-stok')->assertForbidden();
}
public function test_owner_reads_empty_active_branch_summary(): void
{
$this->login($this->owner())->assertOk();
$this->spa('POST', '/api/owner/cabang-aktif', [
'id_cabang' => $this->samanhudi->id_cabang,
])->assertOk();
$this->spa('GET', '/api/ringkasan-stok')->assertOk()
->assertJsonPath('data.jenis_produk', 0)
->assertJsonPath('data.tersedia', 0)
->assertJsonPath('data.karantina', 0);
}
}- Jalankan tes ini di database latihan yang dikonfigurasi khusus. Base class membuat schema uji dan rollback, tetapi tetap memerlukan koneksi PostgreSQL yang sesuai.
- Uji tambahan perlu memasukkan stok berbeda pada dua cabang lalu memastikan hasil tidak bercampur.
- Di UI, owner memilih cabang lalu membuka menu. Kasir tidak melihat menu dan request langsung kasir tetap 403.
- Contoh ini belum dieksekusi dengan PHP atau PostgreSQL dalam pekerjaan penulisan panduan.
L04 · Menambah kolom barcode pada produk
Ini latihan perubahan schema master. barcode belum merupakan kolom fitur yang dipasang oleh contoh ini. Migration lama yang sudah dijalankan tidak diedit.
php artisan make:migration add_barcode_to_produk_table --path=database/migrations/masterDalam file migration baru yang dihasilkan, gunakan struktur berikut.
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
protected $connection = 'master';
public function up(): void
{
Schema::connection('master')->table('produk', function (Blueprint $table) {
$table->string('barcode', 50)->nullable()->unique();
});
}
public function down(): void
{
Schema::connection('master')->table('produk', function (Blueprint $table) {
$table->dropUnique('produk_barcode_unique');
$table->dropColumn('barcode');
});
}
};| Lokasi edit | Perubahan manual |
|---|---|
| Tambahkan string barcode pada array produk. Daftar ini dipakai penyimpanan, SELECT dan payload controller, serta allowlist audit master data. | |
| Tambahkan rules barcode pada cabang produk dengan unique yang mengabaikan ID record saat update. | |
| Tambahkan tuple field barcode pada config.produk.fields. Tipe text menjaga nol di depan. | |
| Jika barcode harus dapat dicari, tambahkan orWhere barcode dalam closure pencarian produk. | |
| Tinjau invariant baru. Jika hanya nullable string unik, constraint DB menjaga unik. Jika ada format bisnis, tambahkan pemeriksaan sesuai format itu. | |
| Tambahkan barcode ke SELECT, tipe Product dan JSX hanya jika sengaja dipublikasikan ke pelanggan. |
Baris tambahan pada rules produk dan tuple form ditunjukkan berikut. Baris rules ditaruh di array produk, bukan di luar fungsi rules.
'barcode' => ['sometimes', 'nullable', 'string', 'max:50', Rule::unique('master.produk', 'barcode')->ignore($id, 'id_produk')],['barcode', 'Barcode', 'text']->orWhere('barcode', 'ilike', $term)php artisan migrate --database=master --path=database/migrations/master- Uji create barcode 0012345678901. Nol di depan harus tetap ada.
- Uji dua produk memakai barcode sama, hasil kedua ditolak.
- Uji update produk tanpa mengganti barcode dan barcode null.
- Model Produk tidak perlu cast integer untuk barcode.
- down hanya contoh rollback schema. Jangan menghapus kolom produksi yang sudah berisi data sebagai cara latihan.
L05 · Menambah satu kolom tampilan tabel
Buka . Tambahkan header dan nilai sel pada posisi yang sama di props RajawaliDataTable. Jika data belum ada pada JSON, perluas respons backend lebih dahulu.
// Contoh bentuk. Pasangkan header dan nilai pada urutan yang sama.
headers={['Kode', 'Produk', 'Satuan', 'Tersedia']}
rows={rows.map(row => [row.kode_produk, row.nama_produk, row.satuan, row.stok_tersedia])}- Bandingkan jumlah header dan jumlah sel tiap baris.
- DataTables bawaan tidak mengerjakan pagination server pada wrapper ini.
- Untuk angka terformat, nilai dasar dan elemen display dapat dipisah melalui objek Cell.
L06 · Mengubah batas stok hampir habis
Sumber aturannya adalah . InventoryController, DashboardController dan NotificationReader membacanya. Tidak perlu menambah kolom stok_minimum pada produk_cabang.
LOW_STOCK_THRESHOLD=8- Atur environment salinan latihan lalu perbarui cache konfigurasi sesuai cara menjalankan proyek.
- Dengan batas 8, stok 1 sampai 8 dianggap rendah. Stok 0 merupakan habis.
- Periksa kartu dashboard, filter hampir habis, dan daftar tugas. Nilai awal UI 5 hanya fallback sebelum data API dimuat.
L07 · Menambah filter backend dan frontend
Contoh filter yang sudah ada adalah status pada persediaan. Untuk filter baru, jalurnya sama. Jangan menerima nama kolom SQL langsung dari query pengguna.
| Lapisan | Langkah |
|---|---|
| Controller atau Request | Tambahkan key tervalidasi dan allowlist nilai. |
| Query | Tambahkan where terikat parameter pada tenant aktif. |
| Ringkasan | Putuskan apakah kartu summary mengikuti filter baru. Clone base query sebelum filter status tambahan jika perilaku lama memang demikian. |
| React state | Tambahkan state untuk nilai filter dan kontrol input. |
| API params | Kirim nilai filter atau undefined, tambahkan ke dependensi pembacaan data. |
| Pagination | Kembalikan page ke 1 ketika filter berubah. |
| Reset | Bersihkan filter dalam clearFilters. |
| Tes | Uji nilai sah, nilai tidak dikenal, hasil kosong dan cabang berbeda. |
L08 · Mengubah aturan password
Contoh permintaan penguji minimal 14 karakter harus diterapkan pada seluruh jalur pembuatan atau perubahan password yang relevan, bukan pada input login saja.
rg -n "min:12|minLength|password.*min" app resources/js| Jalur | Tempat utama |
|---|---|
| Ganti password sendiri | dan MyAccountPanel. |
| Buat atau reset pegawai oleh owner | dan EmployeesPanel. |
| Aktivasi undangan | dan EmployeeActivationPage. |
| Setup owner lokal | . |
| Penyimpanan | Hash.make dengan Argon2id, bukan menyimpan password mentah. |
| Uji | Panjang 13 ditolak pada jalur kebijakan baru, panjang 14 diterima, konfirmasi berbeda ditolak. |
Batas panjang saat login sengaja berbeda dari aturan membuat password. Menaikkan minimal pada login saja dapat menghalangi akun lama tanpa proses migrasi kebijakan.
L09 · Mengubah harga normal atau aturan diskon
Saat ini selalu mengembalikan harga_jual. ProductPrice pada katalog juga memakai harga_jual. Adanya harga_grosir dalam tabel belum membuat diskon otomatis berjalan.
- Ubah kebijakan harga server pada SalePricing sebagai sumber keputusan bisnis.
- Sesuaikan estimasi di productPrice OnlineStoreApp dan perhitungan kasir jika kebijakan diskon memang disetujui.
- Sesuaikan IVP dan snapshot harga agar transaksi lama tidak berubah mengikuti harga terbaru.
- Jangan menambahkan field harga bebas pada SaleData untuk penjualan normal. Harga khusus memakai jalur persetujuan.
- Uji batas jumlah diskon, harga nol yang memang diizinkan, perubahan harga ketika pengajuan menunggu, dan nilai terlalu besar.
L10 · Menambah status servis atau jenis tindakan
| Urutan | Tempat yang harus ditinjau |
|---|---|
| Input dan hak | , , route operation dan role. |
| Arah transisi | serta mutable dan capability. |
| Pelaksanaan | atau TP bernama khusus bila operasinya baru. |
| Integritas | dan GlobalIntegrityVerifier. |
| Pendaftaran TP | dan implementation untuk operasi baru. |
| Database | Periksa CHECK status pada migration servis. Buat migration lanjutan jika constraint perlu berubah. |
| Audit dan kronologi | Event log, snapshot dan prasyarat biaya atau garansi atau tanggal selesai. |
| Tampilan | ServicePanel, presentation, dashboard, notification dan laporan. |
| Pengujian | Transisi sah, lompatan status, pelaku salah, tenant salah dan rollback. |
Menambah satu opsi dropdown saja hanya menambah tampilan pilihan. Backend tetap menolak operasi yang belum dikenalnya.
L11 · Mengubah pesan error dan halaman 404
| Pesan | Lokasi edit |
|---|---|
| Field form checkout | dan showCustomerError pada OnlineStoreApp. |
| Pelanggaran bisnis | Exception atau validation pada TP. SafeApiErrors dapat mengganti pesan response sesuai status. |
| Pesan umum API | dan errorMessage Axios. |
| Halaman tidak ditemukan | dan CSS error. |
| Query halaman salah | . Keputusan revisi adalah redirect path bersih untuk query shell yang ditolak. |
Uji status HTTP dan isi halaman secara terpisah. Teks “tidak ditemukan” pada respons 200 tidak sama dengan HTTP 404.
L12 · Mengubah tampilan, logo, dan cetak
| Permintaan | Lokasi tepat |
|---|---|
| Warna dan jarak global | . |
| Warna tombol satu panel | className tombol pada file panel tersebut. |
| Logo pada header login atau toko | dan elemen img pada AuthApp atau OnlineStoreApp. |
| Favicon dan metadata | . |
| Isi nota cetak | printReceipt atau printSale atau printOrder pada panel terkait. |
| Gaya nota cetak | . Pembuat DOM bersama berada pada printDocument. |
Gunakan teks melalui JSX atau textContent. Perubahan desain tidak membutuhkan penonaktifan CSP.
L13 · Menambah menu yang mengubah data bisnis
- Tentukan dulu field input, invariant, pelaku, tenant dan perubahan CDI.
- Tambahkan schema lanjutan bila diperlukan, kemudian Request atau DTO dan TP transaksi.
- Panggil BusinessAccess.actorFor dengan nama TP yang didaftarkan. Tambahkan pemetaan registry ke kelas pelaksana.
- Jalankan IVP dan AuditLogger.recordCdi dalam transaksi tenant yang sama.
- Jika mengubah stok, panggil wrapper fungsi SQL yang sesuai. Jangan menulis stok langsung.
- Tambahkan route berizin, controller, komponen, item menu, ikon bila perlu, kondisi render dan tes.
- Buktikan juga request salah, field tambahan, pelaku salah, tenant lain, status tidak sah dan kegagalan audit.
L14 · Menelusuri masalah tanpa menebak
| Gejala | Periksa berurutan |
|---|---|
| Menu tidak muncul | menu(role), kondisi render, role akun dari /api/me, bundle yang sedang dimuat. |
| Menu muncul tetapi 403 | Route role, Request.authorize, RoleAccess, registry, aktor yang sama pada approval atau penugasan. |
| 401 | Session cookie, Sanctum stateful, RequireSpaSession, akun terbaru dan auth_account. |
| 419 | CSRF cookie dan header X-XSRF-TOKEN, origin serta domain session. |
| 409 | Cabang instance berbeda, status operasi tidak cocok, nomor unik ganda atau versi nota berubah. |
| 422 | Baca errors pada respons, rules Request dan pemeriksaan ulang DTO. |
| 429 | Rate limit route atau Nginx, limiter login, atau blokir IP manual. |
| 500 atau 503 | Log yang disaring, koneksi database, IVP, kesiapan master atau tenant atau konfigurasi layanan. |
| UI tetap lama | Build Vite, manifest, image yang dipakai, cache browser, serta pembersihan service worker lama. |
| Data cabang tidak sesuai | Tenant session, TenantContext, koneksi model, instance cookie, dan guard backend. |
| Realtime tidak berubah | Meta Reverb, WebSocket WSS, auth private channel, listener, serta revision panel. |
L15 · Pemeriksaan perubahan pada lingkungan latihan
Perintah berikut merupakan petunjuk setelah kamu mengedit kode latihan. Panduan ini tidak mengklaim perintah sudah dijalankan pada VPS.
php artisan route:list --path=ringkasan-stok
php -l app/Http/Controllers/StockSummaryController.php
php artisan test --filter=StockSummaryTest
npm run build- Jika dependensi belum tersedia, pasang versi dari lockfile sesuai proyek. composer install dan npm ci memiliki tujuan berbeda dari composer update atau npm update.
- Tes Laravel memerlukan PostgreSQL latihan. Jangan menunjuk environment tes ke database bisnis VPS.
- Untuk proyek yang berjalan dari image Docker, kode frontend perlu dibangun ke image dan dilepas melalui prosedur rilis proyek. php artisan serve bukan pengganti arsitektur produksi ini.
- Sesudah perubahan lolos teknis, kamu sebagai pengguna mencoba skenario dan memutuskan hasil UAT.
L16 · Membatalkan latihan
- Jika salinan proyek memakai Git, lihat git diff untuk memastikan perubahan yang akan dibatalkan hanya pekerjaan latihan ini.
- Hapus menu, render, import, route dan berkas latihan yang baru secara berpasangan jika memang ingin membatalkan latihan menu.
- Rollback schema hanya pada database latihan dan setelah memeriksa isi migration down.
- Jangan memakai reset menyeluruh, migrate:fresh atau menghapus volume untuk membatalkan edit tampilan.
10 · Pertanyaan sidang dan jawaban pendek
Mulai menjelaskan kode dari mana?
Mulai dari tombol panel, URL request, route beserta middleware, Request, controller, service TP, IVP, audit, lalu database. Contoh lengkap penjualan ada pada bab Arsitektur.
Mengapa React tidak langsung mengubah PostgreSQL?
Browser tidak membawa credential database. React memanggil API yang memeriksa session, role, tenant dan aturan bisnis sebelum mengubah data.
Bagian MVC ada pada apa?
Model berada pada app/Models, controller pada app/Http/Controllers, dan shell view pada resources/views. Tampilan fitur utama berupa React pada resources/js. Layanan bisnis memisahkan aturan transaksi dari controller.
Mengapa controller tidak menampung semua aturan?
Controller mengurus batas HTTP dan memilih layanan. TP dipakai kembali serta diperiksa dengan IVP, audit dan batas transaksi yang lebih jelas. Beberapa operasi pelanggan tetap diimplementasikan dalam controller dan terdaftar demikian pada registry.
Bagaimana dependency injection bekerja?
Laravel membaca tipe parameter constructor atau metode dan menyelesaikan dependensinya dari container. BusinessAccess dapat dipasok tanpa membuat new BusinessAccess di setiap controller.
Apakah validasi frontend cukup?
Tidak. Pengguna dapat mengirim request langsung. Backend memvalidasi Request, DTO, referensi, status dan invariant. TypeScript tidak mengawasi payload penyerang ketika aplikasi berjalan.
Mengapa input divalidasi lagi pada DTO?
Pemanggil service dapat berasal dari luar HTTP. fromInput menjaga batas input service. Properti readonly menjaga bentuk objek setelah dibuat, tetapi tidak menyatakan data asalnya benar tanpa validasi.
Mengapa harga tidak diambil dari keranjang browser?
Jumlah dan ID produk merupakan masukan. Harga normal dibaca dari produk master oleh SalePricing. Harga khusus harus melalui alur request dan keputusan owner.
Mengapa password tidak dapat ditampilkan ulang?
Yang disimpan password_hash dengan Argon2id. Hash dipakai memverifikasi kecocokan, bukan mendekripsi menjadi password asli. Pengguna mengganti atau mereset password melalui jalur yang diizinkan.
Apakah semua data database terenkripsi?
Kode menunjukkan hash password, enkripsi payload session ketika dikonfigurasi, dan enkripsi credential tenant atau kode tertentu. Ini tidak membuktikan seluruh database atau seluruh backup terenkripsi.
Apakah aplikasi menggunakan JWT?
Alur aktif menggunakan session SPA Sanctum dengan guard web. RequireSpaSession menolak bearer token, dan provider menonaktifkan jalur access token. Nama Sanctum tidak berarti aplikasi memakai JWT.
Apa beda login dan izin?
Login membuktikan identitas. Otorisasi menentukan apakah identitas boleh menjalankan operasi atas data cabang dan tahap tertentu. Session sah masih dapat mendapat 403.
Mengapa owner tetap bisa ditolak?
Owner mewarisi kemampuan, tetapi syarat pelaku, tenant, status, masa token dan versi dokumen tetap berlaku. Pengaju tidak boleh memutus pengajuannya sendiri.
Bagaimana mencegah IDOR?
Query dibatasi tenant yang ditentukan server, kemudian objek dan pelakunya diperiksa. Mengganti ID pada URL tidak boleh memberi akses objek cabang lain. Keberhasilan perlu dibuktikan dengan tes negatif.
Apa beda cookie routing dengan tenant?
Cookie membantu Nginx memilih instance. Tenant yang dipercaya tetap berasal dari pemeriksaan akun dan session backend. Cookie yang dipalsukan bukan hak akses cabang.
Mengapa stok tidak diedit langsung?
Stok adalah CDI persediaan. Perubahan melalui fungsi SQL TP yang memeriksa argumen, row lock dan batas nilai. E1 membatasi role runtime agar tidak mengubah stok langsung.
Apakah role-based access sama dengan Clark–Wilson?
Role merupakan sebagian kontrol pelaksana. Clark–Wilson juga memerlukan relasi TP dan CDI, invariant atau IVP, SoD, audit, validasi UDI dan batas perubahan kebijakan.
Di mana contoh TP, IVP dan CDI?
CreateRetailSale adalah TP penjualan, SaleIntegrity adalah IVP penjualan, dan penjualan atau detail_penjualan atau produk_cabang merupakan CDI yang terkait. Registry menghubungkan unsur tersebut.
Apakah registry isValid membuktikan sistem sempurna?
Tidak. isValid memeriksa konsistensi registry dan kelas rujukannya. Validitas perilaku, hasil tes, deployment, dan kontrol perubahan source perlu bukti tambahan.
Apakah append-only kebal terhadap DBA?
Pembatasan model dan trigger melindungi jalur yang ditentukan. Administrator database dengan hak istimewa dapat mengubah kontrol. Klaim harus menyebut identitas penyerang dan privilege yang diuji.
Apakah audit selalu membuat transaksi rollback?
recordCdi dan audit hak master bersifat wajib pada transaksi pemanggil. record kejadian keamanan dan fanout tertentu menangkap kegagalan tujuan lalu mencatat log. Keduanya tidak boleh dijelaskan sebagai satu perilaku.
Apakah semua transaksi memakai 2PC?
Tidak. DistributedTransactionManager membatasi tiga operasi mutasi dan tiga koneksi peserta awal. Transaksi penjualan dan servis menggunakan transaksi tenant dengan referensi master yang dikunci.
Mengapa jurnal 2PC memakai koneksi sendiri?
Keputusan harus tersimpan secara durable di luar transaksi peserta yang akan diprepare, sehingga pemulihan dapat membaca keputusan setelah proses terputus.
Bila proses mati sesudah sebagian peserta commit?
Recovery mengikuti keputusan durable yang sama dan menyelesaikan peserta tersisa. UI dapat menerima kegagalan sementara, sehingga status transaksi perlu dibaca sebelum mencoba ulang.
Apakah lock berarti tidak ada deadlock?
Tidak. Row lock mengendalikan konflik atas data. Urutan lock konsisten dan retry yang sesuai membantu penanganan konflik, tetapi tes concurrency serta penanganan exception tetap diperlukan.
Kapan stok pesanan online dikurangi?
Pada verifikasi pembayaran diterima melalui workflow internal, bukan saat pelanggan sekadar memasukkan produk ke keranjang atau mencatat pesanan awal.
Apakah bukti pembayaran sama dengan uang sudah masuk?
Tidak. File bukti adalah masukan. Pegawai berwenang memeriksanya dan mengambil keputusan pembayaran melalui workflow. Tidak ada bukti integrasi konfirmasi bank otomatis pada jalur ini.
Bagaimana keranjang dua cabang tetap terpisah?
Key terdiri atas ID cabang dan ID produk. UI membentuk kelompok. Checkout mengirim satu kelompok. Penghapusan setelah sukses mengurangi hanya jumlah kelompok tersebut.
Mengapa URL sudah tanpa hash tetapi Back tetap bekerja?
Navigasi menyimpan view, user dan cabang pada history.state. popstate memulihkan state yang masih valid. Detail ini berbeda dari penggunaan path menu terpisah pada server.
Apakah URL query aneh selalu serangan?
Tidak. Query mempunyai arti yang ditentukan aplikasi. Revisi memilih menormalkan query shell yang tidak dikenal. Tracking yang sah tetap memiliki query dan signature.
Apakah signed URL Laravel adalah tanda tangan digital PKI?
Tidak otomatis. Signed URL menjaga keutuhan parameter dan masa berlaku melalui mekanisme Laravel. Itu tidak membuktikan penggunaan pasangan private key dan public key, sertifikat PKI, atau nonrepudiation.
Apakah realtime mengirim semua data pelanggan?
Event utama mengirim area, resource_id, event_id dan waktu. Detail diambil ulang lewat API berizin. Subscription channel privat juga memeriksa cabang dan pengguna.
Apakah paket react-router-dom berarti router itu aktif?
Tidak. Dependency tercantum pada manifest, tetapi graph import entry aktif memakai helper navigation sendiri. Tunjukkan import dan pemanggil aktual.
Apakah file PWA berarti fitur PWA aktif?
Tidak. Entry revisi membersihkan registration lama, tidak mengimpor helper PWA, dan proxy menolak manifest serta sw.js. Berkas lama harus dibedakan dari jalur aktif.
Apakah file .xls ekspor membuktikan workbook Excel asli?
Tidak. exportTable membentuk HTML berlabel .xls dari result.data halaman yang sedang dimuat. Itu bukan workbook .xlsx dan tidak mengambil seluruh halaman secara otomatis. Nilai formula dan isi HTML disaring.
Apakah INFO preflight sama dengan lulus UAT?
Tidak. Preflight memeriksa kesiapan teknis. Kamu sebagai end user mencoba alur fitur dan memberi hasil penerimaan. Tes otomatis, uji keamanan dan UAT merupakan bukti yang berbeda.
Bagaimana menyatakan keterbatasan dengan tepat?
Sebutkan kontrol yang terlihat di kode, hasil pengujian yang benar-benar tersedia, dan bagian yang belum terbukti. Jangan menyebut tersedia pada source sebagai sudah aktif atau lulus pada VPS.
Pola jawaban sambil menunjukkan kode
- Sebutkan tujuan fitur dalam satu kalimat.
- Tunjukkan fungsi entry dan inputnya.
- Tunjukkan pemeriksaan yang menentukan boleh atau ditolak.
- Tunjukkan perubahan data dan invariant yang dijaga.
- Tunjukkan audit dan tes terkait. Jelaskan apakah tes itu sudah dijalankan atau baru tersedia.
11 · Temuan kode dan batas pembuktian
Bab ini mengacu snapshot kode panduan sebelumnya. Pembaruan peran Admin, satu pengiriman dan audit 20 Oktober dijelaskan pada Bab 14. Source paket revisi bukan bukti bahwa paket sudah terpasang pada VPS.
| Hal yang ditemukan | Bukti source | Implikasi penjelasan |
|---|---|---|
| Challenge login opsional | dan log pengguna sebelumnya LOGIN_CHALLENGE_ENABLED=TIDAK. | Ada implementasi, belum terbukti aktif dan terkirim melalui SMTP produksi. |
| Harga grosir masih menjadi kolom | dan productPrice frontend. | Perhitungan normal saat ini memakai harga_jual. Jangan mengklaim diskon grosir otomatis. |
| Runtime E1 persediaan | memakai dua tenant awal. | Jelaskan batas perlindungan CDI persediaan dan akun runtime secara eksplisit. |
| Coordinator peserta tetap | menetapkan CONNECTIONS. | Cabang baru tidak otomatis tercakup mutasi terdistribusi. |
| Opsi worker dan command tidak cocok | memanggil --tenant. Signature InstallClarkWilsonE1 hanya memiliki --check dan --prompt-admin. | Rangkaian provisioning dalam sumber gabungan belum dapat dinyatakan bekerja menyeluruh. |
| Mapping proxy cabang baru belum terhubung | tidak meng-include branch-map.conf yang dibuat worker. | Ada kode pembuat fragmen, tetapi belum ada bukti fragmen dipakai template revisi yang dibaca. |
| Guard instance masih dua cabang | dan tenantKey. | Identitas b_ID dari worker belum ditangani guard ini. |
| Antrean provisioning belum terlihat pada jalur simpan master | dan . | Jalur yang dibaca menyimpan Cabang, tetapi tidak terlihat membuat tenant_instances pending. Keberadaan worker saja belum membuktikan klik tambah cabang memicu seluruh proses. |
| Audit tenant masih allowlist koneksi awal | dan recordGuestUdi. | Tenant dinamis perlu ditinjau juga pada batas audit, tidak cukup TenantRegistry. |
| Audit banyak tujuan bukan 2PC | . | Commit audit tenant yang lebih dahulu tidak otomatis dibatalkan bila tujuan berikutnya atau master gagal. |
| Berkas lama masih tersedia | Graph import dari app.tsx ditandai pada kartu frontend. | Ketersediaan nama file tidak sama dengan eksekusi aktif. |
| Ekspor mengikuti halaman aktif | membaca result.data tanpa loop pengambilan halaman lain. | Unduhan .xls dan cetak belum dapat disebut ekspor seluruh hasil terfilter. |
| Pengujian tersedia | tests/Feature dan tests/e2e. | Kartu tes menjelaskan skenario dan assertion source. Kartu tidak menyatakan lulus. |
Temuan ini berasal dari pembacaan source yang tersedia, termasuk berkas pendukung lama. Ini belum menyatakan keadaan VPS persis sama. Pekerjaan perbaikan aplikasi dihentikan sesuai permintaanmu, sehingga panduan tidak diam-diam mengubah perilaku aplikasi.
Rujukan primer untuk istilah
| Rujukan | Dipakai untuk |
|---|---|
| Clark dan Wilson, 1987 | Ringkasan konsep dan sembilan aturan integritas. |
| OWASP Top 10 2025 | Nama dan nomor kategori risiko. |
| Laravel 13 signed URLs | Tautan yang mendeteksi perubahan parameter dan mempunyai kedaluwarsa. |
| Laravel 13 hashing | Hashing dan pemeriksaan password. |
| MDN Fragment | Bagian fragment dikelola browser dan tidak menjadi bagian request server. |
| MDN History API | pushState, replaceState dan popstate. |
12 · Penjelasan seluruh berkas dan fungsi
Setiap kartu menjelaskan satu berkas. Gunakan pencarian untuk menyaring nama, fungsi, catatan maupun isi kode. Buka kartu dan klik Kode untuk menuju nomor baris fungsi. Berkas deployment lama memiliki penanda asal tersendiri.
Backend dan layanan keamanan 191
app/Console/Commands/ConfigureRealtime.php67 baris · 2 fungsi bernama
Untuk apa
Menyiapkan konfigurasi realtime untuk lingkungan yang dipilih.
Jika diminta mengubah
Ubah parameter Reverb melalui konfigurasi, bukan menulis key rahasia ke komponen React.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function handle(): int | Menjalankan alur command sesuai signature dan opsi yang ditampilkan di atas kode. Mengembalikan exit code sukses atau gagal. | Panggilan components.error, components.info |
function put(string $content, string $key, string $value): string | Memperbarui satu nilai konfigurasi environment sesuai aturan command. | return (string) preg_replace($pattern, $line, $content, 1); |
Signature command asli
rajawali:configure-realtime {--force : Replace existing local Reverb values}Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 11f1a624becf9e6115587db71db30f6e1977c64e07c9b13f5cd39b30cae514e7
app/Console/Commands/InstallClarkWilsonE1.php214 baris · 6 fungsi bernama
Untuk apa
Memasang dan memeriksa E1 persediaan dengan akun provisioning yang terpisah.
Jika diminta mengubah
Mode --check membaca kondisi. Mode instalasi melakukan DDL administratif dan tidak dipakai sebagai latihan bebas pada VPS.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function handle(InventoryE1Status $status): int | Menjalankan alur command sesuai signature dan opsi yang ditampilkan di atas kode. Mengembalikan exit code sukses atau gagal. | Batas transaksi Panggilan input.isInteractive, components.info |
function adminConnection(string $tenant, string $username, string $password): Connection | Membuat koneksi administratif sementara yang berbeda dari role runtime. | return DB::connectUsing($name, array_replace($base, [ |
function preflight(Connection $db, string $runtimeRole, string $guardian, string $tenant): void | Memeriksa superuser provisioning, role runtime minim hak, guardian, tabel, dan kelengkapan fungsi sebelum mengubah privilege. | Lihat signature dan isi fungsi. |
function hardenTenant(Connection $db, string $runtimeRole, string $guardian): void | Membuat guardian NOLOGIN, trigger ALWAYS, dan fungsi SECURITY DEFINER. Mengalihkan ownership, mencabut DML langsung, serta memberi EXECUTE dan hak minimum untuk row lock. | Lihat signature dan isi fungsi. |
function inspect(InventoryE1Status $status, string $guardian): int | Menampilkan hasil pemeriksaan privilege dan objek setiap tenant tanpa provisioning. | return $passed ? self::SUCCESS : self::FAILURE; |
function identifier(string $value): string | Memvalidasi nama role sebagai identifier PostgreSQL lalu mengquote. | return '"'.$value.'"'; |
Signature command asli
rajawali:cw-e1-install
{--check : Inspect runtime roles and E1 without provisioning}
{--prompt-admin : Read provisioning credentials interactively without storing them}Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 3ab2627667fd569b08d7577f2c3b139f055ede272c5d7896b20afad22c8f9282
app/Console/Commands/RajawaliAlertTest.php37 baris · 1 fungsi bernama
Untuk apa
Mengirim kejadian uji ke penerima alert yang dikonfigurasi.
Jika diminta mengubah
Sukses perintah harus dibuktikan juga pada sisi penerima.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function handle(OperationalAlert $alert): int | Menjalankan alur command sesuai signature dan opsi yang ditampilkan di atas kode. Mengembalikan exit code sukses atau gagal. | Panggilan components.error, components.info |
Signature command asli
rajawali:alert-testDependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 0a838bffb9f940dde13420374f4297aab829721b77050cb5b7db1d411fe19ea8
app/Console/Commands/RajawaliBackup.php66 baris · 2 fungsi bernama
Untuk apa
Menjalankan backup melalui PostgresBackup.
Jika diminta mengubah
Tinjau prasyarat maintenance dan scheduler sebelum menjalankan pada data nyata.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function handle(PostgresBackup $backup): int | Menjalankan alur command sesuai signature dan opsi yang ditampilkan di atas kode. Mengembalikan exit code sukses atau gagal. | Panggilan input.isInteractive, components.error Assertion assertBackupIdentity |
function assertBackupIdentity(Connection $connection): void | Memastikan identitas dan batas hak akun backup sebelum pembuatan arsip. | Lihat signature dan isi fungsi. |
Signature command asli
rajawali:backup {directory} {--pg-bin=} {--isolated : Only owned testing schemas} {--prompt-backup : Prompt for dedicated backup credentials, never runtime/admin credentials}Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 d7a1b8ba6c3d0f036f978492ce5cd68b41864b366eff3bf9a4a4cafa7d872885
app/Console/Commands/RajawaliPreflight.php101 baris · 5 fungsi bernama
Untuk apa
Pemeriksaan kesiapan aplikasi dan konfigurasi produksi.
Jika diminta mengubah
INFO preflight bukan hasil manusia mencoba fitur dan bukan hasil semua uji keamanan.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function handle(): int | Menjalankan alur command sesuai signature dan opsi yang ditampilkan di atas kode. Mengembalikan exit code sukses atau gagal. | Panggilan components.info, components.warn |
function originsRestricted(): bool | Memeriksa allowlist origin realtime yang eksplisit. | return is_array($origins) && $origins !== [] && ! in_array('*', $origins, true); |
function databasesReachable(): bool | Memeriksa koneksi seluruh database bisnis yang dipakai pemeriksaan. | return false; |
function preparedTransactionsReady(): bool | Memeriksa max_prepared_transactions tersedia pada peserta yang ditentukan. | return false; |
function noStaleCoordinator(): bool | Memeriksa coordinator belum selesai yang sudah melewati batas waktu. | Tabel distributed_transactions |
Signature command asli
rajawali:preflight {--strict : Treat every failed deployment check as fatal} {--production : Require complete production configuration}Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 1f254a3bfcc2f12aac7be05906cf7bc3d5b542457e73f0f1974acbe9855d9d71
app/Console/Commands/RajawaliRestoreDrill.php32 baris · 1 fungsi bernama
Untuk apa
Menjalankan simulasi restore arsip ke target uji.
Jika diminta mengubah
Perintah ini harus memulihkan ke target latihan yang dikendalikan layanan, bukan menimpa database bisnis.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function handle(PostgresBackup $backup): int | Menjalankan alur command sesuai signature dan opsi yang ditampilkan di atas kode. Mengembalikan exit code sukses atau gagal. | Pemeriksaan IVP Panggilan components.info, components.error |
Signature command asli
rajawali:restore-drill {directory} {--pg-bin=} {--verify-only} {--connection= : Configured connection with CREATEDB on an isolated restore server}Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 9ac3f87d6bed5d7bf1348a8b594f957e38dec0b9cb58768574fdeff7939b3654
app/Console/Commands/RajawaliSecurityCheck.php108 baris · 4 fungsi bernama
Untuk apa
Pemeriksaan konfigurasi keamanan, registry TP, transaksi dan E1.
Jika diminta mengubah
Hasil pemeriksaan harus dibaca bersama WARN dan bukti pengujian negatif.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function handle(InventoryE1Status $inventoryStatus): int | Menjalankan alur command sesuai signature dan opsi yang ditampilkan di atas kode. Mengembalikan exit code sukses atau gagal. | Panggilan components.info, components.warn |
function preparedTransactionsReady(): bool | Memeriksa kesiapan prepared transaction PostgreSQL. | return false; |
function preparedTransactionCount(): int | Menghitung prepared transaction yang terkait lingkup pemeriksaan. | return PHP_INT_MAX; |
function noStaleCoordinator(): bool | Memeriksa jurnal transaksi tertinggal menurut batas konfigurasi. | Tabel distributed_transactions |
Signature command asli
rajawali:security-check {--strict : Fail when production hardening is incomplete}Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 7e232a8e33e1540c3bd2fc11d192a33eca10926900dc4212b1d4f5705e8bcecb
app/Console/Commands/RajawaliSetup.php79 baris · 1 fungsi bernama
Untuk apa
Setup interaktif lokal cabang awal dan owner tanpa password bawaan.
Jika diminta mengubah
Dibatasi environment local. Ini bukan prosedur mereset akun produksi.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function handle(): int | Menjalankan alur command sesuai signature dan opsi yang ditampilkan di atas kode. Mengembalikan exit code sukses atau gagal. | Batas transaksi Pembuatan hash Panggilan input.isInteractive |
Signature command asli
rajawali:setupDependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 49f1e9a7fb4bd40847ca4453f138b738557845f257415c4961fff471cade5fd3
app/Console/Commands/RajawaliSmoke.php134 baris · 6 fungsi bernama
Untuk apa
Pemeriksaan singkat endpoint dan batas konfigurasi jaringan.
Jika diminta mengubah
Smoke memeriksa jalur teknis, sedangkan UAT dilaporkan pengguna.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function handle(): int | Menjalankan alur command sesuai signature dan opsi yang ditampilkan di atas kode. Mengembalikan exit code sukses atau gagal. | Panggilan components.info, components.error |
function externalChecks(string $baseUrl): array | Menggabungkan hasil endpoint publik, header dan redirect HTTPS. | return [ |
function externalGet(string $url): Response | Mengirim request pemeriksaan eksternal dengan batas waktu. | return Http::connectTimeout(5) |
function hasRequiredEdgeHeaders(Response $response): bool | Memastikan header yang diwajibkan terlihat dari sisi proxy publik. | return str_contains($hsts, 'max-age=') |
function httpRedirectsToHttps(string $host): bool | Memeriksa pengalihan HTTP ke HTTPS pada domain publik. | return in_array($response->status(), [301, 308], true) |
function preparedCount(): int | Menghitung prepared transaction saat smoke dijalankan. | return $total; |
Signature command asli
rajawali:smoke {--external-url= : Optional HTTPS base URL for reverse-proxy smoke checks}Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 fcb1284a17e45f6b2b9d37d6d518aeaa87955709409907248013e359df82963f
app/Console/Commands/RajawaliUatData.php178 baris · 1 fungsi bernama
Untuk apa
Menyediakan atau mengelola data latihan yang dikendalikan command.
Jika diminta mengubah
Baca pembatasan environment dan opsi cleanup di kode sebelum menjalankan. Jangan menganggapnya read-only.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function handle(TenantResolver $resolver, ReceiveStock $receiveStock): int | Menjalankan alur command sesuai signature dan opsi yang ditampilkan di atas kode. Mengembalikan exit code sukses atau gagal. | Batas transaksi Pembuatan hash Tabel produk_cabang |
Signature command asli
rajawali:uat-dataDependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 2971c5d9cf6735bc590d6ba80d289225ff9e02943dc8ef41c7be4cac92e24551
app/Console/Commands/RecoverDistributedTransactions.php29 baris · 1 fungsi bernama
Untuk apa
Pemulihan coordinator dan prepared transaction Rajawali.
Jika diminta mengubah
Perintah dijadwalkan setiap menit melalui routes/console.php.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function handle(DistributedTransactionManager $manager): int | Menjalankan alur command sesuai signature dan opsi yang ditampilkan di atas kode. Mengembalikan exit code sukses atau gagal. | return self::SUCCESS; |
Signature command asli
distributed-transactions:recoverDependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 d573e40220ed771fd4168159e51b4c73ab99cd6ce9b4510890077da2cd272461
app/Console/Commands/RegisterProvisionedBranch.php94 baris · 1 fungsi bernama
Untuk apa
Verifikasi dan registrasi cabang hasil worker administratif.
Jika diminta mengubah
Kredensial tenant dibaca dari stdin, diverifikasi, lalu disimpan terenkripsi pada master.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function handle(InventoryE1Status $e1): int | Menjalankan alur command sesuai signature dan opsi yang ditampilkan di atas kode. Mengembalikan exit code sukses atau gagal. | Batas transaksi Kunci baris perubahan Tabel tenant_instances |
Signature command asli
rajawali:branch-provision-finish {branchId : Integer branch ID} {--failed : Mark a failed provisioning attempt}Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 4b03f3f1c71a8044df9d04d40f08e2bf8043536582d1a52b55e6a8c844746f9e
app/Console/Commands/VerifyPurchaseIntegrity.php80 baris · 2 fungsi bernama
Untuk apa
Memeriksa integritas data tersimpan melalui IVP global dan pembelian.
Jika diminta mengubah
Gunakan laporan hasil untuk menunjukkan invariant. Jangan mengubah database agar tes terlihat lulus.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function handle(TenantResolver $resolver, PurchaseIntegrity $purchases, GlobalIntegrityVerifier $global): int | Menjalankan alur command sesuai signature dan opsi yang ditampilkan di atas kode. Mengembalikan exit code sukses atau gagal. | Tabel pembelian |
function formatCounts(array $counts): string | Merapikan jumlah objek yang berhasil diperiksa untuk keluaran command. | return collect($counts)->map(fn (int $count, string $name): string => "{$name}={$count}")->implode(', '); |
Signature command asli
rajawali:integrity {--cabang= : ID cabang yang diperiksa} {--all : Periksa master dan seluruh tenant aktif}Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 8386c80bea0adc8ae6647a139d62a187403d2598c1cd101ba946ba9d089a2125
app/Events/BusinessDataChanged.php49 baris · 4 fungsi bernama
Untuk apa
Event perubahan bisnis pada channel privat cabang.
Jika diminta mengubah
Payload event hanya pemberitahuan perubahan. Frontend mengambil ulang detail melalui API.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(
public int $branchId,
public string $area,
public ?int $resourceId = null,
) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function broadcastOn(): PrivateChannel | Memilih PrivateChannel tenant.ID. | return new PrivateChannel('tenant.'.$this->branchId); |
function broadcastAs(): string | Menamai event business.changed. | return 'business.changed'; |
function broadcastWith(): array | Mengirim event_id, area, resource_id, dan waktu perubahan. | return [ |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 a1db06a8497a6734ce6b74cc7c547dbc69ff59a26b35f3c87652f76c0d0b3b7b
app/Http/Controllers/AuthController.php199 baris · 9 fungsi bernama
Untuk apa
Menghubungkan login, kode email, session, profil, password, dan logout dengan HTTP.
Jika diminta mengubah
Ubah alur respons autentikasi di sini. Aturan password berada di Request dan pemeriksa kredensial berada di LoginService.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function login(LoginRequest $request, LoginService $login, AuditLogger $audit, TenantContext $context, OperationalAlert $alert, StaffLoginChallenge $challenge): PenggunaResource|JsonResponse | Menolak login ganda, memeriksa blokir IP dan CAPTCHA opsional, lalu memanggil LoginService. Menghasilkan 202 untuk tantangan email atau membuat session setelah berhasil. | Pemeriksaan CAPTCHA Respons JSON |
function securityOptions(StaffLoginChallenge $challenge): JsonResponse | Mengirim status tantangan dan site key publik. Secret key tidak dikirim ke browser. | Respons JSON |
function verifyLoginCode(Request $request, StaffLoginChallenge $challenge, TenantResolver $resolver, TenantContext $context, AuditLogger $audit, OperationalAlert $alert, LoginService $login): PenggunaResource|JsonResponse | Memeriksa kode enam angka, batas percobaan, akun terbaru, dan cabang. Session login baru dibuat setelah kode diterima. | Verifikasi kode Respons JSON |
function cancelLoginCode(Request $request): JsonResponse | Menghapus tantangan email dari session. | Respons JSON |
function blockedLoginIp(Request $request, LoginService $login): ?JsonResponse | Menghasilkan 429 dan Retry-After ketika blokir manual IP masih berlaku. | Respons JSON |
function me(Request $request): PenggunaResource | Mengirim pengguna dan cabang aktif melalui PenggunaResource. | return new PenggunaResource($request->user()); |
function changeProfile(
ChangeOwnProfileRequest $request,
ChangeOwnProfile $change,
AuditLogger $audit,
): PenggunaResource | Menyerahkan perubahan profil owner yang telah divalidasi kepada ChangeOwnProfile. | return new PenggunaResource($user); |
function changePassword(
ChangeOwnPasswordRequest $request,
ChangeOwnPassword $change,
AuditLogger $audit,
TenantContext $context,
): JsonResponse | Menjalankan perubahan password, mengakhiri session aktif, membuat token CSRF baru, lalu meminta login ulang. | Respons JSON |
function logout(Request $request, AuditLogger $audit, TenantContext $context): Response | Mencatat logout, mengakhiri autentikasi, membatalkan session dan token lama, serta membersihkan tenant request. | return response()->noContent(); |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 0231e0c8842435a8b4094a35d0d77f5f345828a4a954ad90d8dc4f050df14641
app/Http/Controllers/BranchAssignmentController.php30 baris · 1 fungsi bernama
Untuk apa
Endpoint perubahan penempatan cabang pegawai.
Jika diminta mengubah
Perubahan aturan penempatan harus masuk ke ChangeBranchAssignment dan audit hak pengguna.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __invoke(BranchRequest $request, int $id, ChangeBranchAssignment $change, AuditLogger $audit): JsonResponse | Membaca ID pegawai dan ID cabang tervalidasi, memanggil layanan perubahan penempatan, lalu membentuk JSON hasil. | Respons JSON |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 f766c840c9955b5ec6151540ed7097d0dc72c768f048ec4028511b3ef2c153e6
app/Http/Controllers/Controller.php8 baris · 0 fungsi bernama
Untuk apa
Kelas dasar controller aplikasi.
Jika diminta mengubah
Dipakai sebagai induk controller. Tidak berisi alur transaksi bisnis tambahan.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 25d1c1ef8e6cc8a376553faacfba2b07d9dfaee9bdbb84f14f77517580e9deb1
app/Http/Controllers/CustomerController.php217 baris · 7 fungsi bernama
Untuk apa
CRUD pelanggan cabang dan ringkasan riwayat belanja, servis, serta garansi.
Jika diminta mengubah
Tambah field pelanggan melalui migration tenant, CustomerRequest, normalize, payload, form React, dan audit yang sesuai.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function index(Request $request): JsonResponse | Memvalidasi pencarian, memilih field pelanggan yang boleh dibaca, menghitung ringkasan, dan membuat halaman hasil. | Respons JSON |
function show(int $id, TenantContext $context): JsonResponse | Membaca pelanggan pada tenant aktif dan menggabungkan ringkasan serta transaksi terakhirnya. | Respons JSON Tabel pelanggan, penjualan, servis, penjualan as p, klaim_garansi |
function store(CustomerRequest $request, AuditLogger $audit, BusinessAccess $access): JsonResponse | Memvalidasi aktor TP customer.create dan tenant, menyimpan pelanggan, memeriksa hasil, serta menulis audit dalam transaksi tenant. | Batas transaksi Relasi aktor dan TP Audit CDI wajib Respons JSON Tabel pelanggan |
function update(CustomerRequest $request, int $id, AuditLogger $audit, BusinessAccess $access): JsonResponse | Memeriksa aktor TP customer.update, mengunci pelanggan yang akan diubah, memperbarui field pilihan, dan mengaudit perubahan. | Batas transaksi Kunci baris perubahan Relasi aktor dan TP Audit CDI wajib Respons JSON Tabel pelanggan |
function normalize(array $data): array | Merapikan nama dan kontak serta mengubah teks opsional kosong menjadi null. | return $data; |
function payload(object $customer): array | Menyusun field pelanggan yang masuk respons API. | return [ |
function auditSnapshot(object $current, ?object $compare = null): array | Menyimpan identitas pelanggan dan nama field berubah tanpa menyalin seluruh data kontak ke audit. | return [ |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 f2e462485eb66dc6c6b493684126b9ac7ff6dbcdab44c36bd35db2bd51176193
app/Http/Controllers/DashboardController.php102 baris · 3 fungsi bernama
Untuk apa
Ringkasan operasional menurut role dan cabang aktif.
Jika diminta mengubah
Tambah kartu dengan menambah nilai backend index dan tampilan DashboardPanel. Terapkan pembatasan role yang sama.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function index(Request $request, BusinessAccess $access, NotificationReader $notifications): JsonResponse | Mengambil aktor terbaru dan tenant, menghitung stok, transaksi, persetujuan, servis, garansi, serta tugas yang relevan bagi role. | Batas transaksi Respons JSON Tabel produk_cabang, penjualan, nota_instansi, mutasi_stok, pembelian |
function serviceCount($db, Pengguna $actor, int $branchId): int | Membatasi pekerjaan servis teknisi pada penugasannya sendiri. Role pelayanan membaca lingkup operasional cabang. | Tabel servis |
function warrantyCount($db, Pengguna $actor): int | Memilih jumlah klaim sesuai tahap yang dapat ditindaklanjuti oleh role. | Tabel klaim_garansi |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 444cee77aa77459d75118980de6c91b0b2db1f543c6254db2eaa8097fd1d878a
app/Http/Controllers/EmployeeActivationController.php21 baris · 1 fungsi bernama
Untuk apa
Menerima token undangan dan password baru pegawai.
Jika diminta mengubah
Ubah aturan input aktivasi di sini dan mekanisme token di EmployeeInvitation.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function activate(Request $request, EmployeeInvitation $invitations): JsonResponse | Memvalidasi token, password minimal 12 karakter beserta konfirmasinya, lalu menjalankan aktivasi akun. | Respons JSON |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 1ddc05b4472004d9bde6688234d3027fbad24e0c280cc3b7237084438fe1b01d
app/Http/Controllers/EmployeeController.php280 baris · 7 fungsi bernama
Untuk apa
Manajemen pegawai oleh owner, undangan, dan riwayat hak akun.
Jika diminta mengubah
Tambah field akun melalui EmployeeRequest, pemetaan penyimpanan, payload, EmployeesPanel, dan audit master.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function index(Request $request): JsonResponse | Menyaring pegawai menurut pencarian, role, status, cabang, dan kondisi keamanan. Tidak mengirim hash password. | Respons JSON Tabel employee_invitations |
function store(EmployeeRequest $request, TenantResolver $resolver, AuditLogger $audit, EmployeeInvitation $invitation): JsonResponse | Membuat akun manual atau akun nonaktif yang menunggu undangan, memvalidasi cabang, menghash password, dan menulis audit hak pada master. | Batas transaksi Relasi aktor dan TP Audit hak pada master Pembuatan hash Respons JSON Assertion assertMailConfigured |
function update(EmployeeRequest $request, int $id, TenantResolver $resolver, AuditLogger $audit, InvalidateUserSessions $invalidateSessions): JsonResponse | Mengunci akun, melarang perubahan owner dari halaman pegawai, memperbarui field yang diizinkan, mengaudit, dan mencabut session terkait. | Batas transaksi Kunci baris perubahan Relasi aktor dan TP Audit hak pada master Pembuatan hash Respons JSON Tabel employee_invitations |
function resendInvitation(Request $request, int $id, EmployeeInvitation $invitations): JsonResponse | Memeriksa akun undangan yang masih nonaktif, mengganti token, lalu mengirim ulang email. | Batas transaksi Kunci baris perubahan Respons JSON Tabel employee_invitations Assertion assertMailConfigured |
function revokeInvitation(Request $request, int $id): JsonResponse | Menghapus token undangan akun nonaktif tanpa mengaktifkan akun tersebut. | Batas transaksi Kunci baris perubahan Respons JSON Tabel employee_invitations |
function history(Request $request): JsonResponse | Mengirim riwayat audit_hak_pengguna untuk owner dengan pilihan subjek dan pagination. | Respons JSON Tabel audit_hak_pengguna as log |
function payload(Pengguna $employee, bool $pendingInvitation = false): array | Menyusun data pegawai aman, nama cabang, indikator penguncian, dan status undangan. | return [ |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 d061a0e38de9c6035ed5344068442088bb00533b6b7a8cc3d35a545c18629edf
app/Http/Controllers/InstitutionInvoiceController.php83 baris · 4 fungsi bernama
Untuk apa
Daftar, sumber penjualan, detail, dan dispatch operasi nota instansi.
Jika diminta mengubah
Aturan perubahan dokumen berada di InstitutionInvoiceWorkflow, bukan pada tombol React.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function index(Request $request, TenantContext $context): JsonResponse | Mencari nota pada cabang aktif menurut nama atau nomor dan status. | Respons JSON Tabel nota_instansi |
function sources(Request $request, TenantContext $context): JsonResponse | Memilih penjualan lunas dan selesai yang belum memiliki nota instansi. | Respons JSON Tabel penjualan as p |
function show(Request $request, int $id, TenantContext $context, InstitutionInvoiceWorkflow $workflow): JsonResponse | Membaca detail nota beserta riwayatnya pada tenant yang diizinkan. | Respons JSON Tabel nota_instansi, detail_penjualan, histori_nota_instansi, penjualan |
function mutate(InstitutionInvoiceRequest $request, InstitutionInvoiceWorkflow $workflow): JsonResponse | Memilih operasi dari route, memvalidasi input, dan menyerahkan perubahan kepada workflow nota. | Respons JSON |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 75eed7d251574650cbf942e88f85a46ef0acb63ecdc7c7ddfef2e5ef2b078077
app/Http/Controllers/InventoryController.php77 baris · 1 fungsi bernama
Untuk apa
API persediaan dan barang karantina pada cabang aktif.
Jika diminta mengubah
Tambah filter backend di index dan kontrol filter di InventoryPanel. Perubahan stok tetap melalui TP persediaan.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function index(Request $request, TenantContext $context): JsonResponse | Memvalidasi filter, membatasi tenant, mencari produk master, menghitung ringkasan, menyortir, dan memaginasi stok. | Respons JSON |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 368e66663d12090ea270a5c4bf661503ef2b07cc3d1d33de8d016779043d2cdd
app/Http/Controllers/LivenessController.php16 baris · 1 fungsi bernama
Untuk apa
Pemeriksaan bahwa proses aplikasi dapat menjawab.
Jika diminta mengubah
Jangan menambahkan operasi perubahan data ke endpoint liveness.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __invoke(): JsonResponse | Mengembalikan tanda hidup proses tanpa menganggap semua layanan bisnis siap. | Respons JSON |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 500eac649f02bc629ef7fef577527a1b647687f946007155363f3eaefe73dd0c
app/Http/Controllers/MasterDataController.php80 baris · 3 fungsi bernama
Untuk apa
Controller generik cabang, supplier, dan produk.
Jika diminta mengubah
Bentuk field ada pada MasterDataDefinition. Form ada pada MasterDataPanel.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function index(Request $request): JsonResponse | Memilih model dari entity route, menerapkan pencarian dan status, serta mengirim daftar dan ringkasan. | Respons JSON |
function store(MasterDataRequest $request, SaveMasterData $save): JsonResponse | Meneruskan input tervalidasi ke SaveMasterData untuk membuat record. | Respons JSON |
function update(MasterDataRequest $request, SaveMasterData $save): JsonResponse | Meneruskan ID dan input tervalidasi ke SaveMasterData untuk mengubah record. | Respons JSON |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 3fc324c98a3cdb76a648483b14ae9b47d3193704ebd977a54d0c4f8a889c0691
app/Http/Controllers/NotificationController.php15 baris · 1 fungsi bernama
Untuk apa
API pusat tugas yang perlu ditindaklanjuti.
Jika diminta mengubah
Tambahkan sumber tugas pada NotificationReader lalu tujuan menunya pada NotificationsPanel.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function index(Request $request, NotificationReader $reader): JsonResponse | Membaca notifikasi operasional dari NotificationReader menurut pengguna dan cabang. | Respons JSON |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 00c16f73911ef2722fc4b28d4d93b88a999488b61cf4c731b572af83ff662090
app/Http/Controllers/OnlineOrderController.php604 baris · 14 fungsi bernama
Untuk apa
Katalog publik, checkout, pelacakan, bukti pembayaran, serta pengelolaan pesanan oleh pegawai.
Jika diminta mengubah
Pisahkan perubahan tampilan katalog, validasi payload, dan aturan transaksi. Harga final ditentukan backend.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function branches(): JsonResponse | Mengirim cabang aktif yang menerima pesanan, kategori produk, dan metode pembayaran yang siap digunakan. | Respons JSON |
function catalog(Request $request, TenantResolver $tenants): JsonResponse | Memvalidasi filter, membaca produk master dan stok setiap cabang yang tersedia, lalu memaginasi katalog. | Respons JSON Tabel produk_cabang |
function checkout(
OnlineCheckoutRequest $request,
CreateOnlineOrder $create,
OnlineOrderLinks $links,
): JsonResponse | Membuat OnlineOrderData, menjalankan CreateOnlineOrder untuk satu cabang, dan mengirim tautan serta kode pelacakan. | Respons JSON |
function trackByCode(Request $request, TenantResolver $tenants, OnlineOrderLinks $links): JsonResponse | Menerima kode pelacakan melalui POST, mencari kecocokan hash, lalu memberikan informasi dan tautan pesanan yang sesuai. | Respons JSON Tabel penjualan |
function track(Request $request, string $nomor, TenantResolver $tenants, OnlineOrderLinks $links): JsonResponse | Membaca pesanan berdasarkan nomor dan cabang dari tautan yang telah melewati pemeriksaan signature. | Respons JSON Tabel penjualan |
function uploadProof(
OnlinePaymentProofRequest $request,
string $nomor,
TenantResolver $tenants,
UploadOnlinePaymentProof $upload,
): JsonResponse | Meneruskan file bukti pada tautan sah kepada UploadOnlinePaymentProof. | Respons JSON |
function cancel(
Request $request,
string $nomor,
CancelOnlineOrder $cancel,
): JsonResponse | Meneruskan pembatalan pelanggan pada tautan sah ke CancelOnlineOrder. | Respons JSON |
function index(Request $request, TenantContext $context): JsonResponse | Membaca daftar pesanan ONLINE pada tenant aktif dengan filter operasional. | Respons JSON Tabel penjualan, detail_penjualan, pengiriman, pelanggan |
function show(int $id, TenantContext $context): JsonResponse | Membaca detail pesanan online milik tenant aktif. | Respons JSON Tabel penjualan |
function paymentProof(
int $id,
TenantContext $context,
OnlinePaymentProofStorage $storage,
): StreamedResponse | Melayani unduhan bukti melalui penyimpanan privat setelah akses pesanan diperiksa. | Tabel penjualan |
function mutate(
OnlineOrderActionRequest $request,
int $id,
OnlineOrderWorkflow $workflow,
TenantContext $context,
OnlineOrderLinks $links,
): JsonResponse | Menerjemahkan operasi route menjadi OnlineOrderActionData dan menjalankan workflow internal. | Respons JSON Tabel penjualan, pelanggan, detail_penjualan |
function paymentMethodLabel(string $method): string | Mengubah kode metode pembayaran menjadi label yang mudah dibaca. | return match ($method) { |
function fulfillmentMethodLabel(string $method): string | Mengubah kode ambil atau kirim menjadi label penerimaan. | return match ($method) { |
function payload(Connection $db, object $sale, bool $public): array | Menyusun detail pesanan, item, total, pembayaran, pengiriman, serta tautan yang diperlukan. Field internal tidak disalin sembarang. | Tabel detail_penjualan, pengiriman, pelanggan |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 65ca500688a72cbe5a5f27d6897f5854c5aba8a107697330c740d4884f84363a
app/Http/Controllers/OperationalHealthController.php59 baris · 1 fungsi bernama
Untuk apa
Readiness aplikasi, database bisnis, dan transaksi terdistribusi.
Jika diminta mengubah
Tambah dependensi wajib pada pemeriksaan readiness dan skenario kegagalannya.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __invoke(): JsonResponse | Memeriksa konektivitas, prepared transaction dan coordinator, lalu mengembalikan 200 atau 503 tanpa membocorkan rincian rahasia. | Respons JSON Tabel distributed_transactions |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 0f26b734c79f74db61078ffadf9b8491daa755e3fbcc79a7fbe1167f836c7876
app/Http/Controllers/OwnerBranchController.php54 baris · 2 fungsi bernama
Untuk apa
Daftar cabang yang dapat dipilih owner dan pemilihan tenant aktif.
Jika diminta mengubah
Aturan pemetaan cabang ada pada TenantResolver dan TenantRegistry.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function index(TenantResolver $resolver): JsonResponse | Mengirim cabang yang tersedia bagi owner. | Respons JSON |
function select(BranchRequest $request, TenantResolver $resolver, TenantContext $context, AuditLogger $audit): JsonResponse | Memvalidasi cabang yang dipilih owner, menyimpan tenant pada session, dan mengembalikan data pemilihan. | Respons JSON |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 adf9f04da0048973340a4ad97ad7db02e6bb67fc5d10d5a1f630eafd06f04033
app/Http/Controllers/OwnerBranchProvisionController.php26 baris · 1 fungsi bernama
Untuk apa
Menjadwalkan ulang penyediaan cabang yang gagal.
Jika diminta mengubah
Pekerjaan administratif database dilakukan worker host, tidak melalui kredensial admin dalam request web.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function retry(Request $request, int $id): JsonResponse | Memeriksa owner, cabang nonaktif, status failed, dan jumlah percobaan di bawah tiga sebelum menjadwalkan ulang. | Batas transaksi Kunci baris perubahan Respons JSON Tabel tenant_instances |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 aceabf4c9aa1dc3afa374d16f2b11f1dbd4a0c2f90b719062fd5ef8c95526fff
app/Http/Controllers/PaymentSettingsController.php129 baris · 4 fungsi bernama
Untuk apa
Pengaturan rekening dan QRIS oleh owner.
Jika diminta mengubah
Form berada di PaymentSettingsPanel. Validasi HTTP berada di PaymentSettingsRequest. Pembacaan metode publik melalui PaymentSettings.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function index(PaymentSettings $settings): JsonResponse | Mengirim konfigurasi pembayaran yang dapat diedit owner. | Respons JSON |
function update(PaymentSettingsRequest $request, PaymentSettings $settings, AuditLogger $audit): JsonResponse | Memeriksa PNG QRIS dan kesiapan bank, mengunci singleton konfigurasi, menyimpan audit master, serta membersihkan file baru jika transaksi gagal. | Batas transaksi Kunci baris perubahan Respons JSON Tabel payment_settings, payment_settings_audit |
function qris(string $filename, PaymentSettings $settings): BinaryFileResponse | Mengirim PNG QRIS yang namanya valid dan tersedia pada disk khusus. | return response()->file(Storage::disk('payment_qris')->path($filename), [ |
function auditSnapshot(array $row): array | Mencatat metadata pembayaran dengan empat digit terakhir rekening sebagai pengganti nomor rekening lengkap. | return [ |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 6ef706b0f5f542f1d7dc129ce1894de6e89c6c12746f5ed555fa0480d7a00b76
app/Http/Controllers/PurchaseController.php100 baris · 3 fungsi bernama
Untuk apa
Pencatatan dan pembacaan pembelian cabang.
Jika diminta mengubah
Aturan stok baik dan rusak berada di RecordPurchase, PurchaseData, ReceiveStock, dan PurchaseIntegrity.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function store(PurchaseRequest $request, RecordPurchase $record): JsonResponse | Mengubah input menjadi PurchaseData dan memanggil TP pencatatan pembelian. | Respons JSON |
function index(Request $request, TenantContext $context): JsonResponse | Mencari dan memaginasi pembelian cabang aktif beserta ringkasannya. | Respons JSON Tabel detail_pembelian as d, detail_pembelian |
function show(int $id, TenantContext $context): JsonResponse | Membaca header dan detail pembelian beserta nama produk pada cabang aktif. | Respons JSON |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 0907d9be2d164799eae8559ba1a4fe468e0002b43def4414f972181458c0790e
app/Http/Controllers/PurchaseReturnController.php107 baris · 4 fungsi bernama
Untuk apa
Retur pembelian dari stok karantina ke supplier.
Jika diminta mengubah
Aturan jumlah tersedia untuk retur ada pada RecordPurchaseReturn dan ReturnQuarantinedStock.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function store(PurchaseReturnRequest $request, RecordPurchaseReturn $service): JsonResponse | Memanggil TP retur pembelian setelah request tervalidasi. | Respons JSON |
function sources(Request $request, TenantContext $context): JsonResponse | Memilih pembelian dan sisa item yang dapat diretur. | Respons JSON Tabel pembelian, detail_pembelian, detail_retur_pembelian as d, produk_cabang |
function index(Request $request, TenantContext $context): JsonResponse | Membaca riwayat retur pembelian cabang dengan filter. | Respons JSON Tabel retur_pembelian as r |
function show(int $id, TenantContext $context): JsonResponse | Membaca detail retur pembelian pada cabang aktif. | Respons JSON Tabel retur_pembelian as r, detail_retur_pembelian |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 a0a341204a775762b9c9cd39a319a1ac3bdb5103845cfa4dfb43a309c572d6b0
app/Http/Controllers/ReportController.php59 baris · 3 fungsi bernama
Untuk apa
Pintu masuk laporan owner dan audit log.
Jika diminta mengubah
Jenis laporan baru memerlukan ReportReader, filter ReportScope, pilihan frontend, dan pengujian akses.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function options(Request $request, BusinessAccess $access, ReportScope $scope, ReportReader $reader): JsonResponse | Mengirim jenis laporan dan pilihan filter yang boleh digunakan. | Batas transaksi Respons JSON |
function report(Request $request, string $type, BusinessAccess $access, ReportScope $scope, ReportReader $reader): JsonResponse | Memvalidasi cakupan laporan dan mengirim hasil dari ReportReader. | Batas transaksi Respons JSON |
function audit(Request $request, BusinessAccess $access, ReportScope $scope, AuditReader $reader): JsonResponse | Memvalidasi filter audit lalu membaca audit yang sudah disaring dari AuditReader. | Batas transaksi Respons JSON |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 83c211fad20ce852aef5d43694d0ca94800c39446be752ebad55af0baa18d85c
app/Http/Controllers/SaleApprovalController.php50 baris · 4 fungsi bernama
Untuk apa
Persetujuan harga khusus melalui URL bertanda tangan.
Jika diminta mengubah
Ubah aturan keputusan pada DecideSpecialPriceSale. Signature tidak menggantikan pemeriksaan akun dan pemisahan pelaku.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(private TenantResolver $resolver, private TenantContext $context) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function show(Request $request, int $id, DecideSpecialPriceSale $approval): JsonResponse | Mengikat tenant dari tautan sah dan meminta preview pengajuan. | Respons JSON |
function decide(ApprovalDecisionRequest $request, int $id, DecideSpecialPriceSale $approval): JsonResponse | Mengikat tenant, membaca keputusan, lalu menjalankan keputusan harga khusus. | Respons JSON |
function bindSignedTenant(Request $request): ResolvedTenant | Memeriksa ID cabang dari query signed dan menetapkan konteks tenant yang sesuai. | Panggilan resolver.resolve, context.set |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 ee4ed0c7a2569896d98195f7efb162de469290a36adb3164cd3a42b373de3b67
app/Http/Controllers/SaleReturnController.php96 baris · 4 fungsi bernama
Untuk apa
Retur penjualan, refund tercatat, dan tukar barang.
Jika diminta mengubah
Pembayaran refund tidak terhubung otomatis ke bank. Perhitungan dan stok berada di RecordSaleReturn.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function store(SaleReturnRequest $request, RecordSaleReturn $service): JsonResponse | Memanggil TP retur penjualan setelah validasi. | Respons JSON |
function sources(Request $request, TenantContext $context): JsonResponse | Membaca transaksi selesai dan sisa jumlah yang dapat diretur. | Respons JSON Tabel penjualan as p, detail_penjualan, detail_retur_penjualan as d |
function index(Request $request, TenantContext $context): JsonResponse | Membaca daftar retur cabang beserta ringkasan nilai refund. | Respons JSON Tabel retur_penjualan as r |
function show(int $id, TenantContext $context): JsonResponse | Membaca satu retur dan itemnya pada cabang aktif. | Respons JSON Tabel retur_penjualan as r, detail_retur_penjualan |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 e023fcbac9fdbcc207f1bdc39fbcc535e51c46e1caa200e9fc7c5ab8e5265cb3
app/Http/Controllers/SalesController.php133 baris · 5 fungsi bernama
Untuk apa
API kasir, pengajuan harga khusus, dan riwayat penjualan toko.
Jika diminta mengubah
Harga normal ada pada SalePricing, harga khusus pada workflow approval, tampilan pada PosPanel.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function store(SaleRequest $request, CreateRetailSale $create): JsonResponse | Menjalankan CreateRetailSale dengan SaleData dan mengirim nota hasil. | Respons JSON |
function special(SpecialPriceSaleRequest $request, RequestSpecialPriceSale $create): JsonResponse | Menjalankan pengajuan harga khusus lalu mengirim 202. | Respons JSON |
function index(Request $request, TenantContext $context): JsonResponse | Mencari transaksi OFFLINE cabang menurut pencarian, metode, tanggal, dan status. | Respons JSON |
function show(int $id, TenantContext $context): JsonResponse | Membaca satu transaksi OFFLINE pada tenant aktif. | Respons JSON |
function enrichSales(Collection $sales): Collection | Menambahkan nama produk, nilai per item, dan informasi nota ke hasil penjualan. | return $sales->map(function (Penjualan $sale) use ($products): array { |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 33c8db18cf83443806d7a06f394eb5bfaf18cef83713708e7115e789a0a6de2b
app/Http/Controllers/ServiceController.php190 baris · 10 fungsi bernama
Untuk apa
Daftar servis, pilihan teknisi, detail, log, sparepart, foto, serta pemanggilan TP servis.
Jika diminta mengubah
Aturan transisi berada di ServiceStatus dan ServiceWorkflow. Teknisi hanya membaca pekerjaan yang ditugaskan kepadanya.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function mutate(ServiceRequest $request): JsonResponse | Memilih kelas TP berdasarkan operation route, memanggil handle, lalu membaca hasil servis. | Respons JSON |
function index(Request $request): JsonResponse | Memvalidasi pencarian dan filter servis, membatasi akses teknisi, lalu memaginasi hasil. | Respons JSON |
function options(Request $request): JsonResponse | Mengirim pilihan teknisi aktif yang sesuai cabang dan berbeda dari penerima. | Respons JSON |
function show(Request $request, int $id): JsonResponse | Membaca detail servis melalui query yang sudah dibatasi akses. | Respons JSON |
function logs(Request $request, int $id): JsonResponse | Mengirim log servis dari lingkup query pengguna. | Respons JSON |
function parts(Request $request, int $id): JsonResponse | Mengirim sparepart untuk servis yang dapat diakses. | Respons JSON |
function photo(Request $request, int $id, int $log, ServicePhotoStorage $photos): StreamedResponse | Memeriksa servis dan log foto yang terkait sebelum mengirim file privat. | return $photos->response($entry->bukti_foto, (int) $service->id_cabang, $id); |
function query(Request $request): Builder | Memasang filter cabang. Untuk teknisi, menambah filter ID teknisi yang sedang login. | return $query; |
function detailData(Servis $service): array | Menyusun detail servis, nama teknisi, sparepart, dan nilai biaya. | return $part->toArray() + ['nama_produk' => $names[$part->id_produk] ?? 'Produk #'.$part->id_produk]; |
function logsData(Servis $service): array | Menyusun kronologi dan tautan foto log yang diperbolehkan. | return $service->logs()->orderBy('id_log_servis')->get()->map(function ($log) use ($service): array { |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 a575b39518f2aeb4f0f9e0a7d141dca9cd11fb76aa543824496b86083dd5d0e5
app/Http/Controllers/StockTransferController.php160 baris · 9 fungsi bernama
Untuk apa
Pengajuan, preview, persetujuan, dan daftar transfer stok.
Jika diminta mengubah
Mutasi lintas database memakai DistributedTransactionManager. Jangan menggantinya dengan dua update terpisah.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function options(Request $request, BusinessAccess $access): JsonResponse | Mengirim cabang dan produk yang memiliki stok tersedia pada tenant asal. | Batas transaksi Respons JSON Tabel produk_cabang |
function index(Request $request, BusinessAccess $access): JsonResponse | Memvalidasi filter, mencari mutasi masuk atau keluar cabang, dan memaginasi. | Batas transaksi Respons JSON |
function show(Request $request, int $id, BusinessAccess $access): JsonResponse | Membaca satu mutasi pada cabang yang berhubungan dengan mutasi. | Batas transaksi Respons JSON |
function store(Request $request, RequestStockTransfer $transfer): JsonResponse | Membentuk StockTransferData dan meminta transfer melalui TP. | Respons JSON |
function preview(Request $request, int $id, DecideStockTransfer $transfer): JsonResponse | Memeriksa cabang dari signed URL lalu meminta preview keputusan. | Respons JSON |
function decide(ApprovalDecisionRequest $request, int $id, DecideStockTransfer $transfer): JsonResponse | Meneruskan keputusan owner dan token kepada DecideStockTransfer. | Respons JSON |
function signedBranch(Request $request): int | Memastikan ID cabang pada query merupakan bilangan bulat positif. | return $id; |
function scoped(int $branch): Builder | Membatasi query master pada mutasi dengan asal atau tujuan cabang aktif. | Tabel mutasi_stok |
function payload(object $header): array | Menambahkan nama pengaju, approver, cabang, dan rincian item mutasi. | Tabel detail_mutasi_stok AS d |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 96425e0fe7628aa1680d0ed122a412cb21e8d7090c607287711d35e880ee2e7c
app/Http/Controllers/WarrantyClaimController.php215 baris · 6 fungsi bernama
Untuk apa
Pembuatan klaim produk atau servis dan pengelolaan tahap garansi.
Jika diminta mengubah
Aturan status berada di WarrantyClaimStatus. Validitas sumber dan riwayat diperiksa layanan Integrity.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function mutate(WarrantyClaimRequest $request): JsonResponse | Memilih TP klaim berdasarkan operation lalu mengirim detail hasil. | Respons JSON |
function index(Request $request): JsonResponse | Memvalidasi filter klaim, menyaring akses dan tahap, lalu memaginasi. | Respons JSON |
function show(Request $request, int $id): JsonResponse | Membaca klaim dan audit tahap yang terkait. | Respons JSON Tabel audit_log |
function query(Request $request): Builder | Membatasi data teknisi pada tahap teknis yang relevan. | return $query; |
function enrichClaims(Collection $claims): Collection | Menambahkan keterangan sumber servis atau penjualan, produk, dan pelanggan. | Tabel servis, penjualan, pelanggan |
function sources(Request $request): JsonResponse | Mencari sumber servis selesai atau item penjualan selesai serta keterangan masa garansi. | Respons JSON Tabel servis, detail_penjualan |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 aefded6e9a79b17207fee74f471dbfd871dd3c01cacc70c8171868a75431d734
app/Http/Middleware/AuthorizeTenantBroadcastChannel.php39 baris · 2 fungsi bernama
Untuk apa
Pemeriksaan akses channel privat Reverb sebelum subscribe.
Jika diminta mengubah
Channel baru perlu pola nama, pemeriksaan tenant, dan callback routes/channels.php.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(private TenantContext $context) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function handle(Request $request, Closure $next): Response | Mewajibkan nama private-tenant.ID, tenant session yang sama, akun aktif, dan penempatan cabang yang sah. | Panggilan context.current |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 5b6b62d2f4671546202541df8bd540426787a9a249bd61a789920e59e9b65dce
app/Http/Middleware/BroadcastMutationChanges.php129 baris · 6 fungsi bernama
Untuk apa
Mengumumkan perubahan bisnis setelah respons mutasi berhasil.
Jika diminta mengubah
Tambah area atau pengecualian realtime di sini. Data lengkap tetap dibaca ulang melalui API yang berizin.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(private TenantContext $tenantContext) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function handle(Request $request, Closure $next): Response | Mengirim BusinessDataChanged untuk mutasi sukses. Kegagalan broadcast dicatat tanpa membatalkan transaksi bisnis yang sudah selesai. | return $response; |
function shouldBroadcast(Request $request, Response $response): bool | Memilih mutasi API dengan status 2xx dan mengecualikan route autentikasi atau pemilihan cabang tertentu. | return false; |
function branchId(Request $request, Response $response): ?int | Menentukan cabang terkait dari konteks atau metadata request dan respons. | Panggilan tenantContext.current |
function area(Request $request): string | Mengubah route menjadi area perubahan. | return match (true) { |
function resourceId(Request $request, Response $response): ?int | Mengambil ID resource yang berubah jika tersedia. | return (int) $routeId; |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 1d00a2bba3ccee29352a43b8b2ba05953b5ef95cc6621e354ac72c7f0d59f76a
app/Http/Middleware/EnsureAccountSession.php38 baris · 2 fungsi bernama
Untuk apa
Mendeteksi session yang tidak cocok lagi dengan akun terbaru.
Jika diminta mengubah
Tambah atribut identitas yang harus memutus session pada Pengguna.sessionIdentity dan sesuaikan observer serta tes.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(private TenantContext $context) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function handle(Request $request, Closure $next): Response | Membersihkan konteks request, memuat akun terbaru, membandingkan identitas session, dan membatalkan session jika role, cabang, atau status berubah. | Respons JSON Panggilan context.clear |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 bc0b076be1a52bffabca5ead926ab34ffa6bc8bdb8ce33e2c612c21dbc3b5260
app/Http/Middleware/EnsureTenantAccess.php48 baris · 2 fungsi bernama
Untuk apa
Menetapkan tenant dari akun dan session yang dipercaya backend.
Jika diminta mengubah
Jangan mengambil tenant pegawai hanya dari parameter kiriman browser.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(
private TenantResolver $resolver,
private TenantContext $context,
private InstanceTenantGuard $instanceTenantGuard,
) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function handle(Request $request, Closure $next, string $mode = 'required'): Response | Memilih tenant owner dari session atau pegawai dari penempatan, memeriksa konsistensi, memvalidasi instance, lalu mengisi TenantContext. | Panggilan context.clear, resolver.resolve, instanceTenantGuard.assertAllows, context.set Assertion assertAllows |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 9d8a32c7056de0689bfd2b99463e7e2c4fb018d1133aa1932688f4da2e18dceb
app/Http/Middleware/InstanceRoutingCookie.php49 baris · 1 fungsi bernama
Untuk apa
Petunjuk routing reverse proxy ke instance cabang.
Jika diminta mengubah
Cookie routing bukan bukti otorisasi. Backend tetap memeriksa TenantContext dan akun.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function handle(Request $request, Closure $next): Response | Menentukan cookie instance dari cabang session untuk request berikutnya dan membuang petunjuk yang tidak sesuai. | return $response; |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 e7e9da122232bc5418421cd8b3514f88c75d503f5f00b29c623e1a880fb36ce0
app/Http/Middleware/RequireRole.php18 baris · 1 fungsi bernama
Untuk apa
Pemeriksaan role pada route backend.
Jika diminta mengubah
Ubah kewenangan melalui RoleAccess, route, registry TP, dan pengujian akses sekaligus.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function handle(Request $request, Closure $next, string ...$roles): Response | Memeriksa pengguna dan canActAs terhadap daftar role pada middleware route. Respons 403 jika tidak diizinkan. | return $next($request); |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 e9014c5fe87cd70e246a0c1810b2b6c63f3ddf2a3cfe1001069d2b804e20e7fc
app/Http/Middleware/RequireSpaSession.php19 baris · 1 fungsi bernama
Untuk apa
Mewajibkan autentikasi dengan session SPA aplikasi.
Jika diminta mengubah
Token bearer tidak dipakai sebagai jalur alternatif login aplikasi ini.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function handle(Request $request, Closure $next): Response | Menolak request tanpa session stateful Sanctum atau request yang membawa bearer token. | Respons JSON |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 c8bc7b15ae28e38e9c7b01da9df575857e8268d258372dc6193b97195653684c
app/Http/Middleware/SecurityHeaders.php135 baris · 3 fungsi bernama
Untuk apa
Header keamanan HTTP dan normalisasi query halaman masuk.
Jika diminta mengubah
Kebijakan respons publik dapat ditimpa Nginx. Pemeriksaan harus dilakukan pada domain yang diakses pengguna.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function handle(Request $request, Closure $next): Response | Mengalihkan query halaman yang tidak dikenal ke path bersih, lalu memasang header keamanan dan aturan cache. | return $response; |
function invalidPageQuery(Request $request): bool | Memeriksa query GET atau HEAD khusus / dan /login. Query tracking serta approval yang sesuai pola tetap dipertahankan. | return false; |
function contentSecurityPolicy(): string | Membentuk CSP untuk produksi, lokal, pengujian, WebSocket, serta CAPTCHA opsional. | return implode('; ', $directives); |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 5bcccf5c8985cccac996fdda3fa3e2a654470201ab617e4dd339572c727e3ba6
app/Http/Middleware/ValidateApiPayload.php45 baris · 1 fungsi bernama
Untuk apa
Batas tipe dan ukuran body mutasi API.
Jika diminta mengubah
Batas upload juga harus cocok dengan PHP dan client_max_body_size Nginx.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function handle(Request $request, Closure $next): Response | Menolak tipe body yang tidak didukung, JSON terlalu besar, JSON rusak, atau bentuk dasar yang tidak sesuai. | return $next($request); |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 487d673914e1259fcc817dc0dba27f98076f8fd9762dc8a063516ff2bb5bdb98
app/Http/Requests/ApprovalDecisionRequest.php30 baris · 3 fungsi bernama
Untuk apa
Keputusan setujui atau tolak oleh owner dan penolakan field tambahan.
Jika diminta mengubah
Edit authorize untuk kewenangan, rules untuk batas input, dan normalisasi bila ada. Form frontend hanya pemeriksaan awal pengguna.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function authorize(): bool | Memutuskan apakah request boleh dilanjutkan sebelum validasi. Kondisi user atau kemampuan yang dipakai tampak pada ekspresi return di kode. | return $this->user()?->isOwner() ?? false; |
function rules(): array | Menetapkan aturan input atau mendelegasikannya kepada DTO. Setiap key, batas dan enum asli dapat dilihat pada tabel aturan serta kode fungsi. | return [ |
function after(): array | Menambahkan pemeriksaan setelah validation dasar, terutama menolak field yang tidak ada dalam allowlist operasi. | Panggilan request.all |
Aturan field asli
| Potongan aturan | Baris |
|---|---|
'keputusan' => ['required', 'string', 'in:setujui,tolak'], | 18 |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 c936f6ccc9e13c7cd2cb1c1d7e039a3c50884a82d4502b5af67cfd27d0517b97
app/Http/Requests/BranchRequest.php18 baris · 2 fungsi bernama
Untuk apa
ID cabang tujuan perubahan penempatan pegawai.
Jika diminta mengubah
Edit authorize untuk kewenangan, rules untuk batas input, dan normalisasi bila ada. Form frontend hanya pemeriksaan awal pengguna.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function authorize(): bool | Memutuskan apakah request boleh dilanjutkan sebelum validasi. Kondisi user atau kemampuan yang dipakai tampak pada ekspresi return di kode. | return $this->user()?->canActAs('admin') ?? false; |
function rules(): array | Menetapkan aturan input atau mendelegasikannya kepada DTO. Setiap key, batas dan enum asli dapat dilihat pada tabel aturan serta kode fungsi. | return ['id_cabang' => ['required', 'integer', 'min:1']]; |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 5a3658dfb44fc637fe2001eaa20ed9a6444c413c2092e52cd1251b0dbc27de0d
app/Http/Requests/BusinessRequest.php20 baris · 1 fungsi bernama
Untuk apa
Induk Request bisnis yang menolak field tingkat atas di luar rules.
Jika diminta mengubah
Edit authorize untuk kewenangan, rules untuk batas input, dan normalisasi bila ada. Form frontend hanya pemeriksaan awal pengguna.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function after(): array | Menambahkan pemeriksaan setelah validation dasar, terutama menolak field yang tidak ada dalam allowlist operasi. | return [function (Validator $validator): void { |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 1d2fa3b4ec028a84f39ba51b6d23f96d465e3f2c7052629157da25a72e19bc36
app/Http/Requests/ChangeOwnPasswordRequest.php20 baris · 2 fungsi bernama
Untuk apa
Password lama, password baru minimal 12 karakter, dan konfirmasi.
Jika diminta mengubah
Edit authorize untuk kewenangan, rules untuk batas input, dan normalisasi bila ada. Form frontend hanya pemeriksaan awal pengguna.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function authorize(): bool | Memutuskan apakah request boleh dilanjutkan sebelum validasi. Kondisi user atau kemampuan yang dipakai tampak pada ekspresi return di kode. | return $this->user() !== null; |
function rules(): array | Menetapkan aturan input atau mendelegasikannya kepada DTO. Setiap key, batas dan enum asli dapat dilihat pada tabel aturan serta kode fungsi. | return [ |
Aturan field asli
| Potongan aturan | Baris |
|---|---|
'current_password' => ['required', 'string', 'max:128'], | 15 |
'password' => ['required', 'string', 'min:12', 'max:128', 'confirmed', 'different:current_password'], | 16 |
'password_confirmation' => ['required', 'string', 'max:128'], | 17 |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 6ec3ddb6f0e42f55553b1acc6256c0e424f4a5efebc67424a2668fc9514192a9
app/Http/Requests/ChangeOwnProfileRequest.php34 baris · 3 fungsi bernama
Untuk apa
Nama dan email unik untuk profil owner sendiri.
Jika diminta mengubah
Edit authorize untuk kewenangan, rules untuk batas input, dan normalisasi bila ada. Form frontend hanya pemeriksaan awal pengguna.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function authorize(): bool | Memutuskan apakah request boleh dilanjutkan sebelum validasi. Kondisi user atau kemampuan yang dipakai tampak pada ekspresi return di kode. | return $this->user()?->isOwner() ?? false; |
function prepareForValidation(): void | Menormalisasi field sebelum rules dievaluasi, misalnya trim, email huruf kecil, atau nilai kosong menjadi null. | Lihat signature dan isi fungsi. |
function rules(): array | Menetapkan aturan input atau mendelegasikannya kepada DTO. Setiap key, batas dan enum asli dapat dilihat pada tabel aturan serta kode fungsi. | return [ |
Aturan field asli
| Potongan aturan | Baris |
|---|---|
'nama_pengguna' => ['required', 'string', 'max:100'], | 25 |
'email' => [ | 26 |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 d1edc29ca73f315884946383a2bcc489102cb1f7d0f9420d836c39b5c926fd6a
app/Http/Requests/CustomerRequest.php41 baris · 3 fungsi bernama
Untuk apa
Nama, WhatsApp, email dan alamat pelanggan serta normalisasinya.
Jika diminta mengubah
Edit authorize untuk kewenangan, rules untuk batas input, dan normalisasi bila ada. Form frontend hanya pemeriksaan awal pengguna.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function authorize(): bool | Memutuskan apakah request boleh dilanjutkan sebelum validasi. Kondisi user atau kemampuan yang dipakai tampak pada ekspresi return di kode. | return $this->user()?->canActAs('kasir') ?? false; |
function prepareForValidation(): void | Menormalisasi field sebelum rules dievaluasi, misalnya trim, email huruf kecil, atau nilai kosong menjadi null. | Lihat signature dan isi fungsi. |
function rules(): array | Menetapkan aturan input atau mendelegasikannya kepada DTO. Setiap key, batas dan enum asli dapat dilihat pada tabel aturan serta kode fungsi. | return [ |
Aturan field asli
| Potongan aturan | Baris |
|---|---|
'nama_pelanggan' => [$creating ? 'required' : 'sometimes', 'string', 'min:1', 'max:100'], | 35 |
'no_wa' => ['sometimes', 'nullable', 'string', 'max:20', 'regex:/^[0-9+() .-]+$/'], | 36 |
'email' => ['sometimes', 'nullable', 'email:rfc', 'max:100'], | 37 |
'alamat' => ['sometimes', 'nullable', 'string', 'max:2000'], | 38 |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 31c5120242f0c02344dbd6bba7ef6d2a1aec1c734ae0d7553a8a35df25c479e1
app/Http/Requests/EmployeeRequest.php29 baris · 2 fungsi bernama
Untuk apa
Nama, email unik, role pegawai selain owner, cabang, status, password atau mode undangan.
Jika diminta mengubah
Edit authorize untuk kewenangan, rules untuk batas input, dan normalisasi bila ada. Form frontend hanya pemeriksaan awal pengguna.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function authorize(): bool | Memutuskan apakah request boleh dilanjutkan sebelum validasi. Kondisi user atau kemampuan yang dipakai tampak pada ekspresi return di kode. | return $this->user()?->canActAs('owner') ?? false; |
function rules(): array | Menetapkan aturan input atau mendelegasikannya kepada DTO. Setiap key, batas dan enum asli dapat dilihat pada tabel aturan serta kode fungsi. | return [ |
Aturan field asli
| Potongan aturan | Baris |
|---|---|
'nama_pengguna' => [$creating ? 'required' : 'sometimes', 'string', 'max:100'], | 20 |
'email' => [$creating ? 'required' : 'sometimes', 'email:rfc', 'max:100', Rule::unique('master.pengguna', 'email')->ignore($id, 'id_pengguna')], | 21 |
'role' => [$creating ? 'required' : 'sometimes', Rule::in(['admin', 'kasir', 'teknisi'])], | 22 |
'id_cabang' => [$creating ? 'required' : 'sometimes', 'integer', 'min:1', 'max:2147483647'], | 23 |
'status_akun' => ['sometimes', Rule::in(['aktif', 'nonaktif'])], | 24 |
'password' => [$creating && $this->input('activation_mode') !== 'undangan' ? 'required' : 'sometimes', $creating && $this->input('activation_mode') === 'undangan' ? 'prohibited' : 'nullable', 'string', 'min:12', 'max:128'], | 25 |
'activation_mode' => [$creating ? 'sometimes' : 'prohibited', Rule::in(['manual', 'undangan'])], | 26 |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 aca16ab5fbe44a860c8573d71ff86c97e7cab975ff89c13a931c557fad8dc2dc
app/Http/Requests/InstitutionInvoiceRequest.php31 baris · 3 fungsi bernama
Untuk apa
Kewenangan dan input menurut operasi nota instansi.
Jika diminta mengubah
Edit authorize untuk kewenangan, rules untuk batas input, dan normalisasi bila ada. Form frontend hanya pemeriksaan awal pengguna.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function authorize(): bool | Memutuskan apakah request boleh dilanjutkan sebelum validasi. Kondisi user atau kemampuan yang dipakai tampak pada ekspresi return di kode. | return $this->route('operation') === 'decide' |
function rules(): array | Menetapkan aturan input atau mendelegasikannya kepada DTO. Setiap key, batas dan enum asli dapat dilihat pada tabel aturan serta kode fungsi. | return InstitutionInvoiceData::rules((string) $this->route('operation')); |
function after(): array | Menambahkan pemeriksaan setelah validation dasar, terutama menolak field yang tidak ada dalam allowlist operasi. | Panggilan request.all |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 f034b94f884f4a912355cd80d9257b4bf282bcf2d18a9deef8175ad1b293a738
app/Http/Requests/LoginRequest.php25 baris · 3 fungsi bernama
Untuk apa
Normalisasi email serta bentuk email, password dan token CAPTCHA opsional.
Jika diminta mengubah
Edit authorize untuk kewenangan, rules untuk batas input, dan normalisasi bila ada. Form frontend hanya pemeriksaan awal pengguna.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function authorize(): bool | Memutuskan apakah request boleh dilanjutkan sebelum validasi. Kondisi user atau kemampuan yang dipakai tampak pada ekspresi return di kode. | return true; |
function prepareForValidation(): void | Menormalisasi field sebelum rules dievaluasi, misalnya trim, email huruf kecil, atau nilai kosong menjadi null. | Lihat signature dan isi fungsi. |
function rules(): array | Menetapkan aturan input atau mendelegasikannya kepada DTO. Setiap key, batas dan enum asli dapat dilihat pada tabel aturan serta kode fungsi. | return ['email' => ['required', 'string', 'email', 'max:100'], 'password' => ['required', 'string', 'max:1024'], 'captcha_token' => ['sometimes', ' |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 21f8988b01a86a43977cd05fb159fae59eeaf62d9cfc6cac8f3f6476e9015e16
app/Http/Requests/MasterDataRequest.php18 baris · 2 fungsi bernama
Untuk apa
Kewenangan dan rules dinamis cabang, supplier atau produk.
Jika diminta mengubah
Edit authorize untuk kewenangan, rules untuk batas input, dan normalisasi bila ada. Form frontend hanya pemeriksaan awal pengguna.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function authorize(): bool | Memutuskan apakah request boleh dilanjutkan sebelum validasi. Kondisi user atau kemampuan yang dipakai tampak pada ekspresi return di kode. | return $this->user()?->canActAs('admin') ?? false; |
function rules(): array | Menetapkan aturan input atau mendelegasikannya kepada DTO. Setiap key, batas dan enum asli dapat dilihat pada tabel aturan serta kode fungsi. | return MasterDataDefinition::rules($this->route('entity'), $this->route('id') ? (int) $this->route('id') : null); |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 5dfd40300a81373bbffad35c838d42baac73b700c6677f93b57db266d6b91508
app/Http/Requests/OnlineCheckoutRequest.php49 baris · 4 fungsi bernama
Untuk apa
Input checkout publik serta kesiapan metode pembayaran yang dipilih.
Jika diminta mengubah
Edit authorize untuk kewenangan, rules untuk batas input, dan normalisasi bila ada. Form frontend hanya pemeriksaan awal pengguna.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function authorize(): bool | Memutuskan apakah request boleh dilanjutkan sebelum validasi. Kondisi user atau kemampuan yang dipakai tampak pada ekspresi return di kode. | return true; |
function rules(): array | Menetapkan aturan input atau mendelegasikannya kepada DTO. Setiap key, batas dan enum asli dapat dilihat pada tabel aturan serta kode fungsi. | return OnlineOrderData::rules(); |
function messages(): array | Mengganti pesan validation default dengan pesan form checkout berbahasa Indonesia. | return [ |
function withValidator($validator): void | Menolak transfer bank atau QRIS ketika konfigurasi metode belum siap, meskipun nilai metodenya sudah lolos enum. | Lihat signature dan isi fungsi. |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 b5cd1c84f2e7ef24571989d26fcf7f82d3377754eb06e37819ac40bdf08dcaf9
app/Http/Requests/OnlineOrderActionRequest.php19 baris · 2 fungsi bernama
Untuk apa
Input tindakan kasir pada pesanan online menurut operasi route.
Jika diminta mengubah
Edit authorize untuk kewenangan, rules untuk batas input, dan normalisasi bila ada. Form frontend hanya pemeriksaan awal pengguna.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function authorize(): bool | Memutuskan apakah request boleh dilanjutkan sebelum validasi. Kondisi user atau kemampuan yang dipakai tampak pada ekspresi return di kode. | return $this->user()?->canActAs(OnlineOrderStatus::internalCapability()) ?? false; |
function rules(): array | Menetapkan aturan input atau mendelegasikannya kepada DTO. Setiap key, batas dan enum asli dapat dilihat pada tabel aturan serta kode fungsi. | return OnlineOrderActionData::rules((string) $this->route('operation')); |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 2ad234eb1ce8de71fb3324ac824d34bfddeb1ab73d78359f13bf0a80489875d8
app/Http/Requests/OnlinePaymentProofRequest.php25 baris · 2 fungsi bernama
Untuk apa
File bukti JPEG, PNG, WebP atau PDF dan batas ukuran.
Jika diminta mengubah
Edit authorize untuk kewenangan, rules untuk batas input, dan normalisasi bila ada. Form frontend hanya pemeriksaan awal pengguna.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function authorize(): bool | Memutuskan apakah request boleh dilanjutkan sebelum validasi. Kondisi user atau kemampuan yang dipakai tampak pada ekspresi return di kode. | return true; |
function rules(): array | Menetapkan aturan input atau mendelegasikannya kepada DTO. Setiap key, batas dan enum asli dapat dilihat pada tabel aturan serta kode fungsi. | return [ |
Aturan field asli
| Potongan aturan | Baris |
|---|---|
'bukti_pembayaran' => [ | 17 |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 da324f212bcde2dc0263a2b3873ef1b8d89b5619f6a3f6f53e0f47c235080756
app/Http/Requests/PaymentSettingsRequest.php26 baris · 2 fungsi bernama
Untuk apa
Input rekening, sakelar metode pembayaran dan file QRIS PNG.
Jika diminta mengubah
Edit authorize untuk kewenangan, rules untuk batas input, dan normalisasi bila ada. Form frontend hanya pemeriksaan awal pengguna.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function authorize(): bool | Memutuskan apakah request boleh dilanjutkan sebelum validasi. Kondisi user atau kemampuan yang dipakai tampak pada ekspresi return di kode. | return $this->user()?->isOwner() === true; |
function rules(): array | Menetapkan aturan input atau mendelegasikannya kepada DTO. Setiap key, batas dan enum asli dapat dilihat pada tabel aturan serta kode fungsi. | return [ |
Aturan field asli
| Potongan aturan | Baris |
|---|---|
'bank_name' => ['nullable', 'string', 'max:100'], | 17 |
'bank_account' => ['nullable', 'string', 'max:40', 'regex:/^[0-9\s]+$/D'], | 18 |
'bank_beneficiary' => ['nullable', 'string', 'max:120'], | 19 |
'bank_enabled' => ['required', 'boolean'], | 20 |
'qris_enabled' => ['required', 'boolean'], | 21 |
'qris_image' => ['nullable', 'file', 'mimes:png', 'max:2048'], | 22 |
'remove_qris' => ['required', 'boolean'], | 23 |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 756ff97f0cec5a90866b8b0be376d19d30cfd5df214cf4b144f2153eb82ebef9
app/Http/Requests/PurchaseRequest.php18 baris · 2 fungsi bernama
Untuk apa
Input pembelian melalui PurchaseData.
Jika diminta mengubah
Edit authorize untuk kewenangan, rules untuk batas input, dan normalisasi bila ada. Form frontend hanya pemeriksaan awal pengguna.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function authorize(): bool | Memutuskan apakah request boleh dilanjutkan sebelum validasi. Kondisi user atau kemampuan yang dipakai tampak pada ekspresi return di kode. | return $this->user()?->canActAs('admin') ?? false; |
function rules(): array | Menetapkan aturan input atau mendelegasikannya kepada DTO. Setiap key, batas dan enum asli dapat dilihat pada tabel aturan serta kode fungsi. | return PurchaseData::rules(); |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 3cf3488a82d5a50e70e2575bc4b549c61d02574b3f490d2d4d8d8816e8c7d96a
app/Http/Requests/PurchaseReturnRequest.php20 baris · 2 fungsi bernama
Untuk apa
Input retur pembelian melalui ReturnData.
Jika diminta mengubah
Edit authorize untuk kewenangan, rules untuk batas input, dan normalisasi bila ada. Form frontend hanya pemeriksaan awal pengguna.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function authorize(): bool | Memutuskan apakah request boleh dilanjutkan sebelum validasi. Kondisi user atau kemampuan yang dipakai tampak pada ekspresi return di kode. | return $this->user()?->canActAs('admin') ?? false; |
function rules(): array | Menetapkan aturan input atau mendelegasikannya kepada DTO. Setiap key, batas dan enum asli dapat dilihat pada tabel aturan serta kode fungsi. | return ReturnData::rules(true); |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 e941343868247560c82a69630703f07d13188e701a6c0fd9d6be4974e8e3df7f
app/Http/Requests/SaleRequest.php18 baris · 2 fungsi bernama
Untuk apa
Input penjualan normal melalui SaleData.
Jika diminta mengubah
Edit authorize untuk kewenangan, rules untuk batas input, dan normalisasi bila ada. Form frontend hanya pemeriksaan awal pengguna.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function authorize(): bool | Memutuskan apakah request boleh dilanjutkan sebelum validasi. Kondisi user atau kemampuan yang dipakai tampak pada ekspresi return di kode. | return $this->user()?->canActAs('kasir') ?? false; |
function rules(): array | Menetapkan aturan input atau mendelegasikannya kepada DTO. Setiap key, batas dan enum asli dapat dilihat pada tabel aturan serta kode fungsi. | return SaleData::rules(); |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 7fc289207bdc70f7c2c6b3df6df83f0b3034501206174f72d7ceedad1e744c87
app/Http/Requests/SaleReturnRequest.php20 baris · 2 fungsi bernama
Untuk apa
Input retur penjualan melalui ReturnData.
Jika diminta mengubah
Edit authorize untuk kewenangan, rules untuk batas input, dan normalisasi bila ada. Form frontend hanya pemeriksaan awal pengguna.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function authorize(): bool | Memutuskan apakah request boleh dilanjutkan sebelum validasi. Kondisi user atau kemampuan yang dipakai tampak pada ekspresi return di kode. | return $this->user()?->canActAs('kasir') ?? false; |
function rules(): array | Menetapkan aturan input atau mendelegasikannya kepada DTO. Setiap key, batas dan enum asli dapat dilihat pada tabel aturan serta kode fungsi. | return ReturnData::rules(false); |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 48cc1f4ae5ae6ed5f0104eb1fb10d5a85becc3879f9aea2d119cb8572b5fc0f1
app/Http/Requests/ServiceRequest.php19 baris · 2 fungsi bernama
Untuk apa
Input dan kemampuan pelaku sesuai operasi servis.
Jika diminta mengubah
Edit authorize untuk kewenangan, rules untuk batas input, dan normalisasi bila ada. Form frontend hanya pemeriksaan awal pengguna.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function authorize(): bool | Memutuskan apakah request boleh dilanjutkan sebelum validasi. Kondisi user atau kemampuan yang dipakai tampak pada ekspresi return di kode. | return $this->user()?->canActAs(ServiceStatus::capability($this->route('operation'))) ?? false; |
function rules(): array | Menetapkan aturan input atau mendelegasikannya kepada DTO. Setiap key, batas dan enum asli dapat dilihat pada tabel aturan serta kode fungsi. | return ServiceData::rules($this->route('operation')); |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 355cc08e7957425b130d871bb4d3f568be783cd62c96879db6fe03a809370520
app/Http/Requests/SpecialPriceSaleRequest.php18 baris · 2 fungsi bernama
Untuk apa
Input pengajuan harga khusus melalui SpecialPriceSaleData.
Jika diminta mengubah
Edit authorize untuk kewenangan, rules untuk batas input, dan normalisasi bila ada. Form frontend hanya pemeriksaan awal pengguna.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function authorize(): bool | Memutuskan apakah request boleh dilanjutkan sebelum validasi. Kondisi user atau kemampuan yang dipakai tampak pada ekspresi return di kode. | return $this->user()?->canActAs('kasir') ?? false; |
function rules(): array | Menetapkan aturan input atau mendelegasikannya kepada DTO. Setiap key, batas dan enum asli dapat dilihat pada tabel aturan serta kode fungsi. | return SpecialPriceSaleData::rules(); |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 aaa0d5973f71d5e46c545c2861f0de0848fd57c5ab89207e363b59956f394096
app/Http/Requests/WarrantyClaimRequest.php19 baris · 2 fungsi bernama
Untuk apa
Input dan kemampuan pelaku sesuai operasi klaim.
Jika diminta mengubah
Edit authorize untuk kewenangan, rules untuk batas input, dan normalisasi bila ada. Form frontend hanya pemeriksaan awal pengguna.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function authorize(): bool | Memutuskan apakah request boleh dilanjutkan sebelum validasi. Kondisi user atau kemampuan yang dipakai tampak pada ekspresi return di kode. | return $this->user()?->canActAs(WarrantyClaimStatus::capability($this->route('operation'))) ?? false; |
function rules(): array | Menetapkan aturan input atau mendelegasikannya kepada DTO. Setiap key, batas dan enum asli dapat dilihat pada tabel aturan serta kode fungsi. | return WarrantyClaimData::rules($this->route('operation')); |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 fbd0704d31bfba1d22e4e2c7f7ed243d970408a97efb46654c070fe1e958eb13
app/Http/Resources/PenggunaResource.php29 baris · 1 fungsi bernama
Untuk apa
Bentuk data akun yang dikirim ke frontend.
Jika diminta mengubah
Tambahkan field yang boleh dibaca ke toArray, jangan menserialisasi seluruh model.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function toArray(Request $request): array | Mengirim identitas pengguna, role, status, cabang penempatan dan cabang aktif tanpa password_hash atau token. | return [ |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 367cb8835b6ccdfcabb58b6f611e275caca8f67aae838fdacff05068e5f097da
app/Mail/EmployeeActivationMail.php20 baris · 2 fungsi bernama
Untuk apa
Pembentuk email aktivasi pegawai.
Jika diminta mengubah
Layout teks berada pada Blade resources/views/mail yang dirujuk build.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(public string $employeeName, public string $activationUrl) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function build(): static | Menetapkan subjek, view, dan data email aktivasi pegawai. Jangan mencatat nilai token atau kode ke log. | return $this->subject('Aktivasi Akun Pegawai Rajawali Computer') |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 0a717260734841ee9643d382383f29a614da16e393dac10f42a3d979dd64926f
app/Mail/StaffLoginCodeMail.php21 baris · 2 fungsi bernama
Untuk apa
Pembentuk email kode login.
Jika diminta mengubah
Layout teks berada pada Blade resources/views/mail yang dirujuk build.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(public string $verificationCode) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function build(): static | Menetapkan subjek, view, dan data email kode login. Jangan mencatat nilai token atau kode ke log. | return $this->subject('Kode verifikasi login Rajawali Computer') |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 1618d5f16563b50e5df5b7f869b97d1413455a0f9de7447e588ad6e1270f98ab
app/Models/AuditLog.php45 baris · 4 fungsi bernama
Untuk apa
Snapshot perubahan bisnis dan kejadian keamanan tenant yang hanya boleh ditambah.
Jika diminta mengubah
Mapping table, primaryKey, connection, casts dan relasi berada di model. Aturan transaksi dan perubahan stok tetap berada pada layanan TP.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function save(array $options = []): bool | Menolak jalur perubahan yang tidak diperbolehkan untuk histori append-only atau model kunci gabungan. Perhatikan apakah save hanya mengizinkan record baru. | return parent::save($options); |
function delete(): ?bool | Menolak jalur perubahan yang tidak diperbolehkan untuk histori append-only atau model kunci gabungan. Perhatikan apakah save hanya mengizinkan record baru. | Lihat signature dan isi fungsi. |
function newEloquentBuilder(mixed $query): AppendOnlyLogBuilder | Mengganti builder biasa dengan AppendOnlyLogBuilder agar update atau delete melalui query model juga ditolak. | return new AppendOnlyLogBuilder($query); |
function casts(): array | Mengatur konversi tipe atribut model. Pasangan atribut dan tipe asli terlihat pada potongan fungsi ini. | return [ |
Mapping model
| Properti | Nilai kode |
|---|---|
$table | 'audit_log' |
$primaryKey | 'id_audit_log' |
$timestamps | false |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 f2b078094a68c1cf5fcff5fecd997282cde0c8b9d18c79f62a32f8f4fefb64fb
app/Models/Cabang.php30 baris · 1 fungsi bernama
Untuk apa
Identitas dan status cabang pada master.
Jika diminta mengubah
Mapping table, primaryKey, connection, casts dan relasi berada di model. Aturan transaksi dan perubahan stok tetap berada pada layanan TP.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function casts(): array | Mengatur konversi tipe atribut model. Pasangan atribut dan tipe asli terlihat pada potongan fungsi ini. | return ['created_at' => 'immutable_datetime', 'updated_at' => 'immutable_datetime']; |
Mapping model
| Properti | Nilai kode |
|---|---|
$connection | 'master' |
$table | 'cabang' |
$primaryKey | 'id_cabang' |
$incrementing | true |
$keyType | 'int' |
$dateFormat | 'Y-m-d H:i:sP' |
$guarded | ['*'] |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 f38fd060b87f633299a6a1d41e47352c8b7fc7f1e789948fbda20b0e15795e41
app/Models/Concerns/AppendOnlyLogBuilder.php49 baris · 8 fungsi bernama
Untuk apa
Builder yang menolak jalur update, delete, upsert dan operasi pengubah angka pada histori.
Jika diminta mengubah
Mapping table, primaryKey, connection, casts dan relasi berada di model. Aturan transaksi dan perubahan stok tetap berada pada layanan TP.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function update(array $values): never | Menolak perubahan histori melalui Eloquent builder dengan exception. | Lihat signature dan isi fungsi. |
function delete(): never | Menolak jalur perubahan yang tidak diperbolehkan untuk histori append-only atau model kunci gabungan. Perhatikan apakah save hanya mengizinkan record baru. | Lihat signature dan isi fungsi. |
function forceDelete(): never | Menolak jalur perubahan yang tidak diperbolehkan untuk histori append-only atau model kunci gabungan. Perhatikan apakah save hanya mengizinkan record baru. | Lihat signature dan isi fungsi. |
function upsert(array $values, mixed $uniqueBy, mixed $update = null): never | Menolak jalur perubahan yang tidak diperbolehkan untuk histori append-only atau model kunci gabungan. Perhatikan apakah save hanya mengizinkan record baru. | Lihat signature dan isi fungsi. |
function increment(mixed $column, mixed $amount = 1, array $extra = []): never | Menolak jalur perubahan yang tidak diperbolehkan untuk histori append-only atau model kunci gabungan. Perhatikan apakah save hanya mengizinkan record baru. | Lihat signature dan isi fungsi. |
function decrement(mixed $column, mixed $amount = 1, array $extra = []): never | Menolak jalur perubahan yang tidak diperbolehkan untuk histori append-only atau model kunci gabungan. Perhatikan apakah save hanya mengizinkan record baru. | Lihat signature dan isi fungsi. |
function incrementEach(array $columns, array $extra = []): never | Menolak jalur perubahan yang tidak diperbolehkan untuk histori append-only atau model kunci gabungan. Perhatikan apakah save hanya mengizinkan record baru. | Lihat signature dan isi fungsi. |
function decrementEach(array $columns, array $extra = []): never | Menolak jalur perubahan yang tidak diperbolehkan untuk histori append-only atau model kunci gabungan. Perhatikan apakah save hanya mengizinkan record baru. | Lihat signature dan isi fungsi. |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 3e265b002e88e79269d803e32b881af50d2e1066c9f3295dbb9bec1b7d831396
app/Models/Concerns/CompositeKeyReadOnly.php22 baris · 2 fungsi bernama
Untuk apa
Trait yang mencegah save atau delete model dengan kunci gabungan yang tidak disebut lengkap.
Jika diminta mengubah
Mapping table, primaryKey, connection, casts dan relasi berada di model. Aturan transaksi dan perubahan stok tetap berada pada layanan TP.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function save(array $options = []): bool | Menolak jalur perubahan yang tidak diperbolehkan untuk histori append-only atau model kunci gabungan. Perhatikan apakah save hanya mengizinkan record baru. | Lihat signature dan isi fungsi. |
function delete(): ?bool | Menolak jalur perubahan yang tidak diperbolehkan untuk histori append-only atau model kunci gabungan. Perhatikan apakah save hanya mengizinkan record baru. | Lihat signature dan isi fungsi. |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 21bf43efd96ec387d87905c4f91b99d787680c00cf8ad1ebe2fa2f3866c7a700
app/Models/DetailMutasiStok.php38 baris · 3 fungsi bernama
Untuk apa
Produk dan jumlah tiap mutasi pada master dengan kunci gabungan.
Jika diminta mengubah
Mapping table, primaryKey, connection, casts dan relasi berada di model. Aturan transaksi dan perubahan stok tetap berada pada layanan TP.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function casts(): array | Mengatur konversi tipe atribut model. Pasangan atribut dan tipe asli terlihat pada potongan fungsi ini. | return [ |
function produk(): BelongsTo | Mendefinisikan relasi Eloquent dengan model tujuan serta foreign key dan owner key yang disebutkan. Relasi bukan penyalin data otomatis. | return $this->belongsTo(Produk::class, 'id_produk', 'id_produk'); |
function mutasi(): BelongsTo | Mendefinisikan relasi Eloquent dengan model tujuan serta foreign key dan owner key yang disebutkan. Relasi bukan penyalin data otomatis. | return $this->belongsTo(MutasiStok::class, 'id_mutasi_stok', 'id_mutasi_stok'); |
Mapping model
| Properti | Nilai kode |
|---|---|
$table | 'detail_mutasi_stok' |
$primaryKey | null |
$incrementing | false |
$timestamps | false |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 ca0f5c591b125a8c9e80ff20bfa0d72cdc031dc3022f4de959d3f149b7703b98
app/Models/DetailPembelian.php40 baris · 3 fungsi bernama
Untuk apa
Item penerimaan, harga beli dan jumlah rusak dengan kunci gabungan.
Jika diminta mengubah
Mapping table, primaryKey, connection, casts dan relasi berada di model. Aturan transaksi dan perubahan stok tetap berada pada layanan TP.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function casts(): array | Mengatur konversi tipe atribut model. Pasangan atribut dan tipe asli terlihat pada potongan fungsi ini. | return [ |
function pembelian(): BelongsTo | Mendefinisikan relasi Eloquent dengan model tujuan serta foreign key dan owner key yang disebutkan. Relasi bukan penyalin data otomatis. | return $this->belongsTo(Pembelian::class, 'id_pembelian', 'id_pembelian'); |
function produk(): BelongsTo | Mendefinisikan relasi Eloquent dengan model tujuan serta foreign key dan owner key yang disebutkan. Relasi bukan penyalin data otomatis. | return $this->belongsTo(Produk::class, 'id_produk', 'id_produk'); |
Mapping model
| Properti | Nilai kode |
|---|---|
$table | 'detail_pembelian' |
$primaryKey | null |
$incrementing | false |
$timestamps | false |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 ab37fc8afbd0c46f447945a7bd28274bd4bdbf7077979186c724ee6826ceb10c
app/Models/DetailPenjualan.php40 baris · 3 fungsi bernama
Untuk apa
Item penjualan, harga transaksi dan tanggal garansi dengan kunci gabungan.
Jika diminta mengubah
Mapping table, primaryKey, connection, casts dan relasi berada di model. Aturan transaksi dan perubahan stok tetap berada pada layanan TP.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function casts(): array | Mengatur konversi tipe atribut model. Pasangan atribut dan tipe asli terlihat pada potongan fungsi ini. | return [ |
function produk(): BelongsTo | Mendefinisikan relasi Eloquent dengan model tujuan serta foreign key dan owner key yang disebutkan. Relasi bukan penyalin data otomatis. | return $this->belongsTo(Produk::class, 'id_produk', 'id_produk'); |
function penjualan(): BelongsTo | Mendefinisikan relasi Eloquent dengan model tujuan serta foreign key dan owner key yang disebutkan. Relasi bukan penyalin data otomatis. | return $this->belongsTo(Penjualan::class, 'id_penjualan', 'id_penjualan'); |
Mapping model
| Properti | Nilai kode |
|---|---|
$table | 'detail_penjualan' |
$primaryKey | null |
$incrementing | false |
$timestamps | false |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 7d8e886d79ce912ee80ee3386663976cf6d02d001361b7520bb4c13f86716e14
app/Models/DomainModel.php20 baris · 0 fungsi bernama
Untuk apa
Induk model domain master dengan mass assignment ditutup dan token approval disembunyikan.
Jika diminta mengubah
Mapping table, primaryKey, connection, casts dan relasi berada di model. Aturan transaksi dan perubahan stok tetap berada pada layanan TP.
Mapping model
| Properti | Nilai kode |
|---|---|
$connection | 'master' |
$guarded | ['*'] |
$dateFormat | 'Y-m-d H:i:sP' |
$hidden | ['approval_token_hash'] |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 b3bfb4f736d9acaafefe046576b6069d9f765ae1ab4a9c0f5b135e1f6f2c5ff4
app/Models/KlaimGaransi.php31 baris · 2 fungsi bernama
Untuk apa
Status dan sumber klaim garansi.
Jika diminta mengubah
Mapping table, primaryKey, connection, casts dan relasi berada di model. Aturan transaksi dan perubahan stok tetap berada pada layanan TP.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function casts(): array | Mengatur konversi tipe atribut model. Pasangan atribut dan tipe asli terlihat pada potongan fungsi ini. | return [ |
function servis(): BelongsTo | Mendefinisikan relasi Eloquent dengan model tujuan serta foreign key dan owner key yang disebutkan. Relasi bukan penyalin data otomatis. | return $this->belongsTo(Servis::class, 'id_servis', 'id_servis'); |
Mapping model
| Properti | Nilai kode |
|---|---|
$table | 'klaim_garansi' |
$primaryKey | 'id_klaim_garansi' |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 2c54a98dc23b3bd5f15d532e69ba3deb959ab024bef281da6ed33e89b9abcc7d
app/Models/LogServis.php49 baris · 5 fungsi bernama
Untuk apa
Kronologi servis yang hanya boleh ditambah.
Jika diminta mengubah
Mapping table, primaryKey, connection, casts dan relasi berada di model. Aturan transaksi dan perubahan stok tetap berada pada layanan TP.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function save(array $options = []): bool | Menolak jalur perubahan yang tidak diperbolehkan untuk histori append-only atau model kunci gabungan. Perhatikan apakah save hanya mengizinkan record baru. | return parent::save($options); |
function delete(): ?bool | Menolak jalur perubahan yang tidak diperbolehkan untuk histori append-only atau model kunci gabungan. Perhatikan apakah save hanya mengizinkan record baru. | Lihat signature dan isi fungsi. |
function newEloquentBuilder(mixed $query): AppendOnlyLogBuilder | Mengganti builder biasa dengan AppendOnlyLogBuilder agar update atau delete melalui query model juga ditolak. | return new AppendOnlyLogBuilder($query); |
function casts(): array | Mengatur konversi tipe atribut model. Pasangan atribut dan tipe asli terlihat pada potongan fungsi ini. | return [ |
function servis(): BelongsTo | Mendefinisikan relasi Eloquent dengan model tujuan serta foreign key dan owner key yang disebutkan. Relasi bukan penyalin data otomatis. | return $this->belongsTo(Servis::class, 'id_servis', 'id_servis'); |
Mapping model
| Properti | Nilai kode |
|---|---|
$table | 'log_servis' |
$primaryKey | 'id_log_servis' |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 0b15833ebe237011b1bcdd890942f5203e8ad93dd26ef14db5ec7793bde4e3d8
app/Models/MutasiStok.php32 baris · 2 fungsi bernama
Untuk apa
Header mutasi dan keputusan pada master.
Jika diminta mengubah
Mapping table, primaryKey, connection, casts dan relasi berada di model. Aturan transaksi dan perubahan stok tetap berada pada layanan TP.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function casts(): array | Mengatur konversi tipe atribut model. Pasangan atribut dan tipe asli terlihat pada potongan fungsi ini. | return [ |
function details(): HasMany | Mendefinisikan relasi Eloquent dengan model tujuan serta foreign key dan owner key yang disebutkan. Relasi bukan penyalin data otomatis. | return $this->hasMany(DetailMutasiStok::class, 'id_mutasi_stok', 'id_mutasi_stok'); |
Mapping model
| Properti | Nilai kode |
|---|---|
$table | 'mutasi_stok' |
$primaryKey | 'id_mutasi_stok' |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 3dc9e3f61d9e87e08bd2677ac8e977e0cf924a9f61b75332e5819553cbca6469
app/Models/Pelanggan.php18 baris · 1 fungsi bernama
Untuk apa
Data pelanggan masing-masing tenant.
Jika diminta mengubah
Mapping table, primaryKey, connection, casts dan relasi berada di model. Aturan transaksi dan perubahan stok tetap berada pada layanan TP.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function casts(): array | Mengatur konversi tipe atribut model. Pasangan atribut dan tipe asli terlihat pada potongan fungsi ini. | return [ |
Mapping model
| Properti | Nilai kode |
|---|---|
$table | 'pelanggan' |
$primaryKey | 'id_pelanggan' |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 3bc82008bc2c33f0d3e9cb515c3a2bb7cf509ba89d8f91ba4e8e16a3e1893016
app/Models/Pembelian.php40 baris · 4 fungsi bernama
Untuk apa
Header penerimaan supplier pada tenant.
Jika diminta mengubah
Mapping table, primaryKey, connection, casts dan relasi berada di model. Aturan transaksi dan perubahan stok tetap berada pada layanan TP.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function casts(): array | Mengatur konversi tipe atribut model. Pasangan atribut dan tipe asli terlihat pada potongan fungsi ini. | return [ |
function details(): HasMany | Mendefinisikan relasi Eloquent dengan model tujuan serta foreign key dan owner key yang disebutkan. Relasi bukan penyalin data otomatis. | return $this->hasMany(DetailPembelian::class, 'id_pembelian', 'id_pembelian'); |
function supplier(): BelongsTo | Mendefinisikan relasi Eloquent dengan model tujuan serta foreign key dan owner key yang disebutkan. Relasi bukan penyalin data otomatis. | return $this->belongsTo(Supplier::class, 'id_supplier', 'id_supplier'); |
function pengguna(): BelongsTo | Mendefinisikan relasi Eloquent dengan model tujuan serta foreign key dan owner key yang disebutkan. Relasi bukan penyalin data otomatis. | return $this->belongsTo(Pengguna::class, 'id_pengguna', 'id_pengguna'); |
Mapping model
| Properti | Nilai kode |
|---|---|
$table | 'pembelian' |
$primaryKey | 'id_pembelian' |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 c4534ec4cbc0eb2abfd69af25fe6b9a014d9b7cd9c6d78cba90f053a2b21ae5b
app/Models/Pengguna.php78 baris · 6 fungsi bernama
Untuk apa
Akun autentikasi master, hash password, identitas session, role dan penempatan.
Jika diminta mengubah
Mapping table, primaryKey, connection, casts dan relasi berada di model. Aturan transaksi dan perubahan stok tetap berada pada layanan TP.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function casts(): array | Mengatur konversi tipe atribut model. Pasangan atribut dan tipe asli terlihat pada potongan fungsi ini. | return [ |
function email(): Attribute | Menormalisasi email menjadi huruf kecil dan memangkas spasi saat atribut diset. | return Attribute::make(set: fn (string $value) => mb_strtolower(trim($value))); |
function cabang(): BelongsTo | Mendefinisikan relasi Eloquent dengan model tujuan serta foreign key dan owner key yang disebutkan. Relasi bukan penyalin data otomatis. | return $this->belongsTo(Cabang::class, 'id_cabang', 'id_cabang'); |
function sessionIdentity(): array | Menghasilkan ID, role, cabang dan status untuk dibandingkan dengan identitas session. | return [ |
function isOwner(): bool | Mendelegasikan pemeriksaan owner kepada RoleAccess. | return RoleAccess::isOwner($this->role); |
function canActAs(string ...$roles): bool | Memakai aturan RoleAccess untuk kemampuan yang diminta. | return RoleAccess::allows($this->role, $roles); |
Mapping model
| Properti | Nilai kode |
|---|---|
$connection | 'master' |
$table | 'pengguna' |
$primaryKey | 'id_pengguna' |
$incrementing | true |
$keyType | 'int' |
$dateFormat | 'Y-m-d H:i:sP' |
$guarded | ['*'] |
$hidden | ['password_hash', 'approval_token_hash', 'remember_token'] |
$authPasswordName | 'password_hash' |
$rememberTokenName | '' |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 37750af5858e8cc7164074e118b038e58f1885effb609c0a41434792340d3828
app/Models/Pengiriman.php28 baris · 2 fungsi bernama
Untuk apa
Data pengiriman satu penjualan online.
Jika diminta mengubah
Mapping table, primaryKey, connection, casts dan relasi berada di model. Aturan transaksi dan perubahan stok tetap berada pada layanan TP.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function casts(): array | Mengatur konversi tipe atribut model. Pasangan atribut dan tipe asli terlihat pada potongan fungsi ini. | return [ |
function penjualan(): BelongsTo | Mendefinisikan relasi Eloquent dengan model tujuan serta foreign key dan owner key yang disebutkan. Relasi bukan penyalin data otomatis. | return $this->belongsTo(Penjualan::class, 'id_penjualan', 'id_penjualan'); |
Mapping model
| Properti | Nilai kode |
|---|---|
$table | 'pengiriman' |
$primaryKey | 'id_pengiriman' |
$timestamps | false |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 5fbc5a271fa7f8d75dd55cbf01b6d5b031faf808eb15e2c2b8f1853ffa8f2775
app/Models/Penjualan.php39 baris · 3 fungsi bernama
Untuk apa
Header penjualan toko atau online pada tenant.
Jika diminta mengubah
Mapping table, primaryKey, connection, casts dan relasi berada di model. Aturan transaksi dan perubahan stok tetap berada pada layanan TP.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function casts(): array | Mengatur konversi tipe atribut model. Pasangan atribut dan tipe asli terlihat pada potongan fungsi ini. | return [ |
function details(): HasMany | Mendefinisikan relasi Eloquent dengan model tujuan serta foreign key dan owner key yang disebutkan. Relasi bukan penyalin data otomatis. | return $this->hasMany(DetailPenjualan::class, 'id_penjualan', 'id_penjualan'); |
function pelanggan(): BelongsTo | Mendefinisikan relasi Eloquent dengan model tujuan serta foreign key dan owner key yang disebutkan. Relasi bukan penyalin data otomatis. | return $this->belongsTo(Pelanggan::class, 'id_pelanggan', 'id_pelanggan'); |
Mapping model
| Properti | Nilai kode |
|---|---|
$table | 'penjualan' |
$primaryKey | 'id_penjualan' |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 d5582c39e2a7faf1dd66cd4cae4ee398a53be7df9811b22aa914464af0cd1067
app/Models/Produk.php22 baris · 1 fungsi bernama
Untuk apa
Produk master, harga, kategori, merek, satuan dan garansi.
Jika diminta mengubah
Mapping table, primaryKey, connection, casts dan relasi berada di model. Aturan transaksi dan perubahan stok tetap berada pada layanan TP.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function casts(): array | Mengatur konversi tipe atribut model. Pasangan atribut dan tipe asli terlihat pada potongan fungsi ini. | return [ |
Mapping model
| Properti | Nilai kode |
|---|---|
$table | 'produk' |
$primaryKey | 'id_produk' |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 38b8976dfd49b5a0cf9b5fb714c234430c10648f45e55413b0776646292fa42d
app/Models/ProdukCabang.php37 baris · 2 fungsi bernama
Untuk apa
Dua jenis stok per pasangan produk dan cabang.
Jika diminta mengubah
Mapping table, primaryKey, connection, casts dan relasi berada di model. Aturan transaksi dan perubahan stok tetap berada pada layanan TP.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function casts(): array | Mengatur konversi tipe atribut model. Pasangan atribut dan tipe asli terlihat pada potongan fungsi ini. | return [ |
function produk(): BelongsTo | Mendefinisikan relasi Eloquent dengan model tujuan serta foreign key dan owner key yang disebutkan. Relasi bukan penyalin data otomatis. | return $this->belongsTo(Produk::class, 'id_produk', 'id_produk'); |
Mapping model
| Properti | Nilai kode |
|---|---|
$table | 'produk_cabang' |
$primaryKey | null |
$incrementing | false |
$timestamps | true |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 e50a0364c4a16b91803e1bfcb267681b4f0be4d587ad4403d1a5af8ac4ccfca7
app/Models/Servis.php45 baris · 4 fungsi bernama
Untuk apa
Unit servis, penerima, teknisi, biaya, garansi dan kronologi.
Jika diminta mengubah
Mapping table, primaryKey, connection, casts dan relasi berada di model. Aturan transaksi dan perubahan stok tetap berada pada layanan TP.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function casts(): array | Mengatur konversi tipe atribut model. Pasangan atribut dan tipe asli terlihat pada potongan fungsi ini. | return [ |
function pelanggan(): BelongsTo | Mendefinisikan relasi Eloquent dengan model tujuan serta foreign key dan owner key yang disebutkan. Relasi bukan penyalin data otomatis. | return $this->belongsTo(Pelanggan::class, 'id_pelanggan', 'id_pelanggan'); |
function spareparts(): HasMany | Mendefinisikan relasi Eloquent dengan model tujuan serta foreign key dan owner key yang disebutkan. Relasi bukan penyalin data otomatis. | return $this->hasMany(SparepartServis::class, 'id_servis', 'id_servis'); |
function logs(): HasMany | Mendefinisikan relasi Eloquent dengan model tujuan serta foreign key dan owner key yang disebutkan. Relasi bukan penyalin data otomatis. | return $this->hasMany(LogServis::class, 'id_servis', 'id_servis'); |
Mapping model
| Properti | Nilai kode |
|---|---|
$table | 'servis' |
$primaryKey | 'id_servis' |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 e47251eda213cc03212fe0c4f35e0d8c8f4708e2ea246a2a5df1ed7a1f2f83d9
app/Models/SparepartServis.php40 baris · 3 fungsi bernama
Untuk apa
Produk yang digunakan pada servis dengan kunci gabungan.
Jika diminta mengubah
Mapping table, primaryKey, connection, casts dan relasi berada di model. Aturan transaksi dan perubahan stok tetap berada pada layanan TP.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function casts(): array | Mengatur konversi tipe atribut model. Pasangan atribut dan tipe asli terlihat pada potongan fungsi ini. | return [ |
function servis(): BelongsTo | Mendefinisikan relasi Eloquent dengan model tujuan serta foreign key dan owner key yang disebutkan. Relasi bukan penyalin data otomatis. | return $this->belongsTo(Servis::class, 'id_servis', 'id_servis'); |
function produk(): BelongsTo | Mendefinisikan relasi Eloquent dengan model tujuan serta foreign key dan owner key yang disebutkan. Relasi bukan penyalin data otomatis. | return $this->belongsTo(Produk::class, 'id_produk', 'id_produk'); |
Mapping model
| Properti | Nilai kode |
|---|---|
$table | 'sparepart_servis' |
$primaryKey | null |
$incrementing | false |
$timestamps | false |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 c195dcba9684d82b85c3b991bab29b0c7a7711935df9a335474fcfadee9a38ce
app/Models/Supplier.php18 baris · 1 fungsi bernama
Untuk apa
Supplier master.
Jika diminta mengubah
Mapping table, primaryKey, connection, casts dan relasi berada di model. Aturan transaksi dan perubahan stok tetap berada pada layanan TP.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function casts(): array | Mengatur konversi tipe atribut model. Pasangan atribut dan tipe asli terlihat pada potongan fungsi ini. | return [ |
Mapping model
| Properti | Nilai kode |
|---|---|
$table | 'supplier' |
$primaryKey | 'id_supplier' |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 855c26babf7e659cd80a32f0d4fddb222a2639be52954472fee1acf0a4d73431
app/Models/TenantModel.php21 baris · 1 fungsi bernama
Untuk apa
Induk model tenant yang mewajibkan TenantContext sah untuk memilih koneksi.
Jika diminta mengubah
Mapping table, primaryKey, connection, casts dan relasi berada di model. Aturan transaksi dan perubahan stok tetap berada pada layanan TP.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function getConnectionName(): string | Mengambil koneksi dari tenant request yang sah dan menolak penggantian koneksi yang bertentangan. | return $tenant->connection; |
Mapping model
| Properti | Nilai kode |
|---|---|
$connection | null |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 577258715f4a34c12b310e1ec024d3ac138c7e070cd5927a0a2da60c079edbb0
app/Notifications/InstitutionInvoiceApprovalNotification.php25 baris · 3 fungsi bernama
Untuk apa
Notifikasi nota instansi.
Jika diminta mengubah
Ubah judul dan isi pada toMail serta template Blade yang dirujuk. Email bukan sumber kebenaran status transaksi.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(public readonly string $approvalUrl, public readonly string $number) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function via(object $notifiable): array | Menetapkan kanal pengiriman notifikasi. | return ['mail']; |
function toMail(object $notifiable): MailMessage | Menyusun subjek, isi, dan tautan terkait nota instansi. | return (new MailMessage)->subject('Persetujuan nota instansi '.$this->number) |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 28d3498ff91608a3ee8aa9c3105353dd0b1e7b0d469ef671ad7501198c567f4f
app/Notifications/OnlineOrderPaidNotification.php48 baris · 3 fungsi bernama
Untuk apa
Notifikasi pesanan online lunas.
Jika diminta mengubah
Ubah judul dan isi pada toMail serta template Blade yang dirujuk. Email bukan sumber kebenaran status transaksi.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(
public readonly string $trackingUrl,
public readonly string $saleNumber,
public readonly string $branchName,
public readonly int $total,
public readonly string $trackingCode,
public readonly array $items,
public readonly string $customerName = 'Pelanggan',
public readonly string $paymentMethod = 'Pembayaran digital',
public readonly string $fulfillmentMethod = 'Pesanan',
) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function via(object $notifiable): array | Menetapkan kanal pengiriman notifikasi. | return ['mail']; |
function toMail(object $notifiable): MailMessage | Menyusun subjek, isi, dan tautan terkait pesanan online lunas. | return (new MailMessage) |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 a9c56758d851d8e4acbfe17d433ea42656710bc200013b450311690ac01de264
app/Notifications/SpecialPriceApprovalNotification.php34 baris · 3 fungsi bernama
Untuk apa
Notifikasi harga khusus.
Jika diminta mengubah
Ubah judul dan isi pada toMail serta template Blade yang dirujuk. Email bukan sumber kebenaran status transaksi.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(
public readonly string $approvalUrl,
public readonly string $saleNumber,
public readonly string $branchName,
) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function via(object $notifiable): array | Menetapkan kanal pengiriman notifikasi. | return ['mail']; |
function toMail(object $notifiable): MailMessage | Menyusun subjek, isi, dan tautan terkait harga khusus. | return (new MailMessage) |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 d32bebd02eb8ce724fd88910563fae6698b570313e83e90173e310cf48e50878
app/Notifications/StockTransferApprovalNotification.php24 baris · 3 fungsi bernama
Untuk apa
Notifikasi transfer stok.
Jika diminta mengubah
Ubah judul dan isi pada toMail serta template Blade yang dirujuk. Email bukan sumber kebenaran status transaksi.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(public readonly string $approvalUrl, public readonly int $transferId) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function via(object $notifiable): array | Menetapkan kanal pengiriman notifikasi. | return ['mail']; |
function toMail(object $notifiable): MailMessage | Menyusun subjek, isi, dan tautan terkait transfer stok. | return (new MailMessage)->subject('Persetujuan mutasi stok #'.$this->transferId) |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 76c09197f0583d9f8403c291daf24f33190bea43f27fbf7ea9487e2bd84b14d3
app/Observers/PenggunaObserver.php16 baris · 1 fungsi bernama
Untuk apa
Reaksi ketika hak pengguna berubah melalui model.
Jika diminta mengubah
Query builder yang melewati event model tidak otomatis memanggil observer.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function updated(Pengguna $pengguna): void | Mencabut session jika id_cabang, role, atau status_akun berubah. | Lihat signature dan isi fungsi. |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 3a30b0d6b16bae000c1b2451fd912791871cbd847022f21de5d6e4188994164b
app/Providers/AppServiceProvider.php57 baris · 2 fungsi bernama
Untuk apa
Pendaftaran tenant scoped, observer pengguna, pembatasan Sanctum, dan rate limiter login.
Jika diminta mengubah
Tambah layanan scoped pada register. Aturan awal aplikasi dan limiter berada pada boot.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function register(): void | Mendaftarkan TenantContext dengan masa hidup satu request. | Panggilan app.scoped |
function boot(): void | Mewajibkan dukungan Argon2id, memasang proxy tepercaya, observer, menonaktifkan bearer token Sanctum, dan mendefinisikan limiter email plus IP serta limiter IP agregat. | Respons JSON |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 23a94534b701c7c744ebb626d18205da1d21e6c9dea8ade40a72836ab593b026
app/Services/Audit/AuditLogger.php258 baris · 6 fungsi bernama
Untuk apa
Catatan kejadian keamanan, hak pengguna, UDI pelanggan, dan perubahan CDI.
Jika diminta mengubah
recordCdi dan recordMasterUserChange harus berhasil dalam transaksi yang sesuai. record keamanan dan fanout recordUserChange dapat mencatat kegagalan lalu melanjutkan.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(private TenantResolver $resolver) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function record(
string $action,
?Pengguna $pengguna,
Request $request,
array $before = [],
array $after = [],
?array $branchIds = null,
): void | Mencatat kejadian keamanan ke cabang tujuan dengan field allowlist. Kegagalan tujuan dicatat pada log, tidak dilempar ulang. | Tabel audit_log Panggilan resolver.resolve |
function recordMasterUserChange(
Connection $db,
string $action,
Pengguna $actor,
Pengguna $subject,
Request $request,
array $before,
array $after,
array $changedFields = [],
): void | Menulis audit_hak_pengguna pada transaksi master yang sama dengan perubahan akun. Kegagalan menyebabkan exception. | Audit hak pada master Tabel audit_hak_pengguna |
function recordUserChange(
string $action,
Pengguna $actor,
Pengguna $subject,
Request $request,
array $before = [],
array $after = [],
): void | Menyebarkan ringkasan perubahan hak ke cabang terkait. Ini tambahan terhadap audit master yang menjadi catatan utama. | Tabel audit_log Panggilan resolver.resolve |
function recordGuestUdi(
Connection $db,
string $table,
int $id,
string $action,
Request $request,
array $before,
array $after,
): void | Mencatat tahap input publik tanpa aktor internal pada transaksi tenant yang sama. Field dibatasi menurut entity. | Audit input publik Tabel audit_log |
function recordCdi(
Connection $db,
string $table,
int $id,
string $action,
Pengguna $actor,
Request $request,
array $before,
array $after,
): void | Mencatat sebelum dan sesudah CDI melalui allowlist entity. Kegagalan audit melempar IntegrityViolation agar transaksi pemanggil dibatalkan. | Audit CDI wajib Tabel audit_log |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 03b0cd5ae13824868d08275fb0e473aee28c481900c0ebe419c8090be277d7ae
app/Services/Integrity/GlobalIntegrityVerifier.php524 baris · 12 fungsi bernama
Untuk apa
IVP menyeluruh untuk data master, tenant, riwayat, dan coordinator.
Jika diminta mengubah
Penambahan tabel atau aturan bisnis harus disertai perluasan verifier dan data uji rusaknya.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(
private InstitutionInvoiceIntegrity $institutionInvoices,
private WarrantyClaimHistory $warrantyHistory,
) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function verifyMaster(): array | Memeriksa cabang, pengguna, supplier, produk, mutasi, hak pengguna, dan hubungan coordinator yang tersimpan. | Tabel cabang, pengguna, supplier, produk, mutasi_stok, detail_mutasi_stok, audit_hak_pengguna Assertion assertJson |
function verifyTenant(ResolvedTenant $tenant): array | Memeriksa seluruh kelompok CDI tenant termasuk stok, pembelian, penjualan, servis, garansi, retur, nota dan audit. | Pemeriksaan IVP Tabel produk, supplier, pengguna, pelanggan, produk_cabang, pembelian, detail_pembelian, penjualan, detail_penjualan, pengiriman Panggilan warrantyHistory.verify, institutionInvoices.verify |
function verifyDistributedTransactions(Connection $db): int | Memvalidasi identitas, peserta, keputusan, dan hubungan jurnal transaksi terdistribusi. | Tabel distributed_transactions, mutasi_stok |
function verifyInstitutionInvoiceHistory(Connection $db, object $invoice, array $userIds): void | Merekonstruksi versi dan status nota dari histori dan membandingkannya dengan keadaan terakhir. | Tabel histori_nota_instansi |
function verifyOfflineSaleState(object $sale, int $total): void | Memvalidasi aktor internal, kanal, pembayaran, status penjualan toko, dan approval. | Lihat signature dan isi fungsi. |
function verifyOnlineSaleState(Connection $db, object $sale, int $total): void | Memvalidasi kombinasi pembayaran, status, approval dan pengiriman pesanan online. | Tabel pengiriman |
function verifyStoredService(Connection $db, object $service, int $branchId, array $userIds, array $productIds): void | Memeriksa referensi, kronologi, biaya, sparepart, log, dan penyerahan servis tersimpan. | Tabel pelanggan, sparepart_servis, log_servis |
function verifyReturns(Connection $db, int $branchId, array $userIds, array $productIds): void | Memeriksa sumber, rincian, jumlah kumulatif, nilai refund, dan kesesuaian retur. | Tabel retur_penjualan, penjualan, detail_retur_penjualan, detail_penjualan, retur_pembelian, pembelian, detail_retur_pembelian, detail_pembelian |
function verifyAuditRows(Connection $db, array $userIds): void | Memeriksa bentuk audit tenant dan snapshot JSON yang diperlukan. | Tabel audit_log Assertion assertJson |
function assertJson(mixed $value, bool $required = false): void | Memastikan nilai JSON audit dapat diperiksa sebagai objek. | Lihat signature dan isi fungsi. |
function decodeJsonObject(mixed $value, bool $required = false): array | Menolak JSON hilang, rusak, atau bukan objek untuk snapshot yang diwajibkan. | return []; |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 1b9b9d6bc0fd9485ef1b1bd1a5893868fc0fd208c3214a1e96fc0c58bc3095f4
app/Services/Integrity/InstitutionInvoiceIntegrity.php30 baris · 1 fungsi bernama
Untuk apa
IVP nota instansi terhadap transaksi sumber.
Jika diminta mengubah
Sumber harus lunas dan selesai. Penyusun atau pengaju tidak boleh menjadi pemutus yang sama.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function verify(Connection $db, object $invoice, int $branchId): void | Memeriksa cabang, penjualan sumber, total detail, status, versi dan pemisahan pelaku nota. | Tabel penjualan, detail_penjualan |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 d780461b668b630cde8db1d76482d97b4f84c1aa5d833ea94d94c9955a8ee321
app/Services/Integrity/IntegrityViolation.php7 baris · 0 fungsi bernama
Untuk apa
Jenis exception untuk invariant bisnis yang dilanggar.
Jika diminta mengubah
Dilempar agar transaksi pemanggil dapat rollback dan handler mengirim respons aman.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 34051e798b31b51a7ec19a9f4901859685f92dc1d8be4049c6b20d542cf6a08f
app/Services/Integrity/MasterDataIntegrity.php115 baris · 2 fungsi bernama
Untuk apa
Validasi perubahan dan hasil data master.
Jika diminta mengubah
Aturan konsistensi bisnis terpisah dari validasi tipe Request.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function validateMutation(string $entity, ?Model $existing, array $values): void | Memeriksa perubahan cabang agar tidak merusak mapping dan referensi yang diperlukan. | Lihat signature dan isi fungsi. |
function verify(string $entity, Model $model): void | Memastikan nilai produk dan cabang sesuai invariant serta nama cabang ternormalisasi tidak ganda. | Lihat signature dan isi fungsi. |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 be673cdc0d58dc205ad16e04efe37abc82e738dc2accf97c8c6f2a2a1ef113ca
app/Services/Integrity/OnlineOrderIntegrity.php148 baris · 4 fungsi bernama
Untuk apa
IVP tahap awal dan tahap lunas online order.
Jika diminta mengubah
Stok baru dianggap berubah ketika workflow pembayaran benar-benar diterima.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(
private SalePricing $pricing,
private OnlinePaymentProofStorage $proofs,
) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function verifyPending(
object $header,
array $details,
array $expectedPrices,
ResolvedTenant $tenant,
bool $shipping,
): void | Memeriksa keadaan awal, snapshot harga, garansi, dan pengiriman tanpa mengasumsikan pembayaran lunas. | Tabel pengiriman |
function verifyPaid(
object $header,
array $details,
array $before,
array $after,
array $products,
Pengguna $actor,
ResolvedTenant $tenant,
CarbonImmutable $paidAt,
): void | Memeriksa bukti, referensi, total, garansi, status pembayaran, dan persamaan stok setelah verifikasi. | IVP pesanan lunas Panggilan proofs.validPath, proofs.exists, pricing.total |
function verifyTenantAndDetails(object $header, array $details, ResolvedTenant $tenant): void | Memeriksa tenant pelanggan dan keutuhan item pesanan. | Tabel pelanggan |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 33dcd2fcdb527efbb55d8f197feb723686502603de0dab313ab2fb0e95d3b8dc
app/Services/Integrity/PurchaseIntegrity.php91 baris · 2 fungsi bernama
Untuk apa
IVP pembelian dan perubahan stok penerimaan.
Jika diminta mengubah
Contoh persamaan tersedia akhir sama dengan awal ditambah jumlah diterima dikurangi rusak.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function verify(object $header, array $details, array $before, array $after, ResolvedTenant $tenant): void | Memeriksa referensi master, aktor, cabang, status, detail unik, dan persamaan dua jenis stok. | Lihat signature dan isi fungsi. |
function verifyStored(int $purchaseId, ResolvedTenant $tenant): void | Membaca pembelian, detail, serta snapshot audit yang tersimpan untuk memverifikasi pembelian secara ulang. | Pemeriksaan IVP Tabel pembelian, detail_pembelian, audit_log |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 961760059fc84dcc30ecd71e39f722cc9ba5a978423833a6fb3279b4266d0bea
app/Services/Integrity/SaleIntegrity.php213 baris · 7 fungsi bernama
Untuk apa
IVP penjualan normal, pengajuan harga khusus, dan penolakan.
Jika diminta mengubah
Harga, pembayaran, garansi, dan stok diperiksa terhadap referensi server.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(private SalePricing $pricing) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function verifyCompleted(
object $header,
array $details,
array $before,
array $after,
array $expectedPrices,
ResolvedTenant $tenant,
bool $specialPrice = false,
): void | Memeriksa penjualan selesai, harga, garansi, pembayaran, approval, dan stok akhir. | IVP penjualan selesai Panggilan pricing.normalPrice |
function verifyPendingSpecial(object $header, array $details, array $normalPrices, ResolvedTenant $tenant): void | Memeriksa pengajuan belum selesai, harga diminta, serta kecukupan stok saat pengajuan. | Tabel produk_cabang |
function verifyRejected(object $header, array $details, ResolvedTenant $tenant): void | Memeriksa keadaan penolakan dan pembatalan konsisten. | Lihat signature dan isi fungsi. |
function verifyReferences(
object $header,
array $details,
ResolvedTenant $tenant,
array $roles,
bool $requireActiveProducts = true,
): array | Memeriksa aktor, cabang, pelanggan, kanal, produk, serta keunikan detail. | Tabel pelanggan |
function verifyPayment(object $header, array $details): void | Memeriksa total, uang bayar dan persamaan kembalian. | Panggilan pricing.total |
function warrantyDate(mixed $soldAt, Produk $product): ?string | Menghitung tanggal akhir garansi dari waktu transaksi dan jumlah hari produk. | return $days > 0 ? CarbonImmutable::parse((string) $soldAt)->utc()->addDays($days)->toDateString() : null; |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 d6c3e5473aea9fb4812fecf3e264c2e008a7c3d554bbdbf4c005680fd5240821
app/Services/Integrity/ServiceIntegrity.php143 baris · 2 fungsi bernama
Untuk apa
IVP servis, peran pelaku, log, biaya, kronologi, dan stok sparepart.
Jika diminta mengubah
Operasi teknis harus sesuai teknisi yang ditugaskan dan berbeda dari penerima.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function verify(
object $service, ?object $before, object $log, Pengguna $actor, ResolvedTenant $tenant,
string $operation, array $stockBefore = [], array $stockAfter = [], array $prices = [],
): void | Membandingkan sebelum dan sesudah servis dengan operasi, aktor, tenant, log dan perubahan stok. | Kunci referensi baca Tabel pelanggan, sparepart_servis, audit_log |
function validUser(?Pengguna $user, string $capability, int $branchId): bool | Memastikan referensi pengguna aktif, memiliki kemampuan, dan sesuai cabang. | return $user && $user->status_akun === 'aktif' && $user->canActAs($capability) |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 e77c12662dfbfbb0d7c511bfd48310a1a014f725ac1205ace8be5408d61cdf62
app/Services/Integrity/StockTransferIntegrity.php138 baris · 3 fungsi bernama
Untuk apa
IVP keutuhan pengajuan, audit mutasi, dan persamaan stok dua cabang.
Jika diminta mengubah
Fingerprint bukan signature pihak ketiga. Nilainya digunakan untuk membandingkan isi pengajuan dan audit.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function fingerprint(object $header, array $details): string | Menghasilkan fingerprint dari data pengajuan yang seharusnya tidak berubah. | return hash('sha256', json_encode($values, JSON_THROW_ON_ERROR)); |
function assertRequest(object $header, array $details): void | Memastikan catatan pengajuan tunggal dan fingerprint sesuai snapshot audit. | Tabel audit_log |
function verify(int $id, string $phase, Pengguna $actor, array $before): void | Memeriksa peserta, pelaku, status persetujuan, detail serta persamaan stok asal dan tujuan. | Tabel mutasi_stok, detail_mutasi_stok, audit_log, produk_cabang Assertion assertRequest |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 6caf606e6cf9eddbe7a282c00fea6d1fbe2511f4de3de9cd1a383a13256be296
app/Services/Integrity/WarrantyClaimHistory.php95 baris · 2 fungsi bernama
Untuk apa
Rekonstruksi perjalanan klaim dari audit.
Jika diminta mengubah
Perubahan tabel klaim tanpa audit yang sesuai harus terdeteksi oleh IVP.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function snapshot(object|array $claim): array | Membentuk snapshot klaim dengan field yang dibutuhkan rekonstruksi. | return $state; |
function verify(object $claim, ResolvedTenant $tenant): array | Menyusun ulang transisi, pelaku frontdesk, dan waktu dari audit serta mencocokkan keadaan terakhir. | Navigasi browser Tabel audit_log |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 9bd86c29c0b10fe1d989b4374ce8869a6c8db078b2b4e206076858d53b1cebe7
app/Services/Integrity/WarrantyClaimIntegrity.php76 baris · 2 fungsi bernama
Untuk apa
IVP klaim setelah transaksi dijalankan.
Jika diminta mengubah
Kelayakan sumber, sejarah, urutan status, dan SoD diperiksa bersamaan.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(private WarrantySource $sources, private WarrantyClaimHistory $history) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function verify(object $claim, ?object $before, Pengguna $actor, ResolvedTenant $tenant, string $operation, CarbonImmutable $processedAt): void | Memeriksa aktor, tenant, keluhan, sumber, masa garansi, transisi, serta kesesuaian audit dengan klaim. | Kunci referensi baca Pemeriksaan IVP Tabel klaim_garansi Panggilan sources.resolve, sources.eligible, history.verify, history.snapshot |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 a0895db5c19ac096beaa2bd58038796ad80c9ea3c549ce1d2cb46ebb83f05d78
app/Services/Integrity/WarrantySource.php113 baris · 4 fungsi bernama
Untuk apa
Penentuan satu sumber klaim dan masa garansinya.
Jika diminta mengubah
Sumber klaim merupakan servis atau pasangan item penjualan, tidak keduanya sekaligus.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function key(object|array $source): array | Membentuk identitas sumber dan menolak kombinasi sumber tidak lengkap. | return $key; |
function resolve(object|array $source, ResolvedTenant $tenant, bool $lock = false): array | Mengunci serta membaca sumber pada tenant, memastikan sumber selesai dan memiliki garansi. | Kunci baris perubahan Kunci referensi baca Tabel servis, penjualan, detail_penjualan |
function eligible(array $source, CarbonImmutable $time): bool | Memeriksa waktu klaim terhadap jendela garansi. | return $time->gte($source['start']) && $time->lte($source['expires']); |
function claims(ResolvedTenant $tenant): Builder | Menyusun kriteria klaim yang terhubung pada sumber yang sama. | return KlaimGaransi::query()->where(function (Builder $query) use ($branch): void { |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 24a803dcdbba09b2d0f23e5e786189713389829b8fcd1388766746c8900026e0
app/Services/Inventory/ApplySaleReturnStock.php70 baris · 2 fungsi bernama
Untuk apa
Menerapkan perubahan stok akibat refund atau tukar barang.
Jika diminta mengubah
Aritmetika stok utama berada di fungsi PostgreSQL. Pertahankan keharusan transaksi dan pemeriksaan hasil.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function handle(
Connection $db,
int $branchId,
int $productId,
int $quantity,
string $condition,
string $solution,
): array | Memeriksa input serta transaksi aktif, memanggil rajawali_stock_sale_return dengan parameter binding, dan memetakan kegagalan atau hasilnya. | return inventory TP received invalid input.'); |
function snapshot(object $row, int $branchId, int $productId): array | Membentuk snapshot stok sebelum dan sesudah dengan ID produk serta cabang. | return [ |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 6f91bf7decfb25a6277666e3fd335fd0c43be49f847bc036007a72ab7918d783
app/Services/Inventory/EnsureStockRow.php23 baris · 1 fungsi bernama
Untuk apa
Menyiapkan baris stok kosong jika belum ada.
Jika diminta mengubah
Aritmetika stok utama berada di fungsi PostgreSQL. Pertahankan keharusan transaksi dan pemeriksaan hasil.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function handle(Connection $db, int $branchId, int $productId): void | Memeriksa input serta transaksi aktif, memanggil rajawali_stock_ensure dengan parameter binding, dan memetakan kegagalan atau hasilnya. | Lihat signature dan isi fungsi. |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 faf44479fd2f2563a6a13dfe4ef08ff5632a8966caddeb6f9d92c346fa3a1356
app/Services/Inventory/IssueStock.php53 baris · 1 fungsi bernama
Untuk apa
Mengurangi stok tersedia.
Jika diminta mengubah
Aritmetika stok utama berada di fungsi PostgreSQL. Pertahankan keharusan transaksi dan pemeriksaan hasil.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function handle(Connection $db, int $branchId, int $productId, int $quantity): array | Memeriksa input serta transaksi aktif, memanggil rajawali_stock_issue dengan parameter binding, dan memetakan kegagalan atau hasilnya. | return [ |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 c1ff3c27ec55c57a86f5bea3539979029b859d741af522e1eb00f5b5586c6547
app/Services/Inventory/ReceiveStock.php56 baris · 2 fungsi bernama
Untuk apa
Menambah stok tersedia dan stok karantina dari penerimaan.
Jika diminta mengubah
Aritmetika stok utama berada di fungsi PostgreSQL. Pertahankan keharusan transaksi dan pemeriksaan hasil.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function handle(Connection $db, int $branchId, int $productId, int $quantity, int $damaged = 0): array | Memeriksa input serta transaksi aktif, memanggil rajawali_stock_receive dengan parameter binding, dan memetakan kegagalan atau hasilnya. | return $this->snapshot($row, $branchId, $productId); |
function snapshot(object $row, int $branchId, int $productId): array | Membentuk snapshot stok sebelum dan sesudah dengan ID produk serta cabang. | return [ |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 93f0d00515841662ba9eb254cdf14363840ead8911f6c0ea8a2cacffd307f0ac
app/Services/Inventory/ReturnQuarantinedStock.php51 baris · 1 fungsi bernama
Untuk apa
Mengurangi stok karantina untuk retur ke supplier.
Jika diminta mengubah
Aritmetika stok utama berada di fungsi PostgreSQL. Pertahankan keharusan transaksi dan pemeriksaan hasil.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function handle(Connection $db, int $branchId, int $productId, int $quantity): array | Memeriksa input serta transaksi aktif, memanggil rajawali_stock_purchase_return dengan parameter binding, dan memetakan kegagalan atau hasilnya. | return inventory TP received invalid input.'); |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 9277f14acdd6439eb18328b66b3a69a121fe23a6fb134b78a5bffb4df7749d59
app/Services/MasterData/MasterDataDefinition.php67 baris · 3 fungsi bernama
Untuk apa
Daftar model, field yang boleh diubah, dan aturan data master.
Jika diminta mengubah
Untuk field produk baru, edit fields dan rules. Form di MasterDataPanel merupakan langkah terpisah.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function model(string $entity): string | Memilih kelas model berdasarkan entity cabang, supplier, atau produk. | return match ($entity) { |
function fields(string $entity): array | Mengembalikan allowlist kolom bisnis per entity. | return match ($entity) { |
function rules(string $entity, ?int $id = null): array | Menentukan required atau sometimes, tipe, batas angka, enum, dan aturan unik untuk create atau update. | return match ($entity) { |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 315158afc272410b563312666561017067a2d5ae959c8fa5c888b60842bc7f84
app/Services/MasterData/SaveMasterData.php82 baris · 2 fungsi bernama
Untuk apa
Jalur penyimpanan terkontrol data master.
Jika diminta mengubah
Audit cabang dijalankan melalui transaksi koneksi masing-masing. Ini bukan 2PC lintas seluruh tujuan audit.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(
private BusinessAccess $access,
private MasterDataIntegrity $integrity,
private TenantResolver $resolver,
private AuditLogger $audit,
) | Menyimpan field objek input bertipe. Jalur fromInput atau validate memeriksa nilai sebelum objek dipakai. | Lihat signature dan isi fungsi. |
function handle(string $entity, ?int $id, array $input, Pengguna $actor, Request $request): Model | Memvalidasi field, menahan referensi dan lock yang diperlukan, menjalankan pemeriksaan perubahan serta hasil, menyimpan model, lalu menulis audit pada tujuan tenant yang tersedia. | Batas transaksi Kunci baris perubahan Relasi aktor dan TP Audit CDI wajib Pemeriksaan IVP Panggilan access.actorFor, resolver.resolve, integrity.validateMutation, integrity.verify, audit.recordCdi |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 95ade2629384fc1422f53e210b030669e28ad53e0b739bb09556b60e362b52d2
app/Services/Notifications/NotificationReader.php121 baris · 2 fungsi bernama
Untuk apa
Ringkasan tugas nyata dari data operasional.
Jika diminta mengubah
Tambahkan tugas dengan tujuan menu yang benar dan role yang dapat menindaklanjutinya.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function read(Pengguna $actor): array | Membaca pengajuan harga khusus, transfer, nota, online order, servis, dan klaim sesuai role serta tenant. | Tabel penjualan, mutasi_stok, nota_instansi, servis, klaim_garansi |
function push(array &$items, string $id, string $title, int $count, string $description, string $page, string $priority): void | Menambahkan satu jenis tugas jika jumlahnya relevan, beserta judul dan tujuan navigasinya. | Lihat signature dan isi fungsi. |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 ef9024c02a72d3a32b372a390f8fc3e9ec1a3077239e67e09a8ece464046ab1b
app/Services/Operations/InstanceTenantGuard.php38 baris · 3 fungsi bernama
Untuk apa
Mencegah request tenant salah diproses instance cabang.
Jika diminta mengubah
Implementasi ini masih mengenal dua identitas awal secara eksplisit. Menambah cabang perlu meninjau guard dan konfigurasi routing.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function assertAllows(ResolvedTenant $tenant): void | Membandingkan tenant request dengan identitas instance dan memberi 409 bila berbeda. | Lihat signature dan isi fungsi. |
function configuredTenant(): ?string | Membaca identitas instance yang dikenali konfigurasi. | return in_array($value, ['samanhudi', 'peganden'], true) ? $value : null; |
function tenantKey(string $connection): ?string | Memetakan koneksi dua tenant awal ke identitas instance. | return match ($connection) { |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 e07faa7c8d6d2a7cbd0d97f73b428ea6483b35bb80c6fd96c4bbe8c0384db31e
app/Services/Operations/OperationalAlert.php106 baris · 4 fungsi bernama
Untuk apa
Pengiriman alert operasional ke webhook terkonfigurasi.
Jika diminta mengubah
Keberadaan kode tidak membuktikan penerima atau arsip log eksternal sudah siap.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function send(string $event, string $severity = 'error', array $context = []): bool | Memeriksa konfigurasi, menyaring context, mengirim webhook dengan timeout, serta mencatat kegagalan pengiriman. | return false; |
function isConfigured(): bool | Memeriksa kesiapan endpoint dan parameter alert yang diperlukan. | return $this->configured( |
function configured(string $url, string $token): bool | Mengevaluasi konfigurasi endpoint dan token yang diterima. | return is_array($parts) |
function safeContext(array $context): array | Membatasi field context agar alert tidak membawa password, token atau payload mentah. | return $safe; |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 dbc45045c04ee39e36723b4c471887a19dbb65f3f4c63b65490207a2d46560c6
app/Services/Operations/PaymentSettings.php110 baris · 5 fungsi bernama
Untuk apa
Pembacaan konfigurasi bank dan QRIS yang terpusat.
Jika diminta mengubah
Konfigurasi DB diutamakan. Fallback konfigurasi lama dipakai hanya jika singleton belum ada.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function record(): ?array | Membaca record id 1 pada master. Kegagalan master runtime tidak dianggap konfigurasi kosong. | Tabel payment_settings |
function publicMethods(): array | Mengirim hanya metode bank atau QRIS yang aktif dan lengkap. | API /api/online/qris/ |
function ownerPayload(): array | Mengirim data form owner beserta indikator configured. | API /api/online/qris/ |
function enabled(mixed $value): bool | Menormalkan bentuk boolean PostgreSQL atau PHP yang diterima. | return in_array($value, [true, 1, '1', 't', 'true'], true); |
function validQrisFile(string $filename): bool | Memeriksa pola nama ULID.png dan keberadaan pada disk QRIS. | return preg_match('/^[0-9A-HJKMNP-TV-Z]{26}\.png$/D', $filename) === 1 |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 0ac3fe1deb0ce8fff8b421f769db411e62a1ffdb14f669c0b887979ae9fb3f42
app/Services/Operations/PostgresBackup.php245 baris · 7 fungsi bernama
Untuk apa
Backup PostgreSQL, verifikasi arsip, dan simulasi restore.
Jika diminta mengubah
Backup lintas database memerlukan kondisi operasional yang konsisten. restoreDrill memakai target khusus pemeriksaan.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function backup(string $root, string $bin, bool $isolated = false, array $connections = []): array | Memastikan maintenance kedua instance serta scheduler berhenti, mengunci proses, membuat arsip, metadata, checksum dan inventaris. | Tabel distributed_transactions |
function verify(string $directory, string $bin): array | Memeriksa kelengkapan, checksum, format serta inventaris arsip. | return $manifest; |
function restoreDrill(string $directory, string $bin, ?string $restoreConnection = null): array | Memulihkan ke target uji, membandingkan schema dan inventaris, lalu membersihkan hanya target yang dikenal. | Pemeriksaan IVP |
function inventory(Connection $db, string $schema): array | Mengumpulkan tabel dan informasi pembanding database. | return ['rows' => $rows, 'constraints' => array_map(fn ($row): array => (array) $row, $constraints)]; |
function constraintComparable(array $constraint): array | Menormalkan constraint agar hasil restore dapat dibandingkan. | return $comparable; |
function identifier(string $identifier): string | Memvalidasi dan mengquote nama objek database. | return '"'.str_replace('"', '""', $identifier).'"'; |
function run(string $bin, string $command, array $arguments, array $config): void | Menjalankan utilitas PostgreSQL dengan batas waktu dan pesan kegagalan aman. | Lihat signature dan isi fungsi. |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 01665d8faaf8623929ea43d67204fe340c70eeaa17bc89ba1b19cc068241203d
app/Services/Operations/ProductionConfiguration.php135 baris · 7 fungsi bernama
Untuk apa
Daftar pemeriksaan konfigurasi produksi.
Jika diminta mengubah
Hasil konfigurasi tidak menggantikan UAT atau pembuktian keamanan melalui pengujian negatif.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function checks(): array | Menyusun pemeriksaan HTTPS, cookie, proxy, host, Reverb, hashing, SMTP, pembayaran, upload, tautan, backup dan alert. | return $checks; |
function boundedKilobytes(mixed $value): bool | Memastikan batas ukuran dalam rentang yang diterima. | return is_int($kilobytes) && $kilobytes >= 1 && $kilobytes <= 8192; |
function boundedMinutes(mixed $value, int $maximum): bool | Memastikan masa tautan dalam rentang yang diperbolehkan. | return is_int($minutes) && $minutes >= 1 && $minutes <= $maximum; |
function httpsEndpoint(string $url): bool | Memeriksa URL HTTPS yang layak untuk tujuan operasional. | return is_array($parts) |
function literalHost(mixed $value): bool | Menolak wildcard dan bentuk host yang tidak dikenal. | return is_string($value) && ! $this->placeholder($value) && filter_var($value, FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME) !== false && ! str_con |
function placeholder(mixed $value): bool | Mendeteksi nilai contoh yang belum diganti. | return ! is_string($value) || trim($value) === '' || preg_match('/change[_ -]?me|your[_ -]|replace[_ -]?me|example\.com|<|>/i', $value) === 1; |
function proxy(mixed $value): bool | Memvalidasi alamat proxy atau CIDR yang dipercaya. | return false; |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 64354c8079b20fcd7061f69fff6fc3ac2215370a493daaef489d14cc5061ce32
app/Services/Reporting/AuditReader.php80 baris · 3 fungsi bernama
Untuk apa
Pembacaan audit tenant dengan penyaringan snapshot.
Jika diminta mengubah
AuditReader tidak memperbarui audit. Field yang boleh ditampilkan ada di safeSnapshot.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(private ReportScope $scope) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function read(Pengguna $actor, array $input): array | Memilih tenant, tanggal, tabel, aksi dan pelaku, lalu mengirim halaman audit. | Tabel audit_log Panggilan scope.tenants, scope.dates, scope.paginate |
function safeSnapshot(?string $json): array | Memilih isi snapshot yang boleh terlihat dan menyamarkan nilai yang tidak diperlukan pembaca. | return []; |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 7b2c579b172d510229a316fbfac8a3ebe5a7e6b56de1f97bc52fcb29f76f86cf
app/Services/Reporting/ReportReader.php331 baris · 8 fungsi bernama
Untuk apa
Query berbagai laporan bisnis.
Jika diminta mengubah
Tambah laporan dengan menambah REPORTS, query, catatan nilai, kontrol frontend dan pengujian.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(private ReportScope $scope) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function available(Pengguna $actor): array | Mengembalikan jenis laporan yang boleh dibaca role. | return $actor->isOwner() ? self::REPORTS : []; |
function read(Pengguna $actor, string $type, array $input): array | Memeriksa jenis dan izin, membangun query per tenant, memaginasi, dan menambahkan label referensi. | Panggilan scope.tenants, scope.paginate |
function paid(ResolvedTenant $tenant, array $input): Builder | Membatasi sumber penjualan pada pembayaran lunas dan status yang dihitung oleh laporan. | Tabel penjualan AS p Panggilan scope.dates |
function query(Pengguna $actor, string $type, ResolvedTenant $tenant, array $input, ?array $productIds): Builder | Membangun query khusus tipe laporan melalui cabang kode yang sudah ditentukan aplikasi. | Tabel nota_instansi, produk_cabang, pembelian AS p, retur_penjualan AS r, detail_retur_penjualan, retur_pembelian AS r, detail_retur_pembelian, penjualan AS p, pengiriman AS g, servis AS s Panggilan scope.dates |
function productIds(array $input): ?array | Mencari ID produk sesuai filter master. | return null; |
function whereIds(Builder $query, string $column, ?array $ids): void | Menerapkan filter ID produk dengan query builder. | Lihat signature dan isi fungsi. |
function filterSaleProducts(Builder $query, ?array $ids, string $saleAlias): void | Membatasi transaksi yang mempunyai item produk terpilih. | Lihat signature dan isi fungsi. |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 94f4b62434a99766ce80b3c7d7c4ab1cccbf27f0b8d4eacb83400879aa418715
app/Services/Reporting/ReportScope.php101 baris · 4 fungsi bernama
Untuk apa
Filter tanggal, cabang, dan pagination laporan.
Jika diminta mengubah
Rentang maksimal 366 hari. Pembacaan multi-cabang berurutan bukan snapshot database lintas cabang yang serentak.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function input(Request $request): array | Menolak filter tidak dikenal, memvalidasi nilai, membuat batas tanggal awal inklusif dan akhir eksklusif. | return $input + ['from' => $from->toIso8601String(), 'until' => $until->toIso8601String(), |
function tenants(Pengguna $actor, array $input): array | Memilih tenant yang boleh dibaca aktor dan memvalidasi pilihan cabang owner. | Kunci referensi baca |
function dates(Builder $query, string $column, array $input): Builder | Menambahkan batas waktu >= awal dan < akhir. | return $query->where($column, '>=', $input['from'])->where($column, '<', $input['until']); |
function paginate(array $queries, array $input): array | Membagi halaman hasil beberapa query cabang tanpa memuat semua baris ke memori sekaligus. | return ['data' => $rows, 'meta' => ['total' => $total, 'current_page' => (int) $input['page'], |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 d9e0d727eb22aa86407c69d58c54de3ba944b7c675c7e2e1928751d3ec4f9749
app/Services/Security/BusinessAccess.php45 baris · 3 fungsi bernama
Untuk apa
Memeriksa aktor terbaru dan tenant tepat sebelum TP bekerja.
Jika diminta mengubah
Pemanggil harus sudah membuka transaksi master sebelum actor dijalankan.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function actorFor(Pengguna $actor, string $certifiedTransaction): Pengguna | Membaca role yang diizinkan registry untuk nama TP, lalu memanggil pemeriksaan aktor. | Relasi aktor dan TP |
function actor(Pengguna $actor, array $roles): Pengguna | Mewajibkan transaksi master, mengambil shared lock akun terbaru, dan mencocokkan identitas serta kewenangannya. | Kunci referensi baca |
function tenant(Pengguna $actor): ResolvedTenant | Memeriksa cabang konteks, status aktif, mapping koneksi, dan kecocokan penempatan aktor. | Kunci referensi baca |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 767b37a84a48e73b324166a181c8ff5721a466cdbfbc949f1c8cc63d2ec4b8fb
app/Services/Security/ChangeBranchAssignment.php38 baris · 2 fungsi bernama
Untuk apa
Perubahan cabang pegawai dengan pencabutan session.
Jika diminta mengubah
Aturan perpindahan role owner tidak dijalankan melalui layanan ini.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(private TenantResolver $resolver) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function handle(int $idPengguna, int $idCabang, Pengguna $actor, Request $request, AuditLogger $audit): array | Memvalidasi aktor, akun subjek dan cabang tujuan, mengubah penempatan, serta mencatat audit hak dan membatalkan session yang tidak berlaku. | Batas transaksi Kunci baris perubahan Relasi aktor dan TP Audit hak pada master Panggilan resolver.resolve |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 1b69604d03baec77c6b622005585bb661e681cbcf2a4cdd6fe4d2ea033fb4665
app/Services/Security/ChangeOwnPassword.php46 baris · 1 fungsi bernama
Untuk apa
Mengganti password sendiri dan mencabut session terkait.
Jika diminta mengubah
Aturan panjang password ada pada ChangeOwnPasswordRequest. Hash bukan enkripsi yang dapat dikembalikan ke password asli.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function handle(Pengguna $actor, array $input, Request $request, AuditLogger $audit): void | Mengunci akun, memeriksa password lama dan perbedaan password baru, menghash nilai baru, menulis audit master, serta menghapus semua session akun dalam transaksi master. | Batas transaksi Kunci baris perubahan Audit hak pada master Pemeriksaan hash Pembuatan hash Tabel sessions |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 4ccc77fd1b3733418ad80d548ac425524e048948fbf7f369c93948eeeef812d4
app/Services/Security/ChangeOwnProfile.php53 baris · 1 fungsi bernama
Untuk apa
Perubahan nama dan email profil owner.
Jika diminta mengubah
Field role dan cabang tidak boleh ditambahkan ke form profil sendiri.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function handle(Pengguna $actor, array $input, Request $request, AuditLogger $audit): Pengguna | Memvalidasi TP owner.profile.update, mengunci akun, menormalisasi input, menyimpan hanya perubahan, dan mengaudit nama field berubah. | Batas transaksi Kunci baris perubahan Relasi aktor dan TP Audit hak pada master |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 5165d48438ffda35847b978eec1c96902db429c5c2a2b49fbd4ca286126c79cc
app/Services/Security/ClarkWilsonCertification.php228 baris · 6 fungsi bernama
Untuk apa
Registry kode untuk relasi TP, role, CDI, validasi input, IVP, audit, dan SoD.
Jika diminta mengubah
TP baru harus ditambahkan pada all dan implementation, lalu dihubungkan ke BusinessAccess dan diuji.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function all(): array | Mendaftarkan definisi setiap TP aplikasi beserta objek data dan bukti pemeriksaannya. | return [ |
function roles(string $transaction): array | Mengambil daftar role dasar yang terkait TP. | return self::get($transaction)['roles']; |
function get(string $transaction): array | Mengambil definisi satu TP dan menolak nama yang tidak terdaftar. | return $definition; |
function implementation(string $transaction): string | Memetakan nama TP ke kelas implementasi yang menjalankannya. | return match (true) { |
function isValid(): bool | Memeriksa konsistensi internal registry dan kelas yang dirujuk. Hasil true bukan bukti sertifikasi formal oleh pihak independen. | return false; |
function definition(array $roles, array $cdis, string $udi, string $ivp, array $audit, ?string $sod = null): array | Menyusun struktur satu definisi registry tanpa mengubah hak runtime. | return compact('roles', 'cdis', 'udi', 'ivp', 'audit', 'sod'); |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 ba3add2af00c84841765d475eb092961fbf3bd38ad75a24c63bb32076d030804
app/Services/Security/EmployeeInvitation.php70 baris · 4 fungsi bernama
Untuk apa
Token aktivasi akun pegawai nonaktif.
Jika diminta mengubah
Tautan aktivasi berbeda dari OTP login. Token undangan berlaku satu hari dan disimpan sebagai hash.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function assertMailConfigured(): void | Memastikan SMTP dan pengirim tersedia sebelum undangan dibuat. | Lihat signature dan isi fungsi. |
function issue(Pengguna $user): string | Membuat token acak 32 byte, menyimpan SHA-256 dan waktu kedaluwarsa per akun. | Tabel employee_invitations |
function send(Pengguna $user, #[\SensitiveParameter] string $token): void | Membentuk URL aktivasi dari token mentah yang hanya dikirim melalui email. | Lihat signature dan isi fungsi. |
function activate(string $token, string $password, Request $request): void | Mengunci undangan dan akun, memeriksa kedaluwarsa dan status, menghash password baru, mengaktifkan pegawai, serta menghapus undangan. | Batas transaksi Kunci baris perubahan Pembuatan hash Tabel employee_invitations |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 bba5a3c14b249040891bbe068e71c25378423352f566e41df303a27f11154ff6
app/Services/Security/InvalidateUserSessions.php13 baris · 1 fungsi bernama
Untuk apa
Mencabut session master milik satu akun.
Jika diminta mengubah
Dipanggil ketika penempatan, role, atau status akun tidak lagi cocok.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function handle(int $idPengguna): int | Menghapus baris sessions dengan user_id yang bersangkutan. | Tabel sessions |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 fe01ed9363c38d1a262f6f874d45835a27110e6b6f4959c3b85775b005a55914
app/Services/Security/InventoryE1Status.php80 baris · 1 fungsi bernama
Untuk apa
Memeriksa batas tulis database pada CDI produk_cabang.
Jika diminta mengubah
E1 yang diverifikasi khusus persediaan. Role admin database dan superuser berada di luar batas akun aplikasi.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function checks(Connection $db, string $guardian, ?string $runtimeRole = null): array | Memeriksa atribut role runtime dan guardian, ownership, trigger ALWAYS, hak kolom row lock, dan kelima fungsi TP SECURITY DEFINER. | return $checks; |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 9e3a7af8dcbdcf3e30b6c75295bcf8e2d3994e79b7bc74e6b7b49944039f3a66
app/Services/Security/LoginService.php199 baris · 7 fungsi bernama
Untuk apa
Validasi password, penghitung gagal, penguncian akun, dan blokir IP manual.
Jika diminta mengubah
Jangan menggabungkan penguncian akun, rate limit request, dan blokir IP seolah ketiganya satu mekanisme.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(private TenantResolver $resolver) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function blockedIp(string $ip): ?array | Membaca blokir manual berdasarkan hash IP kanonis dan masa berlakunya. | return null; |
function blockIp(string $ip, int $minutes, string $reason): void | Memvalidasi IP, durasi 1 sampai 1440 menit, alasan, serta kapasitas daftar sebelum menyimpan blokir. | Lihat signature dan isi fungsi. |
function unblockIp(string $ip): void | Menghapus blokir manual IP tanpa mereset penguncian akun atau rate limit. | Lihat signature dan isi fungsi. |
function canonicalIp(string $ip): string | Memvalidasi alamat dan menyamakan representasi IPv4 serta IPv4-mapped IPv6. | return (string) inet_ntop($packed); |
function withIpBlocks(Closure $operation, bool $write = false): mixed | Membaca atau menulis daftar privat dengan file lock, validasi isi, izin file, dan penggantian file sementara. | return $result; |
function attempt(string $email, #[\SensitiveParameter] string $password, bool $pendingVerification = false): array | Mengunci akun master, memeriksa status, role, waktu penguncian, dan Hash.check. Kesalahan password disimpan melalui return agar penghitung gagal tetap commit. | Batas transaksi Kunci baris perubahan Pemeriksaan hash Pembuatan hash Panggilan resolver.resolve |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 22156aa27fb2558a403939bdefe6f380dc976deeb18f83871778ead93fe8431c
app/Services/Security/RoleAccess.php39 baris · 4 fungsi bernama
Untuk apa
Otoritas role bisnis dan pewarisan kewenangannya.
Jika diminta mengubah
Owner mewarisi hak bisnis. Admin mewarisi hak kasir. Pemisahan pelaku harus diperiksa lagi pada TP.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function valid(?string $role): bool | Menerima hanya owner, admin, kasir, dan teknisi. | return in_array($role, self::ROLES, true); |
function isOwner(?string $role): bool | Memeriksa apakah role bernilai owner. | return $role === 'owner'; |
function integrityCertifierIsRuntimeRole(): bool | Memastikan deployment_certifier tidak termasuk role bisnis runtime. | return self::valid(self::INTEGRITY_CERTIFIER); |
function allows(?string $role, array $allowed): bool | Menolak role atau daftar izin yang tidak valid, lalu menerapkan hak owner, daftar eksplisit, dan pewarisan admin ke kasir. | return false; |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 ccd60aa071d3ecd864ce8aadc3201935e45307afdcd5788f22b31bc78cb06023
app/Services/Security/SafeApiErrors.php74 baris · 3 fungsi bernama
Untuk apa
Mengubah exception menjadi respons API yang tidak membocorkan SQL atau rahasia.
Jika diminta mengubah
Detail IVP hanya dimunculkan dalam log pengujian. Respons umum 500 tidak membuktikan transaksi sudah rollback, cek batas transaksinya.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(private OperationalAlert $alerts) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function render(Throwable $exception, Request $request): ?JsonResponse | Memetakan exception autentikasi, status HTTP, konflik unik PostgreSQL, dan kegagalan umum ke JSON aman. | Respons JSON |
function report(Throwable $exception): ?bool | Mencatat tipe serta kode exception dan mengirim alert operasional pada kondisi produksi yang memenuhi syarat. | Panggilan alerts.send |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 a96740de18e15ccc99b0ef843c541920803c9354aea461844f9e8af4f2ff2df8
app/Services/Security/ServiceAccess.php36 baris · 2 fungsi bernama
Untuk apa
Pemisahan penerima servis dan teknisi yang mengerjakan.
Jika diminta mengubah
Hak owner tidak menghapus larangan menerima dan mengerjakan servis yang sama oleh orang yang sama.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function technician(int $id, int $receiverId, ResolvedTenant $tenant, Pengguna $actor, bool $assignment = false): Pengguna | Memeriksa teknisi aktif, cabang, perbedaan dengan penerima, serta syarat penugasan owner kepada dirinya sendiri. | Kunci referensi baca |
function action(Pengguna $actor, object $service, string $operation): void | Membatasi operasi teknis pada teknisi yang ditugaskan dan berbeda dari penerima. | Lihat signature dan isi fungsi. |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 3604bb2ca56b6e4096efd1045a8c8f00526a0be27ee0f1daeec895906cffe34f
app/Services/Security/StaffLoginChallenge.php116 baris · 6 fungsi bernama
Untuk apa
CAPTCHA Turnstile dan kode email sekali pakai yang dapat diaktifkan lewat konfigurasi.
Jika diminta mengubah
Kode tersedia, tetapi keluaran VPS sebelumnya menyatakan tantangan belum aktif. Aktivasi membutuhkan kunci asli dan SMTP yang berhasil diuji.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function enabled(): bool | Membaca sakelar STAFF_LOGIN_CHALLENGE_ENABLED. | return (bool) config('security.staff_login_challenge_enabled', false); |
function configured(): bool | Memastikan site key, secret key, pengirim, dan pengaturan SMTP tersedia tanpa placeholder. | return trim((string) config('security.turnstile_site_key')) !== '' |
function verifyCaptcha(Request $request): bool | Memvalidasi token ke Cloudflare dengan timeout serta mencocokkan hostname aplikasi. | Pemeriksaan CAPTCHA |
function begin(Request $request, Pengguna $user): void | Membuat kode enam angka, menyimpan HMAC, fingerprint password, batas lima menit, dan jumlah percobaan pada session, lalu mengirim email. | Lihat signature dan isi fungsi. |
function validateCode(Request $request, string $code): ?Pengguna | Memeriksa waktu, maksimal lima kesalahan, HMAC kode, status akun, role, penguncian, dan fingerprint password. Menghapus tantangan setelah berhasil. | Verifikasi kode |
function codeHash(string $code): string | Menghasilkan HMAC SHA-256 kode dengan APP_KEY sebagai kunci. | return hash_hmac('sha256', $code, (string) config('app.key')); |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 d82a36d6c05f8a62b28d48cc548375eec40337d44edc693793b88b4513b18b78
app/Services/Tenancy/ResolvedTenant.php15 baris · 2 fungsi bernama
Untuk apa
Objek hasil resolusi cabang dan nama koneksi.
Jika diminta mengubah
Tambahkan metadata tenant di sini hanya jika dibutuhkan pemanggil.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(public Cabang $cabang, public string $connection) | Menyimpan field objek input bertipe. Jalur fromInput atau validate memeriksa nilai sebelum objek dipakai. | Lihat signature dan isi fungsi. |
function sessionData(): array | Menghasilkan ID cabang dan nama koneksi untuk disimpan pada session. | return ['id_cabang' => (int) $this->cabang->id_cabang, 'connection' => $this->connection]; |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 ccaf2a91c71e8d4b30cd5756fd05dd98bca310963353355450e6749ea450ad4b
app/Services/Tenancy/TenantContext.php23 baris · 3 fungsi bernama
Untuk apa
Wadah tenant untuk satu request.
Jika diminta mengubah
Didaftarkan scoped oleh AppServiceProvider agar konteks tidak dipakai silang request.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function set(ResolvedTenant $tenant): void | Menyimpan tenant yang sudah diselesaikan backend. | Lihat signature dan isi fungsi. |
function clear(): void | Menghapus tenant dari konteks request. | Lihat signature dan isi fungsi. |
function current(): ?ResolvedTenant | Mengembalikan tenant aktif atau null. | return $this->tenant; |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 8771bc3d48969dd900faa5991fbc60637841f757ad4931f7db2865c972ad1ae4
app/Services/Tenancy/TenantRegistry.php86 baris · 5 fungsi bernama
Untuk apa
Pemetaan dua cabang awal dan tenant hasil provisioning.
Jika diminta mengubah
Cabang tambahan memerlukan database, role, schema, E1, metadata tenant, serta dukungan komponen lain yang masih statis.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function key(int $branchId): string | Membentuk kunci b_ID dari ID cabang. | return 'b_'.$branchId; |
function connectionName(int $branchId): string | Membentuk nama koneksi tenant_b_ID. | return 'tenant_b_'.$branchId; |
function connection(Cabang $branch): ?string | Mencoba mapping cabang awal, lalu metadata tenant ready. Kredensial disimpan terenkripsi dan didekripsi hanya saat membentuk koneksi. | Tabel tenant_instances |
function tenantConnections(): array | Menggabungkan koneksi cabang awal dan cabang baru yang aktif serta siap. | Tabel tenant_instances |
function tenantKey(string $connection): ?string | Mengubah nama koneksi kembali menjadi kunci tenant yang dikenali. | return $legacy; |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 476daa3301c949e31942fbd8b901689458fff5d2ae631f93a81e9ab88fbb987e
app/Services/Tenancy/TenantResolver.php28 baris · 1 fungsi bernama
Untuk apa
Mengubah ID cabang menjadi cabang aktif dan koneksi PostgreSQL yang dikenal.
Jika diminta mengubah
Pemetaan statis dan cabang baru ditangani TenantRegistry.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function resolve(int $idCabang): ResolvedTenant | Menolak cabang tidak aktif, memastikan mapping koneksi tersedia, lalu mengembalikan ResolvedTenant. | return new ResolvedTenant($cabang, $connection); |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 fa60cb55a2d34a62d13fd818bff0954b8a24b66d575f5d256c64200848a1c49c
app/Services/Transactions/AssignServiceTechnician.php16 baris · 2 fungsi bernama
Untuk apa
Menugaskan teknisi melalui TP bernama khusus.
Jika diminta mengubah
Aturan bersama berada pada ServiceWorkflow dan ServiceData.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(private ServiceWorkflow $workflow) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function handle(Pengguna $actor, array $input, Request $request, int $id): int | Membentuk ServiceData untuk operasi assign lalu meneruskan aktor, input, request, dan ID yang diperlukan kepada workflow. | Panggilan workflow.handle |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 a6945311162c70b72731aa21fd0cdf4e339ef2ce8e71a9a0ee33b706a1552c8a
app/Services/Transactions/CancelOnlineOrder.php43 baris · 2 fungsi bernama
Untuk apa
Pembatalan pesanan melalui tautan pelanggan yang sah.
Jika diminta mengubah
Pembatalan hanya diizinkan pada tahap yang diterima workflow ini.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(
private TenantResolver $tenants,
private AuditLogger $audit,
) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function handle(int $branchId, string $saleNumber, Request $request): void | Menyelesaikan tenant dari tautan, mengunci pesanan, memeriksa status, memperbarui pembatalan, dan menulis audit UDI. | Batas transaksi Kunci baris perubahan Audit input publik Tabel penjualan Panggilan tenants.resolve, audit.recordGuestUdi |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 432f66a4720080cda75868db4fb06270e787d1cfaca994ebed78c2b454531e66
app/Services/Transactions/CompleteWarrantyClaim.php16 baris · 2 fungsi bernama
Untuk apa
Penyelesaian teknis klaim melalui TP bernama khusus.
Jika diminta mengubah
Aturan bersama berada di WarrantyClaimData dan WarrantyClaimWorkflow.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(private WarrantyClaimWorkflow $workflow) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function handle(Pengguna $actor, array $input, Request $request, int $id): int | Membentuk input untuk operasi complete dan menyerahkan pelaksanaannya ke workflow garansi. | Panggilan workflow.handle |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 f11bcd3bb8748c2b33093e4d41a4fe706040154fa3a20acf75a7887316ff486f
app/Services/Transactions/CreateOnlineOrder.php168 baris · 3 fungsi bernama
Untuk apa
Mencatat pesanan publik awal untuk satu cabang.
Jika diminta mengubah
Tahap pesanan awal belum memotong stok. Pengurangan terjadi pada verifikasi pembayaran yang sah.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(
private TenantResolver $tenants,
private SalePricing $pricing,
private OnlineOrderIntegrity $integrity,
private AuditLogger $audit,
) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function handle(OnlineOrderData $input, Request $request): array | Menyelesaikan cabang, memeriksa produk dan jumlah tersedia, menentukan harga server, menyimpan pelanggan dan pesanan awal serta snapshot pembayaran, memverifikasi keadaan pending, dan mencatat audit UDI. | Batas transaksi Kunci referensi baca Audit input publik Tabel produk_cabang, pelanggan, penjualan, detail_penjualan, pengiriman Panggilan tenants.resolve, pricing.normalPrice, pricing.total, integrity.verifyPending, audit.recordGuestUdi |
function newTrackingCode(): string | Membuat kode pelacakan acak yang tidak bergantung pada nomor urut transaksi. | return $code; |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 f241ae7941d111a133586fb5ca46f2e320dd7cfeb153cff20144c1d8eadbd406
app/Services/Transactions/CreateProductWarrantyClaim.php16 baris · 2 fungsi bernama
Untuk apa
Pengajuan klaim produk melalui TP bernama khusus.
Jika diminta mengubah
Aturan bersama berada di WarrantyClaimData dan WarrantyClaimWorkflow.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(private WarrantyClaimWorkflow $workflow) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function handle(Pengguna $actor, array $input, Request $request): int | Membentuk input untuk operasi product dan menyerahkan pelaksanaannya ke workflow garansi. | Panggilan workflow.handle |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 94fb6012aca9583caba8977116278c9c8dba8c2feae7bbc0162728e12f74bb57
app/Services/Transactions/CreateRetailSale.php135 baris · 3 fungsi bernama
Untuk apa
TP penjualan toko dengan harga dari server.
Jika diminta mengubah
Ubah harga di SalePricing, input di SaleData, bukti persamaan di SaleIntegrity, dan tampilan di PosPanel.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(
private BusinessAccess $access,
private SalePricing $pricing,
private IssueStock $inventory,
private SaleIntegrity $integrity,
private AuditLogger $audit,
) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function handle(Pengguna $actor, SaleData $input, Request $request): int | Menahan referensi master dengan shared lock, memvalidasi pembayaran, menulis header serta item tenant, mengurangi stok melalui TP, menjalankan IVP, dan menulis audit sebelum commit. | Batas transaksi Kunci referensi baca Relasi aktor dan TP Audit CDI wajib IVP penjualan selesai Tabel penjualan, detail_penjualan Panggilan access.actorFor, access.tenant, pricing.normalPrice, pricing.total, inventory.handle, integrity.verifyCompleted, audit.recordCdi |
function stockSnapshot(Connection $db, int $branchId, array $productIds): array | Membaca stok semua produk transaksi pada cabang yang sama untuk pembuktian sebelum dan sesudah. | Tabel produk_cabang |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 d22b33b8ce54cde9a6af6e12ca9ffc5934d4ffa2ad8de7b4abeca78b233522fc
app/Services/Transactions/CreateServiceWarrantyClaim.php16 baris · 2 fungsi bernama
Untuk apa
Pengajuan klaim servis melalui TP bernama khusus.
Jika diminta mengubah
Aturan bersama berada di WarrantyClaimData dan WarrantyClaimWorkflow.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(private WarrantyClaimWorkflow $workflow) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function handle(Pengguna $actor, array $input, Request $request): int | Membentuk input untuk operasi service dan menyerahkan pelaksanaannya ke workflow garansi. | Panggilan workflow.handle |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 0f9a489c227e366a96f352f46678cfbf10413336192d8232127b3247b104a7ef
app/Services/Transactions/DecideSpecialPriceSale.php312 baris · 7 fungsi bernama
Untuk apa
Preview dan keputusan owner atas pengajuan harga khusus.
Jika diminta mengubah
Owner pengaju tetap tidak boleh menyetujui pengajuannya sendiri. Perubahan harga normal setelah pengajuan juga diperiksa.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(
private BusinessAccess $access,
private SalePricing $pricing,
private IssueStock $inventory,
private SaleIntegrity $integrity,
private AuditLogger $audit,
) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function preview(Pengguna $actor, ResolvedTenant $tenant, int $saleId, string $token): array | Memeriksa hak owner dan token sebelum memperlihatkan pengajuan. | Batas transaksi Relasi aktor dan TP Tabel penjualan, detail_penjualan, audit_log Panggilan access.actorFor Assertion assertPendingToken |
function decide(Pengguna $actor, ResolvedTenant $tenant, int $saleId, string $token, string $decision, Request $request): array | Mengunci pengajuan, memeriksa token, pemisahan pelaku, produk dan harga normal. Persetujuan mengurangi stok, menjalankan IVP, serta menulis audit. | Batas transaksi Kunci baris perubahan Kunci referensi baca Relasi aktor dan TP Audit CDI wajib IVP penjualan selesai Tabel detail_penjualan, penjualan Panggilan access.actorFor, pricing.normalPrice, inventory.handle, integrity.verifyCompleted, audit.recordCdi Assertion assertPendingToken |
function reject(
Connection $db,
object $header,
array $details,
Pengguna $actor,
Request $request,
ResolvedTenant $tenant,
): void | Membatalkan pengajuan, memeriksa hasil penolakan, dan mengaudit tanpa mengurangi stok. | Audit CDI wajib Tabel penjualan Panggilan integrity.verifyRejected, audit.recordCdi |
function assertPendingToken(object $header, string $token): void | Menolak keputusan ulang, token salah, atau tautan kedaluwarsa. | Lihat signature dan isi fungsi. |
function normalPriceSnapshots(Connection $db, int $saleId): array | Membaca snapshot harga normal dari audit saat pengajuan. | Tabel audit_log |
function stockSnapshot(Connection $db, int $branchId, array $productIds): array | Membaca stok per produk untuk memeriksa hasil keputusan. | Tabel produk_cabang |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 a7d33237b8a78e9c45f657c92bd2153548818c557cb09765ce16e4b449f60e26
app/Services/Transactions/DecideStockTransfer.php110 baris · 4 fungsi bernama
Untuk apa
TP keputusan transfer stok.
Jika diminta mengubah
Keputusan owner memeriksa identitas pengaju dan fingerprint pengajuan sebelum menyentuh stok.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(
private DistributedTransactionManager $transactions,
private BusinessAccess $access,
private RequestStockTransfer $requests,
private StockTransferIntegrity $integrity,
private AuditLogger $audit,
private IssueStock $issue,
private ReceiveStock $receive,
) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function preview(Pengguna $actor, int $id, int $branchId, string $token): array | Memeriksa role, cabang asal aktif, token, dan keutuhan pengajuan sebelum preview. | Batas transaksi Relasi aktor dan TP Tabel mutasi_stok, detail_mutasi_stok Panggilan access.actorFor, access.tenant, integrity.assertRequest Assertion assertRequest |
function handle(Pengguna $actor, int $id, int $branchId, string $token, string $decision, Request $request): array | Menjalankan keputusan 2PC, mengunci pengajuan, menolak pelaku yang sama, memindahkan stok pada persetujuan, serta memverifikasi audit dan persamaan stok. | Kunci baris perubahan Relasi aktor dan TP Audit CDI wajib Pemeriksaan IVP Tabel mutasi_stok, detail_mutasi_stok Panggilan transactions.run, access.actorFor, access.tenant, integrity.assertRequest, requests.references, requests.lockStock, audit.recordCdi Assertion assertRequest |
function token(object $header, string $token): void | Menolak pengajuan yang telah diputuskan, token tidak cocok, atau waktu persetujuan yang sudah lewat. | Lihat signature dan isi fungsi. |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 98dc1616ffa6fda1d78ff2ad9a0d32a03d8969e10df81b1ea01fc03bb2405f21
app/Services/Transactions/DistributedTransactionManager.php258 baris · 11 fungsi bernama
Untuk apa
Coordinator two-phase commit PostgreSQL untuk mutasi dua cabang awal.
Jika diminta mengubah
run hanya menerima mutasi_request, mutasi_approve, dan mutasi_reject. Bukan mekanisme untuk semua transaksi aplikasi.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function run(string $operation, ?int $reference, Closure $work): array | Membuat jurnal terpisah dan advisory lock, membuka transaksi peserta, menjalankan pekerjaan, melakukan PREPARE, menyimpan keputusan durable, lalu menyelesaikan peserta. Penanganan error membaca keputusan yang telah tersimpan. | Tabel distributed_transactions |
function recover(): array | Mencari coordinator yang belum selesai dan prepared transaction Rajawali, mengambil lock, memulihkan menurut keputusan durable, serta menandai hasil. | Tabel distributed_transactions |
function journal(): Connection | Membuka koneksi master tersendiri agar jurnal tidak ikut transaksi yang akan diprepare. | return $db; |
function prefix(Connection $journal): string | Membuat prefix GID dari identitas database dan schema jurnal. | return 'rajawali_'.substr(hash('sha256', $identity->db.'.'.$identity->schema), 0, 16).'_'; |
function participants(string $prefix, string $global): array | Mencatat GID, database, dan schema setiap peserta yang ditentukan. | return $result; |
function lock(Connection $journal, string $identity): bool | Mengambil advisory lock nonblocking untuk satu transaksi global. | return (bool) $journal->selectOne('SELECT pg_try_advisory_lock(hashtextextended(?, 0)) AS acquired', [$identity])->acquired; |
function decide(Connection $journal, string $global, string $decision): void | Mengunci jurnal dan menyimpan keputusan commit atau rollback yang tidak boleh dibalik. | Batas transaksi Kunci baris perubahan Tabel distributed_transactions |
function finish(Connection $journal, string $global, array $participants, string $decision): void | Menyelesaikan setiap peserta sesuai keputusan lalu menandai coordinator completed. | Tabel distributed_transactions |
function resolveParticipant(string $name, array $participant, string $decision): void | Memeriksa prepared transaction pada database dan owner yang benar sebelum menyelesaikannya. | Lihat signature dan isi fungsi. |
function preparedStatement(Connection $db, string $command, string $gid): void | Menjalankan perintah PREPARE atau penyelesaiannya menggunakan quoting GID dari PDO. | Lihat signature dan isi fungsi. |
function checkpoint(string $phase, string $global, ?string $participant = null): void | Titik injeksi kegagalan untuk tes crash recovery. Implementasi dasar sengaja kosong. | Lihat signature dan isi fungsi. |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 89b325bc27f291456c5d2d3a8dd3b397759034b20229d84ae2174aaf9e405784
app/Services/Transactions/HandOverService.php16 baris · 2 fungsi bernama
Untuk apa
Menyerahkan unit selesai melalui TP bernama khusus.
Jika diminta mengubah
Aturan bersama berada pada ServiceWorkflow dan ServiceData.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(private ServiceWorkflow $workflow) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function handle(Pengguna $actor, array $input, Request $request, int $id): int | Membentuk ServiceData untuk operasi handover lalu meneruskan aktor, input, request, dan ID yang diperlukan kepada workflow. | Panggilan workflow.handle |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 36df7cdad9b107072d8edaf9af6a42cf53a8b0702afade6a184e3d2137157834
app/Services/Transactions/HandleWarrantyClaim.php16 baris · 2 fungsi bernama
Untuk apa
Penanganan teknis klaim melalui TP bernama khusus.
Jika diminta mengubah
Aturan bersama berada di WarrantyClaimData dan WarrantyClaimWorkflow.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(private WarrantyClaimWorkflow $workflow) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function handle(Pengguna $actor, array $input, Request $request, int $id): int | Membentuk input untuk operasi handle dan menyerahkan pelaksanaannya ke workflow garansi. | Panggilan workflow.handle |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 27578f1acd46dfc9ab58111d5735d5a03cae14634375387e5914cccd25a91f1b
app/Services/Transactions/InspectWarrantyClaim.php16 baris · 2 fungsi bernama
Untuk apa
Pemeriksaan awal klaim melalui TP bernama khusus.
Jika diminta mengubah
Aturan bersama berada di WarrantyClaimData dan WarrantyClaimWorkflow.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(private WarrantyClaimWorkflow $workflow) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function handle(Pengguna $actor, array $input, Request $request, int $id): int | Membentuk input untuk operasi inspect dan menyerahkan pelaksanaannya ke workflow garansi. | Panggilan workflow.handle |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 bb112602b63277dcae63cea43f385ce4c2677276940e1f29ea4994646afd9f66
app/Services/Transactions/InstitutionInvoiceData.php48 baris · 3 fungsi bernama
Untuk apa
Input per operasi nota instansi dan snapshot field publik.
Jika diminta mengubah
Tambah atau ubah field di rules, normalisasi, konstruktor jika ada, Request pemanggil, layanan transaksi, dan form frontend.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function rules(string $operation): array | Menetapkan field, tipe, nilai yang diperbolehkan, panjang, jumlah item, dan batas angka untuk operasi terkait. | return match ($operation) { |
function validate(array $input, string $operation): array | Memvalidasi input per operasi dan menolak field tambahan menurut aturan layanan ini. | return Validator::make($input, $rules)->validate(); |
function publicFields(object $row): array | Memilih field nota yang boleh menjadi snapshot publik dan histori. | return array_diff_key((array) $row, array_flip(['approval_token_hash'])); |
Aturan field asli
| Potongan aturan | Baris |
|---|---|
'nama_instansi' => ['required', 'string', 'max:150'], | 14 |
'alamat_instansi' => ['required', 'string', 'max:2000'], | 15 |
'nama_kontak' => ['required', 'string', 'max:100'], | 16 |
'nomor_po' => ['nullable', 'string', 'max:100'], | 17 |
'catatan' => ['nullable', 'string', 'max:2000'], | 18 |
'create' => ['id_penjualan' => ['required', 'integer', 'min:1', 'max:2147483647']] + $fields, | 22 |
'update' => ['versi' => ['required', 'integer', 'min:1']] + $fields, | 23 |
'cancel' => ['versi' => ['required', 'integer', 'min:1'], 'catatan' => ['required', 'string', 'max:2000']], | 25 |
'decide' => ['versi' => ['required', 'integer', 'min:1'], 'keputusan' => ['required', 'in:setujui,tolak'], 'catatan' => ['required', 'string', 'max:2000']], | 26 |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 2b50c3f8a5a559ff59ffc9207c438e9cce4c7153d93ee3aec193279c5f3ce1b3
app/Services/Transactions/InstitutionInvoiceWorkflow.php135 baris · 3 fungsi bernama
Untuk apa
TP dokumen instansi berdasarkan penjualan lunas yang sudah selesai.
Jika diminta mengubah
Nilai nota bukan penjualan tambahan. Kolom versi mencegah keputusan pada dokumen yang sudah berubah.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(
private BusinessAccess $access,
private InstitutionInvoiceIntegrity $integrity,
private AuditLogger $audit,
) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function handle(Pengguna $actor, string $operation, ?int $id, array $input, Request $request): array | Memvalidasi operasi, memeriksa aktor dan tenant, mengunci sumber atau nota, menjalankan aturan draft sampai keputusan, memeriksa versi dan SoD, lalu menulis histori serta audit. Email dikirim setelah transaksi hasilnya tersedia. | Batas transaksi Kunci baris perubahan Kunci referensi baca Relasi aktor dan TP Audit CDI wajib Tautan sementara Pemeriksaan IVP Tabel penjualan, nota_instansi, detail_penjualan, histori_nota_instansi Panggilan access.actorFor, access.tenant, integrity.verify, audit.recordCdi |
function checkLink(object $row, Request $request, int $branch): void | Memeriksa signature, cabang, status diajukan, masa token, dan kecocokan hash token. | Pemeriksaan signature |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 23d21cbb4649bf6b3646b94ff86fe6f607d47b1d976cc98e329a97e586d73d08
app/Services/Transactions/OnlineOrderActionData.php57 baris · 3 fungsi bernama
Untuk apa
Input khusus setiap tindakan pegawai pada pesanan online.
Jika diminta mengubah
Tambah atau ubah field di rules, normalisasi, konstruktor jika ada, Request pemanggil, layanan transaksi, dan form frontend.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(
public string $operation,
public ?string $decision,
public ?string $reason,
public ?string $courier,
public ?string $trackingNumber,
) | Menyimpan field objek input bertipe. Jalur fromInput atau validate memeriksa nilai sebelum objek dipakai. | Lihat signature dan isi fungsi. |
function rules(string $operation): array | Menetapkan field, tipe, nilai yang diperbolehkan, panjang, jumlah item, dan batas angka untuk operasi terkait. | return match ($operation) { |
function fromInput(string $operation, array $input): self | Memvalidasi ulang input pada batas TP, menormalisasi nilai, mengubah tipe, dan membentuk objek input. Urutan produk dibuat konsisten bila operasi memerlukan beberapa stok. | return new self( |
Aturan field asli
| Potongan aturan | Baris |
|---|---|
'payment' => [ | 22 |
'keputusan' => ['required', 'string', 'in:terima,tolak'], | 23 |
'alasan' => ['nullable', 'string', 'max:500'], | 24 |
'ship' => [ | 26 |
'kurir' => ['required', 'string', 'max:50'], | 27 |
'nomor_resi' => ['nullable', 'string', 'max:100'], | 28 |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 2e4ed11cca11d9156a4d055c845f4d89e6990e38eadce80651fa4234401cc4a4
app/Services/Transactions/OnlineOrderData.php80 baris · 3 fungsi bernama
Untuk apa
Input checkout satu cabang, identitas pelanggan, penerimaan, metode pembayaran, dan item.
Jika diminta mengubah
Tambah atau ubah field di rules, normalisasi, konstruktor jika ada, Request pemanggil, layanan transaksi, dan form frontend.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(
public int $branchId,
public string $customerName,
public ?string $whatsApp,
public string $email,
public ?string $address,
public string $fulfilment,
public ?string $recipientName,
public ?string $shippingAddress,
public string $paymentMethod,
public array $items,
) | Menyimpan field objek input bertipe. Jalur fromInput atau validate memeriksa nilai sebelum objek dipakai. | Lihat signature dan isi fungsi. |
function rules(): array | Menetapkan field, tipe, nilai yang diperbolehkan, panjang, jumlah item, dan batas angka untuk operasi terkait. | return [ |
function fromInput(array $input): self | Memvalidasi ulang input pada batas TP, menormalisasi nilai, mengubah tipe, dan membentuk objek input. Urutan produk dibuat konsisten bila operasi memerlukan beberapa stok. | return new self( |
Aturan field asli
| Potongan aturan | Baris |
|---|---|
'id_cabang' => ['required', 'integer', 'min:1', 'max:2147483647'], | 28 |
'nama_pelanggan' => ['required', 'string', 'max:100'], | 29 |
'no_wa' => ['nullable', 'string', 'max:20', 'regex:/^(?:\+62|62|0)8[0-9 .-]{7,15}$/'], | 30 |
'email' => ['required', 'string', 'email', 'max:100'], | 31 |
'alamat' => ['required', 'string', 'max:2000'], | 32 |
'metode_penerimaan' => ['required', 'string', 'in:ambil,kirim'], | 33 |
'nama_penerima' => ['nullable', 'string', 'max:100'], | 34 |
'alamat_pengiriman' => ['nullable', 'string', 'max:2000'], | 35 |
'metode_pembayaran' => ['required', 'string', 'in:transfer_bank,qris'], | 36 |
'items' => ['required', 'array', 'min:1', 'max:100'], | 37 |
'items.*' => ['required', 'array:id_produk,jumlah'], | 38 |
'items.*.id_produk' => ['required', 'integer', 'min:1', 'max:2147483647', 'distinct'], | 39 |
'items.*.jumlah' => ['required', 'integer', 'min:1', 'max:2147483647'], | 40 |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 e38202aacf2b709d3220cb13a8c05a12c80dd28c4d3f6863cf97b5f36d17480a
app/Services/Transactions/OnlineOrderLinks.php40 baris · 1 fungsi bernama
Untuk apa
Pembuat tautan sementara untuk tracking, bukti, dan pembatalan.
Jika diminta mengubah
Batas unggah 15 menit dihitung dari waktu pesanan. Masa tracking diatur terpisah.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function make(int $branchId, string $saleNumber, CarbonInterface|string|null $createdAt = null): array | Membuat temporarySignedRoute dengan cabang dan nomor pesanan, halaman tracking, URL bukti, URL pembatalan, serta batas pembayaran. | Tautan sementara |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 ec18cfeb25fa93896b3b7d37cb025df0ab28eea42c39702cceb1a3e93e99be8e
app/Services/Transactions/OnlineOrderStatus.php41 baris · 1 fungsi bernama
Untuk apa
Konstanta status pembayaran, penjualan online, dan pengiriman.
Jika diminta mengubah
Penambahan konstanta perlu aturan transisi pada workflow serta tampilan status.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function internalCapability(): string | Menetapkan kasir sebagai kemampuan dasar operasi internal online order. Pewarisan mengikuti RoleAccess. | return 'kasir'; |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 33b1963af20e3a49250012ccd9a3e836b0cb7f08f824f78fe2e703b97695d690
app/Services/Transactions/OnlineOrderWorkflow.php249 baris · 8 fungsi bernama
Untuk apa
TP internal verifikasi pembayaran dan pemenuhan pesanan.
Jika diminta mengubah
Setiap operasi punya prasyarat status. Edit juga OnlineOrderActionData, IVP, dan skenario pengujian jika menambah tahap.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(
private BusinessAccess $access,
private IssueStock $inventory,
private OnlineOrderIntegrity $integrity,
private OnlinePaymentProofStorage $proofs,
private SalePricing $pricing,
private AuditLogger $audit,
) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function handle(Pengguna $actor, int $saleId, OnlineOrderActionData $input, Request $request): array | Memvalidasi aktor dari registry, menahan referensi produk, mengunci pesanan tenant, lalu dispatch operasi internal. | Batas transaksi Kunci baris perubahan Kunci referensi baca Relasi aktor dan TP Tabel detail_penjualan, penjualan Panggilan access.actorFor, access.tenant |
function payment(
Connection $db,
ResolvedTenant $tenant,
object $sale,
Pengguna $actor,
array $products,
OnlineOrderActionData $input,
Request $request,
): void | Memeriksa bukti privat dan keadaan pembayaran. Keputusan diterima mengurangi stok melalui TP dan memverifikasi keadaan lunas. Penolakan mengikuti cabang keputusan tersendiri. | Kunci baris perubahan Audit CDI wajib IVP pesanan lunas Tabel penjualan, detail_penjualan Panggilan proofs.validPath, proofs.exists, audit.recordCdi, inventory.handle, pricing.total, integrity.verifyPaid |
function process(Connection $db, object $sale, Pengguna $actor, Request $request): void | Mengizinkan proses hanya setelah pesanan berstatus dibayar. | Lihat signature dan isi fungsi. |
function ship(Connection $db, object $sale, Pengguna $actor, OnlineOrderActionData $input, Request $request): void | Mengizinkan pengiriman pada pesanan kirim yang sedang diproses dan mencatat kurir, resi, serta audit. | Kunci baris perubahan Audit CDI wajib Tabel pengiriman Panggilan audit.recordCdi |
function ready(Connection $db, object $sale, Pengguna $actor, Request $request): void | Mengizinkan siap diambil hanya untuk pesanan ambil yang sedang diproses. | Tabel pengiriman |
function complete(Connection $db, object $sale, Pengguna $actor, Request $request): void | Memeriksa prasyarat pesanan kirim atau ambil sebelum menandai selesai. | Kunci baris perubahan Audit CDI wajib Tabel pengiriman Panggilan audit.recordCdi |
function updateSaleStatus(
Connection $db,
object $sale,
string $status,
string $action,
Pengguna $actor,
Request $request,
): void | Memperbarui status penjualan dan mencatat audit perubahan status. | Audit CDI wajib Tabel penjualan Panggilan audit.recordCdi |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 0653b024f47d1d220135beeee4a713f028bb28aa88a985a854063c1fec28227f
app/Services/Transactions/OnlinePaymentProofStorage.php66 baris · 5 fungsi bernama
Untuk apa
Penyimpanan dan pembacaan bukti pembayaran privat.
Jika diminta mengubah
Tidak memakai nama asli upload sebagai path. Pengunduhan harus tetap melewati route yang berizin.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function store(UploadedFile $file, int $branchId, int $saleId): string | Memeriksa MIME isi file, membuat nama acak 48 karakter hex dalam path cabang dan pesanan, menulis stream privat, lalu membersihkan file jika gagal. | return $path; |
function validPath(string $path, int $branchId, int $saleId): bool | Memastikan pola path sesuai cabang, ID pesanan, nama acak, dan ekstensi yang diizinkan. | return preg_match('#\Acabang/'.$branchId.'/online-order/'.$saleId.'/[a-f0-9]{48}\.(jpg|png|webp|pdf)\z#', $path) === 1; |
function exists(string $path): bool | Memeriksa keberadaan file pada disk bukti. | return Storage::disk(self::DISK)->exists($path); |
function remove(string $path): void | Menghapus file bukti pada disk yang ditentukan. | Lihat signature dan isi fungsi. |
function response(string $path, int $branchId, int $saleId): StreamedResponse | Memvalidasi path dan keberadaan lalu mengirim attachment dengan no-store, nosniff, dan CSP sandbox. | return Storage::disk(self::DISK)->response($path, 'bukti-pembayaran.'.pathinfo($path, PATHINFO_EXTENSION), [ |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 1269bd7f8d2b6e2089ee8854550386b4dcee6fd75127aa3524273af2d526fbda
app/Services/Transactions/ProgressService.php16 baris · 2 fungsi bernama
Untuk apa
Mencatat progres teknis melalui TP bernama khusus.
Jika diminta mengubah
Aturan bersama berada pada ServiceWorkflow dan ServiceData.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(private ServiceWorkflow $workflow) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function handle(Pengguna $actor, array $input, Request $request, int $id): int | Membentuk ServiceData untuk operasi progress lalu meneruskan aktor, input, request, dan ID yang diperlukan kepada workflow. | Panggilan workflow.handle |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 7e5e0f34d5315874df3cc2526238026667ff67ce4c38385c9dc9721be3048073
app/Services/Transactions/PurchaseData.php57 baris · 3 fungsi bernama
Untuk apa
Input pembelian dengan jumlah rusak dan catatan kondisi.
Jika diminta mengubah
Tambah atau ubah field di rules, normalisasi, konstruktor jika ada, Request pemanggil, layanan transaksi, dan form frontend.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(
public int $supplierId,
public string $number,
public CarbonImmutable $purchasedAt,
public array $items,
) | Menyimpan field objek input bertipe. Jalur fromInput atau validate memeriksa nilai sebelum objek dipakai. | Lihat signature dan isi fungsi. |
function rules(): array | Menetapkan field, tipe, nilai yang diperbolehkan, panjang, jumlah item, dan batas angka untuk operasi terkait. | return [ |
function fromInput(array $input): self | Memvalidasi ulang input pada batas TP, menormalisasi nilai, mengubah tipe, dan membentuk objek input. Urutan produk dibuat konsisten bila operasi memerlukan beberapa stok. | return new self((int) $data['id_supplier'], $data['nomor_pembelian'], |
Aturan field asli
| Potongan aturan | Baris |
|---|---|
'id_supplier' => ['required', 'integer', 'min:1', 'max:2147483647'], | 23 |
'nomor_pembelian' => ['required', 'string', 'max:50'], | 24 |
'tanggal_pembelian' => ['required', 'date_format:Y-m-d\TH:i:sP'], | 25 |
'items' => ['required', 'array', 'min:1', 'max:100'], | 26 |
'items.*' => ['required', 'array:id_produk,jumlah,harga_beli,jumlah_rusak,catatan_kerusakan'], | 27 |
'items.*.id_produk' => ['required', 'integer', 'min:1', 'max:2147483647', 'distinct'], | 28 |
'items.*.jumlah' => ['required', 'integer', 'min:1', 'max:2147483647'], | 29 |
'items.*.jumlah_rusak' => ['sometimes', 'integer', 'min:0', 'lte:items.*.jumlah'], | 30 |
'items.*.catatan_kerusakan' => ['nullable', 'string', 'max:2000'], | 31 |
'items.*.harga_beli' => ['required', 'integer', 'min:0', 'max:999999999999'], | 32 |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 f23f82bec7dd5e9b34c17d324b9aec9ac08fbb9ba690d4acd563398cf29f8be0
app/Services/Transactions/ReceiveService.php16 baris · 2 fungsi bernama
Untuk apa
Menerima unit servis melalui TP bernama khusus.
Jika diminta mengubah
Aturan bersama berada pada ServiceWorkflow dan ServiceData.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(private ServiceWorkflow $workflow) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function handle(Pengguna $actor, array $input, Request $request): int | Membentuk ServiceData untuk operasi receive lalu meneruskan aktor, input, request, dan ID yang diperlukan kepada workflow. | Panggilan workflow.handle |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 8a6f98263991d8e6f4e9f9e37043490c9e47c5bc006a228db4df2ae3a96997ac
app/Services/Transactions/RecordPurchase.php81 baris · 2 fungsi bernama
Untuk apa
TP penerimaan pembelian, termasuk barang rusak.
Jika diminta mengubah
Jumlah tersedia bertambah jumlah diterima dikurangi jumlah rusak. Jumlah rusak masuk karantina.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(
private BusinessAccess $access,
private ReceiveStock $inventory,
private PurchaseIntegrity $integrity,
private AuditLogger $audit,
) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function handle(Pengguna $actor, PurchaseData $input, Request $request): int | Memvalidasi supplier, produk dan aktor, menyimpan pembelian serta detail, menjalankan ReceiveStock per produk, memverifikasi hasil, lalu mencatat audit dalam transaksi tenant. | Batas transaksi Kunci referensi baca Relasi aktor dan TP Audit CDI wajib Pemeriksaan IVP Tabel pembelian, detail_pembelian, produk_cabang Panggilan access.actorFor, access.tenant, inventory.handle, integrity.verify, audit.recordCdi |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 902f32611d9fbb6815cffd29a80d56bc7a4fe2cc8754e07a5a70e6ba97e3bc4e
app/Services/Transactions/RecordPurchaseReturn.php87 baris · 2 fungsi bernama
Untuk apa
TP retur pembelian ke supplier.
Jika diminta mengubah
Barang retur pembelian dikurangi dari stok karantina, bukan stok yang siap dijual.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(
private BusinessAccess $access,
private AuditLogger $audit,
private ReturnQuarantinedStock $inventory,
) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function handle(Pengguna $actor, array $input, Request $request): int | Mengunci pembelian serta retur terdahulu, memeriksa sisa item, menyimpan retur, mengurangi karantina melalui TP, memeriksa hasil, dan mengaudit. | Batas transaksi Kunci baris perubahan Relasi aktor dan TP Audit CDI wajib Tabel pembelian, detail_pembelian, detail_retur_pembelian as d, retur_pembelian, detail_retur_pembelian Panggilan access.actorFor, access.tenant, audit.recordCdi, inventory.handle |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 79bbe81c67577f00e0f14f88930fec1ed868a99a6e8d09e3fd54d4ed1fe02e0f
app/Services/Transactions/RecordSaleReturn.php111 baris · 2 fungsi bernama
Untuk apa
TP retur penjualan dan perhitungan refund atau tukar barang.
Jika diminta mengubah
Harga acuan berasal dari transaksi awal. Jumlah kumulatif retur tidak boleh melebihi jumlah terjual.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(
private BusinessAccess $access,
private AuditLogger $audit,
private ApplySaleReturnStock $inventory,
) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function handle(Pengguna $actor, array $input, Request $request): int | Mengunci sumber dan retur terdahulu, memvalidasi sisa jumlah, menghitung refund, memanggil TP penyesuaian stok sesuai kondisi, memeriksa hasil, dan menulis audit. | Batas transaksi Kunci baris perubahan Relasi aktor dan TP Audit CDI wajib Tabel penjualan, detail_penjualan, detail_retur_penjualan as d, retur_penjualan, detail_retur_penjualan Panggilan access.actorFor, access.tenant, audit.recordCdi, inventory.handle |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 64c76a2c8f1583716553efd0c9988d14244601c22748c46d6c45f6fb4ae59ff0
app/Services/Transactions/RequestSpecialPriceSale.php213 baris · 3 fungsi bernama
Untuk apa
Membuat penjualan yang menunggu keputusan harga khusus.
Jika diminta mengubah
Permintaan belum merupakan penjualan selesai. Stok diperiksa lagi pada keputusan.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(
private BusinessAccess $access,
private SalePricing $pricing,
private SaleIntegrity $integrity,
private AuditLogger $audit,
) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function handle(Pengguna $actor, SpecialPriceSaleData $input, Request $request): array | Memvalidasi aktor, produk, stok, harga yang diminta dan alasan, menyimpan pengajuan serta token, menjalankan IVP, mengaudit, dan mengirim permintaan persetujuan. | Batas transaksi Kunci referensi baca Relasi aktor dan TP Audit CDI wajib Tautan sementara Tabel produk_cabang, penjualan, detail_penjualan Panggilan access.actorFor, access.tenant, pricing.normalPrice, pricing.total, integrity.verifyPendingSpecial, audit.recordCdi |
function normalTotal(SpecialPriceSaleData $input, array $normalPrices): int | Menghitung total harga normal sebagai pembanding harga khusus. | Panggilan pricing.total |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 adc7343fb2abddda378a69e1a900974becd9080f3f8dcd9f9b01cd5ff1a784bf
app/Services/Transactions/RequestStockTransfer.php132 baris · 4 fungsi bernama
Untuk apa
TP pengajuan transfer antar cabang.
Jika diminta mengubah
Dua cabang awal menggunakan coordinator 2PC. Penambahan tenant tidak otomatis menambah peserta coordinator.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(
private DistributedTransactionManager $transactions,
private BusinessAccess $access,
private StockTransferIntegrity $integrity,
private AuditLogger $audit,
private EnsureStockRow $inventory,
) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function handle(Pengguna $actor, StockTransferData $input, Request $request): array | Menjalankan mutasi_request melalui coordinator, memeriksa asal dan tujuan serta stok, membuat pengajuan dan fingerprint, lalu menjalankan IVP dan audit. | Kunci referensi baca Relasi aktor dan TP Audit CDI wajib Tautan sementara Pemeriksaan IVP Tabel mutasi_stok, detail_mutasi_stok Panggilan transactions.run, access.actorFor, access.tenant, integrity.fingerprint, audit.recordCdi, integrity.verify |
function references(int $source, int $destination, array $productIds): void | Memvalidasi cabang, produk aktif, serta referensi yang diperlukan mutasi. | Kunci referensi baca |
function lockStock(int $source, int $destination, array $items, bool $receive, bool $checkAvailability): array | Mengunci stok yang terkait dalam urutan produk dan memastikan stok asal cukup. | Kunci baris perubahan Tabel produk_cabang Panggilan inventory.handle |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 e5b64d7d2a147f3fbe3e00755fbfb6089b479b286c2f7077f85a47a8997955de
app/Services/Transactions/ReturnData.php43 baris · 2 fungsi bernama
Untuk apa
Input retur penjualan atau pembelian beserta batas jumlah dan kondisi barang.
Jika diminta mengubah
Tambah atau ubah field di rules, normalisasi, konstruktor jika ada, Request pemanggil, layanan transaksi, dan form frontend.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function rules(bool $purchase): array | Menetapkan field, tipe, nilai yang diperbolehkan, panjang, jumlah item, dan batas angka untuk operasi terkait. | return [ |
function validate(array $input, bool $purchase): array | Memvalidasi input per operasi dan menolak field tambahan menurut aturan layanan ini. | return Validator::make($input, $rules)->validate(); |
Aturan field asli
| Potongan aturan | Baris |
|---|---|
'alasan_retur' => ['required', 'string', 'min:5', 'max:500'], | 17 |
'items' => ['required', 'array', 'min:1', 'max:30'], | 19 |
'items.*' => ['required', $purchase ? 'array:id_produk,jumlah' : 'array:id_produk,jumlah,kondisi_barang'], | 20 |
'items.*.id_produk' => ['required', 'integer', 'min:1', 'max:2147483647', 'distinct'], | 21 |
'items.*.jumlah' => ['required', 'integer', 'min:1', 'max:1000000'], | 22 |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 9c9338df8a770755e7564855cca865b683124dc911fd2f500b558fe05f9cf6e8
app/Services/Transactions/SaleData.php54 baris · 3 fungsi bernama
Untuk apa
Input penjualan normal tanpa harga kiriman browser.
Jika diminta mengubah
Tambah atau ubah field di rules, normalisasi, konstruktor jika ada, Request pemanggil, layanan transaksi, dan form frontend.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(
public ?int $customerId,
public string $paymentMethod,
public int $amountPaid,
public array $items,
) | Menyimpan field objek input bertipe. Jalur fromInput atau validate memeriksa nilai sebelum objek dipakai. | Lihat signature dan isi fungsi. |
function rules(): array | Menetapkan field, tipe, nilai yang diperbolehkan, panjang, jumlah item, dan batas angka untuk operasi terkait. | return [ |
function fromInput(array $input): self | Memvalidasi ulang input pada batas TP, menormalisasi nilai, mengubah tipe, dan membentuk objek input. Urutan produk dibuat konsisten bila operasi memerlukan beberapa stok. | return new self( |
Aturan field asli
| Potongan aturan | Baris |
|---|---|
'id_pelanggan' => ['nullable', 'integer', 'min:1', 'max:2147483647'], | 22 |
'metode_pembayaran' => ['required', 'string', 'max:30', 'regex:/^[a-zA-Z0-9 _-]+$/'], | 23 |
'jumlah_bayar' => ['required', 'integer', 'min:0'], | 24 |
'items' => ['required', 'array', 'min:1', 'max:100'], | 25 |
'items.*' => ['required', 'array:id_produk,jumlah'], | 26 |
'items.*.id_produk' => ['required', 'integer', 'min:1', 'max:2147483647', 'distinct'], | 27 |
'items.*.jumlah' => ['required', 'integer', 'min:1', 'max:2147483647'], | 28 |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 a371ee760b7dec366eeb470d988023ad91f9e52d2ceee0d9ec7ecbcb3650a753
app/Services/Transactions/SalePricing.php42 baris · 3 fungsi bernama
Untuk apa
Perhitungan harga normal dan total menggunakan integer.
Jika diminta mengubah
normalPrice saat ini memakai harga_jual. Kolom harga_grosir dan min_qty_grosir belum mengaktifkan diskon otomatis.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function normalPrice(Produk $product, int $quantity): int | Memastikan jumlah positif dan mengembalikan harga_jual produk. | return (int) $product->harga_jual; |
function lineTotal(int $quantity, int $price): int | Memvalidasi jumlah serta harga dan mencegah perkalian melampaui PHP_INT_MAX. | return $quantity * $price; |
function total(array $lines): int | Menjumlahkan nilai tiap item dan mencegah penjumlahan melampaui kapasitas integer. | return $total; |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 4ab44f46c6a83c7de8300fe6c03bf2f820d6c9824d611b5da53a02c0835f3404
app/Services/Transactions/SaleStatus.php26 baris · 0 fungsi bernama
Untuk apa
Konstanta pembayaran, status penjualan toko, dan approval harga khusus.
Jika diminta mengubah
Perubahan nilai status harus selaras dengan CHECK database, IVP, laporan, serta frontend.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 f82fc2716ff6e827fbb7a6fbceff5a8ef690d75f424849d3d5f4fcf384ce6d50
app/Services/Transactions/ServiceData.php84 baris · 3 fungsi bernama
Untuk apa
Input khusus receive, assign, progress, parts, dan handover.
Jika diminta mengubah
Tambah atau ubah field di rules, normalisasi, konstruktor jika ada, Request pemanggil, layanan transaksi, dan form frontend.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(public string $operation, public array $values) | Menyimpan field objek input bertipe. Jalur fromInput atau validate memeriksa nilai sebelum objek dipakai. | Lihat signature dan isi fungsi. |
function rules(string $operation): array | Menetapkan field, tipe, nilai yang diperbolehkan, panjang, jumlah item, dan batas angka untuk operasi terkait. | return match ($operation) { |
function fromInput(string $operation, array $input): self | Memvalidasi ulang input pada batas TP, menormalisasi nilai, mengubah tipe, dan membentuk objek input. Urutan produk dibuat konsisten bila operasi memerlukan beberapa stok. | return new self($operation, $values); |
Aturan field asli
| Potongan aturan | Baris |
|---|---|
'receive' => [ | 20 |
'jenis_unit' => ['required', 'string', 'max:50'], | 22 |
'merek_unit' => ['required', 'string', 'max:50'], | 23 |
'tipe_unit' => ['required', 'string', 'max:100'], | 24 |
'kelengkapan' => ['nullable', 'string', 'max:5000'], | 26 |
'id_teknisi' => ['nullable', 'integer', 'min:1', 'max:2147483647'], | 27 |
'assign' => ['id_teknisi' => $id, 'catatan' => $note], | 29 |
'progress' => [ | 30 |
'status_servis' => ['sometimes', 'required', 'in:'.implode(',', [ServiceStatus::DIAGNOSING, ServiceStatus::REPAIRING, ServiceStatus::READY])], | 32 |
'biaya_jasa' => ['sometimes', 'required', 'integer', 'min:0', 'max:999999999999'], | 33 |
'garansi_hari' => ['sometimes', 'required', 'integer', 'min:0', 'max:32767'], | 34 |
'bukti_foto' => ['nullable', 'file', 'image', 'mimetypes:image/jpeg,image/png,image/webp', 'max:'.max(1, (int) config('security.service_photo_max_kb', 5120))], | 35 |
'parts' => [ | 37 |
'items' => ['required', 'array', 'min:1', 'max:100'], | 39 |
'items.*' => ['required', 'array:id_produk,jumlah'], | 40 |
'items.*.id_produk' => [...$id, 'distinct'], | 41 |
'items.*.jumlah' => ['required', 'integer', 'min:1', 'max:2147483647'], | 42 |
'handover' => ['catatan' => $note], | 44 |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 f75f477901ac1d682a23e8bdb6318aeb331707efccd80ec5946cf5e005f204d9
app/Services/Transactions/ServicePhotoStorage.php58 baris · 4 fungsi bernama
Untuk apa
Penyimpanan bukti foto servis secara privat.
Jika diminta mengubah
Validasi image di ServiceData dan validasi MIME isi di storage ini saling melengkapi.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function store(UploadedFile $file, int $branchId, int $serviceId): string | Menyimpan JPEG, PNG, atau WebP dengan nama acak pada folder cabang dan servis. Membersihkan file yang gagal ditulis. | return $path; |
function validPath(string $path, int $branchId, int $serviceId): bool | Memeriksa pola path cabang dan servis serta ekstensi yang dibolehkan. | return preg_match('#\Acabang/'.$branchId.'/servis/'.$serviceId.'/[a-f0-9]{48}\.(jpg|png|webp)\z#', $path) === 1; |
function remove(string $path): void | Membersihkan file foto pada disk bukti servis. | Lihat signature dan isi fungsi. |
function response(string $path, int $branchId, int $serviceId): StreamedResponse | Mengirim bukti sebagai attachment privat setelah pola dan keberadaan diperiksa. | return Storage::disk(self::DISK)->response($path, 'bukti-servis.'.pathinfo($path, PATHINFO_EXTENSION), [ |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 2cb2732e7c9dbb9ed762fde594fe709aace871e1db9a87ff97fde7941aa6fe40
app/Services/Transactions/ServiceStatus.php40 baris · 3 fungsi bernama
Untuk apa
Daftar status servis dan arah perubahan yang diizinkan.
Jika diminta mengubah
Tambahkan status hanya setelah jalur masuk, jalur keluar, peran, biaya, log, dan frontend ditentukan.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function technical(string $before, string $after): bool | Mengatur transisi antre ke diagnosa, diagnosa ke diagnosa atau dikerjakan, dan dikerjakan ke dikerjakan atau siap diambil. | return match ($before) { |
function mutable(string $status): bool | Menentukan tahap yang masih dapat diubah penugasannya. | return in_array($status, [self::QUEUED, self::DIAGNOSING, self::REPAIRING], true); |
function capability(string $operation): string | Memisahkan operasi kasir receive, assign, handover dari operasi teknisi progress dan parts. | return match ($operation) { |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 cef772fa59a26e9395534b4cade62558b394d035bc76f622a99e8eed5e98b7bc
app/Services/Transactions/ServiceWorkflow.php174 baris · 3 fungsi bernama
Untuk apa
Batas transaksi untuk penerimaan, penugasan, progres, sparepart, dan penyerahan servis.
Jika diminta mengubah
Tambah operasi harus mengubah Request atau DTO, status, capability, workflow, IVP, registry, audit, frontend, dan tes.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(
private BusinessAccess $access,
private ServiceAccess $serviceAccess,
private ServiceIntegrity $integrity,
private IssueStock $stock,
private AuditLogger $audit,
private ServicePhotoStorage $photos,
) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function handle(Pengguna $actor, ServiceData $input, Request $request, ?int $id = null): int | Memvalidasi aktor dan tenant, memeriksa SoD, mengunci servis, menjalankan operasi yang diizinkan, mengelola foto dan stok sparepart, menambah log, menjalankan IVP, serta mengaudit. | Batas transaksi Kunci baris perubahan Kunci referensi baca Relasi aktor dan TP Audit CDI wajib Pemeriksaan IVP Tabel pelanggan, servis, sparepart_servis, log_servis Panggilan access.actorFor, access.tenant, serviceAccess.technician, serviceAccess.action, photos.store, stock.handle, integrity.verify |
function stockSnapshot(Connection $db, int $branchId, int $productId): array | Membaca kedua jenis stok satu produk pada cabang untuk pembuktian pemakaian sparepart. | Tabel produk_cabang |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 0752e8c236809f54b5d0a76a0922cce40bcb2fccb2d647abf4e66b08f1d6c5c9
app/Services/Transactions/SpecialPriceSaleData.php63 baris · 3 fungsi bernama
Untuk apa
Input harga khusus, jumlah, pembayaran, dan alasan.
Jika diminta mengubah
Tambah atau ubah field di rules, normalisasi, konstruktor jika ada, Request pemanggil, layanan transaksi, dan form frontend.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(
public ?int $customerId,
public string $paymentMethod,
public int $amountPaid,
public string $reason,
public array $items,
) | Menyimpan field objek input bertipe. Jalur fromInput atau validate memeriksa nilai sebelum objek dipakai. | Lihat signature dan isi fungsi. |
function rules(): array | Menetapkan field, tipe, nilai yang diperbolehkan, panjang, jumlah item, dan batas angka untuk operasi terkait. | return [ |
function fromInput(array $input): self | Memvalidasi ulang input pada batas TP, menormalisasi nilai, mengubah tipe, dan membentuk objek input. Urutan produk dibuat konsisten bila operasi memerlukan beberapa stok. | return new self( |
Aturan field asli
| Potongan aturan | Baris |
|---|---|
'id_pelanggan' => ['nullable', 'integer', 'min:1', 'max:2147483647'], | 23 |
'metode_pembayaran' => ['required', 'string', 'max:30', 'regex:/^[a-zA-Z0-9 _-]+$/'], | 24 |
'jumlah_bayar' => ['required', 'integer', 'min:0'], | 25 |
'alasan' => ['required', 'string', 'max:500'], | 26 |
'items' => ['required', 'array', 'min:1', 'max:100'], | 27 |
'items.*' => ['required', 'array:id_produk,jumlah,harga_khusus'], | 28 |
'items.*.id_produk' => ['required', 'integer', 'min:1', 'max:2147483647', 'distinct'], | 29 |
'items.*.jumlah' => ['required', 'integer', 'min:1', 'max:2147483647'], | 30 |
'items.*.harga_khusus' => ['required', 'integer', 'min:1', 'max:999999999999'], | 31 |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 c16a9e16ad6ec091bd21c17343de79e843e3df04adb110182bc15aa6afe54686
app/Services/Transactions/StockTransferData.php36 baris · 2 fungsi bernama
Untuk apa
Input cabang asal, tujuan, item, dan alasan transfer.
Jika diminta mengubah
Tambah atau ubah field di rules, normalisasi, konstruktor jika ada, Request pemanggil, layanan transaksi, dan form frontend.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(public int $source, public int $destination, public string $reason, public array $items) | Menyimpan field objek input bertipe. Jalur fromInput atau validate memeriksa nilai sebelum objek dipakai. | Lihat signature dan isi fungsi. |
function fromInput(array $input): self | Memvalidasi ulang input pada batas TP, menormalisasi nilai, mengubah tipe, dan membentuk objek input. Urutan produk dibuat konsisten bila operasi memerlukan beberapa stok. | return new self((int) $data['id_cabang_asal'], (int) $data['id_cabang_tujuan'], trim($data['alasan_mutasi']), $items); |
Aturan field asli
| Potongan aturan | Baris |
|---|---|
'id_cabang_asal' => ['required', 'integer', 'min:1'], | 20 |
'id_cabang_tujuan' => ['required', 'integer', 'min:1', 'different:id_cabang_asal'], | 21 |
'alasan_mutasi' => ['required', 'string', 'max:2000'], | 22 |
'items' => ['required', 'array', 'min:1', 'max:100'], | 23 |
'items.*' => ['required', 'array:id_produk,jumlah'], | 24 |
'items.*.id_produk' => ['required', 'integer', 'min:1', 'distinct:strict'], | 25 |
'items.*.jumlah' => ['required', 'integer', 'min:1', 'max:2147483647'], | 26 |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 2e4c13a79307c673267484039c1591f514405a6efcb882e0dbe6add55e7220c4
app/Services/Transactions/UploadOnlinePaymentProof.php74 baris · 2 fungsi bernama
Untuk apa
Penerimaan bukti pembayaran pelanggan.
Jika diminta mengubah
Menerima file belum berarti pembayaran lunas. Verifikasi pegawai dilakukan terpisah.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(
private TenantResolver $tenants,
private OnlinePaymentProofStorage $storage,
private AuditLogger $audit,
) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function handle(int $branchId, string $saleNumber, UploadedFile $file, Request $request): void | Memeriksa tenant, status dan batas 15 menit, menyimpan file privat, mengunci ulang pesanan, mencatat perubahan serta audit UDI, dan membersihkan file jika gagal. | Batas transaksi Kunci baris perubahan Audit input publik Tabel penjualan Panggilan tenants.resolve, storage.store, audit.recordGuestUdi, storage.remove |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 3d2d9849539fe27b21e9852519fbdd500fb606b0125eac3abd4800904ca0c23b
app/Services/Transactions/UseServiceParts.php16 baris · 2 fungsi bernama
Untuk apa
Memakai sparepart servis melalui TP bernama khusus.
Jika diminta mengubah
Aturan bersama berada pada ServiceWorkflow dan ServiceData.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(private ServiceWorkflow $workflow) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function handle(Pengguna $actor, array $input, Request $request, int $id): int | Membentuk ServiceData untuk operasi parts lalu meneruskan aktor, input, request, dan ID yang diperlukan kepada workflow. | Panggilan workflow.handle |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 3a625822c6cee5502a633c0735fc3b044f8ac0fca35798f62770dfdc326cdf16
app/Services/Transactions/WarrantyClaimData.php46 baris · 3 fungsi bernama
Untuk apa
Input klaim dari produk atau servis serta tindakan pemeriksaannya.
Jika diminta mengubah
Tambah atau ubah field di rules, normalisasi, konstruktor jika ada, Request pemanggil, layanan transaksi, dan form frontend.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(public string $operation, public array $values) | Menyimpan field objek input bertipe. Jalur fromInput atau validate memeriksa nilai sebelum objek dipakai. | Lihat signature dan isi fungsi. |
function rules(string $operation): array | Menetapkan field, tipe, nilai yang diperbolehkan, panjang, jumlah item, dan batas angka untuk operasi terkait. | return match ($operation) { |
function fromInput(string $operation, array $input): self | Memvalidasi ulang input pada batas TP, menormalisasi nilai, mengubah tipe, dan membentuk objek input. Urutan produk dibuat konsisten bila operasi memerlukan beberapa stok. | return new self($operation, $values); |
Aturan field asli
| Potongan aturan | Baris |
|---|---|
'service' => ['id_servis' => $id, 'keluhan_klaim' => $text], | 20 |
'product' => ['id_penjualan' => $id, 'id_produk' => $id, 'keluhan_klaim' => $text], | 21 |
'inspect' => ['hasil_pemeriksaan' => $text, 'keputusan' => ['required', 'in:periksa,terima,tolak']], | 22 |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 5fca1672b2190277cea5b00b521dcc3263d977f17b0f3b22701915d5830cadf4
app/Services/Transactions/WarrantyClaimStatus.php65 baris · 5 fungsi bernama
Untuk apa
Status klaim, peran, event audit, dan transisi yang sah.
Jika diminta mengubah
Ditolak dan selesai merupakan status akhir. Jangan sekadar menambah opsi pada dropdown.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function capability(string $operation): string | Menetapkan kemampuan kasir untuk pengajuan dan pemeriksaan, serta teknisi untuk penanganan dan penyelesaian. | return match ($operation) { |
function transition(?string $before, string $event): ?string | Mengubah pasangan status lama dan event menjadi status baru, atau null bila transisi tidak sah. | return match (true) { |
function technicalEvent(string $event): bool | Menandai event penanganan atau penyelesaian sebagai tahap teknis. | return in_array($event, ['klaim_ditangani', 'klaim_selesai'], true); |
function terminal(): array | Mengembalikan ditolak dan selesai sebagai tahap akhir. | return [self::REJECTED, self::COMPLETED]; |
function event(string $operation, ?string $decision = null): string | Memetakan operasi dan keputusan pemeriksaan menjadi nama event audit yang dikenal. | return match ($operation) { |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 58e4ccd41a40a598957a94431f58c25761a02b4501a52b987d099bd5510fb847
app/Services/Transactions/WarrantyClaimWorkflow.php96 baris · 2 fungsi bernama
Untuk apa
Batas transaksi untuk klaim produk atau servis dan tahap pemeriksaannya.
Jika diminta mengubah
Riwayat klaim dipakai untuk membuktikan SoD, bukan hanya untuk ditampilkan.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function __construct(
private BusinessAccess $access,
private WarrantySource $sources,
private WarrantyClaimHistory $history,
private WarrantyClaimIntegrity $integrity,
private AuditLogger $audit,
) | Menerima dependensi atau data awal objek. Parameter bertipe disediakan pemanggil atau container Laravel sesuai jalurnya. | Lihat signature dan isi fungsi. |
function handle(Pengguna $actor, WarrantyClaimData $input, Request $request, ?int $id = null): int | Memeriksa aktor, tenant, sumber dan masa garansi, mencegah klaim aktif ganda, mengunci klaim, memvalidasi urutan status dan perbedaan pelaku teknis, menulis audit, lalu menjalankan IVP. | Batas transaksi Kunci baris perubahan Relasi aktor dan TP Audit CDI wajib Pemeriksaan IVP Tabel klaim_garansi Panggilan access.actorFor, access.tenant, sources.claims, sources.key, sources.resolve, sources.eligible, history.verify |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 f1aae82841bb4c8cb82d5ab895d921162fb89674f8933bb66b446436b4366103
Frontend, view dan aset teks 55
public/css/rajawali-error.css9 baris · 0 fungsi bernama
Untuk apa
CSS halaman 404.
Jika diminta mengubah
CSS dipisah dari Blade agar sesuai kebijakan style produksi.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 c4e7acf513335eceb17da5f5740038610e53526f99b3ee3eb6d629fca929ee1e
public/icons/rajawali.svg4 baris · 0 fungsi bernama
Untuk apa
Ikon vektor merek dalam aset publik.
Jika diminta mengubah
Gambar tidak mengubah aturan transaksi atau autentikasi.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 da53103163bfa710677fc538ac6147ef16c231715ace118776fb88603e0f0052
public/index.php20 baris · 0 fungsi bernama
Untuk apa
Front controller HTTP Laravel.
Jika diminta mengubah
Mengarahkan request ke aplikasi. Aturan bisnis tidak ditambahkan ke file entry ini.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 eba77cba39695b6bd091fe5211d481f7ebb2ce2d8d26230b5a609465d0a4aff9
public/manifest.webmanifest15 baris · 0 fungsi bernama
Untuk apa
Manifest instalasi PWA versi lama.
Jika diminta mengubah
Masih dirujuk HTML shell, tetapi proxy revisi mengembalikan 404 dan entry aktif tidak mendaftarkan PWA.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 01064a22059543092e7bfa1afc2067923631fcdee026f223f3d123c14da03543
public/offline.css1 baris · 0 fungsi bernama
Untuk apa
Gaya halaman offline lama.
Jika diminta mengubah
Tidak mengubah perilaku API atau menyimpan transaksi.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 d64059d0af4b4166e6f094eda7a5d341fb8eea03d70b52abc00ddecdabbb1a6e
public/offline.html11 baris · 0 fungsi bernama
Untuk apa
Halaman offline lama yang ditujukan untuk service worker terdahulu.
Jika diminta mengubah
Tidak menandakan transaksi dapat berjalan offline pada entry aktif.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 d732c0b9ff0e000e5211e2b64cc7f872a268fd3b97dc92c0d05f8eb899703ce8
public/print.css1 baris · 0 fungsi bernama
Untuk apa
Gaya dokumen cetak.
Jika diminta mengubah
Dipanggil printDocument melalui link CSS eksternal pada popup.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 2cf4b5865d01e3e321716a67ea55d28eeddd6694bb5dd3dfcae47392e0f782d5
public/robots.txt2 baris · 0 fungsi bernama
Untuk apa
Petunjuk crawler mesin pencari.
Jika diminta mengubah
robots.txt bukan mekanisme pembatasan akses.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 e5c4b84484ee4216e9373be99380320c25dd94805f99f0a805846f087636553f
public/sw.js59 baris · 1 fungsi bernama
Untuk apa
Service worker peninggalan versi PWA.
Jika diminta mengubah
Entry aktif melepas registration lama dan proxy revisi mengembalikan 404 untuk sw.js. Tidak menjadi bukti PWA aktif.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
isSensitive · L26 | Memilih request yang tidak boleh dicache oleh service worker lama, termasuk query, API, CSRF, bukti pembayaran dan foto. Worker ini tidak didaftarkan entry aktif. | API /api/, /sanctum/ |
Path API literal pada source
/api//sanctum/
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 1febb2e77da7129fc887e0c27f40d80e514ebbec91ec6cd1a9c756676de5621c
resources/css/app.css36 baris · 0 fungsi bernama
Untuk apa
Gaya global aplikasi, Tailwind, layout dan tabel responsif.
Jika diminta mengubah
Warna atau spacing lokal juga dapat berada pada className tiap komponen TSX.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 5d6f6c641d5ae36e0b47b33311e54753ebbad51a17241ece6f0dbd350819fb4c
resources/js/AuthApp.tsx368 baris · 14 fungsi bernama
Untuk apa
Form login, CAPTCHA dan kode email, pemulihan session, header akun, pemilihan cabang owner, serta shell internal.
Jika diminta mengubah
Ubah label, urutan field, state, tombol, dan JSX di sini. Payload dan aturan backend harus ikut diubah jika kontrak data berubah.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
browserTurnstile · L24 | Membaca API Turnstile yang tersedia pada window tanpa menganggap script selalu sudah termuat. | Lihat signature dan isi fungsi. |
UserIcon · L26 | Menggambar ikon pengguna tanpa melakukan request API. | return <svg className="h-5 w-5" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.9" aria-hidden="true"><circle cx="12" cy="8" r |
AuthApp · L30 | Form login, CAPTCHA dan kode email, pemulihan session, header akun, pemilihan cabang owner, serta shell internal. | Navigasi browser API /api/notifikasi, /api/me, /api/owner/cabang, /api/login/security-options, /api/login/verify-code, /api/login/cancel-code |
refreshTasks · L59 | Membaca jumlah tugas notifikasi cabang dan menerapkan hasil hanya selama efek masih aktif. | API /api/notifikasi |
onActivity · L70 | Memicu pembacaan ulang jumlah tugas pada event aktivitas yang didaftarkan. | Lihat signature dan isi fungsi. |
loadUser · L81 | Membaca /api/me, menyimpan akun serta cabang aktif, dan memuat pilihan cabang untuk owner. | API /api/me, /api/owner/cabang |
mount · L127 | Memasang widget Turnstile setelah script dan elemen tujuan tersedia, beserta callback token. | Lihat signature dan isi fungsi. |
acceptLogin · L156 | Menerapkan akun hasil login, mengambil kembali cabang bila perlu, lalu membersihkan password dan state tantangan. | API /api/me, /api/owner/cabang |
verifyEmailCode · L184 | Mengirim kode enam angka ke API verifikasi dan menerapkan akun hanya bila API berhasil. | API /api/login/verify-code |
cancelEmailCode · L196 | Meminta pembatalan tantangan dan mengembalikan form login. | API /api/login/cancel-code |
login · L203 | Mengambil CSRF cookie, mengirim email, password dan token CAPTCHA jika aktif, lalu menangani respons login 200 atau tantangan 202. | API /sanctum/csrf-cookie, /api/login |
logout · L236 | Memanggil API logout dan mengosongkan state akun serta cabang setelah session berakhir. | API /sanctum/csrf-cookie, /api/logout |
selectBranch · L261 | Meminta backend memilih cabang owner. State pilihan lama dipulihkan jika permintaan gagal. | API /api/owner/cabang-aktif |
passwordChanged · L285 | Mengosongkan workspace dan meminta login ulang dengan password baru. | Navigasi browser |
Path API literal pada source
/api/notifikasi/api/me/api/owner/cabang/api/login/security-options/api/login/verify-code/api/login/cancel-code/sanctum/csrf-cookie/api/login/api/logout/api/owner/cabang-aktif
State komponen dan nilai awal
| State | Setter | Inisialisasi asli |
|---|---|---|
| user | setUser | useState<ActiveUser | null>(null) |
| approvalUrl | setApprovalUrl | useState(() => new URL(window.location.href).searchParams.get('approval') ?? '') |
| branches | setBranches | useState<Branch[]>([]) |
| setEmail | useState('') | |
| password | setPassword | useState('') |
| branchId | setBranchId | useState('') |
| loading | setLoading | useState(true) |
| busy | setBusy | useState(false) |
| branchBusy | setBranchBusy | useState(false) |
| loggingOut | setLoggingOut | useState(false) |
| error | setError | useState('') |
| authNotice | setAuthNotice | useState('') |
| loginSecurityLoaded | setLoginSecurityLoaded | useState(false) |
| loginChallengeEnabled | setLoginChallengeEnabled | useState(false) |
| turnstileSiteKey | setTurnstileSiteKey | useState('') |
| captchaToken | setCaptchaToken | useState('') |
| awaitingCode | setAwaitingCode | useState(false) |
| emailCode | setEmailCode | useState('') |
| turnstileElement | setTurnstileElement | useState<HTMLDivElement | null>(null) |
| pendingTasks | setPendingTasks | useState(0) |
Effect dan memo yang perlu diperhatikan
| Hook | Isi yang terdeteksi | Kode |
|---|---|---|
| useEffect L53 | API, listener browser, interval, cleanup | |
| useEffect L93 | Perhitungan atau sinkronisasi state sesuai dependensi. | |
| useEffect L109 | API, cleanup | |
| useEffect L123 | API, listener browser, cleanup |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 8362f7642da25523038ef9daf22840440537c4f20f822d04e0ab01a9825719b2
resources/js/CustomersPanel.tsx73 baris · 10 fungsi bernama
Untuk apa
Form pelanggan, pencarian, daftar, dan dialog riwayat pelanggan.
Jika diminta mengubah
Ubah label, urutan field, state, tombol, dan JSX di sini. Payload dan aturan backend harus ikut diubah jika kontrak data berubah.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
waLink · L11 | Membentuk tautan WhatsApp dengan normalisasi nomor Indonesia. | return 'https://wa.me/' + value.replace(/\D/g, '').replace(/^0/, '62'); } |
statusText · L12 | Mengubah underscore dan kapitalisasi kode status menjadi label yang dapat dibaca. | return value.replaceAll('_', ' ').replace(/\b\w/g, letter => letter.toUpperCase()); } |
CustomersPanel · L14 | Form pelanggan, pencarian, daftar, dan dialog riwayat pelanggan. | Navigasi browser API /api/pelanggan, /api/pelanggan/ |
load · L21 | Membaca data panel melalui API, menerapkan hasil ke state dan menangani kegagalan pemuatan. | API /api/pelanggan |
search · L27 | Menerapkan teks pencarian dan mengawali pagination pada halaman pertama. | Lihat signature dan isi fungsi. |
clearSearch · L28 | Mengosongkan teks serta filter pencarian dan mengembalikan halaman awal. | Lihat signature dan isi fungsi. |
edit · L29 | Mengisi state form dari record yang dipilih dan membuka mode edit. | Lihat signature dan isi fungsi. |
reset · L30 | Mengakhiri mode edit atau membersihkan pencarian sesuai state yang diubah di fungsi ini. | Lihat signature dan isi fungsi. |
openHistory · L31 | Mengambil riwayat pelanggan dan menampilkannya tanpa mengubah transaksi sumber. | API /api/pelanggan/ |
submit · L32 | Menyusun payload form dan mengirim create atau update ke API. Respons backend menentukan apakah perubahan diterima. | API /api/pelanggan/, /api/pelanggan |
Path API literal pada source
/api/pelanggan/api/pelanggan/
State komponen dan nilai awal
| State | Setter | Inisialisasi asli |
|---|---|---|
| query | setQuery | useState('') |
| applied | setApplied | useState('') |
| rows | setRows | useState<Customer[]>([]) |
| page | setPage | useState(1) |
| lastPage | setLastPage | useState(1) |
| total | setTotal | useState(0) |
| refresh | setRefresh | useState(0) |
| updatedAt | setUpdatedAt | useState<Date|null>(null) |
| summary | setSummary | useState<Summary>({ customer_count: 0, with_whatsapp: 0, with_email: 0 }) |
| form | setForm | useState(emptyForm) |
| editing | setEditing | useState<Customer | null>(null) |
| history | setHistory | useState<History | null>(null) |
| loading | setLoading | useState(true) |
| historyLoading | setHistoryLoading | useState(false) |
| busy | setBusy | useState(false) |
| error | setError | useState('') |
| notice | setNotice | useState('') |
Effect dan memo yang perlu diperhatikan
| Hook | Isi yang terdeteksi | Kode |
|---|---|---|
| useEffect L26 | Perhitungan atau sinkronisasi state sesuai dependensi. |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 e311538a5ea81dfafc5149172de45b0dd55fca3328836fad03ea8117b338c85a
resources/js/DashboardPanel.tsx74 baris · 3 fungsi bernama
Untuk apa
Kartu ringkasan dan pintasan tugas pada dashboard.
Jika diminta mengubah
Ubah label, urutan field, state, tombol, dan JSX di sini. Payload dan aturan backend harus ikut diubah jika kontrak data berubah.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
DashboardPanel · L25 | Kartu ringkasan dan pintasan tugas pada dashboard. | API /api/dashboard-summary |
load · L34 | Membaca data panel melalui API, menerapkan hasil ke state dan menangani kegagalan pemuatan. | API /api/dashboard-summary |
renderCard · L51 | Menggambar satu kartu ringkasan dashboard dan tujuan navigasinya. | return <button type="button" onClick={() => onNavigate(card.page)} key={card.key} className={'rounded-2xl border p-5 text-left transition hover:-tr |
Path API literal pada source
/api/dashboard-summary
State komponen dan nilai awal
| State | Setter | Inisialisasi asli |
|---|---|---|
| data | setData | useState<DashboardData | null>(null) |
| loading | setLoading | useState(true) |
| error | setError | useState('') |
| refreshKey | setRefreshKey | useState(0) |
Effect dan memo yang perlu diperhatikan
| Hook | Isi yang terdeteksi | Kode |
|---|---|---|
| useEffect L31 | API, interval, pembatalan request, cleanup | |
| useMemo L46 | Perhitungan atau sinkronisasi state sesuai dependensi. |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 1354355630e6e34cf596af87f63260c6d9751e11a9a8cd73cbf100ab405290b7
resources/js/EmployeeActivationPage.tsx35 baris · 2 fungsi bernama
Untuk apa
Form password baru pada tautan undangan aktivasi.
Jika diminta mengubah
Ubah label, urutan field, state, tombol, dan JSX di sini. Payload dan aturan backend harus ikut diubah jika kontrak data berubah.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
EmployeeActivationPage · L5 | Form password baru pada tautan undangan aktivasi. | Navigasi browser API /api/aktivasi-akun |
submit · L12 | Menyusun payload form dan mengirim create atau update ke API. Respons backend menentukan apakah perubahan diterima. | Navigasi browser API /api/aktivasi-akun |
Path API literal pada source
/api/aktivasi-akun
State komponen dan nilai awal
| State | Setter | Inisialisasi asli |
|---|---|---|
| password | setPassword | useState('') |
| confirmation | setConfirmation | useState('') |
| busy | setBusy | useState(false) |
| message | setMessage | useState('') |
| error | setError | useState('') |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 0d2b36d85f28899c836188a5066f4c7f82c1cae163074fa8d1d678d6f283109b
resources/js/EmployeesPanel.tsx83 baris · 10 fungsi bernama
Untuk apa
Filter pegawai, form akun, pengiriman undangan dan riwayat perubahan hak.
Jika diminta mengubah
Ubah label, urutan field, state, tombol, dan JSX di sini. Payload dan aturan backend harus ikut diubah jika kontrak data berubah.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
EmployeesPanel · L11 | Filter pegawai, form akun, pengiriman undangan dan riwayat perubahan hak. | API /api/pengguna/riwayat, /api/pengguna, /api/owner/cabang, /api/pengguna/, /api/pengguna/${id}/undangan-batalkan, /api/pengguna/${id}/undangan-ulang |
branchName · L15 | Mencari nama cabang dari ID dan memberikan penanda ketika tidak ada cabang. | return 'Tanpa cabang';return branches.find(b=>b.id_cabang===id)?.nama_cabang??`Cabang #${id}`;} |
viewHistory · L16 | Memilih pegawai subjek histori, mengawali halaman pertama dan membuka area riwayat. | Lihat signature dan isi fungsi. |
load · L18 | Membaca data panel melalui API, menerapkan hasil ke state dan menangani kegagalan pemuatan. | API /api/pengguna, /api/owner/cabang |
reset · L21 | Mengakhiri mode edit atau membersihkan pencarian sesuai state yang diubah di fungsi ini. | Lihat signature dan isi fungsi. |
clearFilters · L22 | Mengembalikan filter dan nomor halaman ke nilai awal panel. | Lihat signature dan isi fungsi. |
edit · L23 | Mengisi state form dari record yang dipilih dan membuka mode edit. | Lihat signature dan isi fungsi. |
submit · L24 | Menyusun payload form dan mengirim create atau update ke API. Respons backend menentukan apakah perubahan diterima. | API /api/pengguna/, /api/pengguna |
revokeInvite · L25 | Meminta konfirmasi, membatalkan undangan melalui API, dan memuat daftar pegawai terbaru. | API /api/pengguna/${id}/undangan-batalkan |
resendInvite · L26 | Meminta API menerbitkan dan mengirim ulang undangan pegawai. | API /api/pengguna/${id}/undangan-ulang |
Path API literal pada source
/api/pengguna/riwayat/api/pengguna/api/owner/cabang/api/pengguna//api/pengguna/${id}/undangan-batalkan/api/pengguna/${id}/undangan-ulang
State komponen dan nilai awal
| State | Setter | Inisialisasi asli |
|---|---|---|
| rows | setRows | useState<Employee[]>([]) |
| branches | setBranches | useState<Branch[]>([]) |
| query | setQuery | useState('') |
| applied | setApplied | useState('') |
| roleFilter | setRoleFilter | useState('') |
| statusFilter | setStatusFilter | useState('') |
| branchFilter | setBranchFilter | useState('') |
| securityFilter | setSecurityFilter | useState('') |
| page | setPage | useState(1) |
| lastPage | setLastPage | useState(1) |
| total | setTotal | useState(0) |
| summary | setSummary | useState<Summary>({account_count:0,active_count:0,inactive_count:0,locked_count:0}) |
| refresh | setRefresh | useState(0) |
| updatedAt | setUpdatedAt | useState<Date|null>(null) |
| historyOpen | setHistoryOpen | useState(false) |
| historySubject | setHistorySubject | useState('') |
| historyPage | setHistoryPage | useState(1) |
| historyLastPage | setHistoryLastPage | useState(1) |
| historyRows | setHistoryRows | useState<HistoryEntry[]>([]) |
| historyLoading | setHistoryLoading | useState(false) |
| historyError | setHistoryError | useState('') |
| editing | setEditing | useState<Employee|null>(null) |
| form | setForm | useState({nama_pengguna:'',email:'',role:'kasir',id_cabang:'',status_akun:'aktif',password:'',activation_mode:'manual'}) |
| busy | setBusy | useState(false) |
| loading | setLoading | useState(true) |
| error | setError | useState('') |
| notice | setNotice | useState('') |
Effect dan memo yang perlu diperhatikan
| Hook | Isi yang terdeteksi | Kode |
|---|---|---|
| useEffect L14 | API | |
| useEffect L19 | Perhitungan atau sinkronisasi state sesuai dependensi. | |
| useEffect L20 | timer |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 98a486d0739932fa8170dc3c5d38fb9e0dc1b289f9072625f08d2bf7ab53812f
resources/js/InstitutionInvoicesPanel.tsx185 baris · 9 fungsi bernama
Untuk apa
Form nota instansi, pilihan sumber, detail, versi, pengajuan, approval dan cetak.
Jika diminta mengubah
Ubah label, urutan field, state, tombol, dan JSX di sini. Payload dan aturan backend harus ikut diubah jika kontrak data berubah.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
money · L20 | Memformat nilai menjadi Rupiah untuk tampilan. | Lihat signature dan isi fungsi. |
InstitutionInvoicesPanel · L22 | Form nota instansi, pilihan sumber, detail, versi, pengajuan, approval dan cetak. | Dokumen cetak API /api/nota-instansi, /api/nota-instansi/sumber, /api/nota-instansi/ |
open · L63 | Membaca detail record yang dipilih dari API. | API /api/nota-instansi/ |
save · L69 | Mengirim field form yang sedang diedit ke API penyimpanan dan menerapkan hasil atau pesan kesalahan. | API /api/nota-instansi/, /api/nota-instansi |
signedPath · L82 | Memeriksa origin dan path persetujuan nota yang akan diakses. | return url.pathname + url.search; |
preview · L89 | Membaca preview keputusan melalui URL persetujuan yang telah diperiksa. | Lihat signature dan isi fungsi. |
act · L95 | Mengirim operasi yang dipilih beserta payload atau versi yang diperlukan dan memuat hasil terbaru. | API /api/nota-instansi/ |
edit · L110 | Mengisi state form dari record yang dipilih dan membuka mode edit. | Lihat signature dan isi fungsi. |
print · L115 | Menyusun isi nota instansi dan memanggil helper cetak bersama. | Dokumen cetak |
Path API literal pada source
/api/nota-instansi/api/nota-instansi/sumber/api/nota-instansi/
State komponen dan nilai awal
| State | Setter | Inisialisasi asli |
|---|---|---|
| rows | setRows | useState<Invoice[]>([]) |
| sources | setSources | useState<Source[]>([]) |
| query | setQuery | useState('') |
| status | setStatus | useState('') |
| sourceQuery | setSourceQuery | useState('') |
| sourcePage | setSourcePage | useState(1) |
| sourceLast | setSourceLast | useState(1) |
| page | setPage | useState(1) |
| lastPage | setLastPage | useState(1) |
| loading | setLoading | useState(true) |
| sourceLoading | setSourceLoading | useState(true) |
| busy | setBusy | useState(false) |
| refresh | setRefresh | useState(0) |
| error | setError | useState('') |
| notice | setNotice | useState('') |
| selected | setSelected | useState<Invoice | null>(null) |
| source | setSource | useState<Source | null>(null) |
| editing | setEditing | useState<Invoice | null>(null) |
| form | setForm | useState(blank) |
| decisionNote | setDecisionNote | useState('') |
| decision | setDecision | useState('setujui') |
| cancelNote | setCancelNote | useState('') |
| previewed | setPreviewed | useState(false) |
Effect dan memo yang perlu diperhatikan
| Hook | Isi yang terdeteksi | Kode |
|---|---|---|
| useEffect L37 | API, pembatalan request, cleanup | |
| useEffect L45 | API, pembatalan request, cleanup | |
| useEffect L54 | API, pembatalan request, cleanup |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 0f64067e231c66edce1bb75b4334976971faf30eecb5889ab46acbaafd43e249
resources/js/InternalPanels.tsx164 baris · 9 fungsi bernama
Untuk apa
Daftar grup menu menurut role, ikon, navigasi history, pemilihan komponen panel, dan subscription realtime tenant.
Jika diminta mengubah
Ubah label, urutan field, state, tombol, dan JSX di sini. Payload dan aturan backend harus ikut diubah jika kontrak data berubah.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
MenuIcon · L31 | Mengembalikan SVG sesuai ID menu. | return <svg {...common}><path d="M4 13h6V4H4zM14 20h6v-9h-6zM4 20h6v-3H4zM14 7h6V4h-6z"/></svg>; |
menu · L58 | Membentuk grup dan ID menu yang tampil untuk role. Label dapat diubah tanpa mengganti ID panel. | return [ |
InternalPanels · L82 | Daftar grup menu menurut role, ikon, navigasi history, pemilihan komponen panel, dan subscription realtime tenant. | return state?.branch === branch && state.user === userId && allowed.has(state.view) ? state.view : 'dashboard'; |
panelFromHistory · L86 | Memulihkan panel hanya jika user, cabang dan ID menu masih diizinkan. | return state?.branch === branch && state.user === userId && allowed.has(state.view) ? state.view : 'dashboard'; |
navigate · L99 | Memvalidasi ID menu, mengganti panel, menutup drawer dan menyimpan history.state tanpa hash. | Lihat signature dan isi fungsi. |
restorePage · L108 | Memulihkan panel history yang masih sesuai akun, cabang dan menu yang diizinkan. | Lihat signature dan isi fungsi. |
openMenu · L115 | Membuka drawer menu internal. | Lihat signature dan isi fungsi. |
openAccount · L116 | Memindahkan panel ke profil akun. | Lihat signature dan isi fungsi. |
openNotifications · L117 | Memindahkan panel ke daftar tugas. | Lihat signature dan isi fungsi. |
State komponen dan nilai awal
| State | Setter | Inisialisasi asli |
|---|---|---|
| panel | setPanel | useState(approvalPage || panelFromHistory()) |
| revision | setRevision | useState(0) |
| menuOpen | setMenuOpen | useState(false) |
| openGroups | setOpenGroups | useState<Record<string, boolean>>({ Utama: true }) |
| realtime | setRealtime | useState<RealtimeState>('connecting') |
| notice | setNotice | useState('') |
Effect dan memo yang perlu diperhatikan
| Hook | Isi yang terdeteksi | Kode |
|---|---|---|
| useMemo L83 | Perhitungan atau sinkronisasi state sesuai dependensi. | |
| useMemo L84 | Perhitungan atau sinkronisasi state sesuai dependensi. | |
| useEffect L107 | listener browser, cleanup | |
| useEffect L113 | Perhitungan atau sinkronisasi state sesuai dependensi. | |
| useEffect L114 | listener browser, cleanup | |
| useEffect L123 | timer, subscription tenant |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 1ddb0dd557bd7f6300595d684c9b27003df00bae7e621a940731531b35b56430
resources/js/InventoryPanel.tsx77 baris · 2 fungsi bernama
Untuk apa
Filter persediaan, ringkasan, daftar stok dan tampilan khusus karantina.
Jika diminta mengubah
Ubah label, urutan field, state, tombol, dan JSX di sini. Payload dan aturan backend harus ikut diubah jika kontrak data berubah.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
InventoryPanel · L9 | Filter persediaan, ringkasan, daftar stok dan tampilan khusus karantina. | API /api/stok |
clearFilters · L42 | Mengembalikan filter dan nomor halaman ke nilai awal panel. | Lihat signature dan isi fungsi. |
Path API literal pada source
/api/stok
State komponen dan nilai awal
| State | Setter | Inisialisasi asli |
|---|---|---|
| rows | setRows | useState<Stock[]>([]) |
| query | setQuery | useState('') |
| applied | setApplied | useState('') |
| stockStatus | setStockStatus | useState(onlyQuarantine ? 'karantina' : '') |
| sort | setSort | useState(onlyQuarantine ? 'karantina_tertinggi' : 'produk') |
| page | setPage | useState(1) |
| perPage | setPerPage | useState(10) |
| lastPage | setLastPage | useState(1) |
| total | setTotal | useState(0) |
| summary | setSummary | useState<Summary>({ product_count: 0, available_units: 0, quarantine_units: 0, out_of_stock: 0, low_stock: 0, low_stock_threshold: 5 }) |
| updatedAt | setUpdatedAt | useState<Date | null>(null) |
| refresh | setRefresh | useState(0) |
| loading | setLoading | useState(true) |
| error | setError | useState('') |
Effect dan memo yang perlu diperhatikan
| Hook | Isi yang terdeteksi | Kode |
|---|---|---|
| useEffect L25 | API, pembatalan request, cleanup | |
| useEffect L37 | timer, cleanup |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 0577ff74ec88578f8ca1aa2028e59f69d29f276dd2520ff5e284448b6153d6ac
resources/js/MasterDataPanel.tsx67 baris · 9 fungsi bernama
Untuk apa
Form dan tabel generik untuk produk, supplier dan cabang dari objek config lokal.
Jika diminta mengubah
Ubah label, urutan field, state, tombol, dan JSX di sini. Payload dan aturan backend harus ikut diubah jika kontrak data berubah.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
MasterDataPanel · L16 | Form dan tabel generik untuk produk, supplier dan cabang dari objek config lokal. | API /api/, /api/${entity}/${editing}, /api/owner/cabang/${id}/provision-ulang |
load · L22 | Membaca data panel melalui API, menerapkan hasil ke state dan menangani kegagalan pemuatan. | API /api/ |
edit · L27 | Mengisi state form dari record yang dipilih dan membuka mode edit. | Lihat signature dan isi fungsi. |
reset · L28 | Mengakhiri mode edit atau membersihkan pencarian sesuai state yang diubah di fungsi ini. | Lihat signature dan isi fungsi. |
clearFilters · L29 | Mengembalikan filter dan nomor halaman ke nilai awal panel. | Lihat signature dan isi fungsi. |
submit · L30 | Menyusun payload form dan mengirim create atau update ke API. Respons backend menentukan apakah perubahan diterima. | API /api/${entity}/${editing}, /api/ |
retryProvision · L31 | Meminta API owner menjadwalkan ulang provisioning yang gagal. | API /api/owner/cabang/${id}/provision-ulang |
provisionStatus · L32 | Menampilkan status provisioning cabang dan tombol coba lagi untuk keadaan yang sesuai. | return null; |
display · L37 | Memformat nilai field menjadi teks atau elemen tampilan yang sesuai. | return '—';if(type==='number'&&field.includes('harga'))return `Rp ${Number(value).toLocaleString('id-ID')}`;if(field==='masa_garansi'){const days=N |
Path API literal pada source
/api//api/${entity}/${editing}/api/owner/cabang/${id}/provision-ulang
State komponen dan nilai awal
| State | Setter | Inisialisasi asli |
|---|---|---|
| rows | setRows | useState<RecordRow[]>([]) |
| form | setForm | useState<Record<string,any>>({}) |
| editing | setEditing | useState<number|null>(null) |
| query | setQuery | useState('') |
| applied | setApplied | useState('') |
| statusFilter | setStatusFilter | useState('') |
| page | setPage | useState(1) |
| lastPage | setLastPage | useState(1) |
| total | setTotal | useState(0) |
| summary | setSummary | useState<Summary>({record_count:0}) |
| refresh | setRefresh | useState(0) |
| updatedAt | setUpdatedAt | useState<Date|null>(null) |
| loading | setLoading | useState(true) |
| busy | setBusy | useState(false) |
| error | setError | useState('') |
| notice | setNotice | useState('') |
Effect dan memo yang perlu diperhatikan
| Hook | Isi yang terdeteksi | Kode |
|---|---|---|
| useMemo L21 | Perhitungan atau sinkronisasi state sesuai dependensi. | |
| useEffect L23 | Perhitungan atau sinkronisasi state sesuai dependensi. | |
| useEffect L24 | Perhitungan atau sinkronisasi state sesuai dependensi. | |
| useEffect L25 | interval | |
| useEffect L26 | timer |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 f0f656726d0a2243e41cd8b0d607af9aaba9bc1a7097a5df2e24b246635b7113
resources/js/MyAccountPanel.tsx103 baris · 3 fungsi bernama
Untuk apa
Tampilan profil, perubahan profil owner, dan perubahan password sendiri.
Jika diminta mengubah
Ubah label, urutan field, state, tombol, dan JSX di sini. Payload dan aturan backend harus ikut diubah jika kontrak data berubah.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
MyAccountPanel · L17 | Tampilan profil, perubahan profil owner, dan perubahan password sendiri. | API /api/me/profile, /api/me/password |
changeProfile · L31 | Mengirim nama serta email owner ke endpoint profil dan memuat kembali akun yang diterima server. | API /api/me/profile |
changePassword · L43 | Mengirim password lama, baru dan konfirmasi, lalu mengembalikan UI ke login setelah backend berhasil. | API /api/me/password |
Path API literal pada source
/api/me/profile/api/me/password
State komponen dan nilai awal
| State | Setter | Inisialisasi asli |
|---|---|---|
| profileName | setProfileName | useState(name) |
| profileEmail | setProfileEmail | useState(email) |
| profileBusy | setProfileBusy | useState(false) |
| profileError | setProfileError | useState('') |
| profileNotice | setProfileNotice | useState('') |
| current | setCurrent | useState('') |
| password | setPassword | useState('') |
| confirmation | setConfirmation | useState('') |
| busy | setBusy | useState(false) |
| error | setError | useState('') |
Effect dan memo yang perlu diperhatikan
| Hook | Isi yang terdeteksi | Kode |
|---|---|---|
| useEffect L29 | Perhitungan atau sinkronisasi state sesuai dependensi. |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 9146ebb8c27c038021887132af587b0f45eb4b2d60a3968e53b1848697b515b2
resources/js/NotificationsPanel.tsx65 baris · 3 fungsi bernama
Untuk apa
Daftar tugas operasional dan tombol menuju panel terkait.
Jika diminta mengubah
Ubah label, urutan field, state, tombol, dan JSX di sini. Payload dan aturan backend harus ikut diubah jika kontrak data berubah.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
NotificationIcon · L15 | Menggambar ikon tugas sesuai jenisnya. | return <svg {...common}><path d="M9 11l2 2 4-4"/><path d="M6 3h12v18H6z"/></svg>; |
NotificationsPanel · L24 | Daftar tugas operasional dan tombol menuju panel terkait. | API /api/notifikasi |
load · L29 | Membaca data panel melalui API, menerapkan hasil ke state dan menangani kegagalan pemuatan. | API /api/notifikasi |
Path API literal pada source
/api/notifikasi
State komponen dan nilai awal
| State | Setter | Inisialisasi asli |
|---|---|---|
| items | setItems | useState<NotificationItem[]>([]) |
| loading | setLoading | useState(true) |
| error | setError | useState('') |
Effect dan memo yang perlu diperhatikan
| Hook | Isi yang terdeteksi | Kode |
|---|---|---|
| useEffect L42 | interval, cleanup |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 5859a95c61d46121722d7bc2ad77722aed3b37b475e8816d6ffb8131c1c08a13
resources/js/PaymentSettingsPanel.tsx91 baris · 3 fungsi bernama
Untuk apa
Form rekening, sakelar metode, unggah atau hapus QRIS oleh owner.
Jika diminta mengubah
Ubah label, urutan field, state, tombol, dan JSX di sini. Payload dan aturan backend harus ikut diubah jika kontrak data berubah.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
PaymentSettingsPanel · L19 | Form rekening, sakelar metode, unggah atau hapus QRIS oleh owner. | API /api/owner/pengaturan-pembayaran |
update · L35 | Menggabungkan sebagian perubahan pada state pengaturan pembayaran. | Lihat signature dan isi fungsi. |
save · L40 | Mengirim field form yang sedang diedit ke API penyimpanan dan menerapkan hasil atau pesan kesalahan. | API /api/owner/pengaturan-pembayaran |
Path API literal pada source
/api/owner/pengaturan-pembayaran
State komponen dan nilai awal
| State | Setter | Inisialisasi asli |
|---|---|---|
| data | setData | useState<PaymentSettings>(empty) |
| image | setImage | useState<File | null>(null) |
| removeQris | setRemoveQris | useState(false) |
| loading | setLoading | useState(true) |
| saving | setSaving | useState(false) |
| error | setError | useState('') |
| notice | setNotice | useState('') |
Effect dan memo yang perlu diperhatikan
| Hook | Isi yang terdeteksi | Kode |
|---|---|---|
| useEffect L28 | API |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 022f2429ca79bc7eaa084ca4920b6983def23ec0069b4fd8eb715cc87827beb5
resources/js/PosPanel.tsx163 baris · 7 fungsi bernama
Untuk apa
Keranjang kasir, pembayaran, pengajuan harga khusus, approval dan cetak nota.
Jika diminta mengubah
Ubah label, urutan field, state, tombol, dan JSX di sini. Payload dan aturan backend harus ikut diubah jika kontrak data berubah.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
PosPanel · L11 | Keranjang kasir, pembayaran, pengajuan harga khusus, approval dan cetak nota. | Dokumen cetak API /api/produk, /api/stok, /api/pelanggan, /api/penjualan/harga-khusus, /api/penjualan, /api/penjualan/ |
price · L45 | Membaca harga normal produk untuk perhitungan tampilan kasir. Keputusan harga tetap berasal dari backend. | Lihat signature dan isi fungsi. |
submit · L47 | Menyusun payload form dan mengirim create atau update ke API. Respons backend menentukan apakah perubahan diterima. | API /api/penjualan/harga-khusus, /api/penjualan, /api/penjualan/ |
printReceipt · L62 | Menyusun nota penjualan kasir untuk printDocument. | Dokumen cetak |
formatMoney · L65 | Memformat nilai angka untuk nota atau ringkasan. | Lihat signature dan isi fungsi. |
safeApproval · L100 | Memeriksa origin dan bentuk URL persetujuan harga khusus yang dimasukkan. | return url.pathname + url.search; |
approve · L106 | Membaca atau mengirim keputusan harga khusus melalui URL persetujuan yang telah diperiksa. | Lihat signature dan isi fungsi. |
Path API literal pada source
/api/produk/api/stok/api/pelanggan/api/penjualan/harga-khusus/api/penjualan/api/penjualan/
State komponen dan nilai awal
| State | Setter | Inisialisasi asli |
|---|---|---|
| search | setSearch | useState('') |
| products | setProducts | useState<Product[]>([]) |
| customers | setCustomers | useState<Customer[]>([]) |
| customerSearch | setCustomerSearch | useState('') |
| customerId | setCustomerId | useState('') |
| selectedCustomer | setSelectedCustomer | useState<Customer | null>(null) |
| lines | setLines | useState<Line[]>([]) |
| paid | setPaid | useState('') |
| method | setMethod | useState('tunai') |
| special | setSpecial | useState(false) |
| reason | setReason | useState('') |
| receipt | setReceipt | useState<any>(null) |
| preview | setPreview | useState<any>(null) |
| error | setError | useState('') |
| busy | setBusy | useState(false) |
Effect dan memo yang perlu diperhatikan
| Hook | Isi yang terdeteksi | Kode |
|---|---|---|
| useEffect L28 | API, pembatalan request, cleanup | |
| useEffect L39 | API, pembatalan request, cleanup |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 5f31d876fec00af5a62c0c3d8e165de44de4a03f94a73fa4530c62377de2d207
resources/js/PurchasePanel.tsx108 baris · 8 fungsi bernama
Untuk apa
Form pembelian multi-item, jumlah rusak, daftar, detail dan cetak.
Jika diminta mengubah
Ubah label, urutan field, state, tombol, dan JSX di sini. Payload dan aturan backend harus ikut diubah jika kontrak data berubah.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
isoWithOffset · L12 | Mengubah tanggal atau jam input menjadi format ISO yang menyertakan offset zona waktu. | return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}T${pad(date.getHours())}:${pad(date.getMinutes())}:00${sign}${pad(M |
pad · L14 | Menambahkan nol di depan bagian angka tanggal atau jam. | Lihat signature dan isi fungsi. |
PurchasePanel · L21 | Form pembelian multi-item, jumlah rusak, daftar, detail dan cetak. | Dokumen cetak API /api/pembelian, /api/supplier, /api/produk, /api/pembelian/ |
load · L31 | Membaca data panel melalui API, menerapkan hasil ke state dan menangani kegagalan pemuatan. | API /api/pembelian |
addLine · L57 | Menambahkan satu item form pembelian dari pilihan produk dan input jumlah atau harga. | Lihat signature dan isi fungsi. |
submit · L74 | Menyusun payload form dan mengirim create atau update ke API. Respons backend menentukan apakah perubahan diterima. | API /api/pembelian |
productName · L81 | Mencari nama produk dari daftar referensi yang telah dimuat. | Lihat signature dan isi fungsi. |
printPurchase · L84 | Menyusun identitas pembelian, supplier, dan rincian barang baik atau rusak untuk dicetak. | Dokumen cetak |
Path API literal pada source
/api/pembelian/api/supplier/api/produk/api/pembelian/
State komponen dan nilai awal
| State | Setter | Inisialisasi asli |
|---|---|---|
| suppliers | setSuppliers | useState<Supplier[]>([]) |
| products | setProducts | useState<Product[]>([]) |
| purchases | setPurchases | useState<Purchase[]>([]) |
| supplierSearch | setSupplierSearch | useState('') |
| productSearch | setProductSearch | useState('') |
| productNames | setProductNames | useState<Record<number, string>>({}) |
| supplier | setSupplier | useState('') |
| number | setNumber | useState('') |
| date | setDate | useState(() => new Date(Date.now() - new Date().getTimezoneOffset() * 60000).toISOString().slice(0, 16)) |
| productId | setProductId | useState('') |
| quantity | setQuantity | useState(1) |
| cost | setCost | useState('') |
| lines | setLines | useState<Line[]>([]) |
| damaged | setDamaged | useState(0) |
| damageNote | setDamageNote | useState('') |
| detail | setDetail | useState<any>(null) |
| busy | setBusy | useState(false) |
| loading | setLoading | useState(true) |
| error | setError | useState('') |
| notice | setNotice | useState('') |
| purchaseQuery | setPurchaseQuery | useState('') |
| purchaseSupplier | setPurchaseSupplier | useState('') |
| purchaseFrom | setPurchaseFrom | useState('') |
| purchaseUntil | setPurchaseUntil | useState('') |
| page | setPage | useState(1) |
| lastPage | setLastPage | useState(1) |
| total | setTotal | useState(0) |
| historySummary | setHistorySummary | useState({transaction_count:0,total_units:0,total_value:0}) |
| updatedAt | setUpdatedAt | useState<Date|null>(null) |
Effect dan memo yang perlu diperhatikan
| Hook | Isi yang terdeteksi | Kode |
|---|---|---|
| useEffect L38 | Perhitungan atau sinkronisasi state sesuai dependensi. | |
| useEffect L39 | API, timer, pembatalan request, cleanup | |
| useEffect L48 | API, timer, pembatalan request, cleanup |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 98fdd499e365013fb9ec2fb5fa20321de7b7d21561cfa9143ee36bb9cad2cfcd
resources/js/PurchaseReturnsPanel.tsx78 baris · 5 fungsi bernama
Untuk apa
Pemilihan sumber pembelian, item sisa retur karantina dan detail retur.
Jika diminta mengubah
Ubah label, urutan field, state, tombol, dan JSX di sini. Payload dan aturan backend harus ikut diubah jika kontrak data berubah.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
money · L6 | Memformat nilai menjadi Rupiah untuk tampilan. | Lihat signature dan isi fungsi. |
PurchaseReturnsPanel · L11 | Pemilihan sumber pembelian, item sisa retur karantina dan detail retur. | Navigasi browser API /api/retur-pembelian/sumber, /api/retur-pembelian, /api/retur-pembelian/ |
select · L38 | Menentukan record sumber retur dan mengosongkan isian retur sebelumnya. | Lihat signature dan isi fungsi. |
submit · L43 | Menyusun payload form dan mengirim create atau update ke API. Respons backend menentukan apakah perubahan diterima. | API /api/retur-pembelian |
openDetail · L54 | Membaca detail record untuk dialog atau area detail. | API /api/retur-pembelian/ |
Path API literal pada source
/api/retur-pembelian/sumber/api/retur-pembelian/api/retur-pembelian/
State komponen dan nilai awal
| State | Setter | Inisialisasi asli |
|---|---|---|
| q | setQ | useState('') |
| applied | setApplied | useState('') |
| sourcePage | setSourcePage | useState(1) |
| sourceLast | setSourceLast | useState(1) |
| sources | setSources | useState<PurchaseSource[]>([]) |
| chosen | setChosen | useState<PurchaseSource | null>(null) |
| quantities | setQuantities | useState<Record<number, number>>({}) |
| reason | setReason | useState('') |
| historyQ | setHistoryQ | useState('') |
| historyPage | setHistoryPage | useState(1) |
| historyLast | setHistoryLast | useState(1) |
| history | setHistory | useState<History[]>([]) |
| count | setCount | useState(0) |
| detail | setDetail | useState<Detail | null>(null) |
| sourceLoading | setSourceLoading | useState(true) |
| historyLoading | setHistoryLoading | useState(true) |
| busy | setBusy | useState(false) |
| error | setError | useState('') |
| notice | setNotice | useState('') |
| updatedAt | setUpdatedAt | useState<Date | null>(null) |
| reload | setReload | useState(0) |
Effect dan memo yang perlu diperhatikan
| Hook | Isi yang terdeteksi | Kode |
|---|---|---|
| useEffect L22 | API, pembatalan request, cleanup | |
| useEffect L30 | API, pembatalan request, cleanup |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 1b7e0cff33e59386469da3eec7e461006b85ba4d21ab72f212980b80fd42a70e
resources/js/RajawaliGresik.tsx15 baris · 1 fungsi bernama
Untuk apa
Komponen demo penghubung Laravel dan React yang tidak diimpor entry aktif.
Jika diminta mengubah
Ubah label, urutan field, state, tombol, dan JSX di sini. Payload dan aturan backend harus ikut diubah jika kontrak data berubah.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
RajawaliGresik · L1 | Komponen demo penghubung Laravel dan React yang tidak diimpor entry aktif. | return ( |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 737e22385895c2e26d622ec6cc853d5f885f78fbafd4af309615d58bd97484e4
resources/js/ReportsPanel.tsx240 baris · 12 fungsi bernama
Untuk apa
Pilihan laporan atau audit, filter, tabel, cetak atau simpan PDF, dan file HTML yang kompatibel Excel dengan ekstensi .xls.
Jika diminta mengubah
Ubah label, urutan field, state, tombol, dan JSX di sini. Payload dan aturan backend harus ikut diubah jika kontrak data berubah.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
label · L11 | Mengubah nama kolom data menjadi label tampilan. | Lihat signature dan isi fungsi. |
display · L12 | Memformat nilai field menjadi teks atau elemen tampilan yang sesuai. | Lihat signature dan isi fungsi. |
localDate · L13 | Membentuk representasi tanggal lokal untuk input dan filter. | Lihat signature dan isi fungsi. |
spreadsheetValue · L45 | Menormalkan isi sel dan menetralkan awalan yang dapat dianggap formula spreadsheet. | Lihat signature dan isi fungsi. |
escapeHtml · L46 | Mengescape karakter HTML sebelum nilai dimasukkan ke string dokumen ekspor. | Lihat signature dan isi fungsi. |
ReportsPanel · L48 | Pilihan laporan atau audit, filter, tabel, cetak atau simpan PDF, dan file HTML yang kompatibel Excel dengan ekstensi .xls. | Dokumen cetak API /api/laporan/options, /api/audit-log, /api/laporan/ |
buildFilters · L95 | Membentuk query tanggal dan filter laporan atau audit yang sedang dipakai. | return { |
apply · L112 | Menerapkan pilihan filter, mengembalikan halaman awal, dan memicu pengambilan data. | Lihat signature dan isi fungsi. |
preset · L118 | Menghitung rentang tanggal cepat dan menerapkan filter tanggal tersebut. | Lihat signature dan isi fungsi. |
resetAuditFilters · L128 | Mengembalikan tanggal dan filter audit ke keadaan awal. | Lihat signature dan isi fungsi. |
resetReportFilters · L135 | Mengembalikan tanggal dan filter laporan ke keadaan awal. | Lihat signature dan isi fungsi. |
exportTable · L142 | Mencetak atau membuat file HTML .xls dari result.data yang sedang dimuat. Menyaring nilai formula dan mengescape HTML. Tidak mengambil seluruh halaman laporan secara otomatis. | Dokumen cetak |
Path API literal pada source
/api/laporan/options/api/audit-log/api/laporan/
State komponen dan nilai awal
| State | Setter | Inisialisasi asli |
|---|---|---|
| options | setOptions | useState<Options | null>(null) |
| report | setReport | useState('') |
| from | setFrom | useState(today.slice(0, 7) + '-01') |
| until | setUntil | useState(today) |
| branch | setBranch | useState('') |
| action | setAction | useState('') |
| table | setTable | useState('') |
| actor | setActor | useState('') |
| dataId | setDataId | useState('') |
| reportStatus | setReportStatus | useState('') |
| reportCategory | setReportCategory | useState('') |
| reportBrand | setReportBrand | useState('') |
| reportSupplier | setReportSupplier | useState('') |
| reportProduct | setReportProduct | useState('') |
| filters | setFilters | useState<Record<string, string>>({ dari: from, sampai: until }) |
| page | setPage | useState(1) |
| result | setResult | useState<Result | null>(null) |
| loading | setLoading | useState(true) |
| error | setError | useState('') |
Effect dan memo yang perlu diperhatikan
| Hook | Isi yang terdeteksi | Kode |
|---|---|---|
| useEffect L70 | API, pembatalan request, cleanup | |
| useEffect L81 | API, pembatalan request, cleanup |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 25dbf3520a8bc9ee1fff6860e23f9115c574aa7915c3c4a6922e9856fef6efa5
resources/js/SaleReturnsPanel.tsx127 baris · 6 fungsi bernama
Untuk apa
Pemilihan penjualan, jumlah retur, kondisi, refund atau tukar barang, dan detail.
Jika diminta mengubah
Ubah label, urutan field, state, tombol, dan JSX di sini. Payload dan aturan backend harus ikut diubah jika kontrak data berubah.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
rupiah · L7 | Memformat nilai menjadi Rupiah untuk tampilan. | Lihat signature dan isi fungsi. |
SaleReturnsPanel · L15 | Pemilihan penjualan, jumlah retur, kondisi, refund atau tukar barang, dan detail. | Navigasi browser API /api/retur-penjualan/sumber, /api/retur-penjualan, /api/retur-penjualan/ |
choose · L60 | Menentukan sumber transaksi untuk retur dan membersihkan pilihan sebelumnya. | Lihat signature dan isi fungsi. |
changeLine · L65 | Memperbarui field satu item tanpa mengganti seluruh koleksi item. | Lihat signature dan isi fungsi. |
submit · L72 | Menyusun payload form dan mengirim create atau update ke API. Respons backend menentukan apakah perubahan diterima. | API /api/retur-penjualan |
openDetail · L87 | Membaca detail record untuk dialog atau area detail. | API /api/retur-penjualan/ |
Path API literal pada source
/api/retur-penjualan/sumber/api/retur-penjualan/api/retur-penjualan/
State komponen dan nilai awal
| State | Setter | Inisialisasi asli |
|---|---|---|
| sourceSearch | setSourceSearch | useState('') |
| sourceQuery | setSourceQuery | useState('') |
| sources | setSources | useState<SaleSource[]>([]) |
| sourcePage | setSourcePage | useState(1) |
| sourceLast | setSourceLast | useState(1) |
| chosen | setChosen | useState<SaleSource | null>(null) |
| lines | setLines | useState<InputLine[]>([]) |
| reason | setReason | useState('') |
| solution | setSolution | useState<'refund' | 'tukar_barang'>('refund') |
| search | setSearch | useState('') |
| history | setHistory | useState<History[]>([]) |
| historyPage | setHistoryPage | useState(1) |
| historyLast | setHistoryLast | useState(1) |
| summary | setSummary | useState({ return_count: 0, refund_value: 0 }) |
| detail | setDetail | useState<ReturnDetail | null>(null) |
| busy | setBusy | useState(false) |
| sourceLoading | setSourceLoading | useState(false) |
| historyLoading | setHistoryLoading | useState(false) |
| error | setError | useState('') |
| notice | setNotice | useState('') |
| updatedAt | setUpdatedAt | useState<Date | null>(null) |
| reload | setReload | useState(0) |
Effect dan memo yang perlu diperhatikan
| Hook | Isi yang terdeteksi | Kode |
|---|---|---|
| useEffect L40 | API, pembatalan request, cleanup | |
| useEffect L50 | API, pembatalan request, cleanup | |
| useMemo L68 | Perhitungan atau sinkronisasi state sesuai dependensi. |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 aab2c38e116c0e755a887affc024893161d3984cdd17ed1dcb83eba4d7af99a2
resources/js/SalesHistoryPanel.tsx153 baris · 7 fungsi bernama
Untuk apa
Pencarian dan filter penjualan toko, detail serta cetak nota.
Jika diminta mengubah
Ubah label, urutan field, state, tombol, dan JSX di sini. Payload dan aturan backend harus ikut diubah jika kontrak data berubah.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
money · L24 | Memformat nilai menjadi Rupiah untuk tampilan. | Lihat signature dan isi fungsi. |
when · L25 | Memformat waktu transaksi agar dapat dibaca pengguna. | Lihat signature dan isi fungsi. |
SalesHistoryPanel · L27 | Pencarian dan filter penjualan toko, detail serta cetak nota. | Dokumen cetak API /api/penjualan, /api/penjualan/${id} |
search · L68 | Menerapkan teks pencarian dan mengawali pagination pada halaman pertama. | Lihat signature dan isi fungsi. |
reset · L73 | Mengakhiri mode edit atau membersihkan pencarian sesuai state yang diubah di fungsi ini. | Lihat signature dan isi fungsi. |
inspect · L77 | Mengambil detail transaksi penjualan yang dipilih. | API /api/penjualan/${id} |
printSale · L89 | Menyusun nota transaksi penjualan yang sedang dibuka. | Dokumen cetak |
Path API literal pada source
/api/penjualan/api/penjualan/${id}
State komponen dan nilai awal
| State | Setter | Inisialisasi asli |
|---|---|---|
| draft | setDraft | useState('') |
| query | setQuery | useState('') |
| status | setStatus | useState('') |
| method | setMethod | useState('') |
| from | setFrom | useState('') |
| until | setUntil | useState('') |
| page | setPage | useState(1) |
| lastPage | setLastPage | useState(1) |
| total | setTotal | useState(0) |
| summary | setSummary | useState<Summary>(emptySummary) |
| rows | setRows | useState<Sale[]>([]) |
| selected | setSelected | useState<Sale | null>(null) |
| loading | setLoading | useState(true) |
| detailLoading | setDetailLoading | useState(false) |
| error | setError | useState('') |
| updatedAt | setUpdatedAt | useState<Date | null>(null) |
| refresh | setRefresh | useState(0) |
Effect dan memo yang perlu diperhatikan
| Hook | Isi yang terdeteksi | Kode |
|---|---|---|
| useEffect L46 | API, pembatalan request, cleanup |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 3185638fe7a5347ba16a4be71da886cc8686e92f55225179ed6f2b243723d3bc
resources/js/ServicePanel.tsx225 baris · 9 fungsi bernama
Untuk apa
Daftar servis, penerimaan unit, penugasan, progres, sparepart, foto, penyerahan dan cetak.
Jika diminta mengubah
Ubah label, urutan field, state, tombol, dan JSX di sini. Payload dan aturan backend harus ikut diubah jika kontrak data berubah.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
ServicePanel · L11 | Daftar servis, penerimaan unit, penugasan, progres, sparepart, foto, penyerahan dan cetak. | Dokumen cetak API /api/servis, /api/servis/, /api/servis/options, /api/produk, /api/pelanggan |
load · L37 | Membaca data panel melalui API, menerapkan hasil ke state dan menangani kegagalan pemuatan. | API /api/servis |
refreshFallback · L42 | Memuat ulang data panel ketika kanal realtime tidak menyediakan pembaruan yang cukup. | API /api/servis, /api/servis/ |
onVisibility · L64 | Memicu pembacaan ulang ketika halaman kembali terlihat sesuai pemeriksaan event. | Lihat signature dan isi fungsi. |
createCustomer · L93 | Mengirim pelanggan baru dari alur penerimaan servis lalu memakai hasilnya pada pilihan pelanggan. | API /api/pelanggan |
action · L106 | Menyusun dan mengirim tindakan servis sesuai operasi serta input, termasuk FormData bila ada foto. | API /api/servis, /api/servis/ |
clearFilters · L140 | Mengembalikan filter dan nomor halaman ke nilai awal panel. | Lihat signature dan isi fungsi. |
printService · L141 | Menyusun bukti servis, kronologi atau biaya sesuai detail yang tersedia. | Dokumen cetak |
text · L152 | Mengubah nilai kosong dan nilai biasa ke bentuk teks tampilan. | Lihat signature dan isi fungsi. |
Path API literal pada source
/api/servis/api/servis//api/servis/options/api/produk/api/pelanggan
State komponen dan nilai awal
| State | Setter | Inisialisasi asli |
|---|---|---|
| services | setServices | useState<any[]>([]) |
| customers | setCustomers | useState<any[]>([]) |
| technicians | setTechnicians | useState<any[]>([]) |
| products | setProducts | useState<any[]>([]) |
| sparepartSearch | setSparepartSearch | useState('') |
| sparepartId | setSparepartId | useState('') |
| selected | setSelected | useState<any>(null) |
| error | setError | useState('') |
| busy | setBusy | useState(false) |
| customerSearch | setCustomerSearch | useState('') |
| selectedCustomerId | setSelectedCustomerId | useState('') |
| newCustomer | setNewCustomer | useState({ nama_pelanggan: '', no_wa: '', email: '' }) |
| serviceSearch | setServiceSearch | useState('') |
| serviceStatus | setServiceStatus | useState('') |
| technicianFilter | setTechnicianFilter | useState('') |
| assignmentFilter | setAssignmentFilter | useState('') |
| dateFrom | setDateFrom | useState('') |
| dateUntil | setDateUntil | useState('') |
| summary | setSummary | useState<ServiceSummary>({ service_count: 0, waiting_count: 0, in_progress_count: 0, ready_count: 0, completed_count: 0, unassigned_count: 0 }) |
| page | setPage | useState(1) |
| lastPage | setLastPage | useState(1) |
| total | setTotal | useState(0) |
| updatedAt | setUpdatedAt | useState<Date | null>(null) |
Effect dan memo yang perlu diperhatikan
| Hook | Isi yang terdeteksi | Kode |
|---|---|---|
| useEffect L38 | API | |
| useEffect L39 | API, listener browser, interval, cleanup | |
| useEffect L72 | API | |
| useEffect L75 | API, timer, pembatalan request, cleanup | |
| useEffect L84 | API, pembatalan request, cleanup |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 1bf93c1a17fb5714b7c376a4ac11e7500e946f0817572836a3d3d05b3b8e00e9
resources/js/StockTransfersPanel.tsx187 baris · 10 fungsi bernama
Untuk apa
Form pengajuan, daftar, preview signed URL, keputusan dan cetak transfer.
Jika diminta mengubah
Ubah label, urutan field, state, tombol, dan JSX di sini. Payload dan aturan backend harus ikut diubah jika kontrak data berubah.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
signedPath · L17 | Memeriksa origin dan pola URL persetujuan sebelum memanggil API dari tautan yang ditempel. | return url.pathname + url.search; |
failure · L27 | Menyaring atau merapikan pesan kegagalan tindakan transfer. | return reason instanceof Error && !('response' in reason) ? reason.message : errorMessage(reason); |
StockTransfersPanel · L31 | Form pengajuan, daftar, preview signed URL, keputusan dan cetak transfer. | Dokumen cetak API /api/mutasi-stok/options, /api/mutasi-stok |
updateLine · L69 | Memperbarui field satu baris produk pada state daftar item. | Lihat signature dan isi fungsi. |
create · L72 | Mengirim form pengajuan transfer stok ke API. | API /api/mutasi-stok |
preview · L85 | Membaca preview keputusan melalui URL persetujuan yang telah diperiksa. | Lihat signature dan isi fungsi. |
decide · L100 | Mengirim keputusan setujui atau tolak terhadap pengajuan yang sedang ditinjau. | Lihat signature dan isi fungsi. |
clearFilters · L110 | Mengembalikan filter dan nomor halaman ke nilai awal panel. | Lihat signature dan isi fungsi. |
printTransfer · L111 | Menyusun rincian asal, tujuan, pelaku, keputusan dan item transfer. | Dokumen cetak |
details · L120 | Menyusun atau menggambar area rincian transfer dari data yang dipilih. | Lihat signature dan isi fungsi. |
Path API literal pada source
/api/mutasi-stok/options/api/mutasi-stok
State komponen dan nilai awal
| State | Setter | Inisialisasi asli |
|---|---|---|
| options | setOptions | useState<Options | null>(null) |
| transfers | setTransfers | useState<Transfer[]>([]) |
| page | setPage | useState(1) |
| lastPage | setLastPage | useState(1) |
| filter | setFilter | useState('') |
| approvalFilter | setApprovalFilter | useState('') |
| query | setQuery | useState('') |
| otherBranch | setOtherBranch | useState('') |
| dateFrom | setDateFrom | useState('') |
| dateUntil | setDateUntil | useState('') |
| summary | setSummary | useState<TransferSummary>({ transfer_count: 0, pending_count: 0, completed_count: 0, rejected_count: 0, outgoing_count: 0, incoming_count: 0 }) |
| total | setTotal | useState(0) |
| destination | setDestination | useState('') |
| reason | setReason | useState('') |
| lines | setLines | useState<Line[]>([{ key: 1, product: '', quantity: '1' }]) |
| nextKey | setNextKey | useState(2) |
| selected | setSelected | useState<Transfer | null>(null) |
| approval | setApproval | useState<Transfer | null>(null) |
| loading | setLoading | useState(true) |
| busy | setBusy | useState(false) |
| error | setError | useState('') |
| notice | setNotice | useState('') |
| refresh | setRefresh | useState(0) |
| updatedAt | setUpdatedAt | useState<Date | null>(null) |
Effect dan memo yang perlu diperhatikan
| Hook | Isi yang terdeteksi | Kode |
|---|---|---|
| useEffect L57 | API, pembatalan request, cleanup |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 d0f00befd5ad8992a0d62dccdaab02495e2f40d4ee6d066fe16885782c193de5
resources/js/WarrantyPanel.tsx150 baris · 7 fungsi bernama
Untuk apa
Pencarian sumber, pengajuan produk atau servis, inspeksi dan penanganan klaim.
Jika diminta mengubah
Ubah label, urutan field, state, tombol, dan JSX di sini. Payload dan aturan backend harus ikut diubah jika kontrak data berubah.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
WarrantyPanel · L10 | Pencarian sumber, pengajuan produk atau servis, inspeksi dan penanganan klaim. | Dokumen cetak API /api/klaim-garansi, /api/klaim-garansi/, /api/klaim-garansi/sumber |
load · L31 | Membaca data panel melalui API, menerapkan hasil ke state dan menangani kegagalan pemuatan. | API /api/klaim-garansi |
refreshFallback · L43 | Memuat ulang data panel ketika kanal realtime tidak menyediakan pembaruan yang cukup. | API /api/klaim-garansi, /api/klaim-garansi/ |
onVisibility · L65 | Memicu pembacaan ulang ketika halaman kembali terlihat sesuai pemeriksaan event. | Lihat signature dan isi fungsi. |
clearFilters · L86 | Mengembalikan filter dan nomor halaman ke nilai awal panel. | Lihat signature dan isi fungsi. |
printClaim · L87 | Menyusun bukti klaim dan rincian penanganan yang tersedia. | Dokumen cetak |
act · L98 | Mengirim operasi yang dipilih beserta payload atau versi yang diperlukan dan memuat hasil terbaru. | API /api/klaim-garansi/ |
Path API literal pada source
/api/klaim-garansi/api/klaim-garansi//api/klaim-garansi/sumber
State komponen dan nilai awal
| State | Setter | Inisialisasi asli |
|---|---|---|
| claims | setClaims | useState<any[]>([]) |
| sources | setSources | useState<any[]>([]) |
| type | setType | useState('produk') |
| search | setSearch | useState('') |
| claimSearch | setClaimSearch | useState('') |
| claimStatus | setClaimStatus | useState('') |
| claimType | setClaimType | useState('') |
| claimFrom | setClaimFrom | useState('') |
| claimUntil | setClaimUntil | useState('') |
| summary | setSummary | useState<ClaimSummary>({ claim_count: 0, new_count: 0, handling_count: 0, completed_count: 0, rejected_count: 0 }) |
| page | setPage | useState(1) |
| lastPage | setLastPage | useState(1) |
| total | setTotal | useState(0) |
| updatedAt | setUpdatedAt | useState<Date | null>(null) |
| source | setSource | useState<any>(null) |
| selected | setSelected | useState<any>(null) |
| error | setError | useState('') |
| busy | setBusy | useState(false) |
Effect dan memo yang perlu diperhatikan
| Hook | Isi yang terdeteksi | Kode |
|---|---|---|
| useEffect L32 | API | |
| useEffect L40 | API, listener browser, interval, cleanup | |
| useEffect L73 | API, pembatalan request, cleanup |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 cb0f495c331e647b6d1b4e737844fc1067f2c0dad023ca3f3535bf63d0b8312d
resources/js/app.js1 baris · 0 fungsi bernama
Untuk apa
Entry lama berisi komentar saja.
Jika diminta mengubah
Vite memakai app.tsx, sehingga menulis tampilan di sini tidak mengubah aplikasi yang dibangun saat ini.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 101ead936a2281d53dcc064b7e2a2ab0d53b92ef3ef7b34b668673007895c860
resources/js/app.tsx60 baris · 2 fungsi bernama
Untuk apa
Entry React yang benar dan pembersihan service worker lama.
Jika diminta mengubah
Ubah pemilihan halaman publik, login, atau aktivasi di ekspresi render. ConnectionStatus hanya memberi informasi koneksi, bukan antrean transaksi offline.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
ConnectionStatus · L36 | Menampilkan status offline tanpa menjanjikan transaksi baru tersimpan atau diantrikan. | return () => { |
updateOnline · L40 | Memperbarui state koneksi dari navigator.onLine. | Lihat signature dan isi fungsi. |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 d7a26093da9794007a8ef3cca97f3de0997fc02267d372a1d6b645474774cce6
resources/js/components/PwaStatusBar.tsx101 baris · 5 fungsi bernama
Untuk apa
Komponen lama ajakan pemasangan PWA yang tidak diimpor entry aktif.
Jika diminta mengubah
Ubah label, urutan field, state, tombol, dan JSX di sini. Payload dan aturan backend harus ikut diubah jika kontrak data berubah.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
installNoticeDismissedRecently · L9 | Memeriksa jejak penutupan banner instalasi PWA lama. | return Number.isFinite(dismissedAt) && dismissedAt > 0 |
rememberInstallDismissal · L19 | Menyimpan waktu penutupan banner PWA lama. | Lihat signature dan isi fungsi. |
PwaStatusBar · L27 | Komponen lama ajakan pemasangan PWA yang tidak diimpor entry aktif. | return () => { |
updateOnline · L37 | Memperbarui state koneksi dari navigator.onLine. | Lihat signature dan isi fungsi. |
dismissBanner · L67 | Menutup banner instalasi lama dan menyimpan pilihan penutupannya. | Lihat signature dan isi fungsi. |
State komponen dan nilai awal
| State | Setter | Inisialisasi asli |
|---|---|---|
| online | setOnline | useState(navigator.onLine) |
| installable | setInstallable | useState(canInstallPwa()) |
| updateReady | setUpdateReady | useState(hasPwaUpdate()) |
| dismissedBanner | setDismissedBanner | useState<'install' | 'update' | null>(
() => installNoticeDismissedRecently() ? 'install' : null,
) |
Effect dan memo yang perlu diperhatikan
| Hook | Isi yang terdeteksi | Kode |
|---|---|---|
| useMemo L34 | Perhitungan atau sinkronisasi state sesuai dependensi. | |
| useEffect L36 | listener browser, cleanup | |
| useEffect L58 | timer, cleanup |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 ba33ecccddaea3c966a6af931d5687678c445ecb4e512a361af6b2063db46407
resources/js/components/RajawaliDataTable.tsx90 baris · 4 fungsi bernama
Untuk apa
Wrapper DataTables untuk sel React dan layout responsif. Paging, search dan ordering bawaan dimatikan.
Jika diminta mengubah
Ubah label, urutan field, state, tombol, dan JSX di sini. Payload dan aturan backend harus ikut diubah jika kontrak data berubah.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
isCellObject · L23 | Memeriksa bentuk sel yang memisahkan display React dan nilai dasarnya. | return typeof cell === 'object' && cell !== null && !Array.isArray(cell) && 'display' in cell |
plainValue · L27 | Membaca nilai string atau number untuk record DataTables. | return cell.value ?? '' |
displayValue · L33 | Mengembalikan elemen React yang seharusnya tampil pada sel. | return isCellObject(cell) ? cell.display : cell |
RajawaliDataTable · L37 | Wrapper DataTables untuk sel React dan layout responsif. Paging, search dan ordering bawaan dimatikan. | return record |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 271eb73cf142922c7c06c76a63a6e4b1762b15cc79b3c49202d5287eedb337cc
resources/js/components/RealtimeActivityFeed.tsx18 baris · 1 fungsi bernama
Untuk apa
Komponen riwayat notifikasi realtime yang tidak diimpor entry aktif.
Jika diminta mengubah
Ubah label, urutan field, state, tombol, dan JSX di sini. Payload dan aturan backend harus ikut diubah jika kontrak data berubah.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
RealtimeActivityFeed · L6 | Komponen riwayat notifikasi realtime yang tidak diimpor entry aktif. | return null; |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 0e9a6d8fe4a7afca0e4274d7b9c949f8abf902482d3c76a01a799eb8e1ac75ea
resources/js/components/UpdatedAt.tsx4 baris · 1 fungsi bernama
Untuk apa
Label waktu pembaruan daftar.
Jika diminta mengubah
Ubah label, urutan field, state, tombol, dan JSX di sini. Payload dan aturan backend harus ikut diubah jika kontrak data berubah.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
UpdatedAt · L1 | Label waktu pembaruan daftar. | return null; |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 2f79f9b9832a76bffa8c3d7b3b0edce71db2497fb7bf357501da2bee80bb7103
resources/js/lib/api.ts35 baris · 1 fungsi bernama
Untuk apa
Axios bersama, cookie session dan XSRF, blokir mutasi offline, serta pesan kegagalan API.
Jika diminta mengubah
Perubahan helper berdampak pada semua pemanggil. Periksa daftar import dan tes yang terkait.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
errorMessage · L20 | Mengubah kegagalan Axios, 419, 429, konflik instance dan field validation menjadi pesan yang dapat dibaca pengguna. | return 'Perangkat sedang offline. Transaksi tidak disimpan atau diantrikan. Sambungkan internet lalu coba kembali.'; |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 6c3a7d1422eb6f04d06f6c6cfd626fd7dede54d126d90ee17c3cc5b95dba32c8
resources/js/lib/brandAssets.ts5 baris · 0 fungsi bernama
Untuk apa
Konstanta path gambar merek yang dipakai komponen.
Jika diminta mengubah
Perubahan helper berdampak pada semua pemanggil. Periksa daftar import dan tes yang terkait.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 e8d34dae96f09e179bf3548111959567efef94bc7c798f5f8b24ef9bbc9ebac3
resources/js/lib/navigation.ts27 baris · 3 fungsi bernama
Untuk apa
Navigasi panel lewat history.state dengan URL tanpa fragment aplikasi.
Jika diminta mengubah
Perubahan helper berdampak pada semua pemanggil. Periksa daftar import dan tes yang terkait.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
readNavigation · L9 | Membaca rajawaliNavigation dari history.state dan mencocokkan surface. | Navigasi browser |
writeNavigation · L14 | Menyimpan state panel dengan pushState atau replaceState dan menghapus fragment URL. | Navigasi browser |
clearUrlFragment · L22 | Membersihkan hash memakai replaceState tanpa memuat ulang halaman. | Navigasi browser |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 377e1822feeff23f9a37742102ccedea91dae7b1a95424592db3ca6054f6cb95
resources/js/lib/presentation.ts39 baris · 3 fungsi bernama
Untuk apa
Label status, role dan format tanggal untuk tampilan.
Jika diminta mengubah
Perubahan helper berdampak pada semua pemanggil. Periksa daftar import dan tes yang terkait.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
humanStatus · L26 | Mengubah kode status menjadi label Indonesia, dengan fallback pemisah underscore. | return '—'; |
roleLabel · L31 | Mengubah kode role menjadi label tampilan. | return ({ owner: 'Owner', admin: 'Admin', kasir: 'Kasir', teknisi: 'Teknisi' } as Record<string, string>)[role] ?? role; |
formatDateTime · L35 | Memformat tanggal yang valid ke locale Indonesia dan mempertahankan input ketika tanggal tidak dapat dibaca. | return '—'; |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 ffe21a15c3d725bdd83a880759cdc6934a61f1b5ba11ced008042428bd9cc418
resources/js/lib/printDocument.ts62 baris · 3 fungsi bernama
Untuk apa
Penyusun dokumen cetak dengan DOM textContent dan CSS eksternal.
Jika diminta mengubah
Perubahan helper berdampak pada semua pemanggil. Periksa daftar import dan tes yang terkait.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
text · L8 | Mengubah nilai kosong menjadi penanda tampilan dan nilai lain menjadi teks. | return '—'; |
printDocument · L13 | Membuka popup, membuat elemen dan isi dengan textContent, memuat print.css, lalu mencetak setelah CSS siap. | Dokumen cetak |
printWhenReady · L58 | Memfokuskan dan mencetak popup setelah stylesheet siap jika jendela belum ditutup. | Lihat signature dan isi fungsi. |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 60eddec68e524558669532d51a7188f2c4ab3dfef7620aa49057fb8b7dd6a003
resources/js/lib/pwa.ts111 baris · 9 fungsi bernama
Untuk apa
Helper PWA lama. Tidak ada import dari entry app.tsx saat ini.
Jika diminta mengubah
Perubahan helper berdampak pada semua pemanggil. Periksa daftar import dan tes yang terkait.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
notify · L12 | Memberitahukan perubahan state pemasangan PWA kepada listener helper lama. | Lihat signature dan isi fungsi. |
watchRegistration · L16 | Memantau registration service worker lama dan update yang menunggu. | Lihat signature dan isi fungsi. |
registerPwa · L34 | Mendaftarkan service worker bila helper lama dipanggil. Entry aktif saat ini tidak memanggilnya. | Lihat signature dan isi fungsi. |
canInstallPwa · L78 | Membaca apakah event pemasangan PWA lama sedang tersedia. | return installPrompt !== null; |
hasPwaUpdate · L82 | Memeriksa worker update yang menunggu pada state helper lama. | return waitingWorker !== null; |
installPwa · L86 | Memunculkan prompt instalasi dari event PWA lama yang disimpan. | return false; |
applyPwaUpdate · L95 | Meminta worker lama yang menunggu melewati tahap waiting. | return false; |
checkPwaUpdate · L104 | Meminta pemeriksaan update registration lama. | return registration?.update().then(() => undefined).catch(() => undefined) ?? Promise.resolve(); |
subscribeInstallState · L108 | Mendaftarkan callback state helper PWA lama dan mengembalikan cleanup. | return () => listeners.delete(listener); |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 579c406108f55ad32f5c636cbaa969aeb02076c32db0fa99f3623c5a84f4929a
resources/js/lib/realtime.ts130 baris · 10 fungsi bernama
Untuk apa
Koneksi Echo atau Reverb, autentikasi channel privat, reconnect, dan deduplikasi event.
Jika diminta mengubah
Perubahan helper berdampak pada semua pemanggil. Periksa daftar import dan tes yang terkait.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
meta · L12 | Membaca satu meta konfigurasi publik dari Blade. | return document.querySelector<HTMLMetaElement>(`meta[name="${name}"]`)?.content ?? ''; |
runtimeConfig · L16 | Menyusun endpoint dan transport WebSocket dari meta halaman. | return { |
instance · L26 | Membuat satu klien Echo dengan transport dan authorizer channel privat yang sesuai konfigurasi. | API /api/broadcasting/auth |
eventKey · L52 | Memilih identitas event untuk deduplikasi. | return change.event_id ?? `${change.area}:${change.resource_id ?? 'none'}:${change.occurred_at}`; |
isDuplicate · L56 | Menghapus jejak lama dan menolak event berulang dalam jendela deduplikasi. | return true; |
subscribeTenant · L67 | Subscribe channel privat cabang, memantau koneksi, mendengar business.changed, serta melepas channel dan listener pada cleanup. | return () => undefined; |
connected · L91 | Memperbarui state realtime sesuai koneksi dan subscription channel. | Lihat signature dan isi fungsi. |
connecting · L92 | Menandai subscription belum siap dan koneksi sedang menghubungkan ulang. | Lihat signature dan isi fungsi. |
disconnected · L93 | Menandai channel belum tersubscribe dan koneksi terputus. | Lihat signature dan isi fungsi. |
failed · L94 | Menandai koneksi atau channel realtime dalam keadaan error. | Lihat signature dan isi fungsi. |
Path API literal pada source
/api/broadcasting/auth
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 e5ccc3535009a14422e035a44d556cfe98fb8638b37463afce02a8fdcb20ede6
resources/js/lib/spaFetch.ts110 baris · 4 fungsi bernama
Untuk apa
Bridge fetch lama. Komentar pemasangan di dalam berkas tidak sesuai entry terbaru yang tidak mengimpornya.
Jika diminta mengubah
Perubahan helper berdampak pada semua pemanggil. Periksa daftar import dan tes yang terkait.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
rajawaliCookie · L14 | Membaca dan mendecode cookie berdasarkan nama. | return null; |
rajawaliPrimeCsrf · L26 | Mengambil /sanctum/csrf-cookie lewat fetch asli. | API /sanctum/csrf-cookie |
rajawaliRequestUrl · L41 | Mengubah Request, URL, atau string menjadi URL untuk pemeriksaan origin. | return new URL(input.url, window.location.origin); |
rajawaliFetch · L53 | Membungkus fetch same-origin agar membawa cookie serta XSRF pada mutasi. Helper lama ini tidak diimpor entry aktif. | API /api/login |
Path API literal pada source
/sanctum/csrf-cookie/api/login
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 f81e8498908c8feab19541ab53dae69cdca55e8d37e1906d23f7515fe8c700d0
resources/js/online/OnlineOrdersPanel.tsx183 baris · 7 fungsi bernama
Untuk apa
Daftar pesanan online cabang, verifikasi bukti, pemrosesan, pengiriman atau ambil, dan cetak.
Jika diminta mengubah
Ubah label, urutan field, state, tombol, dan JSX di sini. Payload dan aturan backend harus ikut diubah jika kontrak data berubah.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
OnlineOrdersPanel · L27 | Daftar pesanan online cabang, verifikasi bukti, pemrosesan, pengiriman atau ambil, dan cetak. | Dokumen cetak API /api/online-order, /sanctum/csrf-cookie, /api/online-order/${selected.id_penjualan}/${path}, /api/online-order/${selected.id_penjualan}/bukti-pembayaran |
loadOrders · L66 | Membaca halaman pesanan dan ringkasan berdasarkan filter serta cabang yang sedang dipakai. | API /api/online-order |
stillCurrent · L69 | Membandingkan penanda request atau branch agar respons lama tidak memperbarui cabang yang sudah berganti. | Lihat signature dan isi fungsi. |
act · L87 | Mengirim operasi yang dipilih beserta payload atau versi yang diperlukan dan memuat hasil terbaru. | API /sanctum/csrf-cookie, /api/online-order/${selected.id_penjualan}/${path} |
clearFilters · L116 | Mengembalikan filter dan nomor halaman ke nilai awal panel. | Lihat signature dan isi fungsi. |
printOrder · L117 | Menyusun detail pesanan online yang sedang ditampilkan untuk dokumen cetak. | Dokumen cetak |
waHref · L127 | Membentuk tautan WhatsApp dari nomor kontak. | return 'https://wa.me/' + value.replace(/\D/g, '').replace(/^0/, '62'); } |
Path API literal pada source
/api/online-order/sanctum/csrf-cookie/api/online-order/${selected.id_penjualan}/${path}/api/online-order/${selected.id_penjualan}/bukti-pembayaran
State komponen dan nilai awal
| State | Setter | Inisialisasi asli |
|---|---|---|
| orders | setOrders | useState<Order[]>([]) |
| selectedId | setSelectedId | useState<number | null>(null) |
| loading | setLoading | useState(true) |
| busy | setBusy | useState(false) |
| error | setError | useState('') |
| notice | setNotice | useState('') |
| rejectReason | setRejectReason | useState('') |
| courier | setCourier | useState('') |
| trackingNumber | setTrackingNumber | useState('') |
| query | setQuery | useState('') |
| statusFilter | setStatusFilter | useState('') |
| paymentFilter | setPaymentFilter | useState('') |
| receptionFilter | setReceptionFilter | useState('') |
| dateFrom | setDateFrom | useState('') |
| dateUntil | setDateUntil | useState('') |
| summary | setSummary | useState<OrderSummary>({ order_count: 0, total_value: 0, payment_review_count: 0, active_count: 0 }) |
| page | setPage | useState(1) |
| lastPage | setLastPage | useState(1) |
| total | setTotal | useState(0) |
| updatedAt | setUpdatedAt | useState<Date | null>(null) |
Effect dan memo yang perlu diperhatikan
| Hook | Isi yang terdeteksi | Kode |
|---|---|---|
| useMemo L54 | Perhitungan atau sinkronisasi state sesuai dependensi. | |
| useEffect L56 | Perhitungan atau sinkronisasi state sesuai dependensi. | |
| useEffect L63 | Perhitungan atau sinkronisasi state sesuai dependensi. | |
| useEffect L64 | Perhitungan atau sinkronisasi state sesuai dependensi. |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 5a405de3469aa509520a2b04c080eecac448aceb689c8fdd6ae09c304bf241cb
resources/js/online/OnlineStoreApp.tsx755 baris · 41 fungsi bernama
Untuk apa
Katalog publik, detail produk, keranjang beberapa cabang, checkout per cabang, tracking dan bukti.
Jika diminta mengubah
Ubah label, urutan field, state, tombol, dan JSX di sini. Payload dan aturan backend harus ikut diubah jika kontrak data berubah.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
Icon · L77 | Memilih SVG ikon toko sesuai nama yang diminta. | return <svg {...common}><path d="M3 4h2l2.1 10.1a2 2 0 0 0 2 1.6h7.9a2 2 0 0 0 1.9-1.4L21 8H7"/><circle cx="10" cy="20" r="1"/><circle cx="18" cy=" |
signedOnlinePath · L89 | Memeriksa origin serta path untuk tracking, bukti, atau pembatalan sebelum mengikuti URL. | return url.pathname + url.search; |
savedCart · L100 | Membaca snapshot keranjang versi yang dikenal dari sessionStorage. | Penyimpanan per tab |
progress · L107 | Membentuk indikator tahap pesanan sesuai metode ambil atau kirim. | return ['Pesanan dibuat', 'Dibatalkan']; |
productPrice · L114 | Memakai harga_jual produk untuk estimasi tampilan, selaras dengan harga normal server saat ini. | return product.harga_jual; |
humanWarranty · L118 | Mengubah jumlah hari garansi menjadi label yang ringkas. | return null; |
PaymentGuide · L125 | Menampilkan rekening atau QRIS sesuai metode yang tersedia dan total pesanan. | return <section aria-label="Petunjuk pembayaran" className="rounded-2xl border border-[#d7bf82] bg-[#fffaf0] p-5 text-sm"> |
quantityValidation · L141 | Memvalidasi teks jumlah tanpa menerima minus, desimal, eksponen atau nol di depan. Nol membuka alur konfirmasi hapus. | return 'Masukkan bilangan bulat tanpa minus, desimal, atau nol di depan (contoh: 1, 2, 3).'; |
OnlineStoreApp · L152 | Katalog publik, detail produk, keranjang beberapa cabang, checkout per cabang, tracking dan bukti. | Dokumen cetak Penyimpanan per tab Navigasi browser API /api/online/cabang, /api/online/katalog, /sanctum/csrf-cookie, /api/online/checkout, /api/online/status-kode |
restoreView · L203 | Memulihkan view toko dari history dan membersihkan dialog yang tidak lagi relevan. | Navigasi browser |
closeOnOutsidePointer · L226 | Menutup menu sort ketika pointer berada di luar elemen menu. | Lihat signature dan isi fungsi. |
closeOnEscape · L231 | Menutup menu sort ketika tombol Escape ditekan. | Lihat signature dan isi fungsi. |
onEscape · L244 | Menutup modal atau dialog aktif sesuai urutan penanganan Escape. | Lihat signature dan isi fungsi. |
handleBack · L258 | Menutup dialog perubahan cabang ketika navigasi browser kembali. | Lihat signature dan isi fungsi. |
hydrateCart · L295 | Mengambil metadata produk untuk key keranjang yang tersimpan tanpa menghapus kelompok karena kegagalan baca API. | API /api/online/katalog |
navigateShop · L310 | Berpindah view belanja, keranjang, checkout atau status melalui history.state. | Lihat signature dan isi fungsi. |
openDetail · L317 | Membuka detail produk dan menyiapkan pilihan cabang serta jumlah. | Navigasi browser |
loadCatalog · L329 | Mengirim pencarian, halaman, kategori dan sort. Penanda request mencegah respons lama mengganti hasil request baru. | API /api/online/katalog |
stockAtBranch · L342 | Mencari stok produk pada satu cabang tertentu. | return 0; |
maxStock · L348 | Menghitung batas jumlah menurut cabang pilihan detail produk. | return stockAtBranch(product, branchId); |
clearQuantityDraft · L352 | Membersihkan teks jumlah sementara dan pesan error satu key item. | return next; }); |
setQuantity · L357 | Mengubah jumlah untuk satu pasangan cabang dan produk dengan batas stok. | Lihat signature dan isi fungsi. |
confirmRemove · L368 | Menghapus hanya item yang dikonfirmasi pengguna. | return next; }); |
addToCart · L376 | Menambahkan jumlah pada key pasangan cabang dan produk terpilih tanpa menyatukan cabang berbeda. | Lihat signature dan isi fungsi. |
dismissBranchChange · L432 | Menutup konfirmasi pindah cabang dan menyesuaikan entri history dialog. | Navigasi browser |
chooseBranch · L437 | Mengubah preferensi cabang pada detail produk, bukan memindahkan semua isi keranjang. | Lihat signature dan isi fungsi. |
requestLineBranchChange · L441 | Memeriksa calon penggabungan dan stok cabang tujuan sebelum membuka konfirmasi. | Lihat signature dan isi fungsi. |
confirmBranchChange · L453 | Memindahkan key item setelah pengguna menyetujui perubahan dan pemeriksaan terakhir berhasil. | Lihat signature dan isi fungsi. |
clearCart · L465 | Membuka konfirmasi pengosongan keranjang. | Lihat signature dan isi fungsi. |
performClearCart · L469 | Mengosongkan keranjang setelah konfirmasi dan membersihkan draft terkait. | Lihat signature dan isi fungsi. |
commitQuantity · L474 | Memvalidasi draft jumlah, mempertahankan jumlah lama jika salah, atau membuka konfirmasi hapus jika nol. | Lihat signature dan isi fungsi. |
beginBranchCheckout · L484 | Memilih satu kelompok cabang sebagai isi checkout dan totalnya. | Lihat signature dan isi fungsi. |
showCustomerError · L497 | Membaca pesan field dari error API dan menampilkannya pada area form. | Lihat signature dan isi fungsi. |
validateCheckout · L505 | Memeriksa kelompok cabang, jumlah, identitas, metode penerimaan dan pembayaran sebelum pengiriman. | return 'Nama pelanggan wajib diisi. Contoh: Budi Santoso.'; |
submitCheckout · L519 | Mengirim hanya item cabang checkout, menunggu hasil backend, lalu mengurangi hanya jumlah kelompok yang berhasil dibuat. | Navigasi browser API /sanctum/csrf-cookie, /api/online/checkout |
openTrackingCode · L551 | Mengirim kode tracking melalui POST lalu membuka hasil pesanan. | Navigasi browser API /sanctum/csrf-cookie, /api/online/status-kode |
loadTracking · L566 | Memvalidasi URL tracking dan membaca status terbaru dari API. | Lihat signature dan isi fungsi. |
refreshTracking · L574 | Memuat kembali pesanan yang sedang ditampilkan. | API /api/online/status-kode |
uploadProof · L583 | Mengirim file bukti melalui FormData ke signed URL pembayaran dalam waktu yang tersedia. | API /sanctum/csrf-cookie |
cancelOrder · L594 | Meminta pembatalan melalui signed URL setelah konfirmasi pengguna. | API /sanctum/csrf-cookie |
printTracking · L610 | Menyusun dokumen cetak pesanan dari data yang sudah diterima API. | Dokumen cetak |
Path API literal pada source
/api/online/cabang/api/online/katalog/sanctum/csrf-cookie/api/online/checkout/api/online/status-kode
State komponen dan nilai awal
| State | Setter | Inisialisasi asli |
|---|---|---|
| branches | setBranches | useState<Branch[]>([]) |
| paymentMethods | setPaymentMethods | useState<PaymentMethods>(emptyPaymentMethods) |
| branchId | setBranchId | useState('') |
| checkoutBranchId | setCheckoutBranchId | useState(() => readNavigation('online')?.checkoutBranch ?? '') |
| products | setProducts | useState<Product[]>([]) |
| categories | setCategories | useState<string[]>([]) |
| query | setQuery | useState('') |
| appliedQuery | setAppliedQuery | useState('') |
| category | setCategory | useState('') |
| sort | setSort | useState<CatalogSort>('nama') |
| sortOpen | setSortOpen | useState(false) |
| catalogPage | setCatalogPage | useState(1) |
| catalogLastPage | setCatalogLastPage | useState(1) |
| catalogTotal | setCatalogTotal | useState(0) |
| cart | setCart | useState<CartState>({}) |
| cartProducts | setCartProducts | useState<Record<number, Product>>({}) |
| loading | setLoading | useState(true) |
| catalogBusy | setCatalogBusy | useState(false) |
| checkoutBusy | setCheckoutBusy | useState(false) |
| proofBusy | setProofBusy | useState(false) |
| error | setError | useState('') |
| notice | setNotice | useState('') |
| cartPopup | setCartPopup | useState<{ name: string; quantity: number } | null>(null) |
| detailQuantity | setDetailQuantity | useState('1') |
| checkout | setCheckout | useState<CheckoutResult | null>(null) |
| trackingUrl | setTrackingUrl | useState<string | null>(null) |
| trackingCode | setTrackingCode | useState('') |
| tracking | setTracking | useState<TrackingData | null>(null) |
| trackingBusy | setTrackingBusy | useState(false) |
| proof | setProof | useState<File | null>(null) |
| quantityDrafts | setQuantityDrafts | useState<Record<string, string>>({}) |
| messageModal | setMessageModal | useState<{ title: string; message: string } | null>(null) |
| pendingRemoval | setPendingRemoval | useState<CartLine | null>(null) |
| pendingBranchChange | setPendingBranchChange | useState<{ line: CartLine; target: Branch } | null>(null) |
| quantityErrors | setQuantityErrors | useState<Record<string, string>>({}) |
| confirmModal | setConfirmModal | useState<'clear-cart' | 'cancel-order' | null>(null) |
| clock | setClock | useState(() => Date.now()) |
| cartReady | setCartReady | useState(false) |
| shopView | setShopView | useState<ShopView>(() => {
const requested = readNavigation('online')?.view;
if (requested === 'belanja' || requested === 'keranjang' || requested === 'checkout' || requested === 'status') return requested;
return !requested && new URLSearchParams(window.location.search).has('tracking') ? 'status' : 'belanja';
}) |
| selectedProduct | setSelectedProduct | useState<Product | null>(null) |
| statusInput | setStatusInput | useState('') |
| form | setForm | useState<CheckoutForm>({ nama_pelanggan: '', no_wa: '', email: '', alamat: '', metode_penerimaan: 'ambil', nama_penerima: '', alamat_pengiriman: '', metode_pembayaran: 'transfer_bank' }) |
Effect dan memo yang perlu diperhatikan
| Hook | Isi yang terdeteksi | Kode |
|---|---|---|
| useEffect L202 | listener browser, cleanup | |
| useEffect L223 | listener browser, cleanup | |
| useEffect L243 | listener browser, cleanup | |
| useEffect L255 | listener browser, cleanup | |
| useEffect L263 | API | |
| useEffect L281 | keranjang tersimpan | |
| useEffect L287 | Perhitungan atau sinkronisasi state sesuai dependensi. | |
| useEffect L289 | interval, cleanup | |
| useMemo L394 | Perhitungan atau sinkronisasi state sesuai dependensi. |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 b88897736b8b64d4f95be674e041cda9b33c13737627d20e9ed98bfc48ef5c8c
resources/js/online/cart.ts61 baris · 5 fungsi bernama
Untuk apa
Representasi keranjang sebagai pasangan cabang dan produk serta operasi yang mempertahankan kelompok lain.
Jika diminta mengubah
Perubahan helper berdampak pada semua pemanggil. Periksa daftar import dan tes yang terkait.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
cartKey · L4 | Menghasilkan key cabang:produk setelah memastikan angka ID sesuai aturan. | return `${branchId}:${productId}`; |
splitCartKey · L11 | Membaca kedua ID dari key serta menolak bentuk yang tidak sah. | return null; |
decodeCart · L19 | Memulihkan data sessionStorage dan memigrasikan bentuk keranjang lama tanpa membuang jumlah yang masih valid. | return {}; |
moveCartLine · L41 | Memindahkan satu item ke cabang tujuan, menggabungkan produk sama, dan menolak hasil yang melampaui stok. | return cart; |
removePurchasedLines · L53 | Mengurangi hanya jumlah yang benar-benar dikirim pada checkout, sehingga kelompok lain atau tambahan baru tetap ada. | return next; |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 0b80fa27559a55e2e90dadfba52ae99b13683239c133743bf0759caf95834ee5
resources/views/errors/404.blade.php19 baris · 0 fungsi bernama
Untuk apa
Halaman HTTP 404 bermerek Rajawali dengan tombol kembali ke katalog.
Jika diminta mengubah
Ubah teks di Blade dan tampilan di public/css/rajawali-error.css.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 63bc901ebd609aa5862a43aea98e61566d03a96066df2bea2d1c2c83fbff78e1
resources/views/mail/employee-activation.blade.php5 baris · 0 fungsi bernama
Untuk apa
Template Blade email employee activation.
Jika diminta mengubah
Ubah teks atau layout di Blade dan data pengirim pada kelas Mail atau Notification pemanggilnya.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 586b0d4acc1877cb04e37aae77809cfe3eddc17793f534cee73106fef25fa1de
resources/views/mail/online-order-paid.blade.php42 baris · 0 fungsi bernama
Untuk apa
Template Blade email online order paid.
Jika diminta mengubah
Ubah teks atau layout di Blade dan data pengirim pada kelas Mail atau Notification pemanggilnya.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 efa2b3f00be005144a3f003042eb472d05d425b646547f1b4e49ee93b5f24521
resources/views/mail/staff-login-code.blade.php5 baris · 0 fungsi bernama
Untuk apa
Template Blade email staff login code.
Jika diminta mengubah
Ubah teks atau layout di Blade dan data pengirim pada kelas Mail atau Notification pemanggilnya.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 d937f59be283c9ef8941f722280eab16875141582b5ac25371a41a8559583e1f
resources/views/rajawali.blade.php30 baris · 0 fungsi bernama
Untuk apa
HTML shell aplikasi yang memuat root React dan meta Reverb publik.
Jika diminta mengubah
Teks title, metadata, favicon dan pemanggilan Vite berada di sini. Secret Reverb tidak boleh dimasukkan ke meta.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 3849bbee8e10172eedd3c20362d8646ae67cf957172f1cbe78c42126fead6582
resources/views/welcome.blade.php223 baris · 0 fungsi bernama
Untuk apa
Halaman welcome bawaan Laravel yang masih tersedia dalam source.
Jika diminta mengubah
Route root saat ini memakai view rajawali, bukan welcome.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 bdb9bb7d2eecceb3581e429545b6ec96014ccab6d0ae83d4c52930e9a15f7d65
Database, migration, factory dan seeder 44
database/factories/CabangFactory.php16 baris · 1 fungsi bernama
Untuk apa
Pabrik data latihan untuk model Cabang.
Jika diminta mengubah
Nilai random atau default di factory bukan akun dan data produksi yang harus dipakai pengguna.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function definition(): array | Membentuk atribut contoh atau state model untuk data uji, bukan menyiapkan akun pengguna produksi. | return ['nama_cabang' => 'Samanhudi', 'alamat' => fake()->address(), 'status_cabang' => 'aktif']; |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 e08f5a5d37e8e8e07c2354466c06f8aca6548843f3d00c9c057ccbf504fdd80a
database/factories/PelangganFactory.php17 baris · 1 fungsi bernama
Untuk apa
Pabrik data latihan untuk model Pelanggan.
Jika diminta mengubah
Nilai random atau default di factory bukan akun dan data produksi yang harus dipakai pengguna.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function definition(): array | Membentuk atribut contoh atau state model untuk data uji, bukan menyiapkan akun pengguna produksi. | return ['nama_pelanggan' => fake()->name(), 'no_wa' => null, 'email' => null, 'alamat' => null]; |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 98917a8afaab11b17da7e725bdb7fe8d4917fbb1127f3e55116bc5d7ff5c97e1
database/factories/PenggunaFactory.php25 baris · 1 fungsi bernama
Untuk apa
Pabrik data latihan untuk model Pengguna.
Jika diminta mengubah
Nilai random atau default di factory bukan akun dan data produksi yang harus dipakai pengguna.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function definition(): array | Membentuk atribut contoh atau state model untuk data uji, bukan menyiapkan akun pengguna produksi. | Pembuatan hash |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 f010da5d3ccc117072178685eeac48d0d3f878c11a8870cb46b7e977012526f9
database/factories/ProdukFactory.php22 baris · 1 fungsi bernama
Untuk apa
Pabrik data latihan untuk model Produk.
Jika diminta mengubah
Nilai random atau default di factory bukan akun dan data produksi yang harus dipakai pengguna.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function definition(): array | Membentuk atribut contoh atau state model untuk data uji, bukan menyiapkan akun pengguna produksi. | return [ |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 72c383c941c9c677a42d276c436cafda1076ac489be38c81b9f478112813266e
database/factories/SupplierFactory.php17 baris · 1 fungsi bernama
Untuk apa
Pabrik data latihan untuk model Supplier.
Jika diminta mengubah
Nilai random atau default di factory bukan akun dan data produksi yang harus dipakai pengguna.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function definition(): array | Membentuk atribut contoh atau state model untuk data uji, bukan menyiapkan akun pengguna produksi. | return ['nama_supplier' => fake()->company(), 'alamat' => fake()->address(), 'no_telepon' => '0311234567']; |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 a6d7a742d5f25deeded03225f5537702477d572fea88e9926df62fa77e8b696f
database/migrations/infrastructure/master/2026_09_21_155927_create_sessions_table.php27 baris · 2 fungsi bernama
Untuk apa
Membuat schema untuk sessions. Lingkup master.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Lihat signature dan isi fungsi. |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Lihat signature dan isi fungsi. |
Kolom, relasi, dan indeks pada migration
| Baris | Definisi asli |
|---|---|
| 14 | $table->string('id')->primary(); |
| 15 | $table->integer('user_id')->nullable()->index(); |
| 16 | $table->string('ip_address', 45)->nullable(); |
| 17 | $table->text('user_agent')->nullable(); |
| 18 | $table->text('payload'); |
| 19 | $table->integer('last_activity')->index(); |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 ba1ec32435ae360b584ef5791173c261d6209cfe26e3bdf9d702c80f43d81e2a
database/migrations/infrastructure/master/2026_09_23_030024_create_distributed_transactions_table.php40 baris · 2 fungsi bernama
Untuk apa
Membuat schema untuk distributed_transactions. Lingkup master.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Lihat signature dan isi fungsi. |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Tabel distributed_transactions |
Kolom, relasi, dan indeks pada migration
| Baris | Definisi asli |
|---|---|
| 15 | $table->string('global_id', 32)->primary(); |
| 16 | $table->string('operation', 40); |
| 17 | $table->integer('reference_id')->nullable(); |
| 18 | $table->jsonb('participants'); |
| 19 | $table->string('decision', 10)->nullable(); |
| 20 | $table->string('status', 20)->index(); |
| 21 | $table->timestampTz('created_at'); |
| 22 | $table->timestampTz('decided_at')->nullable(); |
| 23 | $table->timestampTz('finished_at')->nullable(); |
| 24 | $table->integer('recovery_attempts')->default(0); |
| 25 | $table->string('last_error', 100)->nullable(); |
Constraint dan kontrol SQL
CHECK (decision IS NULL OR decision IN ('commit', 'rollback')),CHECK (status IN ('preparing', 'committing', 'rolling_back', 'completed')),CHECK (status <> 'completed' OR (decision IS NOT NULL AND finished_at IS NOT NULL))");
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 a1d5067f3bf49cef985dbcd6cc17033209143cc55db819b259f9854cf17f8512
database/migrations/master/2026_09_21_142815_create_cabang_table.php28 baris · 2 fungsi bernama
Untuk apa
Membuat schema untuk cabang. Lingkup master.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Lihat signature dan isi fungsi. |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Lihat signature dan isi fungsi. |
Kolom, relasi, dan indeks pada migration
| Baris | Definisi asli |
|---|---|
| 14 | $table->increments('id_cabang'); |
| 15 | $table->string('nama_cabang', 100); |
| 16 | $table->text('alamat'); |
| 17 | $table->string('no_telepon', 20)->nullable(); |
| 18 | $table->string('status_cabang', 20)->default('aktif'); |
| 19 | $table->timestampTz('created_at')->useCurrent(); |
| 20 | $table->timestampTz('updated_at')->useCurrent(); |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 712885b563f1cd03cb7b38bca5a82e1c313fa6ed0cd85e47391636eca8680a47
database/migrations/master/2026_09_21_145227_create_pengguna_table.php45 baris · 2 fungsi bernama
Untuk apa
Membuat schema untuk pengguna. Lingkup master.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Lihat signature dan isi fungsi. |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Lihat signature dan isi fungsi. |
Kolom, relasi, dan indeks pada migration
| Baris | Definisi asli |
|---|---|
| 15 | $table->increments('id_pengguna'); |
| 16 | $table->integer('id_cabang')->nullable()->index(); |
| 17 | $table->string('nama_pengguna', 100); |
| 18 | $table->string('email', 100)->unique(); |
| 19 | $table->string('password_hash', 255); |
| 20 | $table->string('role', 20); |
| 21 | $table->string('status_akun', 20)->default('aktif'); |
| 22 | $table->smallInteger('failed_login_count')->default(0); |
| 23 | $table->timestampTz('locked_until')->nullable(); |
| 24 | $table->timestampTz('last_login_at')->nullable(); |
| 25 | $table->timestampTz('created_at')->useCurrent(); |
| 26 | $table->timestampTz('updated_at')->useCurrent(); |
| 27 | $table->integer('total_failed_login_count')->default(0); |
| 29 | $table->foreign('id_cabang')->references('id_cabang')->on('cabang')->onDelete('no action')->onUpdate('no action'); |
Constraint dan kontrol SQL
CHECK (failed_login_count >= 0),CHECK (total_failed_login_count >= 0),CHECK (role IN ('owner', 'admin', 'kasir', 'teknisi')),CHECK (role = 'owner' OR id_cabang IS NOT NULL)
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 7335642ab41379dd01881f120d5e34e8b406d6ebfbef2020dd9217a8467f2dca
database/migrations/master/2026_09_21_145954_create_supplier_table.php28 baris · 2 fungsi bernama
Untuk apa
Membuat schema untuk supplier. Lingkup master.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Lihat signature dan isi fungsi. |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Lihat signature dan isi fungsi. |
Kolom, relasi, dan indeks pada migration
| Baris | Definisi asli |
|---|---|
| 14 | $table->increments('id_supplier'); |
| 15 | $table->string('nama_supplier', 100); |
| 16 | $table->text('alamat')->nullable(); |
| 17 | $table->string('no_telepon', 20)->nullable(); |
| 18 | $table->timestampTz('created_at')->useCurrent(); |
| 19 | $table->timestampTz('updated_at')->useCurrent(); |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 f2dea60a34ff27cb3d06903d935ccd54290891390b9796572a551b03ea5e310e
database/migrations/master/2026_09_21_145956_create_produk_table.php43 baris · 2 fungsi bernama
Untuk apa
Membuat schema untuk produk. Lingkup master.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Lihat signature dan isi fungsi. |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Lihat signature dan isi fungsi. |
Kolom, relasi, dan indeks pada migration
| Baris | Definisi asli |
|---|---|
| 15 | $table->increments('id_produk'); |
| 16 | $table->string('kode_produk', 50)->unique(); |
| 17 | $table->string('nama_produk', 150); |
| 18 | $table->string('kategori', 50)->nullable(); |
| 19 | $table->string('merek', 50)->nullable(); |
| 20 | $table->string('satuan', 20)->default('pcs'); |
| 21 | $table->bigInteger('harga_jual')->default(0); |
| 22 | $table->bigInteger('harga_grosir')->nullable(); |
| 23 | $table->smallInteger('min_qty_grosir')->nullable(); |
| 24 | $table->string('status_produk', 20)->default('aktif'); |
| 25 | $table->timestampTz('created_at')->useCurrent(); |
| 26 | $table->timestampTz('updated_at')->useCurrent(); |
| 27 | $table->smallInteger('masa_garansi')->nullable()->comment('Masa garansi dalam hari'); |
Constraint dan kontrol SQL
CHECK (harga_jual >= 0),CHECK (harga_grosir IS NULL OR harga_grosir >= 0),CHECK (min_qty_grosir IS NULL OR min_qty_grosir > 0),CHECK (masa_garansi IS NULL OR masa_garansi >= 0)
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 924cad97ca79b17d5eb2d26b5fe484726d34d1020993802adf6284ce185d75e0
database/migrations/master/2026_09_21_145957_create_mutasi_stok_table.php45 baris · 2 fungsi bernama
Untuk apa
Membuat schema untuk mutasi_stok. Lingkup master.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Lihat signature dan isi fungsi. |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Lihat signature dan isi fungsi. |
Kolom, relasi, dan indeks pada migration
| Baris | Definisi asli |
|---|---|
| 15 | $table->increments('id_mutasi_stok'); |
| 16 | $table->integer('id_pengguna')->index(); |
| 17 | $table->text('alasan_mutasi'); |
| 18 | $table->string('status_mutasi', 20); |
| 19 | $table->string('status_approval', 20); |
| 20 | $table->integer('approved_by')->nullable()->index(); |
| 21 | $table->timestampTz('approved_at')->nullable(); |
| 22 | $table->string('approval_token_hash', 255)->nullable(); |
| 23 | $table->timestampTz('approval_expires_at')->nullable(); |
| 24 | $table->timestampTz('created_at'); |
| 25 | $table->integer('id_cabang_asal')->index(); |
| 26 | $table->integer('id_cabang_tujuan')->index(); |
| 28 | $table->foreign('id_pengguna')->references('id_pengguna')->on('pengguna')->onDelete('no action')->onUpdate('no action'); |
| 29 | $table->foreign('approved_by')->references('id_pengguna')->on('pengguna')->onDelete('no action')->onUpdate('no action'); |
| 30 | $table->foreign('id_cabang_asal')->references('id_cabang')->on('cabang')->onDelete('no action')->onUpdate('no action'); |
| 31 | $table->foreign('id_cabang_tujuan')->references('id_cabang')->on('cabang')->onDelete('no action')->onUpdate('no action'); |
Constraint dan kontrol SQL
CHECK (id_cabang_asal <> id_cabang_tujuan),CHECK (approved_by IS NULL OR approved_by <> id_pengguna)
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 6cb766ba277cf5099866d496814e8ec897da9042e26542a087b32b3575bd9ed0
database/migrations/master/2026_09_21_145959_create_detail_mutasi_stok_table.php33 baris · 2 fungsi bernama
Untuk apa
Membuat schema untuk detail_mutasi_stok. Lingkup master.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Lihat signature dan isi fungsi. |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Lihat signature dan isi fungsi. |
Kolom, relasi, dan indeks pada migration
| Baris | Definisi asli |
|---|---|
| 15 | $table->integer('id_mutasi_stok'); |
| 16 | $table->integer('id_produk')->index(); |
| 17 | $table->integer('jumlah'); |
| 19 | $table->primary(['id_mutasi_stok', 'id_produk']); |
| 20 | $table->foreign('id_mutasi_stok')->references('id_mutasi_stok')->on('mutasi_stok')->onDelete('no action')->onUpdate('no action'); |
| 21 | $table->foreign('id_produk')->references('id_produk')->on('produk')->onDelete('no action')->onUpdate('no action'); |
Constraint dan kontrol SQL
CHECK (jumlah > 0)'
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 84312fca2722212bff019c4b872dd897b526c3e2498a60b73cac74b087313878
database/migrations/master/2026_09_22_095700_restrict_pengguna_roles.php28 baris · 2 fungsi bernama
Untuk apa
Membatasi schema untuk pengguna. Lingkup master.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Tabel pengguna |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Lihat signature dan isi fungsi. |
Constraint dan kontrol SQL
CHECK (role IN ('owner', 'kasir', 'teknisi'))");
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 4bc1068e74478dabfd8bef4332bf02bfccc0481a2e9654675ddea98e5eab8698
database/migrations/master/2026_09_25_160500_restore_admin_role.php26 baris · 2 fungsi bernama
Untuk apa
Memulihkan schema untuk pengguna. Lingkup master.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Lihat signature dan isi fungsi. |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Tabel pengguna |
Constraint dan kontrol SQL
CHECK (role IN ('owner', 'admin', 'kasir', 'teknisi'))");CHECK (role IN ('owner', 'kasir', 'teknisi'))");
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 c8bca02638bf2f93adcdaaf20e93b8e502ff2345a662cb934d0ce05d9e4d9010
database/migrations/master/2026_09_29_110100_create_user_rights_audit_table.php52 baris · 2 fungsi bernama
Untuk apa
Membuat audit hak pengguna pada master dengan perlindungan histori yang ditentukan SQL migration. Lingkup master.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Lihat signature dan isi fungsi. |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Lihat signature dan isi fungsi. |
Kolom, relasi, dan indeks pada migration
| Baris | Definisi asli |
|---|---|
| 15 | $table->bigIncrements('id_audit_hak'); |
| 16 | $table->unsignedInteger('id_actor'); |
| 17 | $table->unsignedInteger('id_subject'); |
| 18 | $table->string('aksi', 40); |
| 19 | $table->integer('id_cabang_lama')->nullable(); |
| 20 | $table->integer('id_cabang_baru')->nullable(); |
| 21 | $table->jsonb('data_lama')->nullable(); |
| 22 | $table->jsonb('data_baru')->nullable(); |
| 23 | $table->ipAddress('ip_address')->nullable(); |
| 24 | $table->string('user_agent', 500)->nullable(); |
| 25 | $table->timestampTz('created_at')->useCurrent(); |
| 26 | $table->index(['id_subject', 'created_at']); |
| 27 | $table->index(['id_actor', 'created_at']); |
| 28 | $table->foreign('id_actor')->references('id_pengguna')->on('pengguna'); |
| 29 | $table->foreign('id_subject')->references('id_pengguna')->on('pengguna'); |
Constraint dan kontrol SQL
CREATE FUNCTION rajawali_reject_rights_audit_mutation() RETURNS triggerCREATE TRIGGER audit_hak_pengguna_append_only
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 deda1009533ffd42177a2a001da1b2c492c088128bf8040dd012b8debb695a16
database/migrations/master/2026_10_06_220000_add_deskripsi_to_produk_table.php24 baris · 2 fungsi bernama
Untuk apa
Menambah schema untuk produk. Lingkup master.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Tabel produk |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Tabel produk |
Kolom, relasi, dan indeks pada migration
| Baris | Definisi asli |
|---|---|
| 14 | $table->text('deskripsi')->nullable(); |
| 21 | $table->dropColumn('deskripsi'); |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 1efd7e4dcee34b3e4aca11bb3e229faf355c0b8eaf3743fa732deb19b3b6a3c1
database/migrations/master/2026_10_14_073100_create_payment_settings_tables.php58 baris · 2 fungsi bernama
Untuk apa
Membuat konfigurasi pembayaran singleton dan audit pengaturannya. Lingkup master.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Lihat signature dan isi fungsi. |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Lihat signature dan isi fungsi. |
Kolom, relasi, dan indeks pada migration
| Baris | Definisi asli |
|---|---|
| 14 | $table->unsignedSmallInteger('id')->primary(); |
| 15 | $table->string('bank_name', 100)->nullable(); |
| 16 | $table->string('bank_account', 30)->nullable(); |
| 17 | $table->string('bank_beneficiary', 120)->nullable(); |
| 18 | $table->boolean('bank_enabled')->default(false); |
| 19 | $table->string('qris_file', 48)->nullable(); |
| 20 | $table->boolean('qris_enabled')->default(false); |
| 21 | $table->unsignedBigInteger('updated_by')->nullable(); |
| 22 | $table->timestampsTz(); |
| 25 | $table->bigIncrements('id'); |
| 26 | $table->unsignedBigInteger('actor_id'); |
| 27 | $table->jsonb('data_lama'); |
| 28 | $table->jsonb('data_baru'); |
| 29 | $table->string('ip_address', 45)->nullable(); |
| 30 | $table->string('user_agent', 500)->nullable(); |
| 31 | $table->timestampTz('created_at'); |
Constraint dan kontrol SQL
grant only the operations required by the master runtime.grants to the provisioning superuser when MASTER_DB_*GRANT SELECT, INSERT, UPDATE ON TABLE payment_settings TO '.$role);GRANT SELECT, INSERT ON TABLE payment_settings_audit TO '.$role);GRANT USAGE, SELECT ON SEQUENCE payment_settings_audit_id_seq TO '.$role);
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 5c5bcf5346bbfab3186d73dc03dab1d3fa66ad4f39bb59422eb005c8d33cf19d
database/migrations/master/2026_10_14_120000_create_branch_provisioning.php45 baris · 2 fungsi bernama
Untuk apa
Membuat tenant_instances dan privilege runtime master untuk permintaan provisioning. Lingkup master.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Lihat signature dan isi fungsi. |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Lihat signature dan isi fungsi. |
Kolom, relasi, dan indeks pada migration
| Baris | Definisi asli |
|---|---|
| 14 | $table->unsignedInteger('id_cabang')->primary(); |
| 15 | $table->string('tenant_key', 50)->unique(); |
| 16 | $table->string('database_name', 63)->unique(); |
| 17 | $table->string('database_user', 63)->unique(); |
| 18 | $table->text('credential_ciphertext')->nullable(); |
| 19 | $table->string('status', 20)->default('pending'); |
| 20 | $table->unsignedSmallInteger('attempts')->default(0); |
| 21 | $table->string('last_error', 80)->nullable(); |
| 22 | $table->timestampTz('created_at')->useCurrent(); |
| 23 | $table->timestampTz('updated_at')->useCurrent(); |
| 24 | $table->foreign('id_cabang')->references('id_cabang')->on('cabang')->restrictOnDelete(); |
Constraint dan kontrol SQL
GRANT SELECT, INSERT, UPDATE ON TABLE tenant_instances TO "'.$runtime.'"');
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 4bd232f844ff84c3ff394f473011a373a8fe2580ba37a3a5373662c5af2632e2
database/migrations/master/2026_10_14_150000_add_online_order_control_to_branches.php25 baris · 2 fungsi bernama
Untuk apa
Menambah schema untuk cabang. Lingkup master.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Tabel cabang |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Tabel cabang |
Kolom, relasi, dan indeks pada migration
| Baris | Definisi asli |
|---|---|
| 15 | $table->boolean('online_order_enabled')->default(true); |
| 22 | $table->dropColumn('online_order_enabled'); |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 bf86682f3451bdf8d6ffaab6398ec1b7ad03e59a58d916551a393df0974bb724
database/migrations/master/2026_10_14_151000_create_employee_invitations.php38 baris · 2 fungsi bernama
Untuk apa
Membuat schema untuk employee_invitations. Lingkup master.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Lihat signature dan isi fungsi. |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Lihat signature dan isi fungsi. |
Kolom, relasi, dan indeks pada migration
| Baris | Definisi asli |
|---|---|
| 15 | $table->unsignedInteger('id_pengguna')->primary(); |
| 16 | $table->char('token_hash', 64)->unique(); |
| 17 | $table->timestampTz('expires_at'); |
| 18 | $table->timestampsTz(); |
| 19 | $table->foreign('id_pengguna')->references('id_pengguna')->on('pengguna')->cascadeOnDelete(); |
Constraint dan kontrol SQL
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE employee_invitations TO "'.$runtime.'"');
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 9fca3842d934286dc37bbc78cfcabddd219eae6250b6fc25f65e82538ee73c16
database/migrations/tenant/2026_09_21_152518_create_pelanggan_table.php26 baris · 2 fungsi bernama
Untuk apa
Membuat schema untuk pelanggan. Lingkup tenant yang dipilih pada koneksi migrasi.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Lihat signature dan isi fungsi. |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Lihat signature dan isi fungsi. |
Kolom, relasi, dan indeks pada migration
| Baris | Definisi asli |
|---|---|
| 12 | $table->increments('id_pelanggan'); |
| 13 | $table->string('nama_pelanggan', 100); |
| 14 | $table->string('no_wa', 20)->nullable(); |
| 15 | $table->string('email', 100)->nullable(); |
| 16 | $table->text('alamat')->nullable(); |
| 17 | $table->timestampTz('created_at')->useCurrent(); |
| 18 | $table->timestampTz('updated_at')->useCurrent(); |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 5d4e488a72c81da72849cce6119ed90261522983e657facffad669389efd6d26
database/migrations/tenant/2026_09_21_152521_create_produk_cabang_table.php34 baris · 2 fungsi bernama
Untuk apa
Membuat schema untuk produk_cabang. Lingkup tenant yang dipilih pada koneksi migrasi.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Lihat signature dan isi fungsi. |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Lihat signature dan isi fungsi. |
Kolom, relasi, dan indeks pada migration
| Baris | Definisi asli |
|---|---|
| 13 | $table->integer('id_produk'); |
| 14 | $table->integer('id_cabang'); |
| 15 | $table->integer('stok_tersedia')->default(0); |
| 16 | $table->integer('stok_karantina')->default(0); |
| 17 | $table->timestampTz('updated_at')->useCurrent(); |
| 19 | $table->primary(['id_produk', 'id_cabang']); |
| 20 | $table->index('id_cabang'); |
Constraint dan kontrol SQL
CHECK (stok_tersedia >= 0),CHECK (stok_karantina >= 0)
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 114521eb8ce537bdd4010e40c23dade2f2f8fd9899d500432deaf346f0650276
database/migrations/tenant/2026_09_21_152524_create_pembelian_table.php33 baris · 2 fungsi bernama
Untuk apa
Membuat schema untuk pembelian. Lingkup tenant yang dipilih pada koneksi migrasi.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Lihat signature dan isi fungsi. |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Lihat signature dan isi fungsi. |
Kolom, relasi, dan indeks pada migration
| Baris | Definisi asli |
|---|---|
| 12 | $table->increments('id_pembelian'); |
| 13 | $table->integer('id_supplier'); |
| 14 | $table->integer('id_cabang'); |
| 15 | $table->integer('id_pengguna'); |
| 16 | $table->string('nomor_pembelian', 50); |
| 17 | $table->timestampTz('tanggal_pembelian')->useCurrent(); |
| 18 | $table->string('status_pembelian', 20)->default('draft'); |
| 19 | $table->timestampTz('created_at')->useCurrent(); |
| 20 | $table->timestampTz('updated_at')->useCurrent(); |
| 22 | $table->unique('nomor_pembelian'); |
| 23 | $table->index('id_supplier'); |
| 24 | $table->index('id_cabang'); |
| 25 | $table->index('id_pengguna'); |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 984403013fe51d83c18d0549c432eaf945a9aa6d0031b792cd125dcc0370f4a6
database/migrations/tenant/2026_09_21_152527_create_detail_pembelian_table.php34 baris · 2 fungsi bernama
Untuk apa
Membuat schema untuk detail_pembelian. Lingkup tenant yang dipilih pada koneksi migrasi.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Lihat signature dan isi fungsi. |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Lihat signature dan isi fungsi. |
Kolom, relasi, dan indeks pada migration
| Baris | Definisi asli |
|---|---|
| 13 | $table->integer('id_pembelian'); |
| 14 | $table->integer('id_produk'); |
| 15 | $table->integer('jumlah'); |
| 16 | $table->bigInteger('harga_beli'); |
| 18 | $table->primary(['id_pembelian', 'id_produk']); |
| 19 | $table->index('id_produk'); |
| 20 | $table->foreign('id_pembelian')->references('id_pembelian')->on('pembelian')->onDelete('no action')->onUpdate('no action'); |
Constraint dan kontrol SQL
CHECK (jumlah > 0),CHECK (harga_beli >= 0)
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 2ef0aedc936306635556b775a5cbb34b49b2ffd863ae9ea56232524a065f389a
database/migrations/tenant/2026_09_21_152530_create_penjualan_table.php54 baris · 2 fungsi bernama
Untuk apa
Membuat schema untuk penjualan. Lingkup tenant yang dipilih pada koneksi migrasi.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Lihat signature dan isi fungsi. |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Lihat signature dan isi fungsi. |
Kolom, relasi, dan indeks pada migration
| Baris | Definisi asli |
|---|---|
| 13 | $table->increments('id_penjualan'); |
| 14 | $table->integer('id_cabang'); |
| 15 | $table->integer('id_pelanggan')->nullable(); |
| 16 | $table->integer('id_pengguna'); |
| 17 | $table->string('nomor_nota', 50); |
| 18 | $table->string('kanal_penjualan', 20)->default('OFFLINE'); |
| 19 | $table->timestampTz('tanggal_penjualan')->useCurrent(); |
| 20 | $table->string('metode_pembayaran', 30); |
| 21 | $table->string('status_pembayaran', 20)->default('belum_bayar'); |
| 22 | $table->bigInteger('jumlah_bayar')->default(0); |
| 23 | $table->bigInteger('kembalian')->default(0); |
| 24 | $table->string('bukti_pembayaran', 255)->nullable(); |
| 25 | $table->string('status_penjualan', 20)->default('draft'); |
| 26 | $table->string('status_approval', 20)->default('tidak_perlu'); |
| 27 | $table->integer('approved_by')->nullable(); |
| 28 | $table->timestampTz('approved_at')->nullable(); |
| 29 | $table->string('approval_token_hash', 255)->nullable(); |
| 30 | $table->timestampTz('approval_expires_at')->nullable(); |
| 31 | $table->timestampTz('created_at')->useCurrent(); |
| 32 | $table->timestampTz('updated_at')->useCurrent(); |
| 34 | $table->unique('nomor_nota'); |
| 35 | $table->index('id_cabang'); |
| 36 | $table->index('id_pelanggan'); |
| 37 | $table->index('id_pengguna'); |
| 38 | $table->index('approved_by'); |
| 39 | $table->foreign('id_pelanggan')->references('id_pelanggan')->on('pelanggan')->onDelete('no action')->onUpdate('no action'); |
Constraint dan kontrol SQL
CHECK (jumlah_bayar >= 0),CHECK (kembalian >= 0),CHECK (approved_by IS NULL OR approved_by <> id_pengguna)
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 d0748961ca1275fdf328bab5c9ee7296e53871892823ab4343c71a24a7da2505
database/migrations/tenant/2026_09_21_152532_create_detail_penjualan_table.php35 baris · 2 fungsi bernama
Untuk apa
Membuat schema untuk detail_penjualan. Lingkup tenant yang dipilih pada koneksi migrasi.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Lihat signature dan isi fungsi. |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Lihat signature dan isi fungsi. |
Kolom, relasi, dan indeks pada migration
| Baris | Definisi asli |
|---|---|
| 13 | $table->integer('id_penjualan'); |
| 14 | $table->integer('id_produk'); |
| 15 | $table->integer('jumlah'); |
| 16 | $table->bigInteger('harga_transaksi'); |
| 17 | $table->date('tanggal_akhir_garansi')->nullable(); |
| 19 | $table->primary(['id_penjualan', 'id_produk']); |
| 20 | $table->index('id_produk'); |
| 21 | $table->foreign('id_penjualan')->references('id_penjualan')->on('penjualan')->onDelete('no action')->onUpdate('no action'); |
Constraint dan kontrol SQL
CHECK (jumlah > 0),CHECK (harga_transaksi >= 0)
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 da1f307bde7a9aa4fca0a93eced3c37eb7793eec9cd2c18a58d5bd0d0e64bee4
database/migrations/tenant/2026_09_21_152535_create_pengiriman_table.php31 baris · 2 fungsi bernama
Untuk apa
Membuat schema untuk pengiriman. Lingkup tenant yang dipilih pada koneksi migrasi.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Lihat signature dan isi fungsi. |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Lihat signature dan isi fungsi. |
Kolom, relasi, dan indeks pada migration
| Baris | Definisi asli |
|---|---|
| 12 | $table->increments('id_pengiriman'); |
| 13 | $table->integer('id_penjualan'); |
| 14 | $table->string('nama_penerima', 100); |
| 15 | $table->text('alamat_pengiriman'); |
| 16 | $table->string('kurir', 50)->nullable(); |
| 17 | $table->string('nomor_resi', 100)->nullable(); |
| 18 | $table->string('status_pengiriman', 20)->default('belum_dikirim'); |
| 19 | $table->timestampTz('tanggal_kirim')->nullable(); |
| 20 | $table->timestampTz('tanggal_terima')->nullable(); |
| 22 | $table->index('id_penjualan'); |
| 23 | $table->foreign('id_penjualan')->references('id_penjualan')->on('penjualan')->onDelete('no action')->onUpdate('no action'); |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 ea7af7c21dbb25a880d065affdee6c23db54ba3ef6cf32eb0b029c10a397fe3d
database/migrations/tenant/2026_09_21_152538_create_servis_table.php53 baris · 2 fungsi bernama
Untuk apa
Membuat schema untuk servis. Lingkup tenant yang dipilih pada koneksi migrasi.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Lihat signature dan isi fungsi. |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Lihat signature dan isi fungsi. |
Kolom, relasi, dan indeks pada migration
| Baris | Definisi asli |
|---|---|
| 13 | $table->increments('id_servis'); |
| 14 | $table->integer('id_pelanggan'); |
| 15 | $table->integer('id_cabang'); |
| 16 | $table->integer('diterima_oleh'); |
| 17 | $table->integer('id_teknisi')->nullable(); |
| 18 | $table->string('nomor_servis', 50); |
| 19 | $table->string('jenis_unit', 50); |
| 20 | $table->string('merek_unit', 50); |
| 21 | $table->string('tipe_unit', 100); |
| 22 | $table->text('keluhan'); |
| 23 | $table->text('kondisi_awal'); |
| 24 | $table->text('kelengkapan')->nullable(); |
| 25 | $table->string('status_servis', 30); |
| 26 | $table->bigInteger('biaya_jasa')->nullable(); |
| 27 | $table->smallInteger('garansi_hari')->nullable(); |
| 28 | $table->timestampTz('tanggal_masuk'); |
| 29 | $table->timestampTz('tanggal_selesai')->nullable(); |
| 30 | $table->timestampTz('tanggal_diambil')->nullable(); |
| 31 | $table->timestampTz('created_at'); |
| 32 | $table->timestampTz('updated_at'); |
| 34 | $table->unique('nomor_servis'); |
| 35 | $table->index('id_pelanggan'); |
| 36 | $table->index('id_cabang'); |
| 37 | $table->index('diterima_oleh'); |
| 38 | $table->index('id_teknisi'); |
| 39 | $table->foreign('id_pelanggan')->references('id_pelanggan')->on('pelanggan')->onDelete('no action')->onUpdate('no action'); |
Constraint dan kontrol SQL
CHECK (biaya_jasa IS NULL OR biaya_jasa >= 0),CHECK (garansi_hari IS NULL OR garansi_hari >= 0)
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 410ae59179ebd9b8b21536f67a5234f7a3fa5b81e4a1f2a05ad7e152c363360b
database/migrations/tenant/2026_09_21_152541_create_sparepart_servis_table.php35 baris · 2 fungsi bernama
Untuk apa
Membuat schema untuk sparepart_servis. Lingkup tenant yang dipilih pada koneksi migrasi.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Lihat signature dan isi fungsi. |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Lihat signature dan isi fungsi. |
Kolom, relasi, dan indeks pada migration
| Baris | Definisi asli |
|---|---|
| 13 | $table->integer('id_servis'); |
| 14 | $table->integer('id_produk'); |
| 15 | $table->integer('jumlah'); |
| 16 | $table->timestampTz('created_at'); |
| 17 | $table->bigInteger('harga_transaksi')->nullable(); |
| 19 | $table->primary(['id_servis', 'id_produk']); |
| 20 | $table->index('id_produk'); |
| 21 | $table->foreign('id_servis')->references('id_servis')->on('servis')->onDelete('no action')->onUpdate('no action'); |
Constraint dan kontrol SQL
CHECK (jumlah > 0),CHECK (harga_transaksi IS NULL OR harga_transaksi >= 0)
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 9c0abc41b9683ac59a58918fb6616e0ee5257a025cb607ce3c7e2de0b6a9498a
database/migrations/tenant/2026_09_21_152544_create_log_servis_table.php30 baris · 2 fungsi bernama
Untuk apa
Membuat schema untuk log_servis. Lingkup tenant yang dipilih pada koneksi migrasi.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Lihat signature dan isi fungsi. |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Lihat signature dan isi fungsi. |
Kolom, relasi, dan indeks pada migration
| Baris | Definisi asli |
|---|---|
| 12 | $table->increments('id_log_servis'); |
| 13 | $table->integer('id_servis'); |
| 14 | $table->integer('id_pengguna'); |
| 15 | $table->string('status_servis', 30); |
| 16 | $table->text('catatan')->nullable(); |
| 17 | $table->timestampTz('created_at'); |
| 18 | $table->string('bukti_foto', 255)->nullable(); |
| 20 | $table->index('id_servis'); |
| 21 | $table->index('id_pengguna'); |
| 22 | $table->foreign('id_servis')->references('id_servis')->on('servis')->onDelete('no action')->onUpdate('no action'); |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 6bfbcbfed90ca4f05a82102d474f4ee7ba4f60adbd4dfbd955705e87796dadae
database/migrations/tenant/2026_09_21_152546_create_klaim_garansi_table.php42 baris · 2 fungsi bernama
Untuk apa
Membuat schema untuk klaim_garansi. Lingkup tenant yang dipilih pada koneksi migrasi.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Lihat signature dan isi fungsi. |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Lihat signature dan isi fungsi. |
Kolom, relasi, dan indeks pada migration
| Baris | Definisi asli |
|---|---|
| 13 | $table->increments('id_klaim_garansi'); |
| 14 | $table->integer('id_servis')->nullable(); |
| 15 | $table->integer('id_pengguna'); |
| 16 | $table->timestampTz('tanggal_klaim'); |
| 17 | $table->text('keluhan_klaim'); |
| 18 | $table->text('hasil_pemeriksaan')->nullable(); |
| 19 | $table->string('status_klaim', 20); |
| 20 | $table->timestampTz('created_at'); |
| 21 | $table->integer('id_penjualan')->nullable(); |
| 22 | $table->integer('id_produk')->nullable(); |
| 24 | $table->index('id_servis'); |
| 25 | $table->index('id_pengguna'); |
| 26 | $table->index(['id_penjualan', 'id_produk']); |
| 27 | $table->index('id_produk'); |
| 28 | $table->foreign('id_servis')->references('id_servis')->on('servis')->onDelete('no action')->onUpdate('no action'); |
| 29 | $table->foreign(['id_penjualan', 'id_produk'])->references(['id_penjualan', 'id_produk'])->on('detail_penjualan')->onDelete('no action')->onUpdate('no action'); |
Constraint dan kontrol SQL
CHECK ((id_servis IS NOT NULL AND id_penjualan IS NULL AND id_produk IS NULL) OR (id_servis IS NULL AND id_penjualan IS NOT NULL AND id_produk IS NOT NULL))
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 62b284dc18734f31ed2dc2a76d00569f98f81c2ed2e2ebb185ed6f07ed69ebed
database/migrations/tenant/2026_09_21_152549_create_audit_log_table.php34 baris · 2 fungsi bernama
Untuk apa
Membuat schema untuk audit_log. Lingkup tenant yang dipilih pada koneksi migrasi.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Lihat signature dan isi fungsi. |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Lihat signature dan isi fungsi. |
Kolom, relasi, dan indeks pada migration
| Baris | Definisi asli |
|---|---|
| 12 | $table->increments('id_audit_log'); |
| 13 | $table->integer('id_pengguna')->nullable(); |
| 14 | $table->string('nama_tabel', 50); |
| 15 | $table->integer('id_data'); |
| 16 | $table->string('aksi', 30); |
| 17 | $table->text('data_lama')->nullable(); |
| 18 | $table->text('data_baru')->nullable(); |
| 19 | $table->string('ip_address', 45)->nullable(); |
| 20 | $table->text('user_agent')->nullable(); |
| 21 | $table->timestampTz('created_at'); |
| 23 | $table->index('id_pengguna'); |
| 24 | $table->index('nama_tabel'); |
| 25 | $table->index('created_at'); |
| 26 | $table->index(['nama_tabel', 'id_data']); |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 12d44f6c474ed4570c12c1dc4d0bd264b291e18792534f89faa34232a86324f2
database/migrations/tenant/2026_09_22_203000_allow_guest_online_sales.php28 baris · 2 fungsi bernama
Untuk apa
Mengizinkan schema untuk penjualan. Lingkup tenant yang dipilih pada koneksi migrasi.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Lihat signature dan isi fungsi. |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Lihat signature dan isi fungsi. |
Constraint dan kontrol SQL
CHECK (kanal_penjualan = 'ONLINE' OR id_pengguna IS NOT NULL)
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 063a35575245adfeeebcc68f5b9f20db961d442220ab643be3c0fd968f03e058
database/migrations/tenant/2026_09_28_150152_create_nota_instansi_table.php57 baris · 2 fungsi bernama
Untuk apa
Membuat schema untuk nota_instansi, histori_nota_instansi. Lingkup tenant yang dipilih pada koneksi migrasi.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Lihat signature dan isi fungsi. |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Lihat signature dan isi fungsi. |
Kolom, relasi, dan indeks pada migration
| Baris | Definisi asli |
|---|---|
| 13 | $table->increments('id_nota_instansi'); |
| 14 | $table->unsignedInteger('id_penjualan')->unique(); |
| 15 | $table->foreign('id_penjualan')->references('id_penjualan')->on('penjualan')->restrictOnDelete(); |
| 16 | $table->integer('id_cabang'); |
| 17 | $table->integer('id_pengguna'); |
| 18 | $table->integer('diubah_oleh'); |
| 19 | $table->integer('diajukan_oleh')->nullable(); |
| 20 | $table->integer('approved_by')->nullable(); |
| 21 | $table->string('nomor_nota_instansi', 50)->unique(); |
| 22 | $table->string('nama_instansi', 150); |
| 23 | $table->text('alamat_instansi'); |
| 24 | $table->string('nama_kontak', 100); |
| 25 | $table->string('nomor_po', 100)->nullable(); |
| 26 | $table->text('catatan')->nullable(); |
| 27 | $table->string('status_nota', 20)->default('draft'); |
| 28 | $table->bigInteger('total'); |
| 29 | $table->integer('versi')->default(1); |
| 30 | $table->string('approval_token_hash', 64)->nullable(); |
| 31 | $table->timestampTz('approval_expires_at')->nullable(); |
| 32 | $table->timestampTz('approved_at')->nullable(); |
| 33 | $table->timestampsTz(); |
| 34 | $table->index(['id_cabang', 'status_nota', 'created_at']); |
| 38 | $table->bigIncrements('id_histori'); |
| 39 | $table->unsignedInteger('id_nota_instansi'); |
| 40 | $table->foreign('id_nota_instansi')->references('id_nota_instansi')->on('nota_instansi')->restrictOnDelete(); |
| 41 | $table->integer('id_pengguna'); |
| 42 | $table->string('aksi', 40); |
| 43 | $table->string('status_nota', 20); |
| 44 | $table->integer('versi'); |
| 45 | $table->text('catatan')->nullable(); |
| 46 | $table->jsonb('snapshot'); |
| 47 | $table->timestampTz('created_at'); |
| 48 | $table->unique(['id_nota_instansi', 'versi']); |
Constraint dan kontrol SQL
CHECK (status_nota IN ('draft', 'diajukan', 'disetujui', 'ditolak', 'dibatalkan')), ADD CONSTRAINT nota_instansi_total_check CHECK (total >= 0), ADD CONSTRAINT nota_instansi_version_cheCHECK (versi > 0), ADD CONSTRAINT nota_instansi_sod_check CHECK (approved_by IS NULL OR (approved_by <> id_pengguna AND approved_by <> diubah_oleh AND diajukan_oleh IS NOT NULL AND apprCHECK (status_nota NOT IN ('disetujui', 'ditolak') OR (approved_by IS NOT NULL AND approved_at IS NOT NULL)), ADD CONSTRAINT nota_instansi_pending_check CHECK (status_nota <> 'diajukan'
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 62e78534818b4b7041f853f31079faa339c449a12550fa917f336d8ba30158f9
database/migrations/tenant/2026_09_28_150154_add_damaged_receipt_to_detail_pembelian_table.php26 baris · 2 fungsi bernama
Untuk apa
Menambah schema untuk detail_pembelian. Lingkup tenant yang dipilih pada koneksi migrasi.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Lihat signature dan isi fungsi. |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Lihat signature dan isi fungsi. |
Kolom, relasi, dan indeks pada migration
| Baris | Definisi asli |
|---|---|
| 13 | $table->integer('jumlah_rusak')->default(0); |
| 14 | $table->text('catatan_kerusakan')->nullable(); |
| 23 | $table->dropColumn(['jumlah_rusak', 'catatan_kerusakan']); |
Constraint dan kontrol SQL
CHECK (jumlah_rusak >= 0 AND jumlah_rusak <= jumlah), ADD CONSTRAINT detail_pembelian_damage_note_check CHECK (jumlah_rusak = 0 OR (catatan_kerusakan IS NOT NULL AND length(trim(catatan
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 388a30e3037d7de100d477be6a996f0eb7c61dd8e160cefa1fbb566bbf36a0df
database/migrations/tenant/2026_09_28_200100_create_return_tables.php75 baris · 2 fungsi bernama
Untuk apa
Membuat tabel header dan detail retur pembelian serta penjualan dengan batas jumlah dan referensi. Lingkup tenant yang dipilih pada koneksi migrasi.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Lihat signature dan isi fungsi. |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Lihat signature dan isi fungsi. |
Kolom, relasi, dan indeks pada migration
| Baris | Definisi asli |
|---|---|
| 15 | $table->increments('id_retur_penjualan'); |
| 16 | $table->unsignedInteger('id_penjualan'); |
| 17 | $table->integer('id_cabang'); |
| 18 | $table->integer('id_pengguna'); |
| 19 | $table->string('nomor_retur', 50)->unique(); |
| 20 | $table->text('alasan_retur'); |
| 21 | $table->string('solusi_retur', 20); |
| 22 | $table->bigInteger('total_refund')->default(0); |
| 23 | $table->timestampTz('tanggal_retur')->useCurrent(); |
| 24 | $table->timestampTz('created_at')->useCurrent(); |
| 25 | $table->timestampTz('updated_at')->useCurrent(); |
| 26 | $table->index(['id_cabang', 'tanggal_retur']); |
| 27 | $table->foreign('id_penjualan')->references('id_penjualan')->on('penjualan')->onDelete('no action'); |
| 30 | $table->unsignedInteger('id_retur_penjualan'); |
| 31 | $table->integer('id_produk'); |
| 32 | $table->integer('jumlah'); |
| 33 | $table->string('kondisi_barang', 10); |
| 34 | $table->bigInteger('harga_transaksi'); |
| 35 | $table->primary(['id_retur_penjualan', 'id_produk']); |
| 36 | $table->index('id_produk'); |
| 37 | $table->foreign('id_retur_penjualan')->references('id_retur_penjualan')->on('retur_penjualan')->onDelete('no action'); |
| 43 | $table->increments('id_retur_pembelian'); |
| 44 | $table->unsignedInteger('id_pembelian'); |
| 45 | $table->integer('id_cabang'); |
| 46 | $table->integer('id_pengguna'); |
| 47 | $table->string('nomor_retur', 50)->unique(); |
| 48 | $table->text('alasan_retur'); |
| 49 | $table->timestampTz('tanggal_retur')->useCurrent(); |
| 50 | $table->timestampTz('created_at')->useCurrent(); |
| 51 | $table->timestampTz('updated_at')->useCurrent(); |
| 52 | $table->index(['id_cabang', 'tanggal_retur']); |
| 53 | $table->foreign('id_pembelian')->references('id_pembelian')->on('pembelian')->onDelete('no action'); |
| 56 | $table->unsignedInteger('id_retur_pembelian'); |
| 57 | $table->integer('id_produk'); |
| 58 | $table->integer('jumlah'); |
| 59 | $table->bigInteger('harga_beli'); |
| 60 | $table->primary(['id_retur_pembelian', 'id_produk']); |
| 61 | $table->index('id_produk'); |
| 62 | $table->foreign('id_retur_pembelian')->references('id_retur_pembelian')->on('retur_pembelian')->onDelete('no action'); |
Constraint dan kontrol SQL
CHECK (solusi_retur IN ('refund', 'tukar_barang')), ADD CONSTRAINT retur_penjualan_refund_check CHECK (total_refund >= 0), ADD CONSTRAINT retur_penjualan_alasan_check CHECK (length(trimCHECK (jumlah > 0), ADD CONSTRAINT detail_retur_penjualan_condition_check CHECK (kondisi_barang IN ('bagus', 'rusak')), ADD CONSTRAINT detail_retur_penjualan_price_check CHECK (harga_trCHECK (length(trim(alasan_retur)) > 0)');CHECK (jumlah > 0), ADD CONSTRAINT detail_retur_pembelian_price_check CHECK (harga_beli >= 0)');
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 1535a8429e62b1072f9d6368de3ea3c73de22b428afaeeec0065c67b4e6dd0c4
database/migrations/tenant/2026_09_29_031819_protect_audit_log_from_mutation.php30 baris · 2 fungsi bernama
Untuk apa
Memasang proteksi database terhadap perubahan dan penghapusan audit atau histori yang ditentukan migration. Lingkup tenant yang dipilih pada koneksi migrasi.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Lihat signature dan isi fungsi. |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Lihat signature dan isi fungsi. |
Constraint dan kontrol SQL
CREATE FUNCTION rajawali_reject_audit_mutation() RETURNS triggerCREATE TRIGGER audit_log_append_only
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 fcf60714cc4ba1e8199c6399baa3585b24995295aee9c7eaaa6507296eff7b76
database/migrations/tenant/2026_09_30_220000_create_certified_inventory_tp_functions.php261 baris · 2 fungsi bernama
Untuk apa
Menyediakan lima fungsi SQL persediaan dengan validasi jumlah, row lock, batas kapasitas dan snapshot hasil. Lingkup tenant yang dipilih pada koneksi migrasi.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Lihat signature dan isi fungsi. |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Lihat signature dan isi fungsi. |
Constraint dan kontrol SQL
CREATE OR REPLACE FUNCTION {$functionSchema}.rajawali_stock_receive(CREATE OR REPLACE FUNCTION {$functionSchema}.rajawali_stock_issue(CREATE OR REPLACE FUNCTION {$functionSchema}.rajawali_stock_sale_return(CREATE OR REPLACE FUNCTION {$functionSchema}.rajawali_stock_purchase_return(CREATE OR REPLACE FUNCTION {$functionSchema}.rajawali_stock_ensure(
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 d8ca98bcaf6f5803a3fe48bbf248e2de8cc38e12d2c3571b85f3cf28e2c9f1a6
database/migrations/tenant/2026_10_02_220000_add_tracking_code_hash_to_penjualan_table.php23 baris · 2 fungsi bernama
Untuk apa
Menambah schema untuk penjualan. Lingkup tenant yang dipilih pada koneksi migrasi.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Lihat signature dan isi fungsi. |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Lihat signature dan isi fungsi. |
Kolom, relasi, dan indeks pada migration
| Baris | Definisi asli |
|---|---|
| 12 | $table->string('tracking_code_hash', 64)->nullable()->unique(); |
| 19 | $table->dropUnique(['tracking_code_hash']); |
| 20 | $table->dropColumn('tracking_code_hash'); |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 8343bc5874852e1c89bc131a2c3c9d41036fd2993f4351df60a1f803de4b1c24
database/migrations/tenant/2026_10_06_221000_add_tracking_code_ciphertext_to_penjualan_table.php22 baris · 2 fungsi bernama
Untuk apa
Menambah schema untuk penjualan. Lingkup tenant yang dipilih pada koneksi migrasi.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Lihat signature dan isi fungsi. |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Lihat signature dan isi fungsi. |
Kolom, relasi, dan indeks pada migration
| Baris | Definisi asli |
|---|---|
| 12 | $table->text('tracking_code_ciphertext')->nullable(); |
| 19 | $table->dropColumn('tracking_code_ciphertext'); |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 bf7cb20088c7e6ad4007025475bf33c6b0caa651bb821cf8354c50f3b5daad71
database/migrations/tenant/2026_10_14_073110_add_payment_snapshot_to_penjualan.php22 baris · 2 fungsi bernama
Untuk apa
Menambah schema untuk penjualan. Lingkup tenant yang dipilih pada koneksi migrasi.
Jika diminta mengubah
up menerapkan perubahan dan down membalik schema menurut kode. Buat migration lanjutan untuk perubahan schema yang sudah dilepas.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function up(): void | Menerapkan perubahan schema dan fungsi atau constraint yang ditulis pada migration. | Lihat signature dan isi fungsi. |
function down(): void | Membalik objek schema yang ditentukan migration. Dapat menghapus data dan tidak dipakai untuk latihan pada database bisnis. | Lihat signature dan isi fungsi. |
Kolom, relasi, dan indeks pada migration
| Baris | Definisi asli |
|---|---|
| 12 | $table->jsonb('payment_snapshot')->nullable(); |
| 19 | $table->dropColumn('payment_snapshot'); |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 e772040edc6b892df465cded18b383fe0e3c1b6b60cd8b4dacafe13d210421da
database/postgresql-2pc.conf9 baris · 0 fungsi bernama
Untuk apa
Parameter PostgreSQL untuk prepared transaction.
Jika diminta mengubah
Nilai efektif harus diperiksa dengan SHOW max_prepared_transactions.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 f753174f22ef3dccedd1b1deba0282ac4c9b63597022e70c640422a54d074f3e
database/seeders/DatabaseSeeder.php10 baris · 1 fungsi bernama
Untuk apa
Pengisi data awal atau pemanggil seeder lain sesuai run.
Jika diminta mengubah
Baca pembatasan dan isi sebelum menjalankan. Keberadaan seeder tidak menunjukkan data VPS sudah diisi olehnya.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function run(): void | Menjalankan pengisian atau pemanggilan seeder sesuai isi fungsi. | Lihat signature dan isi fungsi. |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 60f79061744b89e5386547b58771a620cc40b7afe4e79f3f747a00a0c18f63f9
Entry dan konfigurasi 27
artisan18 baris · 0 fungsi bernama
Untuk apa
Entry CLI untuk perintah Artisan.
Jika diminta mengubah
Kelas command berada di app/Console/Commands dan closure ada pada routes/console.php.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 f91a517c0c5d3a904c3f390933964a5e08ec1fc68146882730daac4aca4ffcec
bootstrap/app.php57 baris · 0 fungsi bernama
Untuk apa
Perakitan routing, middleware, broadcasting, proxy, host, dan exception handler Laravel.
Jika diminta mengubah
Middleware alias tidak aktif hanya karena didaftarkan. Alias harus dipakai route atau group.
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 6f1bddfe1e6ad92754cf8e7604651d6514282f86f607c653bc07431a0095efc0
bootstrap/providers.php7 baris · 0 fungsi bernama
Untuk apa
Daftar provider aplikasi yang diaktifkan.
Jika diminta mengubah
Provider baru harus diregistrasikan sesuai struktur Laravel proyek ini.
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 f720e185207a343d4c19fc99dbb317a4187efbcd7d38a303a695bbdd77ffb943
composer.json86 baris · 0 fungsi bernama
Untuk apa
Deklarasi paket PHP, autoload, dan script proyek.
Jika diminta mengubah
Folder App dipetakan ke app. composer.lock mengunci versi hasil resolusi, bukan file untuk diedit manual.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 ab259a5cecc8ce2be6b43fa2607e7820a8091637d3f1bdcb6145d295190b5147
config/app.php126 baris · 0 fungsi bernama
Untuk apa
Nama aplikasi, environment, debug, URL, timezone dan APP_KEY.
Jika diminta mengubah
Nilai env dibaca melalui config. Nilai default di file belum membuktikan nilai efektif produksi. Cache konfigurasi perlu dibangun ulang melalui proses deployment yang dipakai.
Nama environment yang dibaca
APP_NAME, APP_ENV, APP_DEBUG, APP_URL, APP_LOCALE, APP_FALLBACK_LOCALE, APP_FAKER_LOCALE, APP_KEY, APP_PREVIOUS_KEYS, APP_MAINTENANCE_DRIVER, APP_MAINTENANCE_STORE
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 b4b25e15efa76846a7f2e19fd1044fec4945e4e928c4098126a2b0042b034383
config/auth.php18 baris · 0 fungsi bernama
Untuk apa
Guard web, provider akun Pengguna, serta pengaturan autentikasi.
Jika diminta mengubah
Nilai env dibaca melalui config. Nilai default di file belum membuktikan nilai efektif produksi. Cache konfigurasi perlu dibangun ulang melalui proses deployment yang dipakai.
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 7c241e49770e5ba7453067eb6cd04f1cfb1af00ccd5dca22751e3b422303a0c7
config/broadcasting.php29 baris · 0 fungsi bernama
Untuk apa
Pilihan koneksi broadcast dan parameter pengiriman event Reverb.
Jika diminta mengubah
Nilai env dibaca melalui config. Nilai default di file belum membuktikan nilai efektif produksi. Cache konfigurasi perlu dibangun ulang melalui proses deployment yang dipakai.
Nama environment yang dibaca
BROADCAST_CONNECTION, REVERB_APP_KEY, REVERB_APP_SECRET, REVERB_APP_ID, REVERB_PUBLISH_HOST, REVERB_HOST, REVERB_PUBLISH_PORT, REVERB_PORT, REVERB_PUBLISH_SCHEME, REVERB_SCHEME
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 619b7e97e3a8864e8300d6ec6a89a63f259e217481aea0b74a21521600fe1bc8
config/cache.php136 baris · 0 fungsi bernama
Untuk apa
Store cache dan limiter. Store bersama diperlukan jika pembatasan harus konsisten lintas instance.
Jika diminta mengubah
Nilai env dibaca melalui config. Nilai default di file belum membuktikan nilai efektif produksi. Cache konfigurasi perlu dibangun ulang melalui proses deployment yang dipakai.
Nama environment yang dibaca
CACHE_STORE, DB_CACHE_CONNECTION, DB_CACHE_TABLE, DB_CACHE_LOCK_CONNECTION, DB_CACHE_LOCK_TABLE, CACHE_STORAGE_DISK, CACHE_STORAGE_PATH, MEMCACHED_PERSISTENT_ID, MEMCACHED_USERNAME, MEMCACHED_PASSWORD, MEMCACHED_HOST, MEMCACHED_PORT, REDIS_CACHE_CONNECTION, REDIS_CACHE_LOCK_CONNECTION, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION, DYNAMODB_CACHE_TABLE, DYNAMODB_ENDPOINT, CACHE_PREFIX, APP_NAME
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 ee4ad2bba1edfcff52e9599f37371f2370d0b167cc226ce72d46cdf6edf2dc55
config/cors.php12 baris · 0 fungsi bernama
Untuk apa
Origin, path, metode, header dan dukungan cookie untuk request lintas origin.
Jika diminta mengubah
Nilai env dibaca melalui config. Nilai default di file belum membuktikan nilai efektif produksi. Cache konfigurasi perlu dibangun ulang melalui proses deployment yang dipakai.
Nama environment yang dibaca
APP_URL
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 add5fc1872290b0d704c486e698adf7c2262a13d2873443951ebdc9fe665673c
config/database.php225 baris · 0 fungsi bernama
Untuk apa
Koneksi master, tenant awal, dan koneksi database bawaan framework. Runtime bisnis memakai PostgreSQL.
Jika diminta mengubah
Nilai env dibaca melalui config. Nilai default di file belum membuktikan nilai efektif produksi. Cache konfigurasi perlu dibangun ulang melalui proses deployment yang dipakai.
Nama environment yang dibaca
DB_CONNECTION, DB_URL, DB_DATABASE, DB_FOREIGN_KEYS, DB_HOST, DB_PORT, DB_USERNAME, DB_PASSWORD, DB_SOCKET, DB_CHARSET, DB_COLLATION, MYSQL_ATTR_SSL_CA, DB_SSLMODE, DB_ENCRYPT, DB_TRUST_SERVER_CERTIFICATE, MASTER_DB_HOST, MASTER_DB_PORT, MASTER_DB_DATABASE, MASTER_DB_USERNAME, MASTER_DB_PASSWORD, SAMANHUDI_DB_HOST, SAMANHUDI_DB_PORT, SAMANHUDI_DB_DATABASE, SAMANHUDI_DB_USERNAME, SAMANHUDI_DB_PASSWORD, PEGANDEN_DB_HOST, PEGANDEN_DB_PORT, PEGANDEN_DB_DATABASE, PEGANDEN_DB_USERNAME, PEGANDEN_DB_PASSWORD, REDIS_CLIENT, REDIS_CLUSTER, REDIS_PREFIX, APP_NAME, REDIS_PERSISTENT, REDIS_URL, REDIS_HOST, REDIS_USERNAME, REDIS_PASSWORD, REDIS_PORT, REDIS_DB, REDIS_MAX_RETRIES, REDIS_BACKOFF_ALGORITHM, REDIS_BACKOFF_BASE, REDIS_BACKOFF_CAP, REDIS_CACHE_DB
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 f99465941dc71e1adca839323f09f7a00d327980964e0eeb2d50217e10699e43
config/filesystems.php105 baris · 0 fungsi bernama
Untuk apa
Root dan visibility disk file privat, bukti servis, bukti pembayaran dan QRIS.
Jika diminta mengubah
Nilai env dibaca melalui config. Nilai default di file belum membuktikan nilai efektif produksi. Cache konfigurasi perlu dibangun ulang melalui proses deployment yang dipakai.
Nama environment yang dibaca
FILESYSTEM_DISK, APP_URL, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION, AWS_BUCKET, AWS_URL, AWS_ENDPOINT, AWS_USE_PATH_STYLE_ENDPOINT
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 1b3954048e65f0b5f115a9d3bbc5b8fef0ae0a9ec12c81a8332283d4279c5a6f
config/hashing.php17 baris · 0 fungsi bernama
Untuk apa
Argon2id, biaya memory atau time, dan rehash ketika login.
Jika diminta mengubah
Nilai env dibaca melalui config. Nilai default di file belum membuktikan nilai efektif produksi. Cache konfigurasi perlu dibangun ulang melalui proses deployment yang dipakai.
Nama environment yang dibaca
HASH_DRIVER, ARGON_MEMORY, ARGON_THREADS, ARGON_TIME
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 e8b1d58a0d526939d520d3ed2933c2f36a3a7688869cbc1cf41269c641408ffd
config/logging.php141 baris · 0 fungsi bernama
Untuk apa
Channel log aplikasi dan tujuan arsip log eksternal bila dikonfigurasi.
Jika diminta mengubah
Nilai env dibaca melalui config. Nilai default di file belum membuktikan nilai efektif produksi. Cache konfigurasi perlu dibangun ulang melalui proses deployment yang dipakai.
Nama environment yang dibaca
LOG_CHANNEL, LOG_DEPRECATIONS_CHANNEL, LOG_DEPRECATIONS_TRACE, LOG_STACK, LOG_LEVEL, LOG_DAILY_DAYS, LOG_SLACK_WEBHOOK_URL, LOG_SLACK_USERNAME, APP_NAME, LOG_SLACK_EMOJI, LOG_PAPERTRAIL_HANDLER, PAPERTRAIL_URL, PAPERTRAIL_PORT, LOG_STDERR_FORMATTER, LOG_SYSLOG_FACILITY
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 be473dde9a0a58da1c08d5ec9e4ce51ca37f6b189db13a266587a9cc6f46442c
config/mail.php119 baris · 0 fungsi bernama
Untuk apa
Mailer, koneksi SMTP, timeout, enkripsi transport dan alamat pengirim.
Jika diminta mengubah
Nilai env dibaca melalui config. Nilai default di file belum membuktikan nilai efektif produksi. Cache konfigurasi perlu dibangun ulang melalui proses deployment yang dipakai.
Nama environment yang dibaca
MAIL_MAILER, MAIL_SCHEME, MAIL_URL, MAIL_HOST, MAIL_PORT, MAIL_USERNAME, MAIL_PASSWORD, MAIL_TIMEOUT, MAIL_REQUIRE_TLS, MAIL_EHLO_DOMAIN, APP_URL, POSTMARK_MESSAGE_STREAM_ID, MAIL_SENDMAIL_PATH, MAIL_LOG_CHANNEL, MAIL_FROM_ADDRESS, MAIL_FROM_NAME, APP_NAME
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 111961ee075bcc28d5cceb7914320160fe7e0e108f9b79bc9a37a2012c72c114
config/operations.php20 baris · 0 fungsi bernama
Untuk apa
Host dan proxy tepercaya, identitas instance, threshold stok, backup, alert serta fallback pembayaran.
Jika diminta mengubah
Nilai env dibaca melalui config. Nilai default di file belum membuktikan nilai efektif produksi. Cache konfigurasi perlu dibangun ulang melalui proses deployment yang dipakai.
Nama environment yang dibaca
TRUSTED_HOSTS, TRUSTED_PROXIES, INSTANCE_TENANT, INSTANCE_TENANT_COOKIE, PREPARED_TX_WARNING_THRESHOLD, COORDINATOR_STALE_MINUTES, BACKUP_DIR, BACKUP_RETENTION_DAYS, SECURITY_ALERT_WEBHOOK, SECURITY_ALERT_TOKEN, REALTIME_HISTORY_LIMIT, LOW_STOCK_THRESHOLD, ONLINE_BANK_NAME, ONLINE_BANK_ACCOUNT, ONLINE_BANK_BENEFICIARY
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 505952a9f212237d1819054bec63a1cd29cdc560e40b52279c9c8f5d617d4c39
config/queue.php129 baris · 0 fungsi bernama
Untuk apa
Driver queue dan koneksi worker. Jangan mengklaim notifikasi asynchronous hanya karena queue.php ada.
Jika diminta mengubah
Nilai env dibaca melalui config. Nilai default di file belum membuktikan nilai efektif produksi. Cache konfigurasi perlu dibangun ulang melalui proses deployment yang dipakai.
Nama environment yang dibaca
QUEUE_CONNECTION, DB_QUEUE_CONNECTION, DB_QUEUE_TABLE, DB_QUEUE, DB_QUEUE_RETRY_AFTER, BEANSTALKD_QUEUE_HOST, BEANSTALKD_QUEUE, BEANSTALKD_QUEUE_RETRY_AFTER, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, SQS_PREFIX, SQS_QUEUE, SQS_SUFFIX, AWS_DEFAULT_REGION, REDIS_QUEUE_CONNECTION, REDIS_QUEUE, REDIS_QUEUE_RETRY_AFTER, DB_CONNECTION, QUEUE_FAILED_DRIVER
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 6101774da7c8b79af46d0028f2b8b31a484c3f7eda10b76e5b27b6093ad364a4
config/reverb.php53 baris · 0 fungsi bernama
Untuk apa
Server WebSocket, app ID atau key atau secret, endpoint dan allowed_origins.
Jika diminta mengubah
Nilai env dibaca melalui config. Nilai default di file belum membuktikan nilai efektif produksi. Cache konfigurasi perlu dibangun ulang melalui proses deployment yang dipakai.
Nama environment yang dibaca
REVERB_ALLOWED_ORIGINS, APP_URL, REVERB_SERVER, REVERB_SERVER_HOST, REVERB_SERVER_PORT, REVERB_HOST, REVERB_MAX_REQUEST_SIZE, REVERB_SCALING_ENABLED, REVERB_SCALING_CHANNEL, REDIS_URL, REDIS_HOST, REDIS_PORT, REDIS_USERNAME, REDIS_PASSWORD, REDIS_DB, REVERB_PULSE_INGEST_INTERVAL, REVERB_TELESCOPE_INGEST_INTERVAL, REVERB_APP_KEY, REVERB_APP_SECRET, REVERB_APP_ID, REVERB_PORT, REVERB_SCHEME, REVERB_APP_PING_INTERVAL, REVERB_APP_ACTIVITY_TIMEOUT, REVERB_APP_MAX_MESSAGE_SIZE
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 ce73decce53b999e55b301439c42de05b15d89a94017b8ef88fbffb6b7405079
config/sanctum.php18 baris · 0 fungsi bernama
Untuk apa
Daftar domain stateful dan middleware session atau CSRF. Bearer token dinonaktifkan provider aplikasi.
Jika diminta mengubah
Nilai env dibaca melalui config. Nilai default di file belum membuktikan nilai efektif produksi. Cache konfigurasi perlu dibangun ulang melalui proses deployment yang dipakai.
Nama environment yang dibaca
SANCTUM_STATEFUL_DOMAINS
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 8362d7de9fbf9cdc4a7258325c63d73f46a7f16b8e64374908bb71c67f5ad776
config/security.php28 baris · 0 fungsi bernama
Untuk apa
Batas payload, upload, login, CAPTCHA, tautan, mapping tenant dan guardian E1.
Jika diminta mengubah
Nilai env dibaca melalui config. Nilai default di file belum membuktikan nilai efektif produksi. Cache konfigurasi perlu dibangun ulang melalui proses deployment yang dipakai.
Nama environment yang dibaca
SERVICE_PHOTO_MAX_KB, STAFF_LOGIN_CHALLENGE_ENABLED, TURNSTILE_SITE_KEY, TURNSTILE_SECRET_KEY, LOGIN_MAX_ATTEMPTS, LOGIN_LOCK_MINUTES, LOGIN_RATE_LIMIT, LOGIN_IP_RATE_LIMIT, LOGIN_RATE_DECAY_MINUTES, APPROVAL_LINK_MINUTES, ONLINE_PAYMENT_PROOF_MAX_KB, ONLINE_TRACKING_LINK_MINUTES, CW_E1_INVENTORY_GUARDIAN_ROLE
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 8838d243b07b6bfdfb51d446f5ce107683ceafbab25ba6234bec0eb49868302c
config/services.php38 baris · 0 fungsi bernama
Untuk apa
Pengaturan integrasi pihak ketiga yang disediakan framework.
Jika diminta mengubah
Nilai env dibaca melalui config. Nilai default di file belum membuktikan nilai efektif produksi. Cache konfigurasi perlu dibangun ulang melalui proses deployment yang dipakai.
Nama environment yang dibaca
POSTMARK_API_KEY, RESEND_API_KEY, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION, SLACK_BOT_USER_OAUTH_TOKEN, SLACK_BOT_USER_DEFAULT_CHANNEL
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 b7ee786ea1adbc92db9f229f479431c94503527c47051da3862eb0e4d7db70aa
config/session.php233 baris · 0 fungsi bernama
Untuk apa
Driver dan koneksi sessions master, lifetime, enkripsi payload, cookie Secure, HttpOnly dan SameSite.
Jika diminta mengubah
Nilai env dibaca melalui config. Nilai default di file belum membuktikan nilai efektif produksi. Cache konfigurasi perlu dibangun ulang melalui proses deployment yang dipakai.
Nama environment yang dibaca
SESSION_DRIVER, SESSION_LIFETIME, SESSION_EXPIRE_ON_CLOSE, SESSION_ENCRYPT, SESSION_CONNECTION, SESSION_TABLE, SESSION_STORE, APP_NAME, SESSION_PATH, SESSION_DOMAIN, SESSION_SECURE_COOKIE, APP_ENV, SESSION_HTTP_ONLY, SESSION_SAME_SITE, SESSION_PARTITIONED_COOKIE
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 7311bef859a436efbc92aa6f90abebd8cf8f7227523be500a56bcea734d51bbd
package.json36 baris · 0 fungsi bernama
Untuk apa
Deklarasi paket JS dan perintah build, dev, serta test e2e.
Jika diminta mengubah
Paket yang tercantum belum tentu dipakai entry aktif. react-router-dom tercantum tetapi navigasi aktif memakai helper History API.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 b8a1ed5d86925f52a5953a2849609d0b64b456f18c0082b815c7db024107598b
routes/api.php236 baris · 0 fungsi bernama
Untuk apa
Daftar endpoint API dan kelompok middleware. Laravel menambahkan prefix /api.
Jika diminta mengubah
Tambah route pada group izin dan tenant yang sesuai. Jangan menulis /api dua kali pada path route.
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 8c82b4d35dc9276919148381e1d2aac0bd821c833c445bbe69e1eb2b9685129f
routes/channels.php18 baris · 0 fungsi bernama
Untuk apa
Callback otorisasi channel privat tenant.ID.
Jika diminta mengubah
Tambahkan jenis channel hanya dengan pemeriksaan pengguna aktif, session dan cabang yang sesuai.
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 f10dc0abef93ece152cf1e3bf418e5269f692f8928e707b912f3ebfa763bf55d
routes/console.php50 baris · 0 fungsi bernama
Untuk apa
Perintah closure dan jadwal pemulihan 2PC setiap menit.
Jika diminta mengubah
Tambah jadwal melalui Schedule dan pertimbangkan withoutOverlapping. Perintah login-ip mengelola blokir manual.
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 aa23e9919b1504061852578b2d85bdf7e560e44f8ba3f69cf64fd97ecd538097
routes/web.php28 baris · 0 fungsi bernama
Untuk apa
Halaman publik, login, aktivasi, health, dan persetujuan harga khusus.
Jika diminta mengubah
Path tidak dikenal tidak memiliki catch-all SPA dan menghasilkan 404.
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 116a65cee94caa69cefdb17cb395920ad32a77853be10a7ce272d409f6b9c704
vite.config.js26 baris · 0 fungsi bernama
Untuk apa
Konfigurasi build React, TypeScript, Tailwind dan input aset Laravel.
Jika diminta mengubah
Entry aktif resources/js/app.tsx dan resources/css/app.css. Perubahan TSX atau CSS perlu build.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 b5dd07c0b6ab16bd670e38b7181e093f0c834084df79ac6428a833e1403afc70
Deployment dan operasional 23
Dockerfile41 baris · 0 fungsi bernama
Untuk apa
Build image dependensi, aset frontend, runtime PHP dan Nginx.
Jika diminta mengubah
Berkas pendukung ini berasal dari salinan sebelumnya. Cocokkan dengan konfigurasi VPS sebelum perubahan deployment.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 dbced62a62f90a35be475ce84625a3e19c7aeacbc9df1705ab153df20025d586
INSTALL_ALL.py253 baris · 8 fungsi bernama
Untuk apa
Installer patch yang memeriksa hash, membangun image, memeriksa kandidat, mengganti layanan, dan memulihkan source jika gagal.
Jika diminta mengubah
Ini alat rilis, bukan bagian algoritma bisnis. Tidak dijalankan oleh pembaca panduan.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
def merge_verified_navigation(before, basis, revised, allowed_hashes): | Menggabungkan hanya hunk navigasi yang dikenali terhadap basis tepercaya, mempertahankan bagian lain dan menolak anchor yang telah berubah. | return result.encode('utf-8') |
def checked(*args, env=None, capture=False, input_text=None): | Helper proses atau pengujian checked. Input, operasi sistem dan hasil harus dibaca dari kode sebelum dijalankan. | return subprocess.run(args, check=True, env=env, text=True, input=input_text, |
def read_payload(root, archive): | Membaca manifest, memeriksa hash setiap payload dan kecocokan target sebelum ada perubahan source. | return payload, previous |
def compose(root, images, *args, capture=False): | Helper proses atau pengujian compose. Input, operasi sistem dan hasil harus dibaca dari kode sebelum dijalankan. | return checked('docker', 'compose', '--project-directory', str(root), |
def healthy(): | Helper proses atau pengujian healthy. Input, operasi sistem dan hasil harus dibaca dari kode sebelum dijalankan. | return time.sleep(5) |
def fetch(base, path, follow_redirects=True): | Mengirim pemeriksaan HTTP dengan pilihan mengikuti redirect atau memeriksa status redirect asli. | return response.status, response.read(300000).decode('utf-8', 'replace'), response.headers |
def deploy(root, archive, check_only=False): | Menjalankan validasi, build kandidat, pemeriksaan dan pergantian layanan, dengan jalur pemulihan bila gagal. | API /api/login/security-options, /api/online/cabang, /api/online/katalog |
def redirect_request(self, request, stream, code, message, headers, new_url): | Menolak pengalihan otomatis agar pemeriksaan dapat melihat status dan Location asli. | return None |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 8ca45f4b10f24b4fdd10bdb2c2b886e5321f4789228c2ecd483342cb7fe7a7a1
compose.production.yml109 baris · 0 fungsi bernama
Untuk apa
Susunan layanan produksi dan volume bersama.
Jika diminta mengubah
Layanan aplikasi, Reverb, scheduler, Nginx dan database memiliki peran terpisah. Nilai rahasia berasal dari environment.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 cb9eab39773014a12188f2f3f32d305c0a7672f3cc931b8d5e036f96474013a7
docker/nginx/rajawali.conf51 baris · 0 fungsi bernama
Untuk apa
Konfigurasi Nginx dari salinan pendukung sebelumnya.
Jika diminta mengubah
Jangan menganggap file ini identik dengan template dan konfigurasi efektif VPS.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 5af55cd315247d7a86ec2baa96b92da26673c74ce564eb15176afeb7894d51c7
docker/nginx/templates/rajawali.conf.template98 baris · 0 fungsi bernama
Untuk apa
Reverse proxy produksi di balik CloudPanel, routing instance, batas request, CSP dan WSS.
Jika diminta mengubah
Template membentuk konfigurasi aktif saat container dimulai. Periksa respons publik karena CSP aplikasi dapat disembunyikan dan diganti di proxy.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 38469b0dc5c100b647b689245bb04b9695fab8eb56db95fd7ffae0d00290d824
docker/php/entrypoint.sh10 baris · 0 fungsi bernama
Untuk apa
Persiapan direktori dan startup proses PHP.
Jika diminta mengubah
Tinjau perubahan permission dan cache sebelum mengubah entrypoint.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 810bd3ee5f5bdaaf75dc231df4618ed82797b6db026c035c1832d305ef4d7189
docker/php/healthcheck.sh3 baris · 0 fungsi bernama
Untuk apa
Probe hidup container PHP.
Jika diminta mengubah
Probe container berbeda dari readiness database bisnis.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 277d3d8555ab0bc3ddf6c726b4767519cde94bacf672d2cec351228b8e91d671
docker/php/php.ini14 baris · 0 fungsi bernama
Untuk apa
Batas runtime PHP termasuk upload dan error.
Jika diminta mengubah
Ukuran PHP harus sejalan dengan Request dan Nginx.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 f734f5f2e70db5653fe493a5ff879ffca5d9754909461b86d820b9f2f621ef8c
docker/postgres/init/01-rajawali-databases.sh28 baris · 0 fungsi bernama
Untuk apa
Inisialisasi database dan role awal PostgreSQL.
Jika diminta mengubah
Script inisialisasi volume baru tidak otomatis dijalankan ulang pada volume lama.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 9156b0a6c794750a67716a15fc76cccc026e522d161eadbd2ec0784333facc34
ops/backup/backup-postgres.sh7 baris · 0 fungsi bernama
Untuk apa
Wrapper operasional command backup.
Jika diminta mengubah
Mewarisi prasyarat maintenance dari PostgresBackup.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 a74dbd6c9a4831855efeb10005f02a0311c4dffbc061ba04a145325dd9582267
ops/backup/restore-drill.sh34 baris · 0 fungsi bernama
Untuk apa
Wrapper latihan pemulihan backup.
Jika diminta mengubah
Periksa target uji dan cleanup sebelum menjalankan.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 d8f2fb659fbc13d09000082d8bcbf8cb3d96ff8e6fc5fa9755253eb0513d7f2a
ops/backup/verify-postgres-backup.sh18 baris · 0 fungsi bernama
Untuk apa
Wrapper verifikasi arsip backup.
Jika diminta mengubah
Verifikasi checksum berbeda dari berhasil memulihkan dan menjalankan database.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 7c9a07a87988216c87d36f956017f201a1fb5d698a197f65bb160947626f86d5
ops/deploy/fault-drill.sh73 baris · 0 fungsi bernama
Untuk apa
Latihan gangguan dan pemulihan layanan.
Jika diminta mengubah
Berpotensi menghentikan layanan. Contoh ini bukan perintah latihan sidang pada produksi.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 999083863a256fabfb20603bce1ee3388c3696dff0170c9c5d5353f1c5e1e55a
ops/deploy/preflight.sh17 baris · 0 fungsi bernama
Untuk apa
Wrapper pemeriksaan sebelum rilis.
Jika diminta mengubah
Baca exit code, INFO dan WARN. Tidak menggantikan pengujian fungsi oleh pengguna.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 cd7a3796d2b99d14dd25e6e6e8142450fcc2869d900342f13631c2907acad009
ops/deploy/smoke.sh38 baris · 0 fungsi bernama
Untuk apa
Wrapper pemeriksaan jalur teknis setelah rilis.
Jika diminta mengubah
Jalankan hanya pada target yang benar dan simpan output sebagai bukti teknis.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 e3a84bf5c40ba31dbc2875dbf3ffbef343053ff7615661fb841a43ab041d04d3
ops/deploy/sync-datatables-lock.sh28 baris · 0 fungsi bernama
Untuk apa
Sinkronisasi dependency tabel dan lockfile sesuai workflow script.
Jika diminta mengubah
Perubahan versi paket memerlukan build dan pengujian hasil.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 f9ab1a49a4a7abd0f718718a036fd4ac7e9f21528945c462fbde468a01bfa624
ops/deploy/tls-wss-check.sh81 baris · 0 fungsi bernama
Untuk apa
Pemeriksaan HTTPS dan WebSocket secure.
Jika diminta mengubah
Kecocokan aplikasi lokal tidak membuktikan sertifikat dan proxy publik sudah benar.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 9417e7217db085637b4b6ec93c20e6e7543b3bf5b70a1e8ea6e3b9de4134c016
ops/deploy/verify-release-evidence.sh34 baris · 0 fungsi bernama
Untuk apa
Pemeriksaan bukti rilis dan artefak pendukung.
Jika diminta mengubah
Bukti yang hilang tidak boleh diisi dengan hasil yang tidak pernah dijalankan.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 d5d0acde83fbdcab66280e7f856505e413b86d8af5d9dc5c4afdf69ad75cb6a3
ops/provision/install-service.sh10 baris · 0 fungsi bernama
Untuk apa
Pemasangan unit systemd worker provisioning.
Jika diminta mengubah
Menyalin unit dan timer ke host adalah perubahan operasional, bukan pengujian read-only.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 71b882fcb5939f6b9bd2c56bd1772e95a844c19a209ee75a906d7e8a42b7b094
ops/provision/rajawali-branch-provision.service13 baris · 0 fungsi bernama
Untuk apa
Unit systemd yang menjalankan worker host.
Jika diminta mengubah
Gunakan identitas dan pembatasan host yang sesuai. Kode web tidak memperoleh akses Docker.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 31d6c5b29a2b5822f2a83db553bfc6fb03a74e2be1a7c9f939be4818a7ae02bc
ops/provision/rajawali-branch-provision.timer11 baris · 0 fungsi bernama
Untuk apa
Jadwal systemd untuk memicu worker provisioning.
Jika diminta mengubah
Timer aktif perlu dibuktikan pada host.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 258d21b58c142e07327e037fdb9b648f4bd0586a5efde3505e843e56bf381341
ops/provision/worker.py235 baris · 12 fungsi bernama
Untuk apa
Worker host administratif untuk membuat database, role, container dan routing cabang baru.
Jika diminta mengubah
Salinan ini memanggil opsi --tenant yang tidak ada pada signature InstallClarkWilsonE1 yang tersedia. Rangkaian provisioning belum dapat dinyatakan selaras.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
def invoke(args, *, data=None, timeout=180, check=True): | Menjalankan subprocess dengan argumen terpisah, timeout dan pengumpulan hasil. | return subprocess.run(args, cwd=BASE, text=True, input=data, capture_output=True, |
def sql(query): | Mengirim SQL administratif melalui utilitas PostgreSQL di container yang ditentukan worker. | return invoke(['docker', 'exec', '-i', POSTGRES, 'sh', '-c', command], data=query).stdout.strip() |
def work_item(): | Mengambil pekerjaan provisioning yang siap diproses menurut status database. | return int(result) if re.fullmatch(r'[1-9][0-9]*', result) else None |
def credentials(branch): | Membentuk identitas database dan credential tenant untuk satu ID cabang. | return item |
def db_create(item): | Membuat database dan role tenant melalui jalur administratif host. | Lihat signature dan isi fungsi. |
def backup_role(item): | Menyusun hak backup bagi database tenant hasil provisioning. | Lihat signature dan isi fungsi. |
def one_shot(item, args, data=None): | Menjalankan command Laravel pada container sekali pakai dengan environment sementara, lalu membersihkan file sementara. | return result |
def existing_branches(branch): | Membaca ID tenant siap dan menambahkan cabang yang sedang diproses. | return sorted(set([int(line) for line in raw.splitlines() if line.isdigit()] + [branch])) |
def generated_compose(ids): | Membentuk layanan container untuk tenant hasil provisioning dan mengganti file konfigurasi secara atomik. | return target |
def nginx_reload(ids): | Mengganti fragmen mapping, memeriksa konfigurasi Nginx, reload dan mengembalikan fragmen lama jika gagal. | Lihat signature dan isi fungsi. |
def provision(branch): | Mengurutkan database, migration, E1, backup, container, routing dan registrasi cabang. Kecocokan argumen command harus dibuktikan. | Lihat signature dan isi fungsi. |
def main(): | Menjalankan worker host dengan pemeriksaan identitas dan loop pekerjaan. Blok entry juga mengambil lock worker. | Lihat signature dan isi fungsi. |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 29843d90eeb1f2308d10251ad4f9e88275b627b08ea713d722b8320e757b51e2
ops/runtime/nginx/branch-map.conf1 baris · 0 fungsi bernama
Untuk apa
Fragmen mapping cabang hasil worker.
Jika diminta mengubah
Template proxy dalam revisi v5 yang dibaca belum meng-include fragmen ini.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 27ee60fea68a53c84ce1c9bd75d27715c35d02c6f830b1f3c334a300f92c2f7e
Pengujian dan pendukungnya 119
tests/Feature/AdminRoleAccessTest.php45 baris · 2 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian AdminRoleAccessTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_admin_has_operational_access_but_not_owner_or_technician_authority(): void | Skenario uji admin has operational access but not owner or technician authority. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/produk?aktif=0, /api/supplier, /api/cabang, /api/stok, /api/pelanggan, /api/penjualan Assertion assertOk, assertJsonPath, assertForbidden |
function test_admin_is_branch_bound_and_cannot_switch_or_forge_tenant_context(): void | Skenario uji admin is branch bound and cannot switch or forge tenant context. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/me, /api/owner/cabang-aktif Assertion assertOk, assertJsonPath, assertForbidden |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 52f21f8bfea9e39e9424b3b57673d829bb1a3dbd97aee1077819e245ee0c6955
tests/Feature/ApiFailureBoundaryTest.php64 baris · 5 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian ApiFailureBoundaryTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function setUp(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Respons JSON API /api/payload-probe, /api/exception-probe |
function invalidBodies(): array | Helper pengujian invalidBodies. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return [ |
function test_invalid_payload_is_rejected_before_processing_with_safe_error(string $body, string $type, int $status): void | Skenario uji invalid payload is rejected before processing with safe error. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/payload-probe Assertion assertStatus, assertJsonMissingPath, assertStringNotContainsString |
function test_valid_json_and_vendor_json_continue_to_the_real_pipeline(): void | Skenario uji valid json and vendor json continue to the real pipeline. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/payload-probe Assertion assertOk, assertJsonPath |
function test_unsupported_method_and_production_exception_are_safe(): void | Skenario uji unsupported method and production exception are safe. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/payload-probe, /api/exception-probe Assertion assertStatus, assertStringNotContainsString |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 6d8dcb9ef39c42e072e0516689b189912c9213b0240dc43ddce4ec0ec2be7256
tests/Feature/AuthSecurityTest.php708 baris · 57 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian AuthSecurityTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_captcha_and_email_code_are_required_before_a_session_and_the_code_cannot_be_replayed(): void | Skenario uji captcha and email code are required before a session and the code cannot be replayed. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/me, /api/login/verify-code, /api/logout, /sanctum/csrf-cookie Assertion assertStatus, assertJsonPath, assertJsonMissingPath, assertUnauthorized, assertNull, assertMatchesRegularExpression, assertOk, assertNotNull, assertNoContent, assertUnprocessable |
function test_expired_email_code_is_rejected_without_a_session(): void | Skenario uji expired email code is rejected without a session. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/login/verify-code, /api/me Assertion assertStatus, assertUnprocessable, assertUnauthorized |
function test_five_wrong_email_codes_invalidate_even_the_original_correct_code(): void | Skenario uji five wrong email codes invalidate even the original correct code. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/login/verify-code, /api/me Assertion assertStatus, assertUnprocessable, assertUnauthorized |
function test_captcha_failure_and_wrong_hostname_never_reach_password_authentication(): void | Skenario uji captcha failure and wrong hostname never reach password authentication. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/me Assertion assertUnprocessable, assertNull, assertUnauthorized |
function fakeLoginChallenge(): void | Helper pengujian fakeLoginChallenge. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return Http::response([ |
function test_manual_ip_block_rejects_password_and_code_without_mutating_account_then_unblock_restores_login(): void | Skenario uji manual ip block rejects password and code without mutating account then unblock restores login. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/login/verify-code, /api/me Assertion assertNotNull, assertStatus, assertHeader, assertUnauthorized, assertSame, assertNull, assertOk |
function test_manual_ip_block_expires_and_does_not_apply_to_other_addresses(): void | Skenario uji manual ip block expires and does not apply to other addresses. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertNotNull, assertNull |
function test_unblocking_ip_does_not_remove_an_account_lock(): void | Skenario uji unblocking ip does not remove an account lock. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStatus, assertSame |
function test_corrupt_ip_block_file_cannot_silently_disable_a_block(): void | Skenario uji corrupt ip block file cannot silently disable a block. Assertion aktual ditunjukkan di kolom bukti dan kode. | Lihat signature dan isi fungsi. |
function test_login_ip_command_validates_address_duration_and_reason(): void | Skenario uji login ip command validates address duration and reason. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertFailed, assertSuccessful, assertNotNull, assertNull |
function withIsolatedIpBlocks(\Closure $test): void | Helper pengujian withIsolatedIpBlocks. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Lihat signature dan isi fungsi. |
function test_correct_password_authenticates_using_password_hash(): void | Skenario uji correct password authenticates using password hash. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/me Assertion assertSame, assertOk, assertJsonPath, assertNotNull |
function test_wrong_password_is_rejected_and_both_counters_commit(): void | Skenario uji wrong password is rejected and both counters commit. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/me Tabel sessions Assertion assertUnprocessable, assertSame, assertUnauthorized |
function test_success_resets_consecutive_failures_but_preserves_total(): void | Skenario uji success resets consecutive failures but preserves total. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertOk, assertSame, assertNull |
function test_fifth_failure_locks_account_for_exactly_fifteen_minutes(): void | Skenario uji fifth failure locks account for exactly fifteen minutes. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStatus, assertSame, assertCount |
function test_correct_password_cannot_bypass_active_lock(): void | Skenario uji correct password cannot bypass active lock. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/me Assertion assertStatus, assertUnauthorized, assertNull, assertSame |
function test_expired_lock_allows_fresh_attempt_and_resets_counter(): void | Skenario uji expired lock allows fresh attempt and resets counter. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertUnprocessable, assertSame, assertNull, assertOk |
function test_inactive_account_is_rejected(): void | Skenario uji inactive account is rejected. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/me Assertion assertUnprocessable, assertUnauthorized |
function test_email_is_normalized_before_lookup_and_rate_limiting(): void | Skenario uji email is normalized before lookup and rate limiting. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertOk |
function test_lockout_threshold_is_configurable(): void | Skenario uji lockout threshold is configurable. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertUnprocessable, assertStatus, assertSame |
function test_password_hash_is_not_serialized_in_login_or_me(): void | Skenario uji password hash is not serialized in login or me. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/me Assertion assertOk, assertJsonMissingPath, assertStringNotContainsString, assertArrayNotHasKey |
function test_validation_rejects_extreme_inputs_before_authentication(): void | Skenario uji validation rejects extreme inputs before authentication. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /sanctum/csrf-cookie, /api/login Assertion assertUnprocessable, assertJsonValidationErrors |
function test_account_lookup_uses_a_master_row_lock(): void | Skenario uji account lookup uses a master row lock. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertUnprocessable, assertTrue |
function branches(): array | Helper pengujian branches. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return [['Samanhudi', 'tenant_samanhudi'], ['Peganden', 'tenant_peganden']]; |
function test_employee_tenant_comes_from_assignment(string $name, string $connection): void | Skenario uji employee tenant comes from assignment. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/me Assertion assertOk, assertJsonPath |
function employeeRoles(): array | Helper pengujian employeeRoles. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return [['admin'], ['kasir'], ['teknisi']]; |
function test_employees_cannot_select_a_branch_or_view_owner_selector(string $role): void | Skenario uji employees cannot select a branch or view owner selector. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/owner/cabang-aktif, /api/owner/cabang, /api/me Assertion assertOk, assertForbidden, assertJsonPath |
function test_owner_can_select_either_branch(string $name, string $connection): void | Skenario uji owner can select either branch. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/owner/cabang, /api/owner/cabang-aktif, /api/me Assertion assertOk, assertJsonPath, assertJsonCount, assertNull, assertCount |
function test_owner_assignment_does_not_force_active_tenant(): void | Skenario uji owner assignment does not force active tenant. Assertion aktual ditunjukkan di kolom bukti dan kode. | Pembuatan hash Assertion assertOk, assertJsonPath |
function test_client_connection_role_and_branch_input_are_not_trusted(): void | Skenario uji client connection role and branch input are not trusted. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/me?connection=tenant_peganden Assertion assertOk, assertJsonPath |
function test_inactive_branch_denies_employee_login_and_owner_selection(): void | Skenario uji inactive branch denies employee login and owner selection. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/owner/cabang-aktif Panggilan samanhudi.forceFill Assertion assertForbidden, assertOk |
function test_missing_tenant_mapping_fails_closed_and_logs_error(): void | Skenario uji missing tenant mapping fails closed and logs error. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/me Assertion assertStatus, assertJsonPath, assertStringNotContainsString, assertUnauthorized |
function test_tenant_names_are_normalized_without_fixed_branch_ids(): void | Skenario uji tenant names are normalized without fixed branch ids. Assertion aktual ditunjukkan di kolom bukti dan kode. | Panggilan samanhudi.forceFill Assertion assertSame |
function test_session_id_regenerates_and_session_is_stored_on_master(): void | Skenario uji session id regenerates and session is stored on master. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /sanctum/csrf-cookie, /api/login Tabel sessions Assertion assertNoContent, assertOk, assertNotSame, assertFalse, assertSame, assertStringNotContainsString |
function test_logout_revokes_session_and_regenerates_csrf(): void | Skenario uji logout revokes session and regenerates csrf. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/logout, /api/me Tabel sessions Assertion assertOk, assertNoContent, assertNotSame, assertFalse, assertSame, assertUnauthorized, assertCount |
function test_assignment_change_revokes_all_target_sessions_preserves_owner_and_audits_both_tenants(): void | Skenario uji assignment change revokes all target sessions preserves owner and audits both tenants. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pengguna/{$employee->id_pengguna}/penugasan-cabang, /api/me Tabel sessions Assertion assertOk, assertJsonPath, assertSame, assertFalse, assertTrue, assertCount, assertUnauthorized |
function securityChanges(): array | Helper pengujian securityChanges. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return [['role', 'teknisi'], ['status_akun', 'nonaktif'], ['id_cabang', 'other']]; |
function test_eloquent_security_changes_delete_every_user_session(string $field, string $value): void | Skenario uji eloquent security changes delete every user session. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/me Tabel sessions Assertion assertOk, assertSame, assertUnauthorized |
function test_request_middleware_rejects_changes_even_when_model_observer_is_bypassed(string $field, string $value): void | Skenario uji request middleware rejects changes even when model observer is bypassed. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/me Tabel pengguna, sessions Assertion assertOk, assertUnauthorized, assertSame |
function test_nonowners_cannot_change_assignments(string $role): void | Skenario uji nonowners cannot change assignments. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pengguna/{$user->id_pengguna}/penugasan-cabang Assertion assertOk, assertForbidden, assertSame |
function test_assignment_noop_preserves_sessions_and_does_not_duplicate_audit(): void | Skenario uji assignment noop preserves sessions and does not duplicate audit. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pengguna/{$user->id_pengguna}/penugasan-cabang Tabel sessions Assertion assertOk, assertJsonPath, assertSame, assertCount |
function test_assignment_rejects_owner_target_missing_user_and_inactive_branch(): void | Skenario uji assignment rejects owner target missing user and inactive branch. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pengguna/{$owner->id_pengguna}/penugasan-cabang, /api/pengguna/999999/penugasan-cabang, /api/pengguna/{$user->id_pengguna}/penugasan-cabang Panggilan peganden.forceFill Assertion assertOk, assertUnprocessable, assertNotFound, assertForbidden, assertSame |
function test_login_success_and_failure_are_audited_only_on_employee_tenant(): void | Skenario uji login success and failure are audited only on employee tenant. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tabel audit_log Assertion assertUnprocessable, assertOk, assertCount, assertSame |
function test_owner_login_is_audited_on_all_active_tenants(): void | Skenario uji owner login is audited on all active tenants. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertOk, assertCount |
function test_unknown_email_is_audited_globally_without_a_fabricated_user(): void | Skenario uji unknown email is audited globally without a fabricated user. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /sanctum/csrf-cookie, /api/login Assertion assertUnprocessable, assertNull, assertSame |
function test_audit_never_contains_password_hash_session_or_csrf_secrets(): void | Skenario uji audit never contains password hash session or csrf secrets. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tabel audit_log Assertion assertUnprocessable, assertOk, assertStringNotContainsString |
function test_audit_destination_failure_is_logged_and_other_tenant_still_receives_event(): void | Skenario uji audit destination failure is logged and other tenant still receives event. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertOk, assertCount |
function test_login_rate_limit_is_separate_from_account_lockout(): void | Skenario uji login rate limit is separate from account lockout. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertUnprocessable, assertTooManyRequests, assertSame, assertNull |
function test_ip_limit_cannot_be_bypassed_by_changing_email(): void | Skenario uji ip limit cannot be bypassed by changing email. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /sanctum/csrf-cookie, /api/login Assertion assertStatus |
function test_csrf_is_required_for_login_logout_selection_and_assignment(): void | Skenario uji csrf is required for login logout selection and assignment. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /sanctum/csrf-cookie, /api/login, /api/logout, /api/owner/cabang-aktif, /api/pengguna/{$employee->id_pengguna}/penugasan-cabang, /api/me Assertion assertNoContent, assertStatus, assertOk |
function test_bearer_and_foreign_origin_requests_cannot_bypass_spa_authentication(): void | Skenario uji bearer and foreign origin requests cannot bypass spa authentication. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/me, /api/login Assertion assertUnauthorized |
function test_generic_role_middleware_supports_multiple_server_roles(): void | Skenario uji generic role middleware supports multiple server roles. Assertion aktual ditunjukkan di kolom bukti dan kode. | Respons JSON API /api/_test-role, /api/_test-role?role=owner Assertion assertOk, assertForbidden |
function test_operational_tenant_middleware_requires_context_and_revalidates_active_branch(): void | Skenario uji operational tenant middleware requires context and revalidates active branch. Assertion aktual ditunjukkan di kolom bukti dan kode. | Respons JSON API /api/_test-tenant, /api/owner/cabang-aktif Panggilan peganden.forceFill Assertion assertOk, assertStatus, assertJsonPath, assertForbidden |
function postgresTimezones(): array | Helper pengujian postgresTimezones. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return [['UTC'], ['Asia/Jakarta'], ['America/New_York'], ['Pacific/Auckland']]; |
function test_lockout_preserves_instants_before_and_after_expiry_across_timezones(string $timezone): void | Skenario uji lockout preserves instants before and after expiry across timezones. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/me Tabel pengguna Assertion assertStatus, assertSame, assertUnauthorized, assertOk, assertNull |
function test_database_accepts_admin_and_rejects_unknown_role(): void | Skenario uji database accepts admin and rejects unknown role. Assertion aktual ditunjukkan di kolom bukti dan kode. | Batas transaksi Assertion assertSame, assertStringContainsString |
function test_runtime_policy_gives_admin_front_desk_authority_without_owner_or_technician_authority(): void | Skenario uji runtime policy gives admin front desk authority without owner or technician authority. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/_test-admin Assertion assertTrue, assertFalse, assertSame |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 ce532ed2abb2f18228034cc9f148a6b339bd6503269d507a5fe576953a300f15
tests/Feature/BackupRestoreTest.php96 baris · 3 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian BackupRestoreTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_real_three_database_backup_restore_checks_rows_constraints_and_cleans_temporary_databases(): void | Skenario uji real three database backup restore checks rows constraints and cleans temporary databases. Assertion aktual ditunjukkan di kolom bukti dan kode. | Pemeriksaan IVP Tabel cabang Assertion assertSame, assertFileExists, assertNotEmpty, assertGreaterThan, assertTrue, assertEquals |
function test_partial_backup_is_never_accepted(): void | Skenario uji partial backup is never accepted. Assertion aktual ditunjukkan di kolom bukti dan kode. | Pemeriksaan IVP |
function test_backup_requires_maintenance_before_opening_database_locks(): void | Skenario uji backup requires maintenance before opening database locks. Assertion aktual ditunjukkan di kolom bukti dan kode. | Lihat signature dan isi fungsi. |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 f53d9fbd9817a6f2a240e8909ad8bac0e2e9df5dc14481064fe7aa732cc9be0e
tests/Feature/BranchProvisioningRequestTest.php74 baris · 4 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian BranchProvisioningRequestTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_owner_creates_pending_tenant_job_without_db_admin_rights(): void | Skenario uji owner creates pending tenant job without db admin rights. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/cabang, /api/owner/cabang-aktif Assertion assertOk, assertCreated, assertJsonPath, assertDatabaseHas, assertForbidden |
function test_admin_cannot_request_privileged_branch_provisioning(): void | Skenario uji admin cannot request privileged branch provisioning. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/cabang Tabel tenant_instances Assertion assertOk, assertForbidden, assertSame |
function test_retry_requires_owner_and_failed_job(): void | Skenario uji retry requires owner and failed job. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/cabang, /api/owner/cabang/{$id}/provision-ulang Tabel tenant_instances Assertion assertOk, assertCreated, assertStatus, assertSame |
function test_registered_dynamic_tenant_identity_is_independent_of_branch_name(): void | Skenario uji registered dynamic tenant identity is independent of branch name. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tabel tenant_instances Assertion assertSame |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 af21870795b5916bce3e04813e0572fdb0958517712c7f80d72a68beb81bbb84
tests/Feature/ClarkWilsonBoundaryTest.php90 baris · 5 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian ClarkWilsonBoundaryTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_e4_certifier_authority_is_not_a_business_runtime_role(): void | Skenario uji e4 certifier authority is not a business runtime role. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertFalse, assertNotContains |
function test_owner_can_manage_employee_rights_and_execute_business_tp_without_becoming_certifier(): void | Skenario uji owner can manage employee rights and execute business tp without becoming certifier. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pengguna/, /api/owner/cabang-aktif, /api/pelanggan Tabel pelanggan Assertion assertNotSame, assertOk, assertSame, assertCreated |
function test_c4_canonical_master_audit_survives_tenant_projection_failure(): void | Skenario uji c4 canonical master audit survives tenant projection failure. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pengguna/ Tabel audit_hak_pengguna, audit_log Assertion assertOk, assertSame |
function tenants(): array | Helper pengujian tenants. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return [ |
function test_e1_runtime_database_identity_cannot_write_inventory_cdi_outside_certified_tp(string $connection): void | Skenario uji e1 runtime database identity cannot write inventory cdi outside certified tp. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertSame |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 678648eb7d6821f8bb4af25d67728c1b6bfeacc3ab0b85539849dc83666ab877
tests/Feature/ClarkWilsonControlsTest.php165 baris · 7 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian ClarkWilsonControlsTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function prepareReturns(): array | Helper pengujian prepareReturns. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | API /api/pembelian, /api/penjualan Assertion assertOk, assertCreated |
function snapshot(): array | Helper pengujian snapshot. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return $state; |
function returnTypes(): array | Helper pengujian returnTypes. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return ['sale' => [false], 'purchase' => [true]]; |
function test_c5_direct_tp_rejects_arbitrary_return_input_without_cdi_or_audit_changes(bool $purchase): void | Skenario uji c5 direct tp rejects arbitrary return input without cdi or audit changes. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tabel produk_cabang Assertion assertNotEmpty, assertSame, assertGreaterThan |
function test_c2_c4_late_database_audit_failure_rolls_back_return_details_and_stock(bool $purchase): void | Skenario uji c2 c4 late database audit failure rolls back return details and stock. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/retur-pembelian, /api/retur-penjualan Assertion assertStatus, assertDontSee, assertSame |
function test_c4_database_rejects_audit_update_delete_truncate_and_upsert_on_both_tenants(): void | Skenario uji c4 database rejects audit update delete truncate and upsert on both tenants. Assertion aktual ditunjukkan di kolom bukti dan kode. | Batas transaksi Tabel audit_log Assertion assertOk, assertSame |
function test_c4_model_and_bulk_writes_cannot_rewrite_audit_history(): void | Skenario uji c4 model and bulk writes cannot rewrite audit history. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertOk, assertStringContainsString, assertSame |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 11eb7e92baeef37886c4b611caa24dc7128e3b2dea019f8dda5dbe24706c1799
tests/Feature/ClarkWilsonFormalCertificationTest.php148 baris · 6 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian ClarkWilsonFormalCertificationTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_c2_c3_e4_certification_register_is_complete_immutable_and_separated_from_runtime_roles(): void | Skenario uji c2 c3 e4 certification register is complete immutable and separated from runtime roles. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertGreaterThanOrEqual, assertTrue, assertSame, assertNotContains, assertNotEmpty, assertNotSame |
function test_c3_certified_separation_of_duties_relations_are_explicit(): void | Skenario uji c3 certified separation of duties relations are explicit. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertSame |
function test_e2_business_access_uses_certified_user_tp_relation_instead_of_ad_hoc_roles(): void | Skenario uji e2 business access uses certified user tp relation instead of ad hoc roles. Assertion aktual ditunjukkan di kolom bukti dan kode. | Batas transaksi Relasi aktor dan TP Assertion assertSame |
function test_e2_certified_tp_implementations_do_not_embed_parallel_business_role_lists(): void | Skenario uji e2 certified tp implementations do not embed parallel business role lists. Assertion aktual ditunjukkan di kolom bukti dan kode. | Relasi aktor dan TP Assertion assertIsString, assertStringNotContainsString, assertTrue |
function test_c4_every_certified_tp_declares_reconstruction_audit_and_implementation_writes_it(): void | Skenario uji c4 every certified tp declares reconstruction audit and implementation writes it. Assertion aktual ditunjukkan di kolom bukti dan kode. | Audit CDI wajib Audit hak pada master Assertion assertNotEmpty, assertIsString, assertTrue |
function test_c5_every_certified_tp_declares_a_udi_validation_boundary(): void | Skenario uji c5 every certified tp declares a udi validation boundary. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertNotSame, assertContains, assertIsString, assertStringContainsString, assertNotNull |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 767eb300c434c3b7ba7ab49c4472ac14d53f6a48d9b4d220025c630d9e9f0748
tests/Feature/CspAndCookieSecurityTest.php71 baris · 4 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian CspAndCookieSecurityTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_enabled_login_challenge_permits_only_the_turnstile_script_and_frame_origin(): void | Skenario uji enabled login challenge permits only the turnstile script and frame origin. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertOk, assertStringContainsString, assertStringNotContainsString |
function test_testing_csp_restricts_code_and_connects_to_the_explicit_reverb_fixture(): void | Skenario uji testing csp restricts code and connects to the explicit reverb fixture. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertOk, assertStringContainsString, assertStringNotContainsString |
function test_production_csp_does_not_permit_inline_style_or_wildcard_origins(): void | Skenario uji production csp does not permit inline style or wildcard origins. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertOk, assertStringContainsString, assertStringNotContainsString |
function test_csrf_cookie_is_script_readable_but_session_cookie_is_http_only(): void | Skenario uji csrf cookie is script readable but session cookie is http only. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /sanctum/csrf-cookie Assertion assertNoContent, assertNotNull, assertFalse, assertTrue |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 4e236169d4e2e6b27f36c2e6d5bd4e127f720b54c6009a6abbdebfbae9b9ba3a
tests/Feature/CspStaticAssetsTest.php34 baris · 2 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian CspStaticAssetsTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_print_and_offline_styles_are_external_and_available(): void | Skenario uji print and offline styles are external and available. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertFileExists, assertStringContainsString, assertStringNotContainsString |
function test_nginx_production_template_protects_static_files_with_strict_csp(): void | Skenario uji nginx production template protects static files with strict csp. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStringContainsString, assertStringNotContainsString |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 c24117b1d52d85160d28c36358d5ce8b4ce2352fc2ca97c36142b8e31d11a38d
tests/Feature/CustomerManagementTest.php76 baris · 4 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian CustomerManagementTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_cashier_can_create_search_and_update_customer_in_active_branch(): void | Skenario uji cashier can create search and update customer in active branch. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pelanggan, /api/pelanggan?q=Budi, /api/pelanggan/{$id} Assertion assertOk, assertCreated, assertJsonPath, assertCount, assertStringContainsString, assertStringNotContainsString |
function test_customer_records_are_isolated_between_tenants(): void | Skenario uji customer records are isolated between tenants. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pelanggan, /api/pelanggan?q=Hanya%20Samanhudi Assertion assertOk, assertCreated, assertJsonCount |
function test_technician_cannot_manage_customer_records(): void | Skenario uji technician cannot manage customer records. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pelanggan Assertion assertOk, assertForbidden |
function test_customer_validation_rejects_invalid_contact_input(): void | Skenario uji customer validation rejects invalid contact input. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pelanggan Assertion assertOk, assertUnprocessable |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 7ec3a295da9031dfabc45546338642aceae59f004978c1cd9b6d4db416289242
tests/Feature/DamagedPurchaseTest.php101 baris · 8 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian DamagedPurchaseTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function input(int $damaged = 2): array | Helper pengujian input. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Assertion assertOk |
function test_mixed_receipt_records_both_buckets_details_audit_and_supplier_return(): void | Skenario uji mixed receipt records both buckets details audit and supplier return. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pembelian, /api/pembelian/, /api/retur-pembelian Tabel produk_cabang, pembelian Assertion assertCreated, assertSame, assertOk, assertJsonPath |
function test_all_damaged_goods_are_never_available_for_sale(): void | Skenario uji all damaged goods are never available for sale. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pembelian, /api/penjualan Tabel produk_cabang Assertion assertCreated, assertSame, assertStatus |
function invalidConditions(): array | Helper pengujian invalidConditions. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return [[-1, 'Rusak'], [6, 'Rusak'], [1.5, 'Rusak'], [1, ''], [1, ' ']]; |
function test_invalid_damage_is_rejected_without_any_stock_write(int|float $quantity, string $note): void | Skenario uji invalid damage is rejected without any stock write. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pembelian Tabel pembelian, produk_cabang Assertion assertUnprocessable, assertSame |
function test_legacy_receipt_payload_remains_all_good(): void | Skenario uji legacy receipt payload remains all good. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pembelian Tabel produk_cabang Assertion assertCreated, assertSame |
function test_audit_failure_rolls_back_the_whole_receipt(): void | Skenario uji audit failure rolls back the whole receipt. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pembelian Tabel pembelian, produk_cabang Assertion assertStatus, assertSame |
function test_quarantine_overflow_rolls_back_receipt(): void | Skenario uji quarantine overflow rolls back receipt. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pembelian Tabel produk_cabang, pembelian Assertion assertStatus, assertSame |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 fd6899b2092ccc82acfc10e89cdf401cb973c8ba05da4d0e46d5181cca801230
tests/Feature/DashboardSummaryTest.php75 baris · 3 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian DashboardSummaryTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_cashier_dashboard_is_branch_scoped_and_uses_operational_counts(): void | Skenario uji cashier dashboard is branch scoped and uses operational counts. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/dashboard-summary Tabel produk_cabang, penjualan Assertion assertOk, assertJsonPath, assertJsonMissingPath, assertTrue |
function test_technician_dashboard_does_not_expose_sales_or_management_counts(): void | Skenario uji technician dashboard does not expose sales or management counts. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/dashboard-summary Tabel pelanggan, servis Assertion assertOk, assertJsonPath, assertJsonMissingPath |
function test_dashboard_requires_authenticated_tenant_context(): void | Skenario uji dashboard requires authenticated tenant context. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/dashboard-summary Assertion assertUnauthorized |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 b41a40080f33a077785cdb1e0cad99631fc120a5803971ab068c7e6a1427947c
tests/Feature/DeploymentArtifactsTest.php136 baris · 14 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian DeploymentArtifactsTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_compose_uses_two_tenant_application_containers(): void | Skenario uji compose uses two tenant application containers. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStringContainsString |
function test_compose_runs_reverb_and_scheduler_separately(): void | Skenario uji compose runs reverb and scheduler separately. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStringContainsString |
function test_nginx_routes_internal_requests_using_non_authoritative_instance_cookie(): void | Skenario uji nginx routes internal requests using non authoritative instance cookie. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStringContainsString |
function test_nginx_has_login_public_rate_limits_and_connection_limits(): void | Skenario uji nginx has login public rate limits and connection limits. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStringContainsString |
function test_backup_is_locked_atomic_and_has_completion_marker(): void | Skenario uji backup is locked atomic and has completion marker. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStringContainsString, assertStringNotContainsString |
function test_restore_drill_restores_then_cleans_up_temporary_databases(): void | Skenario uji restore drill restores then cleans up temporary databases. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStringContainsString |
function test_deployment_scripts_do_not_embed_database_passwords(): void | Skenario uji deployment scripts do not embed database passwords. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStringNotContainsString |
function test_production_environment_template_requires_secure_transport_and_reverb(): void | Skenario uji production environment template requires secure transport and reverb. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStringContainsString |
function test_production_environment_template_contains_placeholders_not_real_secrets(): void | Skenario uji production environment template contains placeholders not real secrets. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStringContainsString, assertStringNotContainsString |
function test_deployment_checklist_covers_preflight_smoke_pwa_backup_and_restore(): void | Skenario uji deployment checklist covers preflight smoke pwa backup and restore. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStringContainsStringIgnoringCase |
function test_production_template_requires_remote_log_and_alert_receiver_placeholders(): void | Skenario uji production template requires remote log and alert receiver placeholders. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStringContainsString |
function test_external_tls_wss_script_verifies_certificate_and_websocket_upgrade(): void | Skenario uji external tls wss script verifies certificate and websocket upgrade. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStringContainsString, assertStringNotContainsString |
function test_fault_drill_is_explicitly_guarded_for_disposable_runtime(): void | Skenario uji fault drill is explicitly guarded for disposable runtime. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStringContainsString |
function test_release_evidence_verifier_requires_provenance_sbom_and_checksums(): void | Skenario uji release evidence verifier requires provenance sbom and checksums. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStringContainsString |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 51f6a40f2cb5b4a723d3b3b7b46a1f32e62c6665bb32ce332fc07d3d5046d90e
tests/Feature/DeploymentSecurityTest.php68 baris · 6 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian DeploymentSecurityTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_runtime_container_does_not_run_as_root_and_does_not_auto_migrate(): void | Skenario uji runtime container does not run as root and does not auto migrate. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStringContainsString, assertStringNotContainsString |
function test_nginx_forces_https_and_proxies_websocket_upgrade(): void | Skenario uji nginx forces https and proxies websocket upgrade. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStringContainsString |
function test_backup_script_covers_exactly_the_three_business_databases_without_embedding_passwords(): void | Skenario uji backup script covers exactly the three business databases without embedding passwords. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStringContainsString, assertStringNotContainsString |
function test_backup_verification_checks_hashes_and_pg_restore_catalog(): void | Skenario uji backup verification checks hashes and pg restore catalog. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStringContainsString |
function test_php_runtime_hides_version_and_enables_opcache(): void | Skenario uji php runtime hides version and enables opcache. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStringContainsString |
function test_docker_context_excludes_runtime_secrets_and_heavy_local_dependencies(): void | Skenario uji docker context excludes runtime secrets and heavy local dependencies. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStringContainsString |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 651e3b589bb1ec410ad1269aeeae06d54ce6bf7ca6fd433eb19a324eb9c526d3
tests/Feature/DistributedTransactionTest.php211 baris · 12 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian DistributedTransactionTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function setUp(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Panggilan database.start |
function tearDown(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Panggilan database.cleanup |
function windows(): array | Helper pengujian windows. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return [ |
function test_real_postgresql_failure_windows_recover_atomically_and_idempotently(string $window, bool $committed): void | Skenario uji real postgresql failure windows recover atomically and idempotently. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tabel distributed_transactions, transaction_probe Assertion assertContains, assertCount, assertSuccessful, assertSame, assertNotNull |
function test_owned_orphan_without_coordinator_is_rolled_back(): void | Skenario uji owned orphan without coordinator is rolled back. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tabel distributed_transactions, transaction_probe Assertion assertSame, assertCount, assertSuccessful |
function test_foreign_and_unrecognized_prepared_transactions_are_untouched(): void | Skenario uji foreign and unrecognized prepared transactions are untouched. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tabel transaction_probe Assertion assertSuccessful, assertNotNull |
function test_recovery_skips_live_coordinator_and_recovers_after_process_dies(): void | Skenario uji recovery skips live coordinator and recovers after process dies. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tabel distributed_transactions Assertion assertStringContainsString, assertSame, assertCount, assertSuccessful |
function test_nested_transaction_is_rejected_before_any_coordinator_write(): void | Skenario uji nested transaction is rejected before any coordinator write. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tabel distributed_transactions Assertion assertSame |
function prepared(array $participants): array | Helper pengujian prepared. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Tabel pg_prepared_xacts |
function worker(string $window): Process | Helper pengujian worker. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return $worker; |
function runWorker(): void | Helper pengujian runWorker. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Tabel transaction_probe |
function checkpoint(string $phase, string $global, ?string $participant = null): void | Helper pengujian checkpoint. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Lihat signature dan isi fungsi. |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 cde023e098b77eeac14fcd69cc5c23e49b1d158f47f0e2fc708313205f71b427
tests/Feature/DomainModelTest.php94 baris · 6 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian DomainModelTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_all_domain_models_match_existing_schema_and_server_connection(): void | Skenario uji all domain models match existing schema and server connection. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertSame, assertTrue |
function test_tenant_model_refuses_missing_context(): void | Skenario uji tenant model refuses missing context. Assertion aktual ditunjukkan di kolom bukti dan kode. | Lihat signature dan isi fungsi. |
function test_tenant_model_refuses_a_connection_override(): void | Skenario uji tenant model refuses a connection override. Assertion aktual ditunjukkan di kolom bukti dan kode. | Lihat signature dan isi fungsi. |
function composites(): array | Helper pengujian composites. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return [[DetailMutasiStok::class], [ProdukCabang::class], [DetailPembelian::class], [DetailPenjualan::class], [SparepartServis::class]]; |
function test_composite_models_do_not_pretend_to_support_single_key_writes(string $class): void | Skenario uji composite models do not pretend to support single key writes. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertNull, assertFalse |
function test_sensitive_and_inventory_attributes_are_not_mass_assignable(): void | Skenario uji sensitive and inventory attributes are not mass assignable. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertTrue |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 08811c0ae6b2d2d673ea49c66192e5a9b1e1bd330853e04e8a2dd127c77ed30a
tests/Feature/EmployeeInvitationAndOnlinePauseTest.php74 baris · 2 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian EmployeeInvitationAndOnlinePauseTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_owner_invites_employee_who_sets_own_password_once(): void | Skenario uji owner invites employee who sets own password once. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pengguna, /sanctum/csrf-cookie, /api/aktivasi-akun Tabel employee_invitations Assertion assertOk, assertCreated, assertJsonPath, assertNotNull, assertMatchesRegularExpression, assertStringNotContainsString, assertNoContent, assertSame, assertFalse, assertUnprocessable |
function test_owner_can_pause_online_orders_without_disabling_internal_branch(): void | Skenario uji owner can pause online orders without disabling internal branch. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/cabang/, /api/online/cabang, /api/online/katalog?id_cabang= Panggilan samanhudi.fresh Assertion assertOk, assertSame, assertFalse, assertJsonMissing, assertStatus, assertTrue |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 8fdeb41da02f79c5affe72970ca6619fec53b34b0c175b42eb9944bd1897631b
tests/Feature/EmployeeManagementTest.php109 baris · 5 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian EmployeeManagementTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_owner_can_create_and_update_employee_without_exposing_password_hash(): void | Skenario uji owner can create and update employee without exposing password hash. Assertion aktual ditunjukkan di kolom bukti dan kode. | Pemeriksaan hash API /api/pengguna, /api/pengguna/{$id} Assertion assertOk, assertCreated, assertJsonPath, assertJsonMissingPath, assertTrue, assertCount, assertSame |
function test_non_owner_cannot_manage_employee_accounts(): void | Skenario uji non owner cannot manage employee accounts. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pengguna Assertion assertOk, assertForbidden |
function test_owner_account_cannot_be_modified_from_employee_management_endpoint(): void | Skenario uji owner account cannot be modified from employee management endpoint. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pengguna/{$owner->id_pengguna} Assertion assertOk, assertUnprocessable, assertNotSame |
function test_employee_management_accepts_admin_role_and_rejects_inactive_branch(): void | Skenario uji employee management accepts admin role and rejects inactive branch. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pengguna Panggilan peganden.forceFill Assertion assertOk, assertCreated, assertJsonPath, assertForbidden |
function test_inventory_response_contains_product_identity_for_end_user_page(): void | Skenario uji inventory response contains product identity for end user page. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/stok Tabel produk_cabang Assertion assertOk, assertJsonPath |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 be8e15e7cd216652111b4036b353290bc0b3b878b3e2b60d48d086c8b63b4ab0
tests/Feature/EndUserDeepUsabilityTest.php132 baris · 5 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian EndUserDeepUsabilityTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_customer_detail_is_tenant_scoped_and_contains_operational_history(): void | Skenario uji customer detail is tenant scoped and contains operational history. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pelanggan/{$customer} Tabel pelanggan, penjualan, detail_penjualan, servis, klaim_garansi Assertion assertOk, assertJsonPath, assertNotFound |
function test_employee_page_exposes_safe_lockout_state_and_summary_without_password_hash(): void | Skenario uji employee page exposes safe lockout state and summary without password hash. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pengguna?security=locked Assertion assertOk, assertJsonPath, assertJsonMissingPath, assertNotNull |
function test_master_data_summary_matches_filters(): void | Skenario uji master data summary matches filters. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/owner/cabang-aktif, /api/produk?q=Satu Assertion assertOk, assertJsonPath |
function test_inventory_supports_operational_sorting(): void | Skenario uji inventory supports operational sorting. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/stok?sort=stok_terendah, /api/stok?sort=stok_tertinggi, /api/stok?sort=karantina_tertinggi, /api/stok?sort=drop-table Tabel produk_cabang Assertion assertOk, assertJsonPath, assertUnprocessable |
function test_purchase_history_filters_supplier_and_date_and_returns_summary(): void | Skenario uji purchase history filters supplier and date and returns summary. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pembelian?id_supplier=, /api/pembelian?dari=2026-09-26&sampai=2026-09-20 Tabel pembelian, detail_pembelian Assertion assertOk, assertJsonCount, assertJsonPath, assertUnprocessable |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 efa2ef929568738e758813a69e80adbc58b48c7b070fdc0fed89f9bfef606534
tests/Feature/EndUserListSearchTest.php43 baris · 3 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian EndUserListSearchTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_inventory_search_uses_server_side_product_identity_and_keeps_tenant_scope(): void | Skenario uji inventory search uses server side product identity and keeps tenant scope. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/stok?q=SEARCH-INV-001 Assertion assertOk, assertJsonPath |
function test_admin_can_search_supplier_and_branch_master_lists(): void | Skenario uji admin can search supplier and branch master lists. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/supplier?q=Pencarian%20Khusus, /api/cabang?q=Samanhudi Assertion assertOk, assertJsonPath |
function stock(int $product, int $quantity): void | Helper pengujian stock. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Tabel produk_cabang |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 94a3a7836260bdb63b869ae83872977c23cc28d774d70c6830e24e36917e0c6a
tests/Feature/EndUserOperationalPolishTest.php124 baris · 5 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian EndUserOperationalPolishTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_inventory_summary_respects_search_and_stock_filter(): void | Skenario uji inventory summary respects search and stock filter. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/stok?status=karantina&q=SUM-QUARANTINE Tabel produk_cabang Assertion assertOk, assertJsonPath |
function test_owner_employee_filters_are_server_side_and_allowlisted(): void | Skenario uji owner employee filters are server side and allowlisted. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pengguna?q=Admin%20Filter&role=admin&status=nonaktif&id_cabang=, /api/pengguna?role=superadmin, /api/pengguna?status=hapus Assertion assertOk, assertJsonPath, assertUnprocessable |
function test_admin_master_status_filters_do_not_mix_active_and_inactive_rows(): void | Skenario uji admin master status filters do not mix active and inactive rows. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/produk?status=aktif&q=STATUS-, /api/produk?status=nonaktif&q=STATUS-, /api/cabang?status=nonaktif, /api/produk?status=hapus Panggilan peganden.forceFill Assertion assertOk, assertJsonPath, assertUnprocessable |
function test_purchase_history_searches_supplier_and_returns_readable_totals(): void | Skenario uji purchase history searches supplier and returns readable totals. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pembelian?q= Tabel pembelian, detail_pembelian Assertion assertOk, assertJsonPath |
function test_pos_history_search_and_status_are_server_side(): void | Skenario uji pos history search and status are server side. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/penjualan, /api/penjualan?q=, /api/penjualan?status=tidak-valid Tabel produk_cabang Assertion assertOk, assertCreated, assertJsonPath, assertUnprocessable |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 445801294fdb23f63f14a62ba4957427bd2dc4e84f78f412b5e0295c3ccd4131
tests/Feature/ExampleTest.php19 baris · 1 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian ExampleTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_the_application_returns_a_successful_response(): void | Skenario uji the application returns a successful response. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStatus |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 aaa4a192fb4aa96d4e81eda06a29968da3d9a73b71026b87a67297e66dd985b8
tests/Feature/FinalRoleSecurityTest.php102 baris · 5 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian FinalRoleSecurityTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_role_policy_is_centralized_and_admin_has_front_desk_but_not_technical_or_owner_authority(): void | Skenario uji role policy is centralized and admin has front desk but not technical or owner authority. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertSame, assertTrue, assertFalse |
function test_owner_uses_cashier_and_technician_capabilities_without_bypassing_tenant_selection(): void | Skenario uji owner uses cashier and technician capabilities without bypassing tenant selection. Assertion aktual ditunjukkan di kolom bukti dan kode. | Respons JSON API /api/_test-capability-, /api/owner/cabang-aktif, /api/produk?aktif=1, /api/stok, /api/_test-capability-teknisi, /api/_test-capability-kasir Assertion assertOk, assertStatus, assertJsonPath, assertForbidden |
function approvalConstraints(): array | Helper pengujian approvalConstraints. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return [ |
function test_owner_superrole_cannot_override_existing_database_separation_of_duties(
string $connection, string $table, string $key, string $constraint,
): void | Skenario uji owner superrole cannot override existing database separation of duties. Assertion aktual ditunjukkan di kolom bukti dan kode. | Batas transaksi Assertion assertTrue, assertSame, assertStringContainsString, assertNull |
function test_inactive_selected_tenant_does_not_block_owner_from_recovering_global_branch_master(): void | Skenario uji inactive selected tenant does not block owner from recovering global branch master. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/owner/cabang-aktif, /api/cabang/, /api/stok, /api/cabang Panggilan samanhudi.fresh Assertion assertOk, assertForbidden, assertSame |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 b2b56fa9c9b0b9358c388f2a4750b7325aa2daa380ebcd10e3fc3eb4eb237693
tests/Feature/GlobalIntegrityVerificationTest.php112 baris · 5 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian GlobalIntegrityVerificationTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_global_ivp_accepts_valid_master_and_both_active_tenants(): void | Skenario uji global ivp accepts valid master and both active tenants. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertSuccessful |
function test_global_ivp_replays_valid_purchase_and_preserves_cdi(): void | Skenario uji global ivp replays valid purchase and preserves cdi. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tabel produk_cabang Assertion assertSuccessful, assertSame |
function test_global_ivp_rejects_cross_tenant_or_unknown_inventory_reference(): void | Skenario uji global ivp rejects cross tenant or unknown inventory reference. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tabel produk_cabang Assertion assertFailed |
function test_global_ivp_rejects_invalid_distributed_transaction_participant_map(): void | Skenario uji global ivp rejects invalid distributed transaction participant map. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tabel distributed_transactions Assertion assertFailed |
function test_global_ivp_rejects_non_json_audit_snapshot(): void | Skenario uji global ivp rejects non json audit snapshot. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tabel audit_log Assertion assertFailed |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 167f30df022905415b5bfdec4aa0145d97a32cfab2178650f4d0a3c0b170fab5
tests/Feature/GuestOnlineSaleSchemaTest.php107 baris · 5 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian GuestOnlineSaleSchemaTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function tenantConnections(): array | Helper pengujian tenantConnections. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return [ |
function test_online_sale_allows_null_internal_user(string $connection): void | Skenario uji online sale allows null internal user. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tabel penjualan Assertion assertSame, assertNull |
function test_offline_sale_rejects_null_internal_user(string $connection): void | Skenario uji offline sale rejects null internal user. Assertion aktual ditunjukkan di kolom bukti dan kode. | Batas transaksi Tabel penjualan Assertion assertSame, assertStringContainsString |
function test_offline_sale_with_internal_user_remains_valid(string $connection): void | Skenario uji offline sale with internal user remains valid. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tabel penjualan Assertion assertSame |
function test_online_sale_may_also_have_internal_user(string $connection): void | Skenario uji online sale may also have internal user. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tabel penjualan Assertion assertSame |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 c73ebef60fd03b7a1a4623acd607fb3e8d15bf8509db98ee648bf4296d679c9d
tests/Feature/GuestTrackingCodeTest.php54 baris · 1 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian GuestTrackingCodeTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_tracking_code_is_stored_securely_but_not_exposed_before_payment(): void | Skenario uji tracking code is stored securely but not exposed before payment. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /sanctum/csrf-cookie, /api/online/checkout, /api/online/status-kode Tabel produk_cabang, penjualan Assertion assertNoContent, assertCreated, assertJsonMissingPath, assertNotNull, assertMatchesRegularExpression, assertSame, assertOk, assertJsonPath, assertNotFound, assertUnprocessable |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 7a393b673cf7bd4c0dd7bea4ccc477c690b146bb2411fd90d3d5f7400e6d3b46
tests/Feature/InstallClarkWilsonE1Test.php295 baris · 17 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian InstallClarkWilsonE1Test.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function setUp(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Tabel produk_cabang Panggilan postgres.start |
function tearDown(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Panggilan postgres.stop |
function test_provisioning_is_idempotent_and_rejects_all_direct_dml_on_both_tenants(): void | Skenario uji provisioning is idempotent and rejects all direct dml on both tenants. Assertion aktual ditunjukkan di kolom bukti dan kode. | Batas transaksi Kunci baris perubahan Kunci referensi baca Tabel produk_cabang Assertion assertSame, assertNotContains, assertCount, assertStringNotContainsString, assertNoAdminConnection, assertNull |
function test_all_five_inventory_services_work_with_hardened_runtime_and_quarantine(): void | Skenario uji all five inventory services work with hardened runtime and quarantine. Assertion aktual ditunjukkan di kolom bukti dan kode. | Batas transaksi Tabel produk_cabang Assertion assertSame |
function test_inventory_tp_changes_roll_back_with_the_callers_failed_transaction(): void | Skenario uji inventory tp changes roll back with the callers failed transaction. Assertion aktual ditunjukkan di kolom bukti dan kode. | Batas transaksi Tabel produk_cabang Assertion assertSame |
function test_missing_credentials_do_not_fall_back_to_runtime_or_change_roles(): void | Skenario uji missing credentials do not fall back to runtime or change roles. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertSame, assertStringContainsString, assertUnchanged, assertNoAdminConnection |
function test_runtime_credentials_cannot_be_used_for_provisioning(): void | Skenario uji runtime credentials cannot be used for provisioning. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertSame, assertStringContainsString, assertUnchanged, assertNoAdminConnection |
function test_invalid_admin_password_is_redacted_and_admin_connections_are_purged(): void | Skenario uji invalid admin password is redacted and admin connections are purged. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertSame, assertStringNotContainsString, assertUnchanged, assertNoAdminConnection |
function test_both_tenants_are_preflighted_before_any_hardening(): void | Skenario uji both tenants are preflighted before any hardening. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertSame, assertStringContainsString, assertUnchanged, assertNoAdminConnection |
function test_late_ddl_failure_rolls_back_ownership_role_and_grants(): void | Skenario uji late ddl failure rolls back ownership role and grants. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertSame, assertUnchanged, assertNoAdminConnection |
function test_status_detects_insert_delete_truncate_column_grants_and_disabled_guard(): void | Skenario uji status detects insert delete truncate column grants and disabled guard. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertFalse, assertSame, assertStringContainsString |
function test_certified_tp_validates_sql_inputs_and_prevents_overdraw_after_lock_contention(): void | Skenario uji certified tp validates sql inputs and prevents overdraw after lock contention. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tabel produk_cabang Assertion assertCount, assertSame |
function install(): void | Helper pengujian install. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Assertion assertSame |
function credentials(string $username, string $password): void | Helper pengujian credentials. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Lihat signature dan isi fungsi. |
function denied(Connection $db, string $sql, string $state = '42501'): void | Helper pengujian denied. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Batas transaksi Assertion assertSame |
function assertNoAdminConnection(): void | Helper pengujian assertNoAdminConnection. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Assertion assertArrayNotHasKey, assertNull, assertSame |
function assertUnchanged(): void | Helper pengujian assertUnchanged. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Assertion assertSame, assertFalse, assertTrue |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 521a8994693ee5288d6142e21266cf6b88cc8fa638553cd12524f35a40bbcbb6
tests/Feature/InstitutionInvoiceTest.php183 baris · 13 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian InstitutionInvoiceTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function sale(?Pengguna $actor = null): int | Helper pengujian sale. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | API /api/owner/cabang-aktif, /api/pembelian, /api/penjualan Assertion assertOk, assertCreated |
function fields(): array | Helper pengujian fields. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return ['nama_instansi' => 'Sekolah Rajawali', 'alamat_instansi' => 'Gresik', 'nama_kontak' => 'Budi', 'nomor_po' => 'PO-B2B', 'catatan' => 'Admini |
function draft(int $sale): int | Helper pengujian draft. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | API /api/nota-instansi Assertion assertCreated |
function submit(int $id, Pengguna $owner, int $version = 1): string | Helper pengujian submit. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | API /api/nota-instansi/ Assertion assertOk, assertJsonPath |
function asOwner(Pengguna $owner, bool $otherBranch = false): void | Helper pengujian asOwner. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | API /api/owner/cabang-aktif Assertion assertOk |
function test_document_is_one_to_one_uses_persisted_prices_and_preserves_stock(): void | Skenario uji document is one to one uses persisted prices and preserves stock. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/nota-instansi/, /api/nota-instansi, /api/nota-instansi/sumber, /api/nota-instansi?q=Sekolah&status=draft Tabel produk_cabang Assertion assertOk, assertJsonPath, assertJsonCount, assertJsonMissingPath, assertStatus, assertEquals, assertCount |
function test_updates_require_current_version_and_pending_documents_are_immutable(): void | Skenario uji updates require current version and pending documents are immutable. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/nota-instansi/ Assertion assertOk, assertStatus |
function test_signed_approval_enforces_sod_invalidates_token_and_records_history(): void | Skenario uji signed approval enforces sod invalidates token and records history. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/nota-instansi/, /api/laporan/nota-instansi?status=disetujui, /api/audit-log?tabel=nota_instansi Tabel nota_instansi, penjualan Assertion assertForbidden, assertOk, assertJsonPath, assertStatus, assertJsonCount, assertStringNotContainsString, assertNull, assertCount, assertSame |
function test_wrong_branch_expiry_wrong_token_and_resend_are_enforced(): void | Skenario uji wrong branch expiry wrong token and resend are enforced. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tautan sementara API /api/owner/cabang-aktif, /api/nota-instansi/ Tabel nota_instansi Assertion assertNotFound, assertOk, assertForbidden, assertStatus |
function test_rejection_can_be_corrected_and_resubmitted_without_reusing_link(): void | Skenario uji rejection can be corrected and resubmitted without reusing link. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/nota-instansi/ Assertion assertOk, assertForbidden, assertJsonPath, assertJsonCount |
function test_role_tenant_and_input_boundaries_are_preserved(): void | Skenario uji role tenant and input boundaries are preserved. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/nota-instansi, /api/nota-instansi/ Assertion assertUnprocessable, assertOk, assertNotFound, assertForbidden |
function test_audit_failure_rolls_back_document_and_history(): void | Skenario uji audit failure rolls back document and history. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/nota-instansi Tabel nota_instansi, histori_nota_instansi Assertion assertStatus, assertSame |
function test_ivp_rejects_a_document_with_corrupted_source_total(): void | Skenario uji ivp rejects a document with corrupted source total. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/nota-instansi/ Tabel nota_instansi, histori_nota_instansi Assertion assertStatus, assertSame |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 928057f1157b469a280f7c693c916a6e92411016e6b85305e51e6afccf728b83
tests/Feature/MasterDataTest.php216 baris · 16 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian MasterDataTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_master_search_finds_a_new_supplier_and_product_after_the_first_page(): void | Skenario uji master search finds a new supplier and product after the first page. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/supplier, /api/produk, /api/supplier?q=Supplier%20Pilihan%20Akhir, /api/produk?q=PRD-AKHIR-9999&aktif=1 Assertion assertOk, assertNotContains, assertJsonPath |
function productInput(array $overrides = []): array | Helper pengujian productInput. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return array_replace(['kode_produk' => 'PRD-NEW', 'nama_produk' => 'Keyboard', 'harga_jual' => 200000, |
function test_admin_can_manage_operational_master_but_cannot_open_owner_controls(): void | Skenario uji admin can manage operational master but cannot open owner controls. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/supplier, /api/produk, /api/produk/, /api/cabang, /api/pengguna, /api/owner/cabang Assertion assertOk, assertJsonPath, assertCreated, assertGreaterThan, assertForbidden, assertCount |
function test_owner_creates_supplier_and_product_then_audits_price_change(): void | Skenario uji owner creates supplier and product then audits price change. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/supplier, /api/produk, /api/produk/ Assertion assertOk, assertCreated, assertJsonPath, assertSame, assertCount, assertJsonCount |
function test_owner_can_manage_branches_and_global_master_without_selected_tenant(): void | Skenario uji owner can manage branches and global master without selected tenant. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/cabang, /api/owner/cabang, /api/cabang/ Assertion assertOk, assertCreated, assertJsonPath, assertJsonCount, assertCount |
function test_mapped_branch_name_cannot_be_changed_to_break_tenant_mapping(): void | Skenario uji mapped branch name cannot be changed to break tenant mapping. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/cabang/, /api/owner/cabang-aktif, /api/me Panggilan samanhudi.fresh Assertion assertOk, assertUnprocessable, assertJsonValidationErrors, assertSame, assertJsonPath |
function test_branch_mapping_allows_only_cosmetic_name_normalization_and_rejects_normalized_duplicates(): void | Skenario uji branch mapping allows only cosmetic name normalization and rejects normalized duplicates. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/cabang/, /api/owner/cabang-aktif, /api/me, /api/cabang Tabel cabang Panggilan samanhudi.fresh Assertion assertOk, assertSame, assertJsonPath, assertUnprocessable, assertJsonValidationErrors |
function test_branch_reactivation_requires_complete_tenant_schema(): void | Skenario uji branch reactivation requires complete tenant schema. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/cabang/ Panggilan samanhudi.fresh Assertion assertOk, assertUnprocessable, assertJsonValidationErrors, assertSame |
function test_owner_can_manage_branch_master_data_but_cannot_activate_an_unprovisioned_branch(): void | Skenario uji owner can manage branch master data but cannot activate an unprovisioned branch. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/cabang, /api/cabang/ Tabel cabang Assertion assertOk, assertJsonCount, assertCreated, assertJsonPath, assertUnprocessable, assertJsonValidationErrors, assertSame, assertCount |
function readOnlyRoles(): array | Helper pengujian readOnlyRoles. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return [['kasir'], ['teknisi']]; |
function test_read_only_roles_see_active_products_but_cannot_manage_master(string $role): void | Skenario uji read only roles see active products but cannot manage master. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/produk?aktif=0, /api/produk, /api/supplier, /api/cabang, /api/stok Assertion assertOk, assertJsonCount, assertForbidden |
function invalidProductFields(): array | Helper pengujian invalidProductFields. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return [['harga_jual', -1], ['harga_grosir', -1], ['min_qty_grosir', 0], ['masa_garansi', -1], ['stok_tersedia', 99], ['id_supplier', 1], ['connect |
function test_product_validation_blocks_invalid_or_unmapped_fields(string $field, mixed $value): void | Skenario uji product validation blocks invalid or unmapped fields. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/produk Assertion assertOk, assertUnprocessable, assertJsonValidationErrors, assertSame |
function test_product_code_is_unique_and_master_has_no_delete_endpoints(): void | Skenario uji product code is unique and master has no delete endpoints. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/produk, /api/{$entity}/{$id} Assertion assertOk, assertUnprocessable, assertStatus, assertSame |
function test_master_audit_failure_rolls_back_master_change(): void | Skenario uji master audit failure rolls back master change. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/produk Assertion assertOk, assertStatus, assertSame, assertCount |
function test_master_mutations_require_csrf(): void | Skenario uji master mutations require csrf. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/produk Assertion assertOk, assertStatus |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 372536c86e570a316333e0e7dcaa71fe2fa0dbfae32bf1c9ae60022219d074ca
tests/Feature/MasterRightsAuditTest.php125 baris · 6 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian MasterRightsAuditTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_owner_can_view_durable_rights_history_without_email_or_password(): void | Skenario uji owner can view durable rights history without email or password. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pengguna, /api/pengguna/, /api/pengguna/riwayat?id_subject=, /api/pengguna/riwayat Tabel audit_hak_pengguna Assertion assertOk, assertCreated, assertCount, assertSame, assertStringNotContainsString, assertJsonPath, assertHeader, assertForbidden |
function test_master_audit_failure_rolls_back_employee_creation(): void | Skenario uji master audit failure rolls back employee creation. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pengguna Tabel audit_hak_pengguna Assertion assertOk, assertStatus, assertDontSee, assertFalse, assertSame |
function test_master_audit_failure_rolls_back_employee_role_update(): void | Skenario uji master audit failure rolls back employee role update. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pengguna/ Tabel audit_hak_pengguna Assertion assertOk, assertStatus, assertDontSee, assertSame, assertCount |
function test_branch_reassignment_has_canonical_audit_and_noop_does_not_duplicate(): void | Skenario uji branch reassignment has canonical audit and noop does not duplicate. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pengguna/ Tabel audit_hak_pengguna Assertion assertOk, assertJsonPath, assertSame |
function test_branch_assignment_rolls_back_when_master_audit_fails(): void | Skenario uji branch assignment rolls back when master audit fails. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pengguna/ Tabel audit_hak_pengguna Assertion assertOk, assertStatus, assertDontSee, assertSame, assertCount |
function test_master_rights_audit_is_append_only_at_database_level(): void | Skenario uji master rights audit is append only at database level. Assertion aktual ditunjukkan di kolom bukti dan kode. | Batas transaksi API /api/pengguna/ Tabel audit_hak_pengguna Assertion assertOk, assertSame, assertEquals |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 bfa726905c9224ac9e0c67af80f78ea8d8479d4eb7cfcf27058e2ea77354d5b9
tests/Feature/MasterRightsBoundaryTest.php110 baris · 4 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian MasterRightsBoundaryTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_rights_processing_rechecks_actor_without_relying_on_http_middleware(string $entry, string $state, int $status): void | Skenario uji rights processing rechecks actor without relying on http middleware. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tabel pengguna, audit_hak_pengguna, audit_log Assertion assertSame |
function test_active_owner_service_locks_identity_and_records_one_canonical_change(): void | Skenario uji active owner service locks identity and records one canonical change. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tabel audit_hak_pengguna Assertion assertSame, assertTrue |
function unauthorizedActors(): iterable | Helper pengujian unauthorizedActors. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Lihat signature dan isi fungsi. |
function process(string $entry, Pengguna $actor, int $subject): void | Helper pengujian process. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | API /api/pengguna/, /api/pengguna |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 62e6701d99a23c44c50f7dabdec54f25456f9a41bd0a541c63892bd915e48d31
tests/Feature/NotificationCenterTest.php108 baris · 6 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian NotificationCenterTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_cashier_notification_center_reports_branch_tasks_without_pii(): void | Skenario uji cashier notification center reports branch tasks without pii. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/notifikasi Tabel servis Assertion assertOk, assertJsonFragment, assertDontSee |
function test_admin_sees_pending_transfer_for_assigned_branch_but_technician_does_not(): void | Skenario uji admin sees pending transfer for assigned branch but technician does not. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/notifikasi Tabel mutasi_stok Assertion assertGreaterThan, assertOk, assertJsonFragment, assertJsonMissing |
function test_stock_monitoring_is_not_mixed_into_event_notifications(): void | Skenario uji stock monitoring is not mixed into event notifications. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/notifikasi, /api/dashboard-summary Tabel produk_cabang Assertion assertOk, assertJsonMissing, assertJsonPath |
function test_owner_notification_uses_plain_language_for_approval_links(): void | Skenario uji owner notification uses plain language for approval links. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/owner/cabang-aktif, /api/notifikasi Tabel mutasi_stok Assertion assertOk, assertJsonFragment, assertDontSee, assertSee |
function test_notification_center_requires_authenticated_tenant_context(): void | Skenario uji notification center requires authenticated tenant context. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/notifikasi Assertion assertUnauthorized |
function customer(string $name): int | Helper pengujian customer. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Tabel pelanggan |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 285f84d1c46e2721326a79577d01a7883aedc05ad506f9ab76a67a3989fe5c6b
tests/Feature/OnlineCartCatalogTest.php131 baris · 5 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian OnlineCartCatalogTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_cart_lookup_fetches_products_across_catalogue_pages_without_exposing_inactive_products(): void | Skenario uji cart lookup fetches products across catalogue pages without exposing inactive products. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/online/katalog? Assertion assertOk, assertJsonPath, assertEqualsCanonicalizing, assertArrayNotHasKey |
function test_cart_lookup_rejects_unbounded_or_invalid_product_identifiers(): void | Skenario uji cart lookup rejects unbounded or invalid product identifiers. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/online/katalog?id_cabang= Assertion assertUnprocessable, assertJsonValidationErrors |
function test_catalog_categories_filter_and_price_sort_are_applied_before_pagination(): void | Skenario uji catalog categories filter and price sort are applied before pagination. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/online/cabang, /api/online/katalog?id_cabang= Assertion assertOk, assertJsonPath, assertSame, assertUnprocessable, assertJsonValidationErrors |
function test_available_only_catalog_uses_the_selected_branch_and_does_not_filter_cart_restore(): void | Skenario uji available only catalog uses the selected branch and does not filter cart restore. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/online/katalog? Tabel produk_cabang Assertion assertOk, assertJsonPath, assertSame, assertCount, assertArrayNotHasKey |
function test_catalogue_requests_do_not_consume_checkout_rate_limit(): void | Skenario uji catalogue requests do not consume checkout rate limit. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/online/katalog?id_cabang=, /sanctum/csrf-cookie, /api/online/checkout Tabel produk_cabang Assertion assertOk, assertNoContent, assertCreated, assertHeader |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 ca504ae95e0877da25e7484585e73a26ed707d350ef30aeac8b156d8533c33c7
tests/Feature/OnlineOrderConcurrencyTest.php238 baris · 5 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian OnlineOrderConcurrencyTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function setUp(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Assertion assertSame |
function tearDown(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Lihat signature dan isi fungsi. |
function test_two_paid_guests_competing_for_last_stock_allow_exactly_one_payment_commit(): void | Skenario uji two paid guests competing for last stock allow exactly one payment commit. Assertion aktual ditunjukkan di kolom bukti dan kode. | Kunci baris perubahan API /api/online/checkout, /api/online/status/ Tabel produk_cabang, penjualan, pg_stat_activity, audit_log Assertion assertSame |
function runWorker(): void | Helper pengujian runWorker. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | API /api/online-order/ |
function cleanup(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Lihat signature dan isi fungsi. |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 223c358c159a87e35fb20c093164f30bcd2c586268a3570870bcf06bd3ebc269
tests/Feature/OnlineOrderIntegrityTest.php101 baris · 4 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian OnlineOrderIntegrityTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function product(): Produk | Helper pengujian product. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return Produk::factory()->create([ |
function pendingOrder(): array | Helper pengujian pendingOrder. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | API /sanctum/csrf-cookie, /api/online/checkout Tabel produk_cabang Assertion assertNoContent, assertCreated |
function corruptions(): array | Helper pengujian corruptions. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return [ |
function test_pending_ivp_rejects_corrupted_cdi(string $corruption): void | Skenario uji pending ivp rejects corrupted cdi. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tabel penjualan, detail_penjualan |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 612a636de31776e358e7bb2724058bca44cbb225b61e7ac429f9789d7b68a263
tests/Feature/OnlineOrderSecurityTest.php277 baris · 14 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian OnlineOrderSecurityTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function product(array $attributes = []): Produk | Helper pengujian product. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return Produk::factory()->create(array_replace([ |
function stock(Produk $product, int $quantity = 10): void | Helper pengujian stock. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Tabel produk_cabang |
function checkoutInput(Produk $product, array $overrides = []): array | Helper pengujian checkoutInput. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return array_replace([ |
function checkout(Produk $product, array $overrides = []): array | Helper pengujian checkout. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | API /sanctum/csrf-cookie, /api/online/checkout Assertion assertNoContent, assertCreated |
function relativeUrl(string $url): string | Helper pengujian relativeUrl. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return ($parts['path'] ?? '/').(isset($parts['query']) ? '?'.$parts['query'] : ''); |
function uploadProof(string $url, ?UploadedFile $file = null): TestResponse | Helper pengujian uploadProof. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return $response; |
function sale(int $id): object | Helper pengujian sale. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Tabel penjualan |
function test_owner_requires_selected_tenant_then_can_process_online_order(): void | Skenario uji owner requires selected tenant then can process online order. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/online-order, /api/owner/cabang-aktif, /api/online-order/ Tabel produk_cabang Assertion assertStatus, assertOk, assertJsonPath, assertSame |
function test_invalid_transitions_and_duplicate_payment_verification_do_not_double_issue_stock(): void | Skenario uji invalid transitions and duplicate payment verification do not double issue stock. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/online-order/ Tabel produk_cabang Assertion assertStatus, assertOk, assertSame |
function test_stock_shortage_at_payment_keeps_order_pending_and_rolls_back_actor_and_warranty(): void | Skenario uji stock shortage at payment keeps order pending and rolls back actor and warranty. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/online-order/ Tabel produk_cabang, detail_penjualan Assertion assertStatus, assertOk, assertNull, assertSame |
function test_ivp_failure_rolls_back_verified_payment_stock_and_warranty(): void | Skenario uji ivp failure rolls back verified payment stock and warranty. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/online-order/ Tabel detail_penjualan, produk_cabang Assertion assertStatus, assertOk, assertDontSee, assertNull, assertSame |
function test_audit_failure_rolls_back_verified_payment_stock_and_prior_audits(): void | Skenario uji audit failure rolls back verified payment stock and prior audits. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/online-order/ Tabel detail_penjualan, produk_cabang, audit_log Assertion assertStatus, assertOk, assertDontSee, assertNull, assertSame |
function test_payment_proof_rejects_invalid_file_and_cannot_be_replaced(): void | Skenario uji payment proof rejects invalid file and cannot be replaced. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertUnprocessable, assertJsonValidationErrors, assertNull, assertStatus, assertSame, assertExists |
function test_expired_tracking_link_and_cross_tenant_payment_proof_access_are_rejected(): void | Skenario uji expired tracking link and cross tenant payment proof access are rejected. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/online-order/ Assertion assertStatus, assertForbidden, assertOk, assertNotFound |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 3d19e08e852e6610d92efa21e5cd5177e5c683486036ca44119b9649358b5226
tests/Feature/OnlineOrderTest.php329 baris · 15 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian OnlineOrderTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function product(array $attributes = []): Produk | Helper pengujian product. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return Produk::factory()->create(array_replace([ |
function stock(Produk $product, int $quantity = 10, string $connection = 'tenant_samanhudi'): void | Helper pengujian stock. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Tabel produk_cabang |
function checkoutInput(Produk $product, array $overrides = []): array | Helper pengujian checkoutInput. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return array_replace([ |
function checkout(Produk $product, array $overrides = []): array | Helper pengujian checkout. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | API /sanctum/csrf-cookie, /api/online/checkout Assertion assertNoContent, assertCreated |
function relativeUrl(string $url): string | Helper pengujian relativeUrl. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return ($parts['path'] ?? '/').(isset($parts['query']) ? '?'.$parts['query'] : ''); |
function uploadProof(string $url): TestResponse | Helper pengujian uploadProof. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return $response; |
function test_guest_catalog_is_paginated_without_exposing_inactive_products(): void | Skenario uji guest catalog is paginated without exposing inactive products. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/online/katalog?id_cabang= Assertion assertOk, assertJsonPath, assertCount, assertJsonMissing |
function test_guest_catalog_and_checkout_use_server_price_without_reducing_stock(): void | Skenario uji guest catalog and checkout use server price without reducing stock. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/online/cabang, /api/online/katalog?id_cabang= Tabel penjualan, detail_penjualan, produk_cabang, pengiriman Assertion assertOk, assertJsonFragment, assertJsonPath, assertJsonMissingPath, assertSame, assertNull, assertCount |
function test_signed_tracking_and_payment_proof_are_guest_safe_and_private(): void | Skenario uji signed tracking and payment proof are guest safe and private. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tabel penjualan Assertion assertOk, assertJsonPath, assertJsonMissingPath, assertNotNull, assertStatus, assertExists, assertCount, assertForbidden |
function test_cashier_verifies_payment_then_shipping_flow_reduces_stock_once(): void | Skenario uji cashier verifies payment then shipping flow reduces stock once. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/online-order/ Tabel penjualan, detail_penjualan, produk_cabang, pengiriman Assertion assertStatus, assertOk, assertJsonPath, assertSame, assertNotNull, assertMatchesRegularExpression |
function test_guest_can_cancel_unpaid_order_without_changing_stock(): void | Skenario uji guest can cancel unpaid order without changing stock. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tabel produk_cabang, penjualan Assertion assertOk, assertJsonPath, assertSame, assertCount, assertStatus |
function test_pickup_flow_has_no_shipping_row_and_completes_after_ready(): void | Skenario uji pickup flow has no shipping row and completes after ready. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/online-order/ Tabel pengiriman Assertion assertSame, assertStatus, assertOk, assertJsonPath |
function test_rejected_payment_does_not_reduce_stock(): void | Skenario uji rejected payment does not reduce stock. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/online-order/ Tabel produk_cabang, penjualan Assertion assertStatus, assertOk, assertJsonPath, assertSame |
function test_technician_cannot_process_online_order_and_tenant_isolation_is_preserved(): void | Skenario uji technician cannot process online order and tenant isolation is preserved. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/online-order, /api/online-order/ Assertion assertOk, assertForbidden, assertNotFound |
function test_checkout_rejects_client_controlled_price_actor_and_insufficient_stock(): void | Skenario uji checkout rejects client controlled price actor and insufficient stock. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /sanctum/csrf-cookie, /api/online/checkout Tabel penjualan Assertion assertNoContent, assertUnprocessable, assertJsonValidationErrors, assertSame |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 67856bba73fc3bba3ee96314768750a003f529e530cb19f0e4f86d04243a3328
tests/Feature/OnlineOrderUiLinkTest.php25 baris · 1 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian OnlineOrderUiLinkTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_tracking_page_wraps_the_signed_tracking_api_url_without_weakening_signature(): void | Skenario uji tracking page wraps the signed tracking api url without weakening signature. Assertion aktual ditunjukkan di kolom bukti dan kode. | Pemeriksaan signature API /api/online/status/WEB-TEST-001, /api/online/status/WEB-TEST-001/bukti-pembayaran Assertion assertArrayHasKey, assertTrue, assertSame, assertStringContainsString |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 fa77d192ac0a3dd0d25a129e86b3f72f7497f7986d6ad1ef32433cbbfe9e52e5
tests/Feature/OnlinePaymentGuideTest.php30 baris · 1 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian OnlinePaymentGuideTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_public_checkout_exposes_only_complete_valid_merchant_bank_details(): void | Skenario uji public checkout exposes only complete valid merchant bank details. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/online/cabang Assertion assertOk, assertJsonPath, assertJsonFragment |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 e605dc69ecacf52177f6a0a4e256117cb63e8ea0994f19046a7be343041b5aee
tests/Feature/OperationalAlertingTest.php115 baris · 7 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian OperationalAlertingTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_receiver_failure_is_visible_without_logging_request_secrets(): void | Skenario uji receiver failure is visible without logging request secrets. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertFalse |
function setUp(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Lihat signature dan isi fungsi. |
function test_alert_payload_is_redacted_and_receiver_acknowledgement_is_required(): void | Skenario uji alert payload is redacted and receiver acknowledgement is required. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertTrue |
function test_production_safe_error_reporting_sends_redacted_alert(): void | Skenario uji production safe error reporting sends redacted alert. Assertion aktual ditunjukkan di kolom bukti dan kode. | return ($request->data()['event'] ?? null) === 'rajawali.business.operation_failed' |
function test_alert_test_command_fails_closed_when_receiver_rejects_request(): void | Skenario uji alert test command fails closed when receiver rejects request. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertSame, assertStringContainsString |
function test_alert_test_command_succeeds_only_after_receiver_acknowledges_request(): void | Skenario uji alert test command succeeds only after receiver acknowledges request. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertSame, assertStringContainsString |
function test_plain_http_or_weak_token_is_not_considered_configured(): void | Skenario uji plain http or weak token is not considered configured. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertFalse |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 cdf1e8b561517e00cd17db1492d01dd59c2e7122b1f7e7bce5cc9817c7c48c8d
tests/Feature/OperationalDrilldownTest.php175 baris · 5 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian OperationalDrilldownTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_pos_history_is_offline_only_searchable_and_returns_summary(): void | Skenario uji pos history is offline only searchable and returns summary. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/penjualan?q=Pelanggan%20POS&metode=tunai&dari=2026-09-26&sampai=2026-09-26, /api/penjualan?dari=2026-09-27&sampai=2026-09-26 Tabel pelanggan, penjualan, detail_penjualan Assertion assertOk, assertJsonCount, assertJsonPath, assertUnprocessable |
function test_online_order_filters_payment_fulfillment_dates_and_returns_summary(): void | Skenario uji online order filters payment fulfillment dates and returns summary. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/online-order?status_pembayaran=menunggu_verifikasi&penerimaan=kirim&dari=2026-09-26&sampai=2026-09-26 Tabel pelanggan, penjualan, detail_penjualan, pengiriman Assertion assertOk, assertJsonCount, assertJsonPath |
function test_service_filters_assignment_dates_returns_summary_and_customer_contact(): void | Skenario uji service filters assignment dates returns summary and customer contact. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/servis?penugasan=belum&dari=2026-09-26&sampai=2026-09-26, /api/servis/{$unassigned} Tabel pelanggan, servis Assertion assertOk, assertJsonCount, assertJsonPath |
function test_warranty_filters_type_dates_returns_summary_and_customer_contact(): void | Skenario uji warranty filters type dates returns summary and customer contact. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/klaim-garansi?jenis=produk&dari=2026-09-26&sampai=2026-09-26 Tabel pelanggan, penjualan, detail_penjualan, klaim_garansi Assertion assertOk, assertJsonCount, assertJsonPath |
function test_stock_transfer_filters_counterpart_branch_dates_and_returns_summary(): void | Skenario uji stock transfer filters counterpart branch dates and returns summary. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/mutasi-stok?id_cabang_lain= Tabel mutasi_stok Assertion assertOk, assertJsonPath, assertJsonFragment, assertStatus |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 cff493a40344d166aeb872d48f768a0d750acb0185ea14e5642513760a78c3d3
tests/Feature/OperationalListFilterTest.php113 baris · 4 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian OperationalListFilterTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_inventory_page_size_is_applied_to_the_tenant_query_and_rejects_unbounded_sizes(): void | Skenario uji inventory page size is applied to the tenant query and rejects unbounded sizes. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/stok?per_page=10, /api/stok?per_page=10&page=2, /api/stok?per_page=25, /api/stok?per_page= Tabel produk_cabang Assertion assertOk, assertJsonPath, assertJsonCount, assertUnprocessable |
function test_inventory_purchase_and_service_filters_are_server_side_and_tenant_scoped(): void | Skenario uji inventory purchase and service filters are server side and tenant scoped. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/stok?status=karantina&q=FILTER-STOCK-1, /api/pembelian?q=PO-FILTER-UNIK, /api/servis?status=siap_diambil&q=FilterBrand Tabel produk_cabang, pembelian, servis Assertion assertOk, assertJsonPath |
function test_online_order_transfer_and_warranty_filters_validate_and_filter(): void | Skenario uji online order transfer and warranty filters validate and filter. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/online-order?q=Order%20Filter&status=diproses, /api/klaim-garansi?status=tidak-valid, /api/servis?status=tidak-valid, /api/mutasi-stok?q=FILTER-MUTASI&approval=menunggu Tabel penjualan, mutasi_stok Assertion assertOk, assertJsonPath, assertUnprocessable |
function customer(string $name = 'Filter Customer'): int | Helper pengujian customer. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Tabel pelanggan |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 f95472b546e03a10512c38a067c5490125b2df5ba745e32665fc080ead468729
tests/Feature/OperationalSecurityTest.php98 baris · 7 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian OperationalSecurityTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_security_headers_are_applied_to_html_and_prevent_framing(): void | Skenario uji security headers are applied to html and prevent framing. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertOk, assertHeader, assertStringContainsString |
function test_api_responses_are_marked_no_store(): void | Skenario uji api responses are marked no store. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/online/cabang Assertion assertOk, assertStringContainsString, assertHeader |
function test_production_https_response_receives_hsts(): void | Skenario uji production https response receives hsts. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertOk, assertStringContainsString |
function test_api_cors_only_advertises_the_explicit_application_origin(): void | Skenario uji api cors only advertises the explicit application origin. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/online/cabang Assertion assertSame, assertFalse, assertOk, assertHeader, assertNotSame |
function test_reverb_allowed_origins_are_not_wildcarded(): void | Skenario uji reverb allowed origins are not wildcarded. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertIsArray, assertNotContains |
function test_readiness_endpoint_checks_all_databases_and_2pc_without_exposing_names_or_secrets(): void | Skenario uji readiness endpoint checks all databases and 2pc without exposing names or secrets. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertOk, assertJsonPath, assertStringNotContainsString |
function test_security_check_reports_actual_e1_state_for_each_tenant(): void | Skenario uji security check reports actual e1 state for each tenant. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertSame, assertTrue, assertMatchesRegularExpression |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 cc77bede4e31d24bcf97c7e8b6cf2dea0bf99b53a062049e9628c155a4b849bf
tests/Feature/OperationsDeploymentTest.php155 baris · 14 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian OperationsDeploymentTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_liveness_is_public_and_does_not_expose_database_details(): void | Skenario uji liveness is public and does not expose database details. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertOk, assertJsonPath, assertStringNotContainsString |
function test_readiness_reports_zero_pending_prepared_transactions(): void | Skenario uji readiness reports zero pending prepared transactions. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertOk, assertJsonPath |
function test_preflight_command_is_non_destructive_and_succeeds_locally(): void | Skenario uji preflight command is non destructive and succeeds locally. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertSame, assertDatabaseCount |
function test_production_release_gate_invokes_registry_and_e1_checks_and_fails_on_missing_configuration(): void | Skenario uji production release gate invokes registry and e1 checks and fails on missing configuration. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertSame, assertStringContainsString, assertStringNotContainsString, assertDatabaseCount |
function test_smoke_command_checks_existing_routes_and_databases(): void | Skenario uji smoke command checks existing routes and databases. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertSame |
function test_external_smoke_checks_https_redirect_and_dynamic_and_static_headers(): void | Skenario uji external smoke checks https redirect and dynamic and static headers. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertSame, assertStringContainsString |
function test_external_smoke_fails_closed_when_static_edge_headers_are_missing(): void | Skenario uji external smoke fails closed when static edge headers are missing. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertSame, assertStringContainsString |
function test_ci_collects_dependency_sbom_build_metadata_and_release_evidence(): void | Skenario uji ci collects dependency sbom build metadata and release evidence. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStringContainsString |
function test_production_release_gate_requires_alert_receiver_and_independent_log_archive(): void | Skenario uji production release gate requires alert receiver and independent log archive. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertSame, assertStringContainsString |
function test_instance_guard_accepts_matching_staff_branch(): void | Skenario uji instance guard accepts matching staff branch. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/stok Assertion assertOk |
function test_instance_guard_rejects_staff_branch_on_wrong_container(): void | Skenario uji instance guard rejects staff branch on wrong container. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/stok Assertion assertOk, assertStatus |
function test_instance_guard_is_disabled_for_local_single_process_mode(): void | Skenario uji instance guard is disabled for local single process mode. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/stok Assertion assertOk |
function test_staff_login_emits_non_sensitive_instance_routing_cookie(): void | Skenario uji staff login emits non sensitive instance routing cookie. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertOk, assertNotNull, assertTrue |
function test_owner_branch_switch_emits_instance_routing_cookie_without_making_it_authoritative(): void | Skenario uji owner branch switch emits instance routing cookie without making it authoritative. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/owner/cabang-aktif, /api/stok Assertion assertOk, assertTrue, assertStatus |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 09a714a727ac183d591b76f1773124f1694c46a82a7c0143353731ff08de36a0
tests/Feature/Owasp2025RegressionTest.php116 baris · 12 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian Owasp2025RegressionTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_a01_broken_access_control_technician_cannot_process_online_orders(): void | Skenario uji a01 broken access control technician cannot process online orders. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/online-order Assertion assertOk, assertForbidden |
function test_a01_notification_center_is_authenticated_and_exposes_aggregate_tasks_only(): void | Skenario uji a01 notification center is authenticated and exposes aggregate tasks only. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/notifikasi Assertion assertUnauthorized, assertOk, assertStringNotContainsString |
function test_a02_security_misconfiguration_headers_block_framing_and_mime_sniffing(): void | Skenario uji a02 security misconfiguration headers block framing and mime sniffing. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertOk, assertHeader |
function test_a03_supply_chain_lock_files_are_present_and_versioned(): void | Skenario uji a03 supply chain lock files are present and versioned. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertArrayHasKey, assertGreaterThanOrEqual |
function test_a04_cryptographic_failures_session_and_password_hashing_are_hardened(): void | Skenario uji a04 cryptographic failures session and password hashing are hardened. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertTrue, assertSame, assertGreaterThanOrEqual |
function test_a05_injection_report_type_route_rejects_non_allowlisted_shape(): void | Skenario uji a05 injection report type route rejects non allowlisted shape. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/laporan/%27%20OR%201%3D1-- Assertion assertNotFound |
function test_a05_operational_list_filters_reject_non_allowlisted_values(): void | Skenario uji a05 operational list filters reject non allowlisted values. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pengguna?role=owner%27%20OR%201%3D1--, /api/produk?status=aktif%27%20OR%201%3D1--, /api/owner/cabang-aktif, /api/stok?status=tersedia%27%20OR%201%3D1--, /api/penjualan?status=selesai%27%20OR%201%3D1--, /api/laporan/servis?status=selesai%27%20OR%201%3D1-- Assertion assertOk, assertUnprocessable |
function test_a06_insecure_design_has_no_generic_direct_stock_mutation_endpoint(): void | Skenario uji a06 insecure design has no generic direct stock mutation endpoint. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStringNotContainsString |
function test_a07_authentication_failures_do_not_reveal_whether_account_exists(): void | Skenario uji a07 authentication failures do not reveal whether account exists. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /sanctum/csrf-cookie, /api/login Assertion assertNoContent, assertStatus, assertSame |
function test_a08_integrity_sensitive_stock_transfer_approval_is_signed_and_role_limited(): void | Skenario uji a08 integrity sensitive stock transfer approval is signed and role limited. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertNotNull, assertContains |
function test_a09_logging_failed_login_creates_audit_record_without_password_material(): void | Skenario uji a09 logging failed login creates audit record without password material. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStatus, assertCount, assertStringNotContainsString |
function test_a10_exceptional_conditions_return_generic_api_error_without_stack_or_message(): void | Skenario uji a10 exceptional conditions return generic api error without stack or message. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/example Assertion assertNotNull, assertSame, assertStringNotContainsString |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 bee1fe26235026334c662cdcc628f30a0ea9f071a3373f99229ff6a814b73ff9
tests/Feature/OwnPasswordChangeTest.php89 baris · 4 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian OwnPasswordChangeTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_all_staff_roles_can_change_their_own_password_with_a_canonical_audit(): void | Skenario uji all staff roles can change their own password with a canonical audit. Assertion aktual ditunjukkan di kolom bukti dan kode. | Pemeriksaan hash API /api/me/password, /api/me, /api/logout Tabel sessions, audit_hak_pengguna Assertion assertOk, assertJsonPath, assertTrue, assertSame, assertStringNotContainsString, assertUnauthorized, assertNoContent |
function test_invalid_current_password_confirmation_and_unauthorized_fields_do_not_change_cdi(): void | Skenario uji invalid current password confirmation and unauthorized fields do not change cdi. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/me/password, /api/me Tabel audit_hak_pengguna Assertion assertOk, assertUnprocessable, assertJsonValidationErrors, assertSame |
function test_password_change_cannot_be_called_without_a_session(): void | Skenario uji password change cannot be called without a session. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /sanctum/csrf-cookie, /api/me/password Assertion assertNoContent, assertUnauthorized |
function test_audit_failure_rolls_back_password_change_and_does_not_invalidate_session(): void | Skenario uji audit failure rolls back password change and does not invalidate session. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/me/password, /api/me Tabel audit_hak_pengguna Assertion assertOk, assertStatus, assertSame |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 66ead0a1607f40cd45a3340f5f5c1f86537b1e9ac7ac7fd3df57b6e0bac5bf51
tests/Feature/OwnProfileChangeTest.php89 baris · 3 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian OwnProfileChangeTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_owner_can_change_own_name_and_email_with_canonical_audit(): void | Skenario uji owner can change own name and email with canonical audit. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/me/profile, /api/me Tabel audit_hak_pengguna Assertion assertOk, assertJsonPath, assertSame, assertNull, assertStringNotContainsString |
function test_non_owner_duplicate_email_and_extra_fields_are_rejected_without_changes(): void | Skenario uji non owner duplicate email and extra fields are rejected without changes. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/me/profile Assertion assertOk, assertUnprocessable, assertJsonValidationErrors, assertSame, assertForbidden, assertNotSame |
function test_audit_failure_rolls_back_owner_profile_change(): void | Skenario uji audit failure rolls back owner profile change. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/me/profile Tabel audit_hak_pengguna Assertion assertOk, assertStatus, assertSame |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 da55c40ce2e345c3746a14abcaf2600342eeb803bfb6fdd71c76ef790543f9a3
tests/Feature/PageUrlTest.php49 baris · 5 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian PageUrlTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_unknown_and_malformed_page_queries_redirect_to_the_clean_page(): void | Skenario uji unknown and malformed page queries redirect to the clean page. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertRedirect |
function test_normal_pages_and_the_existing_login_link_remain_available(): void | Skenario uji normal pages and the existing login link remain available. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertOk |
function test_signed_order_tracking_page_query_is_not_removed(): void | Skenario uji signed order tracking page query is not removed. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tautan sementara Assertion assertOk |
function test_external_tracking_target_is_rejected(): void | Skenario uji external tracking target is rejected. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertRedirect |
function test_error_styles_do_not_require_inline_csp_permission(): void | Skenario uji error styles do not require inline csp permission. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertNotFound, assertSee, assertDontSee, assertStringNotContainsString |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 7d92ea85e12c44eb34c4b86f6925fabbca34b8eca059b235b1cd87c111faf32a
tests/Feature/PaymentSettingsManagementTest.php71 baris · 3 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian PaymentSettingsManagementTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_owner_can_save_shared_payment_details_and_audit_change(): void | Skenario uji owner can save shared payment details and audit change. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/owner/pengaturan-pembayaran, /api/online/cabang Tabel payment_settings_audit, payment_settings Assertion assertOk, assertJsonPath, assertSame, assertCount, assertStringNotContainsString |
function test_non_owner_cannot_read_or_change_payment_settings(): void | Skenario uji non owner cannot read or change payment settings. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/owner/pengaturan-pembayaran Assertion assertOk, assertForbidden |
function test_cannot_activate_incomplete_bank_or_missing_qris(): void | Skenario uji cannot activate incomplete bank or missing qris. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/owner/pengaturan-pembayaran Tabel payment_settings_audit Assertion assertOk, assertUnprocessable, assertSame |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 d143898aa4ea43d815d60274ccc5cfee649b7b8604530bc2953d570b69dd5eb7
tests/Feature/PgAdminInventoryE1ProvisioningTest.php307 baris · 14 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian PgAdminInventoryE1ProvisioningTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function setUp(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Tabel produk_cabang Panggilan postgres.start |
function tearDown(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Panggilan postgres.stop |
function test_exact_pgadmin_artifact_is_idempotent_preserves_data_and_enforces_inventory_tp_on_both_tenants(): void | Skenario uji exact pgadmin artifact is idempotent preserves data and enforces inventory tp on both tenants. Assertion aktual ditunjukkan di kolom bukti dan kode. | Batas transaksi Kunci baris perubahan Kunci referensi baca Tabel produk_cabang Assertion assertEquals, assertNotContains, assertSame, assertCount |
function test_sql_and_cli_installer_produce_equivalent_enforcement_metadata(): void | Skenario uji sql and cli installer produce equivalent enforcement metadata. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertSame, assertEquals, assertNotContains |
function test_sql_refuses_wrong_database_and_non_admin_without_changes(): void | Skenario uji sql refuses wrong database and non admin without changes. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertUnchanged |
function test_sql_refuses_missing_migration_function_before_changing_roles_or_ownership(): void | Skenario uji sql refuses missing migration function before changing roles or ownership. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertUnchanged |
function test_sql_rolls_back_all_hardening_when_a_late_grant_fails(): void | Skenario uji sql rolls back all hardening when a late grant fails. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertUnchanged |
function test_sql_postconditions_reject_inherited_dml_and_roll_back_instead_of_reporting_success(): void | Skenario uji sql postconditions reject inherited dml and roll back instead of reporting success. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertUnchanged |
function test_dedicated_backup_identity_can_freeze_and_dump_hardened_inventory_without_runtime_privilege_changes(): void | Skenario uji dedicated backup identity can freeze and dump hardened inventory without runtime privilege changes. Assertion aktual ditunjukkan di kolom bukti dan kode. | Batas transaksi Tabel produk_cabang Assertion assertFalse, assertSame, assertGreaterThan, assertNotContains |
function runSql(Connection $db): void | Helper pengujian runSql. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Assertion assertIsString |
function expectSqlFailure(Connection $db, string $message): void | Helper pengujian expectSqlFailure. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Assertion assertStringContainsString |
function checks(Connection $db): array | Helper pengujian checks. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return app(InventoryE1Status::class)->checks($db, 'rajawali_inventory_tp'); |
function metadata(Connection $db): array | Helper pengujian metadata. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return [ |
function assertUnchanged(): void | Helper pengujian assertUnchanged. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Tabel produk_cabang Assertion assertSame, assertFalse |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 9236a260af7ff242e74c3788842997a31637334e3b4c03fd2f282540ad26bf55
tests/Feature/PrintDocumentSecurityTest.php29 baris · 2 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian PrintDocumentSecurityTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_shared_print_helper_uses_text_nodes_and_severs_opener(): void | Skenario uji shared print helper uses text nodes and severs opener. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStringContainsString, assertStringNotContainsString |
function test_operational_print_views_use_the_shared_safe_helper(): void | Skenario uji operational print views use the shared safe helper. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStringContainsString |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 99c7e64648c5ce2abc77a6c7913c0e9fb0f8d9e571c878c3cb912aecf5ce8d53
tests/Feature/ProductWarrantyTest.php115 baris · 7 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian ProductWarrantyTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_product_claim_uses_sale_warranty_snapshot_without_service_or_current_master_warranty(): void | Skenario uji product claim uses sale warranty snapshot without service or current master warranty. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/klaim-garansi/produk, /api/klaim-garansi?q=, /api/klaim-garansi/sumber?jenis=produk Tabel penjualan, servis Assertion assertOk, assertCreated, assertJsonPath, assertSame, assertCount |
function test_wrong_sale_product_pair_unpaid_or_pending_sale_and_no_warranty_are_rejected(): void | Skenario uji wrong sale product pair unpaid or pending sale and no warranty are rejected. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/klaim-garansi/produk Tabel penjualan, klaim_garansi Assertion assertOk, assertUnprocessable, assertSame |
function test_product_claim_includes_the_entire_snapshot_expiry_date_but_not_the_next_day(): void | Skenario uji product claim includes the entire snapshot expiry date but not the next day. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/klaim-garansi/produk Tabel detail_penjualan Assertion assertOk, assertCreated, assertUnprocessable |
function test_partial_or_mixed_sources_and_client_warranty_dates_are_rejected(): void | Skenario uji partial or mixed sources and client warranty dates are rejected. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/klaim-garansi/produk Tabel klaim_garansi Assertion assertOk, assertUnprocessable, assertSame |
function test_product_duplicate_and_other_tenant_access_are_rejected(): void | Skenario uji product duplicate and other tenant access are rejected. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/klaim-garansi/produk, /api/klaim-garansi, /api/klaim-garansi/{$id}, /api/klaim-garansi/sumber?jenis=produk Assertion assertOk, assertCreated, assertStatus, assertSame, assertUnprocessable, assertJsonCount, assertNotFound |
function failures(): array | Helper pengujian failures. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return [[AuditLogger::class, 'recordCdi'], [WarrantyClaimIntegrity::class, 'verify']]; |
function test_product_claim_failure_rolls_back_without_touching_sale_or_stock(string $class, string $method): void | Skenario uji product claim failure rolls back without touching sale or stock. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/klaim-garansi/produk Assertion assertOk, assertStatus, assertSame |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 c2b7d551e229718d0d22e7de9051ea45bd78d903b9d269db8764b1d8b0f88f1a
tests/Feature/PurchaseIntegrityTest.php121 baris · 3 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian PurchaseIntegrityTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function corruptions(): array | Helper pengujian corruptions. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return [['stock_equation'], ['branch'], ['inactive_product'], ['missing_product'], ['duplicate_detail'], |
function test_ivp_detects_inconsistent_logical_state_without_http_validation(string $corruption): void | Skenario uji ivp detects inconsistent logical state without http validation. Assertion aktual ditunjukkan di kolom bukti dan kode. | Pemeriksaan IVP Panggilan samanhudi.forceFill, samanhudi.delete |
function test_stored_ivp_and_command_replay_audit_even_after_a_later_restock(): void | Skenario uji stored ivp and command replay audit even after a later restock. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pembelian Tabel produk_cabang, audit_log Assertion assertSuccessful, assertSame |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 840025b8f99a12f7b1b15ee463af2078fef88d305ee8272f50ad9940ff72f6cc
tests/Feature/PwaRealtimeAdvancedTest.php53 baris · 5 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian PwaRealtimeAdvancedTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_mutating_http_requests_are_blocked_client_side_while_offline(): void | Skenario uji mutating http requests are blocked client side while offline. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStringContainsString |
function test_service_worker_update_waits_for_explicit_user_activation(): void | Skenario uji service worker update waits for explicit user activation. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStringContainsString, assertNotFalse, assertStringNotContainsString |
function test_pwa_ui_exposes_update_action_and_never_promises_offline_transactions(): void | Skenario uji pwa ui exposes update action and never promises offline transactions. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStringContainsString |
function test_realtime_client_deduplicates_duplicate_business_events(): void | Skenario uji realtime client deduplicates duplicate business events. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStringContainsString |
function test_realtime_activity_history_is_session_scoped_not_persisted_to_server(): void | Skenario uji realtime activity history is session scoped not persisted to server. Assertion aktual ditunjukkan di kolom bukti dan kode. | Penyimpanan per tab API /api/notifikasi Assertion assertStringContainsString, assertStringNotContainsString |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 2ab1c93a37d1c97574e10f39c3d1b89060113617bfea168dcfc3af3bf46c2963
tests/Feature/PwaSecurityTest.php65 baris · 6 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian PwaSecurityTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_manifest_is_installable_and_uses_local_icons(): void | Skenario uji manifest is installable and uses local icons. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertSame, assertCount, assertStringStartsWith |
function test_required_pwa_icons_have_expected_dimensions(): void | Skenario uji required pwa icons have expected dimensions. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertSame |
function test_service_worker_never_queues_or_caches_mutating_requests(): void | Skenario uji service worker never queues or caches mutating requests. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStringContainsString, assertStringNotContainsString |
function test_service_worker_explicitly_excludes_sensitive_api_and_evidence_urls(): void | Skenario uji service worker explicitly excludes sensitive api and evidence urls. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/, /sanctum/ Assertion assertStringContainsString |
function test_offline_page_warns_that_transactions_are_not_stored_offline(): void | Skenario uji offline page warns that transactions are not stored offline. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStringContainsString |
function test_application_shell_registers_manifest_and_service_worker(): void | Skenario uji application shell registers manifest and service worker. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStringContainsString |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 4b8dca2e3c00b311346206aacf57f74d70edf0c9c88dd2abad5d8a737705edc7
tests/Feature/RealtimeSecurityTest.php100 baris · 7 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian RealtimeSecurityTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_broadcast_authentication_requires_an_authenticated_account(): void | Skenario uji broadcast authentication requires an authenticated account. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /sanctum/csrf-cookie, /api/broadcasting/auth Assertion assertNoContent, assertUnauthorized |
function test_cashier_can_authorize_only_the_active_branch_channel(): void | Skenario uji cashier can authorize only the active branch channel. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/broadcasting/auth Assertion assertOk, assertForbidden |
function test_owner_must_select_a_branch_before_authorizing_realtime_channel(): void | Skenario uji owner must select a branch before authorizing realtime channel. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/broadcasting/auth, /api/owner/cabang-aktif Assertion assertOk, assertStatus |
function test_technician_can_receive_branch_refresh_events_without_gaining_other_permissions(): void | Skenario uji technician can receive branch refresh events without gaining other permissions. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/broadcasting/auth, /api/online-order Assertion assertOk, assertForbidden |
function test_business_event_contains_only_refresh_metadata(): void | Skenario uji business event contains only refresh metadata. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertSame, assertArrayNotHasKey |
function test_successful_api_mutation_broadcasts_after_the_response(): void | Skenario uji successful api mutation broadcasts after the response. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/example Assertion assertSame |
function test_failed_api_mutation_does_not_broadcast(): void | Skenario uji failed api mutation does not broadcast. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/example |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 df7cbfbac02784e46f1f40fddf8d519354dd9875e869f434ae8e0899db3e2508
tests/Feature/ReleaseConfigurationTest.php171 baris · 8 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian ReleaseConfigurationTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function setUp(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Panggilan app.usePublicPath |
function tearDown(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Lihat signature dan isi fungsi. |
function test_complete_production_configuration_passes_without_disclosing_values(): void | Skenario uji complete production configuration passes without disclosing values. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertNotContains, assertStringNotContainsString |
function test_unsafe_configuration_fails_closed(string $key, mixed $value, string $check): void | Skenario uji unsafe configuration fails closed. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertFalse |
function unsafeConfigurations(): array | Helper pengujian unsafeConfigurations. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return [ |
function test_missing_qris_and_public_backup_directory_fail_release(): void | Skenario uji missing qris and public backup directory fail release. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertFalse |
function test_smtp_transport_enforces_tls_and_timeout_without_sending_mail(): void | Skenario uji smtp transport enforces tls and timeout without sending mail. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertTrue, assertSame |
function test_local_environment_cannot_pass_production_validation(): void | Skenario uji local environment cannot pass production validation. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertFalse |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 238bd51585121beb25248a159ee5ed970b59d90ff8c5beeb9987e69d9590f670
tests/Feature/ReleaseSecurityTest.php97 baris · 9 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian ReleaseSecurityTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_injection_search_is_literal_and_does_not_leak_rows(string $path): void | Skenario uji injection search is literal and does not leak rows. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tabel servis Assertion assertOk, assertJsonCount, assertSame |
function searchEndpoints(): array | Helper pengujian searchEndpoints. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | API /api/produk, /api/pelanggan, /api/servis |
function test_oversized_search_is_rejected(string $path): void | Skenario uji oversized search is rejected. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertOk, assertUnprocessable |
function test_service_options_exclude_receiver_inactive_and_other_branch_technicians(): void | Skenario uji service options exclude receiver inactive and other branch technicians. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/servis/options Assertion assertOk, assertContains, assertNotContains |
function test_technician_cannot_enumerate_assignment_options(): void | Skenario uji technician cannot enumerate assignment options. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/servis/options Assertion assertOk, assertForbidden |
function test_service_search_cannot_expand_technician_assignment_scope(): void | Skenario uji service search cannot expand technician assignment scope. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/servis?q=%25 Assertion assertOk, assertJsonCount |
function test_service_list_is_readable_and_technician_filter_cannot_expand_scope(): void | Skenario uji service list is readable and technician filter cannot expand scope. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/servis?q=, /api/servis?id_teknisi= Assertion assertOk, assertJsonPath, assertForbidden |
function test_event_identity_is_stable_for_retransmission_but_unique_for_separate_changes(): void | Skenario uji event identity is stable for retransmission but unique for separate changes. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertSame, assertNotSame, assertMatchesRegularExpression |
function test_guest_cannot_access_service_options_or_customer_search(): void | Skenario uji guest cannot access service options or customer search. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/servis/options, /api/pelanggan?q=Browser Assertion assertUnauthorized |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 3253ebaa1e26a8a43a2aa97e313cc6efca8f4549aafa64c946fdb317c137afef
tests/Feature/ReportingTest.php249 baris · 15 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian ReportingTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function sale(string $connection = 'tenant_samanhudi', int $value = 100, string $channel = 'OFFLINE', string $status = 'lunas', ?string $date = null): int | Helper pengujian sale. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Tabel penjualan, detail_penjualan |
function test_all_seventeen_owner_reports_execute_against_existing_schema(): void | Skenario uji all seventeen owner reports execute against existing schema. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/laporan/options, /api/laporan/ Assertion assertOk, assertJsonCount, assertJsonStructure |
function test_owner_cross_branch_sales_include_paid_pos_and_online_without_unpaid_orders(): void | Skenario uji owner cross branch sales include paid pos and online without unpaid orders. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/laporan/penjualan-cabang, /api/laporan/penjualan-cabang?id_cabang= Assertion assertOk, assertJsonPath, assertSame, assertJsonCount |
function test_cashier_cannot_access_owner_reports_or_audit(): void | Skenario uji cashier cannot access owner reports or audit. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/laporan/options, /api/laporan/, /api/audit-log Assertion assertOk, assertForbidden |
function test_date_boundaries_and_daily_cashier_best_seller_aggregations_are_exact(): void | Skenario uji date boundaries and daily cashier best seller aggregations are exact. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/laporan/penjualan-harian, /api/laporan/penjualan-kasir, /api/laporan/produk-terlaris Assertion assertOk, assertJsonCount, assertJsonPath, assertSame |
function test_owner_report_filters_use_master_product_and_supplier_data_server_side(): void | Skenario uji owner report filters use master product and supplier data server side. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/laporan/options, /api/laporan/stok?id_cabang=, /api/laporan/servis?id_cabang=, /api/laporan/pembelian?id_cabang=, /api/laporan/stok?status=bad%20value Tabel pembelian Panggilan product.forceFill Assertion assertOk, assertJsonFragment, assertSee, assertJsonPath, assertSame, assertJsonCount, assertUnprocessable |
function test_invalid_dates_pagination_and_unknown_reports_are_rejected(): void | Skenario uji invalid dates pagination and unknown reports are rejected. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/laporan/stok, /api/laporan/arbitrary-table Assertion assertUnprocessable, assertNotFound |
function test_stock_report_is_current_snapshot_including_quarantine(): void | Skenario uji stock report is current snapshot including quarantine. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/laporan/stok?dari=2020-01-01&sampai=2020-01-02 Assertion assertOk, assertJsonCount, assertSame, assertStringContainsString |
function service(Pengguna $technician, string $status = 'dikerjakan'): int | Helper pengujian service. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Tabel servis |
function test_technician_sees_only_assigned_service_and_parts_without_financial_reports(): void | Skenario uji technician sees only assigned service and parts without financial reports. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/laporan/options, /api/laporan/, /api/audit-log Tabel sparepart_servis Assertion assertOk, assertForbidden |
function test_online_payment_and_shipping_reports_exclude_pos_and_private_evidence(): void | Skenario uji online payment and shipping reports exclude pos and private evidence. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/laporan/online-order, /api/laporan/pembayaran-online, /api/laporan/pengiriman Tabel penjualan, pengiriman Assertion assertOk, assertJsonCount, assertDontSee, assertSame, assertJsonPath |
function test_purchase_warranty_and_service_reports_read_existing_transaction_rows(): void | Skenario uji purchase warranty and service reports read existing transaction rows. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/laporan/pembelian, /api/laporan/garansi, /api/laporan/servis Tabel pembelian, detail_pembelian, klaim_garansi Assertion assertOk, assertJsonCount, assertSame, assertJsonPath |
function test_mutation_and_approval_reports_deduplicate_cross_branch_history(): void | Skenario uji mutation and approval reports deduplicate cross branch history. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/laporan/mutasi, /api/laporan/approval, /api/laporan/approval?id_cabang= Assertion assertOk, assertJsonCount, assertJsonPath |
function test_audit_is_owner_only_filtered_paginated_and_never_exposes_sensitive_json(): void | Skenario uji audit is owner only filtered paginated and never exposes sensitive json. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/audit-log?aksi=mutasi_diajukan&tabel=mutasi_stok&id_data=, /api/audit-log?aksi=mutasi_diajukan&id_data=, /api/audit-log?aksi=mutasi_diajukan&id_cabang=, /api/laporan/options Tabel mutasi_stok, audit_log Assertion assertOk, assertJsonPath, assertJsonCount, assertDontSee, assertJsonFragment, assertTrue |
function test_new_routes_require_authenticated_context_and_expose_no_generic_stock_mutation(): void | Skenario uji new routes require authenticated context and expose no generic stock mutation. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/laporan/stok, /api/audit-log, /api/mutasi-stok/1, /api/stok/1 Tabel produk_cabang Assertion assertUnauthorized, assertStatus, assertSame |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 7cc715fd7cd63a9854bf43f6a275b5d49afa2f68a990b96f597435f188dc4709
tests/Feature/RestockConcurrencyTest.php202 baris · 6 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian RestockConcurrencyTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function setUp(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Assertion assertSame |
function tearDown(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Lihat signature dan isi fungsi. |
function cleanup(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Lihat signature dan isi fungsi. |
function initialStocks(): array | Helper pengujian initialStocks. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return ['existing row' => [13], 'first receipt race' => [null]]; |
function test_real_concurrent_restock_has_no_lost_update(?int $initial): void | Skenario uji real concurrent restock has no lost update. Assertion aktual ditunjukkan di kolom bukti dan kode. | Kunci baris perubahan Tabel produk_cabang, pg_stat_activity, pembelian, detail_pembelian, audit_log Assertion assertSame |
function runWorker(): void | Helper pengujian runWorker. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | API /api/pembelian |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 3c85c2c66f00377b1482ff18389bef7a3752e56b0215e643e897a2b949363fe8
tests/Feature/RestockTest.php357 baris · 29 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian RestockTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function input(array $overrides = []): array | Helper pengujian input. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return array_replace([ |
function loginOwnerOnSamanhudi(): void | Helper pengujian loginOwnerOnSamanhudi. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | API /api/owner/cabang-aktif Assertion assertOk |
function assertNoPurchase(): void | Helper pengujian assertNoPurchase. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Tabel pembelian, detail_pembelian, audit_log Assertion assertSame |
function test_restock_without_authentication_is_rejected(): void | Skenario uji restock without authentication is rejected. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /sanctum/csrf-cookie, /api/pembelian Assertion assertNoContent, assertUnauthorized, assertNoPurchase |
function forbiddenRoles(): array | Helper pengujian forbiddenRoles. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return [['kasir'], ['teknisi']]; |
function test_cashier_and_technician_cannot_restock_or_read_purchases(string $role): void | Skenario uji cashier and technician cannot restock or read purchases. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pembelian Assertion assertOk, assertForbidden, assertNoPurchase |
function test_admin_restock_uses_assigned_branch_and_cannot_redirect_to_another_tenant(): void | Skenario uji admin restock uses assigned branch and cannot redirect to another tenant. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pembelian, /api/pembelian/ Tabel produk_cabang, pembelian Assertion assertOk, assertJsonPath, assertCreated, assertSame |
function test_owner_restock_increases_selected_tenant_stock_and_creates_atomic_audit(): void | Skenario uji owner restock increases selected tenant stock and creates atomic audit. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pembelian, /api/pembelian/, /api/stok Tabel produk_cabang, pembelian Assertion assertCreated, assertSame, assertCount, assertOk, assertJsonPath, assertStringNotContainsString |
function test_owner_can_restock_after_selecting_an_active_tenant(): void | Skenario uji owner can restock after selecting an active tenant. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pembelian, /api/owner/cabang-aktif Tabel pembelian Assertion assertOk, assertStatus, assertCreated, assertJsonCount, assertSame |
function forgedFields(): array | Helper pengujian forgedFields. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return [['connection', 'tenant_peganden'], ['tenant', 'tenant_peganden'], ['id_cabang', 123], ['id_pengguna', 123], ['stok_tersedia', 999], ['statu |
function test_client_cannot_supply_tenant_actor_stock_or_status(string $field, mixed $value): void | Skenario uji client cannot supply tenant actor stock or status. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pembelian Assertion assertUnprocessable, assertJsonValidationErrors, assertNoPurchase |
function test_forged_tenant_headers_do_not_redirect_the_write(): void | Skenario uji forged tenant headers do not redirect the write. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pembelian Tabel pembelian Assertion assertCreated, assertSame |
function test_tp_itself_allows_owner_restock_with_a_selected_tenant(): void | Skenario uji tp itself allows owner restock with a selected tenant. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pembelian Tabel pembelian Assertion assertGreaterThan, assertSame |
function test_tp_itself_allows_admin_on_assigned_tenant_and_rejects_cashier(): void | Skenario uji tp itself allows admin on assigned tenant and rejects cashier. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pembelian Tabel pembelian Assertion assertGreaterThan, assertSame |
function test_fake_supplier_is_rejected(): void | Skenario uji fake supplier is rejected. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pembelian Assertion assertUnprocessable, assertNoPurchase |
function test_fake_and_inactive_master_products_are_rejected(): void | Skenario uji fake and inactive master products are rejected. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pembelian Assertion assertUnprocessable, assertNoPurchase |
function test_inactive_branch_is_rejected_after_login(): void | Skenario uji inactive branch is rejected after login. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pembelian Panggilan samanhudi.forceFill Assertion assertForbidden, assertNoPurchase |
function invalidItems(): array | Helper pengujian invalidItems. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return [['jumlah', 0], ['jumlah', -1], ['jumlah', 1.5], ['harga_beli', -1], ['harga_beli', 1.25], ['jumlah', 2147483648]]; |
function test_invalid_item_amounts_are_rejected(string $field, mixed $value): void | Skenario uji invalid item amounts are rejected. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pembelian Assertion assertUnprocessable, assertNoPurchase |
function test_duplicate_products_including_numeric_strings_are_rejected(): void | Skenario uji duplicate products including numeric strings are rejected. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pembelian Assertion assertUnprocessable, assertNoPurchase |
function test_no_direct_stock_mutation_endpoint_exists_even_for_owner(): void | Skenario uji no direct stock mutation endpoint exists even for owner. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/produk-cabang/1, /api/stok/1, /api/stok Tabel produk_cabang Assertion assertOk, assertNotFound, assertStatus, assertSame |
function test_two_items_add_to_existing_stock_without_changing_quarantine(): void | Skenario uji two items add to existing stock without changing quarantine. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pembelian Tabel produk_cabang Assertion assertCreated, assertSame, assertCount |
function test_failure_after_first_stock_write_rolls_back_header_details_stock_and_audit(): void | Skenario uji failure after first stock write rolls back header details stock and audit. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pembelian Tabel produk_cabang Assertion assertStatus, assertNoPurchase, assertSame, assertStringNotContainsString |
function test_ivp_failure_rolls_back_existing_stock_and_purchase(): void | Skenario uji ivp failure rolls back existing stock and purchase. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pembelian Tabel produk_cabang Assertion assertStatus, assertNoPurchase, assertSame |
function test_audit_failure_rolls_back_prior_audits_and_all_business_writes(): void | Skenario uji audit failure rolls back prior audits and all business writes. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pembelian Tabel produk_cabang Assertion assertStatus, assertNoPurchase, assertSame, assertCount |
function test_duplicate_purchase_number_conflicts_without_double_stock(): void | Skenario uji duplicate purchase number conflicts without double stock. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pembelian Tabel produk_cabang, pembelian Assertion assertCreated, assertStatus, assertSame |
function test_stock_and_purchase_reads_do_not_expose_another_tenant(): void | Skenario uji stock and purchase reads do not expose another tenant. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/owner/cabang-aktif, /api/pembelian, /api/stok, /api/pembelian/, /api/pembelian?connection=tenant_peganden Assertion assertOk, assertCreated, assertJsonCount, assertNotFound |
function test_restock_requires_csrf(): void | Skenario uji restock requires csrf. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/pembelian Assertion assertStatus, assertNoPurchase |
function test_employee_stock_reads_follow_assignment_despite_forged_tenant_input(string $role): void | Skenario uji employee stock reads follow assignment despite forged tenant input. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/owner/cabang-aktif, /api/pembelian, /api/stok?connection=tenant_peganden&id_cabang= Assertion assertOk, assertCreated, assertJsonCount, assertJsonPath |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 68320b03c259997b7899fc8fe0d0785dbc365153cf4f56aa067ab45bb45cd2af
tests/Feature/ReturnConcurrencyTest.php128 baris · 4 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian ReturnConcurrencyTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function tearDown(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Lihat signature dan isi fungsi. |
function returnTypes(): array | Helper pengujian returnTypes. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return ['sale' => [false], 'purchase' => [true]]; |
function test_c2_simultaneous_returns_cannot_return_the_same_source_quantity_twice(bool $purchase): void | Skenario uji c2 simultaneous returns cannot return the same source quantity twice. Assertion aktual ditunjukkan di kolom bukti dan kode. | Kunci baris perubahan Tabel produk_cabang, pg_stat_activity, retur_, detail_retur_, audit_log Assertion assertSame |
function runWorker(): void | Helper pengujian runWorker. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Lihat signature dan isi fungsi. |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 ac39e75456bea54fdb71059e77dd274dfab655beb133f8c55e9ae41d1db6e15f
tests/Feature/ReturnWorkflowsTest.php159 baris · 9 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian ReturnWorkflowsTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function preparePurchase(int $quantity = 8): array | Helper pengujian preparePurchase. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | API /api/pembelian Assertion assertOk, assertCreated |
function createSale(Produk $product, int $quantity = 2): int | Helper pengujian createSale. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | API /api/penjualan Assertion assertCreated |
function test_sale_returns_restore_available_and_quarantine_separately_with_source_price(): void | Skenario uji sale returns restore available and quarantine separately with source price. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/retur-penjualan/sumber, /api/retur-penjualan, /api/retur-penjualan/ Tabel produk_cabang Assertion assertSame, assertOk, assertCreated, assertJsonPath, assertCount |
function test_overreturn_invalid_input_and_missing_invoice_are_rejected_atomically(): void | Skenario uji overreturn invalid input and missing invoice are rejected atomically. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/retur-penjualan Tabel retur_penjualan, produk_cabang Assertion assertUnprocessable, assertJsonValidationErrors, assertSame |
function test_exchange_of_damaged_return_requires_fresh_available_stock(): void | Skenario uji exchange of damaged return requires fresh available stock. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/retur-penjualan Tabel retur_penjualan, produk_cabang Assertion assertStatus, assertSame |
function test_supplier_return_reduces_quarantine_and_rejects_overreturn(): void | Skenario uji supplier return reduces quarantine and rejects overreturn. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/retur-penjualan, /api/retur-pembelian, /api/retur-pembelian/sumber, /api/retur-pembelian/ Tabel produk_cabang, retur_pembelian Assertion assertCreated, assertOk, assertJsonPath, assertSame, assertStatus, assertCount |
function test_owner_reports_include_both_return_histories_without_mutating_gross_sales(): void | Skenario uji owner reports include both return histories without mutating gross sales. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/retur-penjualan, /api/retur-pembelian, /api/owner/cabang-aktif, /api/laporan/retur-penjualan, /api/laporan/retur-pembelian, /api/laporan/retur-penjualan?status=tukar_barang Assertion assertCreated, assertOk, assertJsonPath |
function test_cashier_can_read_sale_returns_but_cannot_change_supplier_returns(): void | Skenario uji cashier can read sale returns but cannot change supplier returns. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/retur-penjualan, /api/retur-pembelian Assertion assertOk, assertForbidden |
function test_low_stock_summary_and_notification_are_distinct_from_empty_stock(): void | Skenario uji low stock summary and notification are distinct from empty stock. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/stok, /api/stok?status=rendah, /api/notifikasi, /api/dashboard-summary Assertion assertOk, assertJsonPath, assertJsonCount, assertJsonMissing |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 e7a9891bce1739252581de31a921bfa3697238ebae939d69f15d3a9b2ba9fcd0
tests/Feature/SaleApprovalTest.php264 baris · 15 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian SaleApprovalTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function product(): Produk | Helper pengujian product. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return Produk::factory()->create(['harga_jual' => 100000, 'harga_grosir' => null, 'min_qty_grosir' => null, 'masa_garansi' => 365]); |
function stock(Produk $product, int $quantity = 10): void | Helper pengujian stock. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Tabel produk_cabang |
function requestInput(Produk $product, array $overrides = []): array | Helper pengujian requestInput. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return array_replace([ |
function requestAsCashier(Produk $product, Pengguna $approver): array | Helper pengujian requestAsCashier. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | API /api/penjualan/harga-khusus Assertion assertOk, assertStatus |
function test_special_price_request_keeps_stock_unchanged_hashes_token_and_sends_owner_link(): void | Skenario uji special price request keeps stock unchanged hashes token and sends owner link. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tabel penjualan, produk_cabang, audit_log Assertion assertSame, assertNotSame, assertStringNotContainsString, assertCount |
function test_owner_can_preview_and_approve_once_then_stock_is_reduced(): void | Skenario uji owner can preview and approve once then stock is reduced. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tabel penjualan, produk_cabang, detail_penjualan Assertion assertOk, assertJsonPath, assertSame, assertNull, assertNotNull, assertStatus |
function test_rejection_does_not_change_stock_and_invalidates_link(): void | Skenario uji rejection does not change stock and invalidates link. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tabel penjualan, produk_cabang Assertion assertOk, assertSame, assertNull, assertCount |
function test_requester_owner_cannot_decide_own_request_but_another_owner_can(): void | Skenario uji requester owner cannot decide own request but another owner can. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/owner/cabang-aktif, /api/penjualan/harga-khusus Assertion assertOk, assertStatus, assertForbidden |
function test_invalid_signature_wrong_token_and_expired_database_token_are_rejected(): void | Skenario uji invalid signature wrong token and expired database token are rejected. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tautan sementara Tabel penjualan Assertion assertOk, assertForbidden, assertStatus |
function test_approval_rechecks_current_stock_and_keeps_request_pending_when_stock_is_no_longer_enough(): void | Skenario uji approval rechecks current stock and keeps request pending when stock is no longer enough. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tabel produk_cabang, penjualan Assertion assertOk, assertStatus, assertSame, assertNotNull |
function test_technician_cannot_request_special_price_and_cashier_cannot_approve(): void | Skenario uji technician cannot request special price and cashier cannot approve. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/penjualan/harga-khusus Assertion assertOk, assertForbidden |
function test_unauthenticated_user_cannot_open_or_decide_signed_approval(): void | Skenario uji unauthenticated user cannot open or decide signed approval. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tabel penjualan Assertion assertUnauthorized, assertSame |
function test_approval_audit_failure_rolls_back_decision_and_stock(): void | Skenario uji approval audit failure rolls back decision and stock. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tabel penjualan, produk_cabang Assertion assertOk, assertStatus, assertSame, assertNotNull |
function test_request_is_rejected_when_no_different_owner_is_available(): void | Skenario uji request is rejected when no different owner is available. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/owner/cabang-aktif, /api/penjualan/harga-khusus Tabel penjualan Assertion assertOk, assertUnprocessable, assertSame |
function test_special_price_must_be_positive_below_system_price_and_have_reason(): void | Skenario uji special price must be positive below system price and have reason. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/penjualan/harga-khusus Assertion assertOk, assertUnprocessable |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 3e5caf1e97678794cfe867e189a3d61f74dc3688039f7bff531af15e00f6be53
tests/Feature/SaleConcurrencyTest.php188 baris · 5 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian SaleConcurrencyTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function setUp(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Assertion assertSame |
function tearDown(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Lihat signature dan isi fungsi. |
function test_two_concurrent_sales_cannot_oversell_inventory(): void | Skenario uji two concurrent sales cannot oversell inventory. Assertion aktual ditunjukkan di kolom bukti dan kode. | Kunci baris perubahan Tabel produk_cabang, pg_stat_activity, penjualan, detail_penjualan Assertion assertSame |
function runWorker(): void | Helper pengujian runWorker. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | API /api/penjualan |
function cleanup(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Lihat signature dan isi fungsi. |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 6426844324a3e6940546fbb64a1ba121d24dbc76ad7bf13a93961ba50b6b68d4
tests/Feature/SalesTest.php204 baris · 14 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian SalesTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function product(array $attributes = []): Produk | Helper pengujian product. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return Produk::factory()->create(array_replace([ |
function stock(Produk $product, int $quantity = 10, int $quarantine = 2, string $connection = 'tenant_samanhudi'): void | Helper pengujian stock. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Tabel produk_cabang |
function input(Produk $product, array $overrides = []): array | Helper pengujian input. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return array_replace([ |
function test_cashier_sale_uses_server_price_reduces_stock_and_writes_atomic_audit(): void | Skenario uji cashier sale uses server price reduces stock and writes atomic audit. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/penjualan Tabel penjualan, detail_penjualan, produk_cabang Assertion assertOk, assertCreated, assertSame, assertNotNull, assertCount |
function test_sale_warranty_is_consistent_when_database_timezone_crosses_utc_midnight(): void | Skenario uji sale warranty is consistent when database timezone crosses utc midnight. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/penjualan Tabel penjualan, detail_penjualan, produk_cabang Assertion assertOk, assertCreated, assertSame, assertCount |
function test_owner_can_use_pos_after_selecting_tenant_but_technician_cannot(): void | Skenario uji owner can use pos after selecting tenant but technician cannot. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/penjualan, /api/owner/cabang-aktif Tabel penjualan Assertion assertOk, assertStatus, assertCreated, assertSame, assertForbidden |
function test_retail_price_remains_server_authoritative_for_multi_quantity_sale(): void | Skenario uji retail price remains server authoritative for multi quantity sale. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/penjualan Tabel detail_penjualan Assertion assertOk, assertCreated, assertSame |
function test_client_cannot_supply_price_total_stock_actor_branch_or_connection(): void | Skenario uji client cannot supply price total stock actor branch or connection. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/penjualan Tabel penjualan Assertion assertOk, assertUnprocessable, assertJsonValidationErrors, assertSame |
function test_insufficient_stock_and_underpayment_are_rejected_without_partial_writes(): void | Skenario uji insufficient stock and underpayment are rejected without partial writes. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/penjualan Tabel penjualan, produk_cabang Assertion assertOk, assertStatus, assertUnprocessable, assertSame |
function test_customer_is_optional_and_cross_tenant_customer_is_rejected(): void | Skenario uji customer is optional and cross tenant customer is rejected. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/penjualan Tabel pelanggan Assertion assertOk, assertCreated, assertUnprocessable |
function test_no_warranty_product_stores_null_warranty_snapshot(): void | Skenario uji no warranty product stores null warranty snapshot. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/penjualan Tabel detail_penjualan Assertion assertOk, assertCreated, assertNull |
function test_ivp_failure_rolls_back_sale_and_stock(): void | Skenario uji ivp failure rolls back sale and stock. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/penjualan Tabel penjualan, produk_cabang Assertion assertOk, assertStatus, assertSame |
function test_audit_failure_rolls_back_sale_details_and_stock(): void | Skenario uji audit failure rolls back sale details and stock. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/penjualan Tabel penjualan, detail_penjualan, produk_cabang, audit_log Assertion assertOk, assertStatus, assertSame |
function test_direct_price_and_stock_mutation_endpoints_do_not_exist(): void | Skenario uji direct price and stock mutation endpoints do not exist. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/detail-penjualan/1, /api/stok/1 Assertion assertOk, assertNotFound |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 478e8e667e50d89aef0a4c96b254d7d0e9aa9c72a2f9cfe3048b9b81a66227cd
tests/Feature/ServiceConcurrencyTest.php212 baris · 6 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian ServiceConcurrencyTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function setUp(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Assertion assertSame |
function tearDown(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Lihat signature dan isi fungsi. |
function cleanup(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Lihat signature dan isi fungsi. |
function races(): array | Helper pengujian races. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return ['two services compete for stock' => [false], 'duplicate part on one service' => [true]]; |
function test_real_concurrent_parts_allow_exactly_one_commit(bool $sameService): void | Skenario uji real concurrent parts allow exactly one commit. Assertion aktual ditunjukkan di kolom bukti dan kode. | Kunci baris perubahan API /api/servis Tabel produk_cabang, pg_stat_activity, sparepart_servis, log_servis, audit_log Assertion assertSame |
function runWorker(): void | Helper pengujian runWorker. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | API /api/servis |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 31d0166f74d0104153d6bcfc0b335f4dec9fa80169562af70e65feadb853b2a5
tests/Feature/ServiceIntegrityTest.php95 baris · 2 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian ServiceIntegrityTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function corruptions(): array | Helper pengujian corruptions. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return array_map(fn (string $name): array => [$name], [ |
function test_ivp_independently_detects_corruption_of_persisted_service_and_stock(string $corruption): void | Skenario uji ivp independently detects corruption of persisted service and stock. Assertion aktual ditunjukkan di kolom bukti dan kode. | Pemeriksaan IVP API /api/servis Tabel servis, log_servis, sparepart_servis Panggilan cashier.forceFill |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 c1e25468332be5cf55facb7f0ed60afc97d913a3cdd5affc3e26c6b2ab90c177
tests/Feature/ServicePartsTest.php140 baris · 7 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian ServicePartsTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_parts_use_retail_server_snapshot_and_change_only_available_stock(): void | Skenario uji parts use retail server snapshot and change only available stock. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/servis/{$id}/sparepart, /api/servis/{$id}/log, /api/servis/{$id} Tabel sparepart_servis, produk_cabang, log_servis Assertion assertOk, assertSame, assertCount, assertJsonPath |
function test_invalid_products_quantities_and_client_price_are_rejected(): void | Skenario uji invalid products quantities and client price are rejected. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/servis/{$id}/sparepart Assertion assertOk, assertUnprocessable, assertSame |
function test_insufficient_available_stock_cannot_use_quarantine_and_duplicates_fail(): void | Skenario uji insufficient available stock cannot use quarantine and duplicates fail. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/servis/{$id}/sparepart Tabel produk_cabang Assertion assertOk, assertStatus, assertSame, assertUnprocessable |
function test_parts_require_repair_state_assigned_technician_and_correct_tenant(): void | Skenario uji parts require repair state assigned technician and correct tenant. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/servis/{$id}/sparepart Tabel sparepart_servis Assertion assertOk, assertStatus, assertForbidden, assertNotFound, assertSame |
function failures(): array | Helper pengujian failures. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return [[AuditLogger::class, 'recordCdi'], [ServiceIntegrity::class, 'verify'], [IssueStock::class, 'handle']]; |
function test_failure_after_stock_write_rolls_back_all_parts_logs_stock_and_audit(string $class, string $method): void | Skenario uji failure after stock write rolls back all parts logs stock and audit. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/servis/{$id}/sparepart Assertion assertOk, assertStatus, assertSame |
function test_multiple_parts_are_locked_in_product_order_and_all_saved(): void | Skenario uji multiple parts are locked in product order and all saved. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/servis/{$id}/sparepart Tabel produk_cabang, sparepart_servis Assertion assertOk, assertSame, assertCount |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 0a60654f83ec41d170ecd9b4bbe9d9d3e8e8217c701761dbe7832f6777c620d9
tests/Feature/ServicePhotoTest.php134 baris · 9 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian ServicePhotoTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function setUp(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Lihat signature dan isi fungsi. |
function tearDown(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Lihat signature dan isi fungsi. |
function photo(string $name = 'evidence.png'): UploadedFile | Helper pengujian photo. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return UploadedFile::fake()->createWithContent($name, base64_decode(self::PNG)); |
function upload(int $id, UploadedFile $photo, bool $csrf = true): TestResponse | Helper pengujian upload. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | API /api/servis/{$id}/log |
function test_photo_is_private_random_named_and_download_requires_auth_role_tenant_and_assignment(): void | Skenario uji photo is private random named and download requires auth role tenant and assignment. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/servis/{$id}/log/{$entry->id_log_servis}/foto, /api/servis/{$id}, /api/owner/cabang-aktif Tabel log_servis Assertion assertOk, assertMatchesRegularExpression, assertStringNotContainsString, assertExists, assertSame, assertHeader, assertStringContainsString, assertDontSee, assertUnauthorized, assertNotFound |
function test_invalid_mime_size_string_path_and_missing_csrf_are_rejected(): void | Skenario uji invalid mime size string path and missing csrf are rejected. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/servis/{$id}/log Assertion assertOk, assertUnprocessable, assertStatus, assertSame |
function failures(): array | Helper pengujian failures. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return [[AuditLogger::class, 'recordCdi'], [ServiceIntegrity::class, 'verify']]; |
function test_business_failure_removes_uploaded_file_and_rolls_back_log(string $class, string $method): void | Skenario uji business failure removes uploaded file and rolls back log. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertOk, assertStatus, assertSame |
function test_photo_path_tampering_cannot_escape_private_service_directory(): void | Skenario uji photo path tampering cannot escape private service directory. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/servis/{$id}/log/{$entry->id_log_servis}/foto Tabel log_servis Assertion assertOk, assertNotFound, assertFalse, assertNotSame |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 312c72348354a22b62e818c51ad67ffa028f8c97d4752519afba766244610e02
tests/Feature/ServiceReceptionTest.php103 baris · 8 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian ServiceReceptionTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_reception_requires_authentication_csrf_and_cashier_capability(): void | Skenario uji reception requires authentication csrf and cashier capability. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /sanctum/csrf-cookie, /api/servis Tabel servis Assertion assertNoContent, assertUnauthorized, assertOk, assertForbidden, assertStatus, assertSame |
function test_cashier_reception_has_server_identity_number_dates_log_and_audit(): void | Skenario uji cashier reception has server identity number dates log and audit. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/servis Tabel log_servis, servis Assertion assertOk, assertCreated, assertJsonPath, assertNotSame, assertNotNull, assertNull, assertCount, assertSame |
function test_owner_can_receive_only_with_selected_tenant_and_cannot_assign_self(): void | Skenario uji owner can receive only with selected tenant and cannot assign self. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/servis, /api/owner/cabang-aktif Assertion assertOk, assertStatus, assertForbidden, assertCreated |
function test_customer_is_required_and_foreign_customer_is_rejected(): void | Skenario uji customer is required and foreign customer is rejected. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/servis Tabel servis Assertion assertOk, assertUnprocessable, assertSame |
function test_all_forged_cdi_and_connection_fields_are_rejected(): void | Skenario uji all forged cdi and connection fields are rejected. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/servis Tabel servis Assertion assertOk, assertUnprocessable, assertJsonValidationErrors, assertSame |
function test_invalid_inactive_wrong_role_and_foreign_technicians_are_rejected(): void | Skenario uji invalid inactive wrong role and foreign technicians are rejected. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/servis Assertion assertOk, assertUnprocessable, assertCreated, assertJsonPath |
function failures(): array | Helper pengujian failures. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return [[AuditLogger::class, 'recordCdi'], [ServiceIntegrity::class, 'verify']]; |
function test_reception_rolls_back_if_required_audit_or_ivp_fails(string $class, string $method): void | Skenario uji reception rolls back if required audit or ivp fails. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/servis Assertion assertOk, assertStatus, assertDontSee, assertSame |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 013f64dde21db2c425cf870b5de6ffc243da5a3d6b47c88c4cb5de7383767de3
tests/Feature/ServiceTestBase.php106 baris · 9 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian ServiceTestBase.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function setUp(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Lihat signature dan isi fungsi. |
function login(Pengguna $user, ?string $password = null, array $extra = []): TestResponse | Helper pengujian login. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return parent::login($user, $password, $extra); |
function selectTenant(): void | Helper pengujian selectTenant. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Lihat signature dan isi fungsi. |
function input(array $extra = []): array | Helper pengujian input. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return array_replace([ |
function receive(bool $repairing = false): int | Helper pengujian receive. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | API /api/servis |
function product(int $available = 10, array $extra = []): Produk | Helper pengujian product. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Tabel produk_cabang |
function parts(Produk $product, int $quantity = 2): array | Helper pengujian parts. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return ['catatan' => 'Penggantian komponen rusak', 'items' => [['id_produk' => $product->id_produk, 'jumlah' => $quantity]]]; |
function state(): array | Helper pengujian state. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return $state; |
function loginSelectedOwner(?Pengguna $owner = null): Pengguna | Helper pengujian loginSelectedOwner. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | API /api/owner/cabang-aktif Assertion assertOk |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 2fef253c527350c7f9f3a3aaf1f0e9037af37bfea361fc2a986ff2c61d29c84a
tests/Feature/ServiceWarrantyTest.php135 baris · 9 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian ServiceWarrantyTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_service_claim_requires_authentication_frontdesk_capability_and_csrf(): void | Skenario uji service claim requires authentication frontdesk capability and csrf. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /sanctum/csrf-cookie, /api/klaim-garansi/servis Tabel klaim_garansi Assertion assertNoContent, assertUnauthorized, assertOk, assertForbidden, assertStatus, assertSame |
function test_cashier_creates_service_only_claim_with_server_identity_time_and_atomic_audit(): void | Skenario uji cashier creates service only claim with server identity time and atomic audit. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/klaim-garansi/servis, /api/klaim-garansi?q=, /api/klaim-garansi/{$claimId} Tabel servis Assertion assertOk, assertCreated, assertJsonPath, assertTrue, assertSame, assertJsonCount |
function test_owner_requires_selected_tenant_and_can_submit_a_service_claim(): void | Skenario uji owner requires selected tenant and can submit a service claim. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/klaim-garansi/servis, /api/owner/cabang-aktif Assertion assertOk, assertStatus, assertCreated |
function test_missing_unfinished_no_date_and_zero_warranty_sources_are_rejected(): void | Skenario uji missing unfinished no date and zero warranty sources are rejected. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/klaim-garansi/servis Tabel servis, klaim_garansi Assertion assertOk, assertUnprocessable, assertSame |
function test_service_warranty_accepts_exact_expiry_and_rejects_after_it(): void | Skenario uji service warranty accepts exact expiry and rejects after it. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/klaim-garansi/servis Tabel servis, klaim_garansi Assertion assertOk, assertCreated, assertUnprocessable, assertSame |
function test_forged_source_identity_dates_customer_status_and_duplicate_are_rejected(): void | Skenario uji forged source identity dates customer status and duplicate are rejected. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/klaim-garansi/servis Assertion assertOk, assertUnprocessable, assertJsonValidationErrors, assertCreated, assertStatus, assertSame |
function test_other_tenant_cannot_claim_or_search_service_source(): void | Skenario uji other tenant cannot claim or search service source. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/klaim-garansi/servis, /api/klaim-garansi/sumber?jenis=servis, /api/klaim-garansi/sumber?jenis=servis&q=SRV Assertion assertOk, assertUnprocessable, assertJsonCount, assertJsonPath |
function failures(): array | Helper pengujian failures. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return [[AuditLogger::class, 'recordCdi'], [WarrantyClaimIntegrity::class, 'verify']]; |
function test_creation_failure_rolls_back_claim_and_audit(string $class, string $method): void | Skenario uji creation failure rolls back claim and audit. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/klaim-garansi/servis Assertion assertOk, assertStatus, assertDontSee, assertSame |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 809ef2928cf12b8cd1b96293af6b94525be35d8fba59c22e0df3ba3133d8bd67
tests/Feature/ServiceWorkflowTest.php170 baris · 10 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian ServiceWorkflowTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_only_assigned_technician_can_progress_and_each_transition_appends_log(): void | Skenario uji only assigned technician can progress and each transition appends log. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/servis/{$id}/log Assertion assertOk, assertForbidden, assertJsonCount, assertJsonPath, assertCount |
function test_invalid_jumps_backwards_and_forged_dates_fail_without_writes(): void | Skenario uji invalid jumps backwards and forged dates fail without writes. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/servis/{$id}/log Assertion assertOk, assertStatus, assertUnprocessable, assertSame |
function test_ready_requires_final_charges_and_warranty_and_cashier_hands_over(): void | Skenario uji ready requires final charges and warranty and cashier hands over. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/servis/{$id}/penyerahan, /api/servis/{$id}/log, /api/servis/{$id}/penugasan Assertion assertOk, assertStatus, assertUnprocessable, assertJsonPath, assertNotNull, assertForbidden, assertSame, assertCount |
function test_owner_technical_capability_requires_assignment_and_sod(): void | Skenario uji owner technical capability requires assignment and sod. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/servis/{$id}/log, /api/servis/{$id}/penugasan, /api/servis, /api/servis/{$own}/penugasan, /api/servis/{$own}/log Assertion assertForbidden, assertOk, assertCreated |
function test_reassignment_is_explicit_audited_and_revokes_previous_technician_access(): void | Skenario uji reassignment is explicit audited and revokes previous technician access. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/servis/{$id}/penugasan, /api/servis/{$id}/log, /api/servis/{$id} Assertion assertOk, assertForbidden, assertSame, assertNotFound |
function test_tenant_reads_and_mutations_are_isolated_for_employee_and_owner(): void | Skenario uji tenant reads and mutations are isolated for employee and owner. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/servis, /api/servis/{$id}, /api/servis/{$id}/log, /api/servis/{$id}/sparepart, /api/owner/cabang-aktif, /api/servis/{$id}/penyerahan Assertion assertOk, assertJsonCount, assertNotFound |
function test_no_generic_service_stock_or_log_mutation_routes_exist(): void | Skenario uji no generic service stock or log mutation routes exist. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/servis/{$id}, /api/servis/{$id}/log, /api/log-servis/1, /api/stok/1 Assertion assertContains, assertSame |
function historyMutations(): array | Helper pengujian historyMutations. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return [['save'], ['delete'], ['bulk_update'], ['bulk_delete'], ['upsert']]; |
function test_log_model_rejects_history_rewrites(string $operation): void | Skenario uji log model rejects history rewrites. Assertion aktual ditunjukkan di kolom bukti dan kode. | Lihat signature dan isi fungsi. |
function test_progress_audit_failure_rolls_back_service_and_log(): void | Skenario uji progress audit failure rolls back service and log. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/servis/{$id}/log Assertion assertOk, assertStatus, assertSame |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 41e330ace801fdb3f712e7cfea73a0027c46e9bb64eab18a13b3a326d57d7033
tests/Feature/SessionEncryptionTest.php47 baris · 2 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian SessionEncryptionTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_encrypted_payload_retains_metadata_normal_auth_and_bulk_revocation(): void | Skenario uji encrypted payload retains metadata normal auth and bulk revocation. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/me Tabel sessions Assertion assertOk, assertTrue, assertInstanceOf, assertIsString, assertStringNotContainsString, assertArrayHasKey, assertSame, assertIsInt, assertUnauthorized |
function test_logout_removes_the_encrypted_authenticated_session(): void | Skenario uji logout removes the encrypted authenticated session. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/logout, /api/me Tabel sessions Assertion assertOk, assertNoContent, assertFalse, assertUnauthorized |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 fb7862af167b4d399bdceb83ffcd592f3f419fe81ae2210f273c53f258d5ed79
tests/Feature/StockTransferConcurrencyTest.php141 baris · 4 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian StockTransferConcurrencyTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function tearDown(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Lihat signature dan isi fungsi. |
function races(): array | Helper pengujian races. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return [ |
function test_real_concurrent_approvals_have_no_partial_or_duplicate_stock_movement(string $race): void | Skenario uji real concurrent approvals have no partial or duplicate stock movement. Assertion aktual ditunjukkan di kolom bukti dan kode. | Kunci baris perubahan Tabel produk_cabang, audit_log, mutasi_stok, distributed_transactions Assertion assertSame, assertNull |
function runWorker(): void | Helper pengujian runWorker. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | API /api/approval/mutasi |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 6749b2b277c413ae9fdb2f598e7846736c402857a6da248312ed83719ba67a60
tests/Feature/StockTransferTest.php199 baris · 14 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian StockTransferTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_admin_requests_multiple_products_without_changing_stock(): void | Skenario uji admin requests multiple products without changing stock. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/mutasi-stok Tabel detail_mutasi_stok, produk_cabang, audit_log Assertion assertOk, assertCreated, assertJsonPath, assertJsonMissingPath, assertSame |
function test_approval_moves_stock_and_preserves_quarantine_with_one_time_token(): void | Skenario uji approval moves stock and preserves quarantine with one time token. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tabel produk_cabang, distributed_transactions Assertion assertOk, assertJsonPath, assertSame, assertStatus |
function test_rejection_changes_no_inventory_and_consumes_token(): void | Skenario uji rejection changes no inventory and consumes token. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tabel produk_cabang Assertion assertOk, assertJsonPath, assertSame, assertStatus |
function test_owner_cannot_self_approve_or_self_reject(): void | Skenario uji owner cannot self approve or self reject. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tabel mutasi_stok Assertion assertOk, assertJsonPath, assertForbidden, assertSame |
function invalidInputs(): array | Helper pengujian invalidInputs. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return [ |
function test_invalid_request_rolls_back_all_business_rows(string $case): void | Skenario uji invalid request rolls back all business rows. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/mutasi-stok Tabel produk Assertion assertOk, assertStatus, assertSame |
function test_role_branch_and_csrf_are_enforced_by_backend(): void | Skenario uji role branch and csrf are enforced by backend. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/mutasi-stok Assertion assertOk, assertForbidden, assertStatus |
function test_owner_approval_requires_source_tenant_and_cashier_is_denied(): void | Skenario uji owner approval requires source tenant and cashier is denied. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/mutasi-stok/ Assertion assertOk, assertForbidden |
function test_tampered_expired_and_wrong_token_links_are_rejected(): void | Skenario uji tampered expired and wrong token links are rejected. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tautan sementara Assertion assertForbidden |
function corruptions(): array | Helper pengujian corruptions. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return ['reason' => ['reason'], 'quantity' => ['quantity'], 'missing detail' => ['detail'], 'request audit' => ['audit']]; |
function test_persisted_immutable_data_and_history_corruption_block_approval(string $case): void | Skenario uji persisted immutable data and history corruption block approval. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tabel mutasi_stok, detail_mutasi_stok, audit_log Assertion assertStatus, assertDontSee, assertSame |
function test_audit_failure_rolls_back_master_and_both_tenants(): void | Skenario uji audit failure rolls back master and both tenants. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStatus, assertDontSee, assertSame |
function test_ivp_failure_rolls_back_master_stock_and_all_audits(): void | Skenario uji ivp failure rolls back master stock and all audits. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertStatus, assertSame |
function test_second_product_shortage_leaves_no_partial_movement_or_first_destination_row(): void | Skenario uji second product shortage leaves no partial movement or first destination row. Assertion aktual ditunjukkan di kolom bukti dan kode. | Tabel produk_cabang Assertion assertStatus, assertSame |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 ae893398eb0871722889ee8bc107230af6d09684286b6f337ee2c698df159d7b
tests/Feature/StockTransferTestBase.php180 baris · 14 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian StockTransferTestBase.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function setUp(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Panggilan database.start |
function tearDown(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Panggilan database.cleanup |
function selectTenant(?int $branch = null): void | Helper pengujian selectTenant. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Lihat signature dan isi fungsi. |
function stock(int $product, int $quantity, string $connection = 'tenant_samanhudi'): void | Helper pengujian stock. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Tabel produk_cabang |
function input(array $extra = []): array | Helper pengujian input. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return array_replace([ |
function createTransfer(array $extra = [], ?Pengguna $actor = null): array | Helper pengujian createTransfer. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | API /api/mutasi-stok |
function loginApprover(?Pengguna $actor = null, ?int $branch = null): void | Helper pengujian loginApprover. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | API /api/owner/cabang-aktif Assertion assertOk |
function relative(string $url): string | Helper pengujian relative. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return parse_url($url, PHP_URL_PATH).'?'.parse_url($url, PHP_URL_QUERY); |
function state(): array | Helper pengujian state. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Tabel mutasi_stok, detail_mutasi_stok, produk_cabang, audit_log |
function login(Pengguna $user, ?string $password = null, array $extra = []): TestResponse | Helper pengujian login. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | API /sanctum/csrf-cookie, /api/login Assertion assertNoContent |
function employee(array $attributes = []): Pengguna | Helper pengujian employee. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Pembuatan hash |
function owner(): Pengguna | Helper pengujian owner. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Pembuatan hash |
function admin(): Pengguna | Helper pengujian admin. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return $this->employee(['role' => 'admin']); |
function spa(string $method, string $uri, array $data = [], bool $csrf = true, array $headers = []): TestResponse | Helper pengujian spa. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return $response; |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 0f68896a9c2947ad962704dbf2f262767e992781eb490b2c91120754b1fc4789
tests/Feature/WarrantyConcurrencyTest.php247 baris · 5 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian WarrantyConcurrencyTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function setUp(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Assertion assertSame |
function tearDown(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Lihat signature dan isi fungsi. |
function cleanup(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Lihat signature dan isi fungsi. |
function test_two_concurrent_requests_for_same_source_create_only_one_active_claim(): void | Skenario uji two concurrent requests for same source create only one active claim. Assertion aktual ditunjukkan di kolom bukti dan kode. | Kunci baris perubahan Pembuatan hash API /api/servis Tabel servis, pg_stat_activity, klaim_garansi, audit_log Assertion assertSame |
function runWorker(): void | Helper pengujian runWorker. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | API /api/klaim-garansi/servis |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 a4dff7c690dc5c8b0da9d56fa4d5ef5f1bf9b7035d385ae9ca33953cc0da0e37
tests/Feature/WarrantyIntegrityTest.php167 baris · 3 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian WarrantyIntegrityTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function corruptions(): array | Helper pengujian corruptions. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return array_map(static fn (string $name): array => [$name], [ |
function test_ivp_independently_detects_corrupted_claim_state_history_or_source(string $corruption): void | Skenario uji ivp independently detects corrupted claim state history or source. Assertion aktual ditunjukkan di kolom bukti dan kode. | Pemeriksaan IVP Tabel klaim_garansi, audit_log, servis |
function test_ivp_detects_frontdesk_owner_attempting_technical_event_from_audited_history(): void | Skenario uji ivp detects frontdesk owner attempting technical event from audited history. Assertion aktual ditunjukkan di kolom bukti dan kode. | Pemeriksaan IVP API /api/klaim-garansi Tabel klaim_garansi, audit_log |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 1bd01614c8e24e98b30de045344e962388468fe9bf34bc34117259ef803c864b
tests/Feature/WarrantyTestBase.php80 baris · 6 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian WarrantyTestBase.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function completedService(int $days = 30): int | Helper pengujian completedService. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | API /api/servis |
function completedSale(?int $days = 30): array | Helper pengujian completedSale. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | API /api/penjualan |
function createClaim(string $type = 'service'): int | Helper pengujian createClaim. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | API /api/klaim-garansi |
function acceptClaim(int $id): void | Helper pengujian acceptClaim. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | API /api/klaim-garansi |
function claimState(): array | Helper pengujian claimState. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Tabel klaim_garansi, audit_log |
function sourceState(): array | Helper pengujian sourceState. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return $state; |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 04c3c31e57ab3a90b840d54900f7cd11d2f56cddb1530c6b13d240e7cb632c15
tests/Feature/WarrantyWorkflowTest.php305 baris · 11 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian WarrantyWorkflowTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_claim_follows_explicit_state_machine_and_preserves_submitter_identity(): void | Skenario uji claim follows explicit state machine and preserves submitter identity. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/klaim-garansi/{$id}/periksa, /api/klaim-garansi/{$id}/tangani, /api/klaim-garansi/{$id}/selesaikan Tabel klaim_garansi, audit_log Assertion assertOk, assertJsonPath, assertSame, assertCount |
function test_invalid_transitions_arbitrary_status_and_source_mutation_are_rejected(): void | Skenario uji invalid transitions arbitrary status and source mutation are rejected. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/klaim-garansi/{$id}/periksa Assertion assertOk, assertStatus, assertUnprocessable, assertJsonValidationErrors, assertSame |
function test_checker_or_submitter_cannot_handle_claim_even_when_actor_is_owner(): void | Skenario uji checker or submitter cannot handle claim even when actor is owner. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/klaim-garansi/servis, /api/klaim-garansi/{$id}/periksa, /api/klaim-garansi/{$id}/tangani Tabel klaim_garansi Assertion assertCreated, assertOk, assertForbidden, assertJsonPath, assertSame |
function test_accepted_claim_can_be_handled_after_warranty_expiry_but_late_acceptance_is_rejected(): void | Skenario uji accepted claim can be handled after warranty expiry but late acceptance is rejected. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/klaim-garansi/servis, /api/klaim-garansi/{$id}/periksa, /api/klaim-garansi/{$id}/tangani, /api/klaim-garansi/{$id}/selesaikan, /api/klaim-garansi/{$lateId}/periksa Tabel audit_log, klaim_garansi Assertion assertOk, assertCreated, assertUnprocessable, assertSame |
function test_rejected_claim_is_terminal_and_does_not_modify_source_or_stock(): void | Skenario uji rejected claim is terminal and does not modify source or stock. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/klaim-garansi/{$id}/periksa, /api/klaim-garansi/{$id}/{$action} Assertion assertOk, assertJsonPath, assertSame, assertStatus |
function test_technician_reads_only_claims_relevant_to_technical_handling_and_tenant_isolation_remains_closed(): void | Skenario uji technician reads only claims relevant to technical handling and tenant isolation remains closed. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/klaim-garansi/{$accepted}/periksa, /api/klaim-garansi, /api/klaim-garansi/{$pending}, /api/klaim-garansi/{$accepted}, /api/klaim-garansi/{$accepted}/tangani Assertion assertOk, assertJsonCount, assertJsonPath, assertNotFound, assertJsonMissingPath |
function test_no_generic_claim_or_stock_mutation_routes_exist(): void | Skenario uji no generic claim or stock mutation routes exist. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/klaim-garansi/{$id}, /api/stok/1 Assertion assertContains, assertSame |
function workflowFailures(): array | Helper pengujian workflowFailures. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return [ |
function test_inspection_failure_rolls_back_claim_and_history(string $class, string $method): void | Skenario uji inspection failure rolls back claim and history. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/klaim-garansi/{$id}/periksa Assertion assertOk, assertStatus, assertDontSee, assertSame |
function test_technical_failure_rolls_back_claim_and_history(string $class, string $method): void | Skenario uji technical failure rolls back claim and history. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/klaim-garansi/{$id}/tangani Assertion assertOk, assertStatus, assertDontSee, assertSame |
function test_findings_and_decision_are_required_and_arbitrary_decision_is_rejected(): void | Skenario uji findings and decision are required and arbitrary decision is rejected. Assertion aktual ditunjukkan di kolom bukti dan kode. | API /api/klaim-garansi/{$id}/periksa Assertion assertOk, assertUnprocessable, assertJsonValidationErrors, assertSame |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 ff7755fd7af29367a5c163aa65c8757b5043e1586ce20d810e6e02f1817edd36
tests/PostgresSecurityTestCase.php163 baris · 9 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian PostgresSecurityTestCase.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function setUp(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Assertion assertSame |
function tearDown(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Lihat signature dan isi fungsi. |
function rollbackSchemas(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Lihat signature dan isi fungsi. |
function employee(array $attributes = []): Pengguna | Helper pengujian employee. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Pembuatan hash |
function admin(array $attributes = []): Pengguna | Helper pengujian admin. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return $this->employee(['role' => 'admin'] + $attributes); |
function owner(): Pengguna | Helper pengujian owner. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Pembuatan hash |
function spa(string $method, string $uri, array $data = [], bool $csrf = true, array $headers = []): TestResponse | Helper pengujian spa. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return $response; |
function login(Pengguna $user, ?string $password = null, array $extra = []): TestResponse | Helper pengujian login. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | API /sanctum/csrf-cookie, /api/login Assertion assertNoContent |
function audit(string $connection, string $action): Collection | Helper pengujian audit. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Tabel audit_log |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 607e45311173cd9e7e8799bf4368fb466f58bf1f3ccbf61f5cd1a6448bfc880b
tests/Support/BrowserEnvironment.php149 baris · 3 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian BrowserEnvironment.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function boot(): Application | Helper pengujian boot. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return false; |
function seed(): void | Helper pengujian seed. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Pembuatan hash Tabel produk_cabang, pelanggan |
function cleanup(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Lihat signature dan isi fungsi. |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 146a25cc9a684924fb92b09d746c5e3b3add89320a07de5f7abeb06f4d336401
tests/Support/DistributedPostgres.php81 baris · 3 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian DistributedPostgres.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function start(bool $domain = false): void | Helper pengujian start. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Tabel transaction_probe |
function cleanup(): void | Menyiapkan atau membersihkan lingkungan tes milik suite ini. Periksa penjagaan schema dan target sebelum menjalankan. | Lihat signature dan isi fungsi. |
function bind(array $schemas): void | Helper pengujian bind. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Lihat signature dan isi fungsi. |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 6e6b503c0286dc95c4b9dde71c0eb83547740ed9e061020b91fee37d512c571a
tests/Support/EnforceCsrf.php13 baris · 1 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian EnforceCsrf.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function runningUnitTests(): bool | Helper pengujian runningUnitTests. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return false; |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 a3b9f8c06d78051027bcd377fff8c093d183ed202ef3738a3cc861feb1ce9b2f
tests/Support/TemporaryPostgres.php78 baris · 3 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian TemporaryPostgres.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function start(string $bin): string | Helper pengujian start. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | return 'restore_drill'; |
function stop(): void | Helper pengujian stop. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Lihat signature dan isi fungsi. |
function run(string $command, array $arguments): void | Helper pengujian run. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Lihat signature dan isi fungsi. |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 4f0bddcfdab6985982d2308987191f9e816fda7fb11d51ad8b8ac62c039883b2
tests/Support/verify-excel-export.ps146 baris · 0 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian verify-excel-export.ps1. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 7a64cb2ff1b19ecb8a031cb3daaa6629669f3ca85007c303be85e0589f756f06
tests/TestCase.php28 baris · 1 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian TestCase.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function corruptAuditFixture(string $connection, \Closure $corrupt): mixed | Helper pengujian corruptAuditFixture. Dipakai membangun input, request, fixture, proses database atau pembandingan hasil sesuai kode. | Batas transaksi |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 026dbb2e431c75986152c85e42afb4e381af69676c6d174eceabeae0402ba993
tests/Unit/ExampleTest.php16 baris · 1 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian ExampleTest.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
function test_that_true_is_true(): void | Skenario uji that true is true. Assertion aktual ditunjukkan di kolom bukti dan kode. | Assertion assertTrue |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 ffacae5c1a2a44c809420af5b3b404910da1b12167d58764dac6d10b8ba8cfaf
tests/e2e/auth.spec.ts81 baris · 0 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian auth.spec.ts. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Path API literal pada source
/api/me/api/logout/api/owner/cabang-aktif
Nama skenario asli browser
| Skenario | Baris |
|---|---|
| employee cannot select another branch | 16 |
| real websocket handshake and private channel subscription | 22 |
| owner branch chooser buttons are enabled, clickable, and select the intended branch | 30 |
| employee login from online catalog uses /login without a source query | 51 |
| employee login branding renders on white without a black logo panel and back link follows the form | 65 |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 37e263e6c8c38db5d0aa141ec73da5a3f706f3f965049dff38fb0540b0c5d986
tests/e2e/catalog-browsing.spec.ts44 baris · 0 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian catalog-browsing.spec.ts. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Nama skenario asli browser
| Skenario | Baris |
|---|---|
| customer can search, filter category, sort and reset current catalogue | 3 |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 7c1f2bee545aaa1e14b1a1f4e6e85f87100fa3f52140db2000047d569b447faf
tests/e2e/clark-wilson-navigation.spec.ts37 baris · 0 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian clark-wilson-navigation.spec.ts. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Path API literal pada source
/api/stok/api/retur-penjualan
Nama skenario asli browser
| Skenario | Baris |
|---|---|
| browser Back Forward and hash navigation keep the permitted page in sync | 3 |
| direct browser API tampering is rejected without changing stock or return history | 21 |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 7cd34b575161d0292f82eb3b3c2e527eb46fea9da0add1c2b4dcfc45c4811ce1
tests/e2e/customer-navigation-and-cart.spec.ts94 baris · 1 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian customer-navigation-and-cart.spec.ts. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
quickAddKeyboard · L3 | Helper skenario browser atau alat uji. Tindakan dan assertion yang dipakai terlihat pada kode. | Assertion toBeVisible |
Nama skenario asli browser
| Skenario | Baris |
|---|---|
| guest can browse, add from catalog, use cart, checkout and open order tracking | 11 |
| product card opens detail and native browser Back returns to catalog | 31 |
| cart persists without storing customer personal data | 42 |
| cart does not require choosing a branch and asks for one only at checkout | 55 |
| oversized quantity is rejected visibly and zero requests confirmation | 65 |
| empty cart control has readable label and cancellation preserves products | 86 |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 2705ac344617796b06992a5e0193b1b945c6aa5bee300c45ba9768512d906209
tests/e2e/customer-service-pages.spec.ts23 baris · 0 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian customer-service-pages.spec.ts. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Nama skenario asli browser
| Skenario | Baris |
|---|---|
| guest storefront exposes only compact commerce header actions | 3 |
| technician navigation contains only assigned work areas | 13 |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 15cc36557faa4079b8284fcadaff4c3c4079b970cf6dc30c9d2d094ed752c2f4
tests/e2e/employee-rights-history.spec.ts58 baris · 0 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian employee-rights-history.spec.ts. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Path API literal pada source
/api/pengguna/api/pengguna/riwayat?id_subject=/api/pengguna?q=/api/pengguna/
Nama skenario asli browser
| Skenario | Baris |
|---|---|
| owner can inspect the durable employee rights history from the employee page | 3 |
| cashier cannot forge a branch assignment or read canonical rights history | 32 |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 cffd9c6fdeb1da4c020315382d8d3ce96a3fb9a2825e70168bf1a6cafd52030e
tests/e2e/end-user-additional-pages.spec.ts82 baris · 0 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian end-user-additional-pages.spec.ts. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Path API literal pada source
/api/penjualan/api/stok/api/me/profile
Nama skenario asli browser
| Skenario | Baris |
|---|---|
| cashier has a separate, working sales history page with server-backed detail | 3 |
| quarantined stock has a dedicated role-scoped page backed by inventory filter | 22 |
| all staff can open profile and password as separate account workspaces | 38 |
| owner can update own name and email from Edit Profil | 57 |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 2f442a0e7a4d683904d6c2639a71b13fbcc5435f37e9cf370d3cc6876d5336a7
tests/e2e/end-user-deep-pages.spec.ts67 baris · 0 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian end-user-deep-pages.spec.ts. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Path API literal pada source
/api/pelanggan/api/pelanggan/
Nama skenario asli browser
| Skenario | Baris |
|---|---|
| cashier can inspect customer history instead of seeing contacts only | 3 |
| owner employee page exposes account and login security state | 33 |
| manager pages expose master summaries, inventory ordering, and purchase history filters | 46 |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 bf2da1308eeac6a3cdce2343a4b6b66150600e47b58db4615139e7c07322f19e
tests/e2e/end-user-pages.spec.ts184 baris · 0 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian end-user-pages.spec.ts. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Path API literal pada source
/api/stok/api/online-order/api/pembelian/api/audit-log/api/laporan/options
Nama skenario asli browser
| Skenario | Baris |
|---|---|
| owner has complete operational navigation and can open master pages | 3 |
| admin gets branch operations and master data without owner-only oversight pages | 20 |
| cashier gets front-desk operational pages but not admin or owner pages | 31 |
| technician sees only technical and read-only operational pages | 42 |
| owner operational pages expose end-user controls instead of placeholder content | 54 |
| cashier operational pages provide searchable lists and actionable forms | 90 |
| manager operational lists expose server-backed search filters and pagination | 120 |
| technician notification and technical filters are usable from the browser | 138 |
| owner audit log exposes traceability filters and readable evidence columns | 150 |
| owner reporting page exposes product, status, and supplier filters | 166 |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 c3d5922e4c84ee9ad3ddb1113ad61cda667267e0e6b549eb5be76493c7ab1f6c
tests/e2e/end-user-processes.spec.ts150 baris · 1 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian end-user-processes.spec.ts. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
unique · L3 | Helper skenario browser atau alat uji. Tindakan dan assertion yang dipakai terlihat pada kode. | Lihat signature dan isi fungsi. |
Path API literal pada source
/api/supplier/api/pengguna/api/pelanggan/api/servis
Nama skenario asli browser
| Skenario | Baris |
|---|---|
| owner can perform master-data, employee, and restock work from the UI | 5 |
| admin can manage master data, restock, and submit a stock transfer from the UI | 61 |
| cashier can create a customer and complete a customer-linked Kasir sale from the UI | 99 |
| cashier can create a customer during service reception and receive the device | 127 |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 7975a0a02cdfcbce85d8bf17e8bc7edb74f0ec62ea474634a89a3e7274d995aa
tests/e2e/end-user-usability.spec.ts38 baris · 0 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian end-user-usability.spec.ts. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Nama skenario asli browser
| Skenario | Baris |
|---|---|
| public storefront uses current concise commerce language | 3 |
| notification center is event-oriented and not stock monitoring | 11 |
| dashboard uses icon refresh and current business labels | 19 |
| owner approval workspaces do not expose editable raw signed URLs | 29 |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 5169f3f59378e61f8f0abd38c660938fe40aa8e2bb8eb80473308bd74cc868ca
tests/e2e/final-role-workspace-uat.spec.ts90 baris · 0 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian final-role-workspace-uat.spec.ts. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Path API literal pada source
/api/pelanggan/api/penjualan/api/penjualan/
Nama skenario asli browser
| Skenario | Baris |
|---|---|
| Kasir customer selection stays visible when the contact search changes, and the printed receipt is complete | 49 |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 aee4e1dc239ed8b6e3f76d955f7feaa3d62a3358f928679e92b525d57c8a8fa2
tests/e2e/fixture.php11 baris · 0 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian fixture.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 68c9004b1a1880dd58a272a728439edd009447553d05feece8c91fb8c4233661
tests/e2e/helpers.ts89 baris · 6 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian helpers.ts. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
fixtures · L5 | Helper skenario browser atau alat uji. Tindakan dan assertion yang dipakai terlihat pada kode. | Lihat signature dan isi fungsi. |
mail · L6 | Helper skenario browser atau alat uji. Tindakan dan assertion yang dipakai terlihat pada kode. | Lihat signature dan isi fungsi. |
openMenu · L41 | Membuka drawer menu internal. | Assertion toBeVisible |
navigateMenu · L56 | Helper skenario browser atau alat uji. Tindakan dan assertion yang dipakai terlihat pada kode. | Assertion toBeVisible |
login · L67 | Helper skenario browser atau alat uji. Tindakan dan assertion yang dipakai terlihat pada kode. | Assertion toBeVisible |
api · L81 | Helper skenario browser atau alat uji. Tindakan dan assertion yang dipakai terlihat pada kode. | return page.evaluate(async ({ method, path, data }) => { |
Path API literal pada source
/api/me
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 a431f18aa090cef4c3859131f3e8d6362c36818a3c49994c26a3ce19f6813463
tests/e2e/institution-and-damage.spec.ts146 baris · 0 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian institution-and-damage.spec.ts. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Path API literal pada source
/api/penjualan/api/penjualan//api/stok/api/nota-instansi/api/nota-instansi//api/audit-log?aksi=nota_instansi_decide&id_data=/api/pembelian/api/pembelian/
Nama skenario asli browser
| Skenario | Baris |
|---|---|
| admin creates an institution invoice and another owner approves the delivered link with history and printing | 3 |
| damaged purchase reception separates available stock and quarantine then permits a real supplier return | 85 |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 18a518aabaea3bb6eb8829a661492562f8db527a70165278c415663698eca80c
tests/e2e/online-order-operation-safety.spec.ts62 baris · 1 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian online-order-operation-safety.spec.ts. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
exampleOrder · L3 | Helper skenario browser atau alat uji. Tindakan dan assertion yang dipakai terlihat pada kode. | Lihat signature dan isi fungsi. |
Path API literal pada source
/api/online-order/api/online-order/10001/bukti-pembayaran/api/online-order/10002/bukti-pembayaran
Nama skenario asli browser
| Skenario | Baris |
|---|---|
| changing online-order search never selects another payment for staff automatically | 19 |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 27ec6d1ef82dea45740d96e8b7c1b879c706f1cdea27a5a7f14d10ec0b8076b3
tests/e2e/online-payment-guide.spec.ts38 baris · 1 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian online-payment-guide.spec.ts. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
addKeyboard · L3 | Helper skenario browser atau alat uji. Tindakan dan assertion yang dipakai terlihat pada kode. | Lihat signature dan isi fungsi. |
Path API literal pada source
/api/online/checkout
Nama skenario asli browser
| Skenario | Baris |
|---|---|
| checkout exposes only configured payment methods and creates a trackable order | 13 |
| direct cross-origin tracking link is rejected locally | 31 |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 7bc9a7c76bf4bedc906042476233a419cf5393171e6b60cabfc6925737ffcc07
tests/e2e/operational-drilldown.spec.ts70 baris · 0 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian operational-drilldown.spec.ts. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Nama skenario asli browser
| Skenario | Baris |
|---|---|
| cashier sales history exposes operational filters and summary cards | 3 |
| cashier online orders expose payment fulfillment date filters and workload summary | 18 |
| admin service and warranty pages expose assignment type date filters and work summaries | 33 |
| admin stock transfer history exposes counterpart branch date filters and movement summary | 57 |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 34c24ff79e86d6e39e7d0d31baad1119bc65ef8bff0592a1c15a28246c4df7ea
tests/e2e/owner-payment-and-branch-uat.spec.ts35 baris · 0 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian owner-payment-and-branch-uat.spec.ts. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Path API literal pada source
/api/owner/pengaturan-pembayaran/api/cabang?q=Cabang%20Dummy%20UAT%20Baru
Nama skenario asli browser
| Skenario | Baris |
|---|---|
| Owner dapat menyimpan dan mengubah rekening dummy melalui menu Pembayaran | 3 |
| Owner mencatat cabang baru sebagai nonaktif karena tenant belum terprovisi | 22 |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 014e8e90ad06801ef2100b6e2a2624c1ef96bfc5278c4c172464b99dc31f84f3
tests/e2e/report-export-security.spec.ts41 baris · 0 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian report-export-security.spec.ts. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Path API literal pada source
/api/produk?q=E2E-1/api/produk/
Nama skenario asli browser
| Skenario | Baris |
|---|---|
| report export treats formula text as data and printing isolates the popup | 5 |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 c4b419cde44eb86c684134bbc4ec15811fe460c74d74937b35186c767307b946
tests/e2e/returns-pages.spec.ts42 baris · 0 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian returns-pages.spec.ts. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Path API literal pada source
/api/retur-penjualan/sumber/api/retur-pembelian/sumber
Nama skenario asli browser
| Skenario | Baris |
|---|---|
| owner can open both return workflows with source, form and history areas | 3 |
| admin sees both returns while cashier can only access customer return | 23 |
| cashier sees customer return and cannot open supplier return | 30 |
| technician cannot see either transactional return page | 37 |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 2186ac3fa6ce39458465d342bb7acdf2b2ad9ea71ca889effe6ae63f406314a5
tests/e2e/reverb.php10 baris · 0 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian reverb.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 c7fabc3335e35a632630cdefe001c1a26cf7ff4e4b23a29873da7406a00b9914
tests/e2e/server.php14 baris · 0 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian server.php. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 547b32b299fd26d055def0b86d636821cf47323144ca19e2dad76a1df282568b
tests/e2e/setup.ts77 baris · 4 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian setup.ts. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
freePort · L8 | Helper skenario browser atau alat uji. Tindakan dan assertion yang dipakai terlihat pada kode. | Lihat signature dan isi fungsi. |
setup · L15 | Komponen atau fungsi utama berkas ini. | return cleanup; |
fixture · L29 | Helper skenario browser atau alat uji. Tindakan dan assertion yang dipakai terlihat pada kode. | Lihat signature dan isi fungsi. |
cleanup · L33 | Helper skenario browser atau alat uji. Tindakan dan assertion yang dipakai terlihat pada kode. | Lihat signature dan isi fungsi. |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 874dce9d00e81d8025ad9a541c5c8b4f06073e2fa3de4f82cd91eb20ab0f127e
tests/e2e/ux-audit-regressions.spec.ts135 baris · 0 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian ux-audit-regressions.spec.ts. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Path API literal pada source
/api/supplier/api/owner/cabang-aktif/api/me/api/stok/api/produk?q=E2E-1/api/produk//api/audit-log
Nama skenario asli browser
| Skenario | Baris |
|---|---|
| mobile master product cards keep edit action usable at 390px viewport | 3 |
| purchase does not silently replace an existing line price with a different unit cost | 17 |
| catalog does not show success feedback when cart already equals branch stock | 49 |
| owner branch selector applies the authoritative branch immediately and can switch back | 81 |
| owner audit log exposes before after actor and user agent for a real master-data change | 107 |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 bde9d6cf8107b65b61ef50e7320564e70735e62d80545c35538c59fb4eb0dbcf
tests/e2e/workflows.spec.ts267 baris · 0 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian workflows.spec.ts. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Path API literal pada source
/api/stok/api/produk/api/penjualan/api/penjualan//api/penjualan/harga-khusus/api/approval/penjualan//api/audit-log?aksi=harga_khusus_disetujui&id_data=/api/mutasi-stok/api/approval/mutasi//api/audit-log?aksi=mutasi_disetujui&id_data=/api/servis/api/servis//api/klaim-garansi/
Nama skenario asli browser
| Skenario | Baris |
|---|---|
| Kasir search, quantities, server pricing, payment, receipt and refresh safety | 5 |
| special price is approved by a different owner using delivered Magic Link | 46 |
| stock transfer is approved by owner through Magic Link and moves stock between tenants once | 85 |
| service reception, assignment, technical progress, parts, handover and both warranties | 150 |
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 7a5bc607b3b918f458e12a65c78a9fb13aded35f9133b287cc9f2c1d524cc879
tests/e2e/zap-local.mjs154 baris · 3 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian zap-local.mjs. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
captureZapOutput · L19 | Helper skenario browser atau alat uji. Tindakan dan assertion yang dipakai terlihat pada kode. | Lihat signature dan isi fungsi. |
pause · L20 | Helper skenario browser atau alat uji. Tindakan dan assertion yang dipakai terlihat pada kode. | Lihat signature dan isi fungsi. |
api · L21 | Helper skenario browser atau alat uji. Tindakan dan assertion yang dipakai terlihat pada kode. | return body; |
Path API literal pada source
/api/online/cabang/api/online/katalog?id_cabang=/api/me/api/notifikasi/api/stok/api/pengguna/riwayat/api/audit-log/api/laporan/options/api/pembelian/api/penjualan/api/servis
Dependensi kode proyek yang diimpor
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 92fccf13d51765e3236d7c14430935f3a6c90ca7460ef21c401c57bc57c1c686
tests/test_branch_worker.py86 baris · 6 fungsi bernama
Untuk apa
Kode pengujian atau dukungan pengujian test_branch_worker.py. Skenario dan assertion dibaca langsung dari fungsi atau test pada berkas ini.
Jika diminta mengubah
Edit skenario jika perilaku yang diharapkan berubah. Keberadaan file tidak menyatakan tes sudah dijalankan atau lulus UAT manusia.
Fungsi dan metode
| Fungsi dan input atau hasil | Penjelasan singkat | Bukti source |
|---|---|---|
def test_generated_compose_contains_isolated_runtime_without_admin_password(self): | Helper proses atau pengujian test_generated_compose_contains_isolated_runtime_without_admin_password. Input, operasi sistem dan hasil harus dibaca dari kode sebelum dijalankan. | Assertion assertIn, assertNotIn, assertEqual |
def test_sql_identity_is_fixed_by_numeric_branch_id(self): | Helper proses atau pengujian test_sql_identity_is_fixed_by_numeric_branch_id. Input, operasi sistem dan hasil harus dibaca dari kode sebelum dijalankan. | Assertion assertIn, assertRaises |
def test_failed_nginx_validation_restores_previous_map(self): | Helper proses atau pengujian test_failed_nginx_validation_restores_previous_map. Input, operasi sistem dan hasil harus dibaca dari kode sebelum dijalankan. | Assertion assertRaises, assertEqual |
def test_successful_nginx_reload_writes_all_routes(self): | Helper proses atau pengujian test_successful_nginx_reload_writes_all_routes. Input, operasi sistem dan hasil harus dibaca dari kode sebelum dijalankan. | Assertion assertIn, assertEqual |
def fake_invoke(args, **kwargs): | Helper proses atau pengujian fake_invoke. Input, operasi sistem dan hasil harus dibaca dari kode sebelum dijalankan. | return None |
def fake_invoke(args, **kwargs): | Helper proses atau pengujian fake_invoke. Input, operasi sistem dan hasil harus dibaca dari kode sebelum dijalankan. | Lihat signature dan isi fungsi. |
Buka kode asli bernomor baris
Kode hanya ditampilkan sebagai teks. Tidak dieksekusi oleh panduan. Nomor baris mengikuti sumber yang dibaca.
Identitas snapshot
SHA-256 e0ec836d5857c53d611b0215b7a6f053ada071d8be60ab9bd797e6198212de73
13 · Cakupan dan pemeriksaan panduan
Bab ini mengacu snapshot kode panduan sebelumnya. Pembaruan peran Admin, satu pengiriman dan audit 20 Oktober dijelaskan pada Bab 14. Source paket revisi bukan bukti bahwa paket sudah terpasang pada VPS.
| Asal source | Jumlah berkas |
|---|---|
| Salinan pendukung sebelumnya | 42 |
| Revisi ZIP v5 | 32 |
| Unggahan sumber 17 Oktober | 385 |
- Setiap berkas sumber utama atau payload revisi yang dipakai dicocokkan dengan byte arsipnya sebelum penjelasan dibangun.
- Rujukan berkas dan fungsi diperiksa terhadap source yang disertakan. Kode asli disimpan di dalam HTML ini agar tidak bergantung pada folder proyek saat dibaca.
- Penjelasan dibuat per unit fungsi dan blok penting. Tanda kurung dan sintaks berulang diringkas pada bab Cara membaca sintaks.
- Kode pendukung yang hanya ada pada salinan sebelumnya ditandai, sehingga tidak disamakan dengan upload source terbaru atau konfigurasi efektif VPS.
- Lockfile dependensi dijelaskan fungsinya pada manifest. Binary gambar, library vendor, cache hasil generate dan dokumen catatan lain bukan bagian indeks kode teks ini.
- Contoh perubahan merupakan bahan latihan. Source aplikasi dan arsip patch tidak dimutasi oleh pembuatan panduan.
Disusun 19 Oktober 2026. Gunakan buku kode ini untuk menunjukkan lokasi dan menjelaskan mekanisme, kemudian gunakan bukti eksekusi yang benar-benar kamu peroleh untuk menyatakan hasil pengujian.
14 · Catatan bimbingan lengkap
Seluruh isi Catatan_Bimbingan_Pak_Fikri_7_Agustus_2026.md versi 28 disimpan dalam HTML ini. Catatan bertambah 51 baris dibanding versi 26. Transkrip, lampiran yang sudah digabung, teks lama dan seluruh koreksi dalam file dipertahankan.
Keputusan yang lebih baru daripada catatan versi 28
Bagian ini menggabungkan koreksi yang ditemukan melalui ringkasan penelusuran chat dan pemeriksaan isi paket revisi. Teks catatan versi 28 tetap disimpan utuh di bawahnya. Hasil penelusuran belum menyediakan transkrip penuh semua pesan.
| Pokok | Ketentuan terbaru | Bukti yang tersedia |
|---|---|---|
| Pelaku transaksi | Pelanggan melakukan checkout. Admin cabang menangani Online Order dan verifikasi pembayaran. Kasir menangani retail. Pembayaran gabungan diverifikasi satu kali oleh Admin dari cabang yang terkait. | Tambahan catatan 20 Oktober. |
| Pengiriman | Masing-masing cabang menandai barang siap. Pelanggan menerima satu paket dengan kurir dan resi yang sama setelah barang terkumpul dan diserahkan petugas. | Catatan versi 28 dan source paket konsolidasi. |
| Audit | Koreksi chat 20 Oktober meminta penggunaan audit_log yang sudah ada dan penghapusan online_checkout_group_audit. Audit setiap nota menggunakan ID penjualan pada tenant terkait. Penghapusan tabel di VPS belum dapat dinyatakan selesai. | Ringkasan pesan pengguna 20 Oktober pukul 17.32 WIB dan source recordAudit. |
| Tipe ID audit | audit_log.id_data tetap INTEGER. ID checkout yang berbentuk ULID disimpan sebagai metadata JSON. Tipe id_data tidak diganti agar dapat menerima ULID. | Ringkasan pesan pengguna pukul 17.02 WIB serta insert audit pada paket. |
| ERD | Tambahan versi 28 yang masih menyebut tiga tabel checkout perlu dibaca sebagai riwayat sebelum koreksi audit. Paket terbaru memuat dua tabel checkout master dan memakai audit_log tenant yang sudah ada. Hubungan master dengan nota tenant tetap berupa hubungan logis lintas database. | Migration pada paket konsolidasi. Ini bukti isi paket, bukan bukti keadaan schema VPS. |
| Pemindahan audit lama | Script paket mencoba menyalin audit lama ke audit_log tenant dan memeriksa hasil sebelum mengizinkan penghapusan tabel tambahan. Hasil pemindahan dan DROP TABLE harus dibuktikan dari output aktual. Pesan deploy berhasil yang muncul sebelum tahap audit tidak cukup membuktikan tabel sudah dihapus. | AUDIT_CLEANUP.php dan tahap akhir RUN_PATCH.py. |
| Keadaan pemasangan | Percakapan terakhir melaporkan konflik source pada OnlineOrderWorkflow.php, OnlineOrdersPanel.tsx dan GroupedOnlineCheckout.php. Penelusuran berikutnya juga menemukan kiriman hash source VPS. Belum ada output pemasangan berhasil yang dapat diverifikasi untuk paket konsolidasi. | Ringkasan percakapan 20 Oktober. Bagian hasil yang terpotong tidak diisi ulang. |
| Pengujian | UAT tetap dilakukan oleh pengguna sebagai end user. Pengujian keamanan masih ditunda sesuai permintaan terbaru. Katalog command keamanan disimpan sebagai arsip. | Ringkasan permintaan pengguna 20 Oktober. |
Paket terbaru yang ditemukan bernama Rajawali_PATCH_KONSOLIDASI_ADMIN_AUDIT_BERDASARKAN_VPS_20Okt2026.zip. Keberadaan paket dan kelulusan syntax tidak menetapkan paket tersebut sudah aktif pada VPS.
Tambahan pada catatan versi 28
Bagian UAT mencatat hasil ALM-01 sampai ALM-03, nama dan email penerima, serta hubungan pemesan dengan penerima. Bagian 20 Oktober menjelaskan pembagian peran, pembayaran gabungan, pengiriman dan dampak ERD. Pembahasan tabel audit pada bagian tersebut mendahului koreksi chat yang ditampilkan di atas.
001Catatan TA Rajawali ComputerBaris 1–3
002Penerapan koreksi URL, keranjang, dan form UAT 19 Oktober 2026Baris 4–113
003Koreksi lanjutan UAT publik dan URL 17 Oktober 2026Baris 114–148
004Installer berhenti pada pemeriksaan AuthApp VPS 17 Oktober 2026Baris 149–190
005Pemeriksaan arahan bimbingan terbaru dan revisi lanjutan 17 Oktober 2026Baris 191–834
006Koreksi pelaksana UAT dan hasil preflight terbaru 17 Oktober 2026Baris 835–996
007Kelanjutan setelah VPS aktif pada 17 Oktober 2026Baris 997–1079
008Panduan dan arsip sebelum VPS aktif kembaliBaris 1080–1085
009Petunjuk membacaBaris 1086–1098
010Status kelengkapanBaris 1099–1127
011Urutan pekerjaanBaris 1128–1180
012Jawaban persiapan bimbinganBaris 1181–1470
013Peta Clark-WilsonBaris 1471–1548
014Peta OWASP Top 10 2025Baris 1549–1632
015Skenario pembuktianBaris 1633–1731
016Arsip Notes TA yang berhasil ditelusuriBaris 1732–1756
017Referensi yang diperiksaBaris 1757–1769
018Hasil pemeriksaan pembaruan iniBaris 1770–1782
019Arsip catatan dan lampiran sebelum pembaruan 17 Oktober 2026Baris 1783–1792
020Indeks sumber dan riwayatBaris 1793–1844
021Lampiran 1: Catatan_Bimbingan_Pak_Fikri_7_Agustus_2026.mdBaris 1845–1852
022Bagian yang Belum Dapat Dijelaskan dengan MantapBaris 1853–1896
023Keputusan Struktur ERD Setelah BimbinganBaris 1897–1908
024Catatan Tambahan Setelah BimbinganBaris 1909–1960
025Transkripsi berurutan seluruh rekamanBaris 1961–3592
026Analisis setelah seluruh rekaman diprosesBaris 3593–3858
027Hasil revisi dan pemeriksaan source 12 Oktober 2026Baris 3859–3880
028Pemeriksaan lanjutan 13 Oktober 2026 setelah Work terhentiBaris 3881–3915
029Koreksi keputusan setelah bimbingan, 13 Oktober 2026: Git untuk pekerjaan TA pribadiBaris 3916–3924
030Alasan DataTables yang harus dipersiapkan untuk bimbinganBaris 3925–3928
031Sumber dan batas pembacaanBaris 3929–3938
032Arsip catatan sementara 9 Oktober sebelum pemrosesan lengkapBaris 3939–3949
033Pekerjaan yang Harus Dilakukan Setelah BimbinganBaris 3950–3958
034Bagian yang Belum Dapat Dijawab dengan Mantap pada Bimbingan 9 Oktober 2026Baris 3959–3965
035Pertanyaan Pak Fikri yang Perlu Dipersiapkan KembaliBaris 3966–3976
036Tindak Lanjut DataTablesBaris 3977–3980
037Koreksi Verifikasi Bimbingan 9 Oktober 2026 (12 Oktober)Baris 3981–3993
038Catatan Pengembangan 14 Oktober 2026 - Evaluasi Kebutuhan FungsionalBaris 3994–4051
039Sumber dan batas kepastianBaris 4052–4063
040Hasil bimbingan secara terperinciBaris 4064–4364
041Hal yang belum dapat dijawab atau dibuktikan dengan mantapBaris 4365–4386
042Daftar arahan dan pekerjaan lanjutanBaris 4387–4424
043Hal yang sudah dijelaskan atau ditanggapi positifBaris 4425–4434
044Rencana pertemuan berikutnyaBaris 4435–4444
045Batas penafsiran yang perlu dipertahankanBaris 4445–4459
046Transkrip kerja berurutan seluruh rekamanBaris 4460–4703
047Bagian yang masih perlu pemeriksaan audio manualBaris 4704–4734
0481. CAPTCHA dan asal penyebutan CloudflareBaris 4735–4808
0492. Halaman 404 dan penanganan kegagalanBaris 4809–4882
0503. Autentikasi dan sesi pegawaiBaris 4883–5015
0514. Log, alert, dan pemblokiran IPBaris 5016–5089
0525. Alur pelanggan dan pemilihan cabangBaris 5090–5256
0536. Alasan Clark-Wilson dan kontrol integritasBaris 5257–5422
0547. Alasan arsitektur dan teknologiBaris 5423–5621
0558. Keamanan aplikasi dan pemetaan OWASPBaris 5622–5722
0569. Pengujian dan bukti untuk bimbinganBaris 5723–5798
05710. Urutan bukti singkat saat bimbinganBaris 5799–5811
05811. Sumber resmi yang diperiksa untuk alasan teknisBaris 5812–5855
059Lampiran 2: Catatan_Bimbingan_Pak_Fikri_7_Agustus_2026(1).mdBaris 5856–5863
060Bagian yang Belum Dapat Dijelaskan dengan MantapBaris 5864–5907
061Keputusan Struktur ERD Setelah BimbinganBaris 5908–5919
062Catatan Tambahan Setelah BimbinganBaris 5920–5971
063Transkripsi berurutan seluruh rekamanBaris 5972–7602
064Analisis setelah seluruh rekaman diprosesBaris 7603–7850
065Hasil revisi dan pemeriksaan source 12 Oktober 2026Baris 7851–7872
066Pemeriksaan lanjutan 13 Oktober 2026 setelah Work terhentiBaris 7873–7907
067Sumber dan batas pembacaanBaris 7908–7917
068Arsip catatan sementara 9 Oktober sebelum pemrosesan lengkapBaris 7918–7928
069Pekerjaan yang Harus Dilakukan Setelah BimbinganBaris 7929–7937
070Bagian yang Belum Dapat Dijawab dengan Mantap pada Bimbingan 9 Oktober 2026Baris 7938–7944
071Pertanyaan Pak Fikri yang Perlu Dipersiapkan KembaliBaris 7945–7955
072Tindak Lanjut DataTablesBaris 7956–7959
073Koreksi Verifikasi Bimbingan 9 Oktober 2026 (12 Oktober)Baris 7960–7972
074Lampiran 3: Catatan_Bimbingan_Pak_Fikri_7_Agustus_2026.md [versi /TA/]Baris 7973–7982
075Bagian yang Belum Dapat Dijelaskan dengan MantapBaris 7983–8026
076Keputusan Struktur ERD Setelah BimbinganBaris 8027–8038
077Catatan Tambahan Setelah BimbinganBaris 8039–8090
078Transkripsi berurutan seluruh rekamanBaris 8091–9721
079Analisis setelah seluruh rekaman diprosesBaris 9722–9981
080Lampiran 4: Catatan_Bimbingan_Pak_Fikri_7_Agustus_2026.md [snapshot lama]Baris 9982–9989
081Bagian yang Belum Dapat Dijelaskan dengan MantapBaris 9990–10033
082Keputusan Struktur ERD Setelah BimbinganBaris 10034–10045
083Catatan Tambahan Setelah BimbinganBaris 10046–10097
084Transkripsi berurutan seluruh rekamanBaris 10098–11729
085Analisis setelah seluruh rekaman diprosesBaris 11730–11995
086Hasil revisi dan pemeriksaan source 12 Oktober 2026Baris 11996–12017
087Pemeriksaan lanjutan 13 Oktober 2026 setelah Work terhentiBaris 12018–12052
088Koreksi keputusan setelah bimbingan, 13 Oktober 2026: Git untuk pekerjaan TA pribadiBaris 12053–12061
089Alasan DataTables yang harus dipersiapkan untuk bimbinganBaris 12062–12065
090Sumber dan batas pembacaanBaris 12066–12075
091Arsip catatan sementara 9 Oktober sebelum pemrosesan lengkapBaris 12076–12086
092Pekerjaan yang Harus Dilakukan Setelah BimbinganBaris 12087–12095
093Bagian yang Belum Dapat Dijawab dengan Mantap pada Bimbingan 9 Oktober 2026Baris 12096–12102
094Pertanyaan Pak Fikri yang Perlu Dipersiapkan KembaliBaris 12103–12113
095Tindak Lanjut DataTablesBaris 12114–12117
096Koreksi Verifikasi Bimbingan 9 Oktober 2026 (12 Oktober)Baris 12118–12130
097Catatan Pengembangan 14 Oktober 2026 - Evaluasi Kebutuhan FungsionalBaris 12131–12184
098Catatan teknis lanjutan 14 Oktober 2026 — URL `/#keranjang` untuk persiapan penjelasan sidangBaris 12185–12201
099Lampiran 6: Combine Panduan Edit ERD.txtBaris 12202–12977
100Lampiran 7: Combine%20Panduan%20Edit%20ERD%20-%20DIRAPIKAN%20-%20FIX%20FINAL.txtBaris 12978–13452
101Lampiran 8: Combine%20Panduan%20Edit%20ERD%20-%20DIRAPIKAN.txtBaris 13453–13930
102Lampiran 9: DEPLOYMENT_CHECKLIST.txtBaris 13931–13962
103Lampiran 10: Interview Rajawali Comp.txtBaris 13963–14119
104Lampiran 11: Manual_UAT_Local_Rajawali_Computer.txtBaris 14120–14312
105Lampiran 12: Panduan Revisi ERD Rajawali Computer.txtBaris 14313–14736
106Lampiran 13: Panduan_Bimbingan_Clark_Wilson_OWASP_Rajawali_15_Oktober_2026.mdBaris 14737–14748
107Blok 1. C1 Pemeriksaan CDI yang sudah tersimpanBaris 14749–14766
108Blok 2. C1 Pemanggilan IVP dari commandBaris 14767–14780
109Blok 3. C2 Pemanggilan perubahan stok, IVP, dan auditBaris 14781–14802
110Blok 4. C2 Persamaan stok dan hargaBaris 14803–14824
111Blok 5. C2 Persamaan pembayaranBaris 14825–14840
112Blok 6. C3 Pengaju dilarang memutuskan pengajuan sendiriBaris 14841–14861
113Blok 7. C4 Penulisan audit CDI dan kegagalan auditBaris 14862–14892
114Blok 8. C4 Perlindungan audit pada PostgreSQLBaris 14893–14913
115Blok 9. C5 Validasi masukan transaksiBaris 14914–14933
116Blok 10. C5 Pemeriksaan ulang sebelum service memakai inputBaris 14934–14951
117Blok 11. E1 Pembatasan hak dan jalur fungsi PostgreSQLBaris 14952–14983
118Blok 12. E1 Trigger penolak perubahan langsungBaris 14984–15005
119Blok 13. E1 Pemanggilan fungsi stok dari aplikasiBaris 15006–15027
120Blok 14. E2 Peta TP, role, CDI, UDI, IVP, dan auditBaris 15028–15046
121Blok 15. E2 Pemakaian relasi dan pemeriksaan penggunaBaris 15047–15074
122Blok 16. E2 Pembatasan cabangBaris 15075–15097
123Blok 17. E3 Pemeriksaan password dan lockoutBaris 15098–15131
124Blok 18. E3 Pembentukan session setelah loginBaris 15132–15153
125Blok 19. E4 Pemisahan nama otoritas certifierBaris 15154–15168
126Blok 20. E4 Batas penerapan pada kewenangan OwnerBaris 15169–15189
127Blok 21. E4 Perubahan role pegawai melalui TP OwnerBaris 15190–15211
128Blok 22. A01 Pemeriksaan identitas session di backendBaris 15212–15239
129Blok 23. A01 Pemeriksaan role di middlewareBaris 15240–15255
130Blok 24. A02 Security headersBaris 15256–15282
131Blok 25. A02 Pendaftaran middlewareBaris 15283–15304
132Blok 26. A03 Instalasi dependency frontend dari lockfileBaris 15305–15319
133Blok 27. A03 Instalasi dependency PHP dari lockfileBaris 15320–15334
134Blok 28. A04 Pemilihan Argon2idBaris 15335–15358
135Blok 29. A04 Pembuatan token pengajuanBaris 15359–15372
136Blok 30. A04 Penyimpanan hash tokenBaris 15373–15387
137Blok 31. A05 Query stok berparameterBaris 15388–15403
138Blok 32. A05 Pilihan filter yang dibatasiBaris 15404–15420
139Blok 33. A06 Harga diambil dari backendBaris 15421–15442
140Blok 34. A07 LockoutBaris 15443–15466
141Blok 35. A07 Rate limit loginBaris 15467–15488
142Blok 36. A07 Pemasangan rate limit pada routeBaris 15489–15503
143Blok 37. A08 Pembuatan signed URLBaris 15504–15523
144Blok 38. A08 Pemeriksaan signed URL pada routeBaris 15524–15540
145Blok 39. A08 Pemeriksaan status, masa berlaku, dan tokenBaris 15541–15563
146Blok 40. A08 Token dinonaktifkan setelah keputusanBaris 15564–15584
147Blok 41. A09 Pencatatan login gagal dan akun terkunciBaris 15585–15602
148Blok 42. A09 Pengiriman peringatan keamananBaris 15603–15629
149Blok 43. A09 Kondisi alert belum dikonfigurasiBaris 15630–15646
150Blok 44. A10 Respons kesalahan yang dibatasiBaris 15647–15663
151Blok 45. A10 Pendaftaran penanganan exceptionBaris 15664–15681
152Blok 46. A10 Pencatatan error dan pemanggilan alertBaris 15682–15706
153Cara menunjukkan satu alur lengkapBaris 15707–15710
154Panduan pembicaraan dan demonstrasi sebelumnyaBaris 15711–15720
1551. Pembukaan yang bisa disampaikanBaris 15721–15733
1562. Persiapan sebelum demonstrasiBaris 15734–15755
1573. Arsitektur yang harus bisa dijelaskanBaris 15756–15786
1584. Jawaban inti tentang Clark-WilsonBaris 15787–15810
1595. Peta C1 sampai C5 dan E1 sampai E4Baris 15811–15846
1606. Contoh utama penjualan normalBaris 15847–15891
1617. Variabel yang harus bisa dijelaskanBaris 15892–15916
1628. Demonstrasi harga khusus dan approvalBaris 15917–15957
1639. Penjelasan Magic Link dan asynchronous approvalBaris 15958–15984
16410. Pembuktian E1 pada databaseBaris 15985–16019
16511. IVP, rollback, dan transaksi bersamaanBaris 16020–16054
16612. Audit log yang harus ditunjukkanBaris 16055–16094
16713. Implementasi OWASP Top 10 2025Baris 16095–16141
16814. Cara memperagakan OWASP dengan bukti nyataBaris 16142–16175
16915. Jawaban login dan lockoutBaris 16176–16209
17016. Jawaban parameter from=onlineBaris 16210–16223
17117. Jawaban guest checkout dan garansiBaris 16224–16271
17218. Jawaban DataTablesBaris 16272–16303
17319. Jawaban pemilihan teknologiBaris 16304–16321
17420. Jawaban GitBaris 16322–16335
17521. Jawaban ERD yang sebelumnya belum mantapBaris 16336–16350
17622. Mutasi stok dan konsistensi lintas databaseBaris 16351–16377
17723. Urutan demonstrasi bimbinganBaris 16378–16401
17824. Bukti Bab V dan Bab VIBaris 16402–16433
17925. Pertanyaan yang perlu disampaikan kepada pembimbingBaris 16434–16445
18026. Pekerjaan yang perlu dilaporkan statusnyaBaris 16446–16468
18127. File yang paling cepat dibuka di VS CodeBaris 16469–16493
18228. Sumber asli dan resmiBaris 16494–16533
18329. Pembaruan arahan Pak Miftah 17 Oktober 2026Baris 16534–16539
184A. Keputusan implementasiBaris 16540–16550
185B. Pembedaan sistem, jawaban sidang, dan batas buktiBaris 16551–16562
186C. Urutan UAT manual — gunakan Chrome normalBaris 16563–16581
187D. Security test case: jalankan TERBATAS di lingkungan pengujian, bukan data produksi riilBaris 16582–16605
188E. Langkah alat pengujian keamanan (setelah UAT fungsional)Baris 16606–16626
189F. Persiapan sidang — contoh latihan perubahan kodeBaris 16627–16632
190G. Tugas yang bukan bisa "otomatis selesai" hanya dengan ZIPBaris 16633–16644
191Lampiran 14: PANDUAN_BIMBINGAN_DAN_SECURITY_TESTING_17OKT2026.mdBaris 16645–16652
192A. Keputusan implementasiBaris 16653–16663
193B. Pembedaan sistem, jawaban sidang, dan batas buktiBaris 16664–16675
194C. Urutan UAT manual — gunakan Chrome normalBaris 16676–16694
195D. Security test case: jalankan TERBATAS di lingkungan pengujian, bukan data produksi riilBaris 16695–16718
196E. Langkah alat pengujian keamanan (setelah UAT fungsional)Baris 16719–16739
197F. Persiapan sidang — contoh latihan perubahan kodeBaris 16740–16745
198G. Tugas yang bukan bisa "otomatis selesai" hanya dengan ZIPBaris 16746–16757
199Lampiran 15: PANDUAN_DEPLOY_RAJAWALI_VPS.txtBaris 16758–16887
200Lampiran 16: PANDUAN_TAHAP_2_DEPLOY_RAJAWALI.txtBaris 16888–16939
201Lampiran 17: PANDUAN_UAT_DAN_SECURITY_TOOLS.mdBaris 16940–16945
202Dasar dan lingkunganBaris 16946–16949
2031. Pra-UAT pengembang, lalu UAT pemilik dan stafBaris 16950–16962
2042. Burp Suite Community, langkah manualBaris 16963–16984
2053. OWASP ZAP yang sudah tersedia di sourceBaris 16985–16990
2064. Alat dan pemeriksaan lainBaris 16991–17005
2075. Tahap dinyatakan lulusBaris 17006–17012
208Lampiran 18: Pasted markdown(1).mdBaris 17013–17039
209Lampiran 19: Pasted markdown.mdBaris 17040–17157
210Lampiran 20: Pasted text(1).txtBaris 17158–17207
211Lampiran 21: Pasted text(10).txtBaris 17208–17533
212Lampiran 22: Pasted text(2).txtBaris 17534–17583
213Lampiran 23: Pasted text(20260923-155546).txtBaris 17584–17806
214Lampiran 24: Pasted text(20260925-094134).txtBaris 17807–18279
215Lampiran 25: Pasted text(20260925-095358).txtBaris 18280–18484
216Lampiran 26: Pasted text(20260925-103227).txtBaris 18485–19117
217Lampiran 27: Pasted text(20260929-154322).txtBaris 19118–19281
218Lampiran 28: Pasted text(20261002-080622).txtBaris 19282–19519
219Lampiran 29: Pasted text(20261017-063546).txtBaris 19520–19940
220Lampiran 30: Pasted text(3).txtBaris 19941–19975
221Lampiran 31: Pasted text(4).txtBaris 19976–20677
222Lampiran 32: Pasted text(5).txtBaris 20678–20945
223Lampiran 33: Pasted text(6).txtBaris 20946–21273
224Lampiran 34: Pasted text(7).txtBaris 21274–21972
225Lampiran 35: Pasted text(8).txtBaris 21973–22219
226Lampiran 36: Pasted text(9).txtBaris 22220–22652
227Lampiran 37: Pasted text.txtBaris 22653–22691
228Lampiran 38: RENCANA_CABANG_BARU_MANDIRI.mdBaris 22692–22697
229Status saat iniBaris 22698–22701
230Target fungsional yang belum diterapkanBaris 22702–22705
231Arsitektur aman yang diperlukanBaris 22706–22715
232Skenario UAT sebelum klaim selesaiBaris 22716–22728
233Lampiran 39: STATUS_FUNGSI_DAN_PEKERJAAN_14_OKT_2026.mdBaris 22729–22734
234Batas laporanBaris 22735–22738
235Fungsional menurut sourceBaris 22739–22757
236Bukti yang sudah diperoleh dari VPS (berdasarkan output yang dibagikan)Baris 22758–22765
237Perbedaan jenis pengujianBaris 22766–22772
238Urutan pekerjaan yang tidak perlu mengulang deploymentBaris 22773–22787
239Lampiran 40: PANDUAN_FITUR_PENGATURAN_PEMBAYARAN.mdBaris 22788–22793
240Hasil perubahan source 14 Oktober 2026Baris 22794–22804
241Migrasi yang diperlukan pada setiap lingkunganBaris 22805–22815
242UAT minimal sebelum produksiBaris 22816–22824
243Status implementasiBaris 22825–22828
244Sisa persyaratan release produksiBaris 22829–22832
245Penambahan hasil audit lanjutan 14 OktoberBaris 22833–22844
246Lampiran 41: PANDUAN_LENGKAP_BIMBINGAN_17OKT2026.mdBaris 22845–22852
247A. Keputusan implementasiBaris 22853–22863
248B. Pembedaan sistem, jawaban sidang, dan batas buktiBaris 22864–22875
249C. Urutan UAT manual — gunakan Chrome normalBaris 22876–22894
250D. Security test case: jalankan TERBATAS di lingkungan pengujian, bukan data produksi riilBaris 22895–22918
251E. Langkah alat pengujian keamanan (setelah UAT fungsional)Baris 22919–22939
252F. Persiapan sidang — contoh latihan perubahan kodeBaris 22940–22945
253G. Tugas yang bukan bisa "otomatis selesai" hanya dengan ZIPBaris 22946–22956
254Koreksi pengguna 17 Oktober 2026 setelah Persiapan Pembuktian TABaris 22957–22986
255Pembaruan implementasi dari ZIP source VPS aktual, 17 Oktober 2026Baris 22987–23004
256Tambahan 19 Oktober 2026: Bukti checkout gabungan, validasi alamat, dan pengujian keamananBaris 23005–23062
257Koreksi Validasi Alamat Tanpa Biaya dan Pembuktian Sidang, 19 Oktober 2026Baris 23063–23085
258Tambahan UAT 19 Oktober 2026 – Nama Penerima dan Validasi AlamatBARU · Baris 23086–23099
259Tambahan 20 Oktober 2026: checkout gabungan, pembagian tugas, dan dampak ERDBARU · Baris 23100–23134
Teks asli catatan versi 28 utuh
Teks ini mempertahankan isi file sumber, termasuk penjelasan yang kemudian dikoreksi oleh percakapan terbaru. Penanda koreksi pada tampilan bacaan tidak mengubah teks asli.
Bukti kelengkapan penggabungan
| Isi catatan versi 28 | 23.134 baris dan 1.468.975 byte UTF-8 |
|---|---|
| SHA-256 catatan lengkap | 8af92bf142d59b463b928028140743bd7c47cb3ded8be8ed005d21729ba7ba19 |
| Isi sebelumnya | Seluruh teks catatan versi 26 berada pada awal versi 28. Tidak ada baris catatan lama yang hilang. |
| Indeks kode lama | Seluruh 459 berkas kode, 2.770 tombol rujukan, 16 latihan dan 37 tanya jawab dipertahankan. |
| Batas sumber chat | Koreksi baru di atas menggunakan ringkasan penelusuran dan isi paket. Transkrip penuh seluruh chat Project TA belum tersedia. |
Lima lampiran belum tersedia untuk dibaca
Kelima lampiran berikut belum dapat dibaca dari kiriman terbaru. Unggah ulang agar isi aslinya dapat diperiksa. Penggabungan ini memakai catatan versi 28 dan sumber lain yang tersedia.
- ERD Besar MySQL - 3.mwb
- Week 2 Distributed Computing Security Model.pptx
- Week 12 Cloud Security dan Incident response.pptx
- Week 4 Distributed Computing Security Model.pptx
- 2026-09-03 14-23-32.mp3
15 · Command proyek menurut fungsi
Katalog memuat 170 entri unik dalam 18 kelompok fungsi dengan 394 kemunculan sumber. Seluruh 146 entri lama dipertahankan. Sebanyak 24 entri tambahan berasal dari teks asli script pada 12 paket revisi.
Catatan versi 28, 19 lampiran teks yang sudah tersimpan, serta script pada 12 paket revisi diperiksa. Tujuh hasil penelusuran chat tersimpan sebagai sumber. Hasil tersebut berupa potongan atau ringkasan, sehingga seluruh command yang hanya ada pada pesan yang belum terambil belum dapat diverifikasi.
Entri lama berisi input terminal, panduan dan potongan command. Tambahan script mempertahankan bentuk Python aslinya. Command yang dicetak installer juga diberi penanda. Keberadaan command dalam script tidak berarti command telah dijalankan pengguna atau berhasil pada VPS.
ZIP, patch, verifikasi hash dan pemasangan 8 entri
APPLY_LOGIN_AND_ENDUSER_FINAL.cmd10 kemunculan
Membaca, menyiapkan atau memeriksa berkas patch dan artefak source yang disebutkan.
Tercatat sebagai input terminal
APPLY_LOGIN_AND_ENDUSER_FINAL.cmdAsal dan konteks
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / Lampiran 36: Pasted text(9).txt
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / Lampiran 36: Pasted text(9).txt
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / Lampiran 36: Pasted text(9).txt
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / Lampiran 36: Pasted text(9).txt
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / Lampiran 36: Pasted text(9).txt
- Lampiran teks lengkap
- Lampiran teks lengkap
- Lampiran teks lengkap
- Lampiran teks lengkap
- Lampiran teks lengkap
APPLY_LOGIN_SESSION_REAL_FIX_V7.cmd2 kemunculan
Membaca, menyiapkan atau memeriksa berkas patch dan artefak source yang disebutkan.
Tercatat sebagai input terminal
APPLY_LOGIN_SESSION_REAL_FIX_V7.cmdAsal dan konteks
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / Lampiran 35: Pasted text(8).txt
- Lampiran teks lengkap
ls -lh /LOKASI_SEBENARNYA/rajawali_13OCT_TAHAP2_CLOUDPANEL_DOCKER.zip1 kemunculan
Membaca, menyiapkan atau memeriksa berkas patch dan artefak source yang disebutkan.
Ditulis sebagai blok panduan atau SQL
ls -lh /LOKASI_SEBENARNYA/rajawali_13OCT_TAHAP2_CLOUDPANEL_DOCKER.zipAsal dan konteks
- Catatan induk lengkap · Tahap 2 — Persiapan deployment Rajawali melalui CloudPanel + Docker / Contoh perintah pengecekan setelah ZIP berada di VPS
python3 - <<'PY' · 15 baris2 kemunculan
Membandingkan isi source lokal dengan manifest patch dan menampilkan berkas yang berbeda. Blok ini membaca berkas, bukan menjalankan INSTALL_ALL.py.
Ditulis sebagai blok panduan atau SQL
python3 - <<'PY'
from pathlib import Path
from zipfile import ZipFile
from hashlib import sha256
import json
root = Path.cwd()
archive = ZipFile("Rajawali_PATCH_REVISI_FITUR_SAJA_17Okt2026_KOREKSI.zip")
manifest = json.loads(archive.read("FILE_VERIFICATION.json"))["files"]
names = ["resources/js/AuthApp.tsx"] + list(manifest)
files = [(name, (root / name).read_bytes()) for name in names if (root / name).is_file()]
different = [(name, data) for name, data in files if name == "resources/js/AuthApp.tsx" or sha256(data).hexdigest() not in manifest[name]["before"] + [manifest[name]["after"]]]
[print("\nFILE " + name + "\nSHA256 " + sha256(data).hexdigest() + "\n" + data.decode("utf-8")) for name, data in different]
[print("FILE TIDAK ADA " + name) for name in names if not (root / name).is_file() and not manifest.get(name, {}).get("allow_missing", False)]
print("PEMERIKSAAN_SELESAI_TANPA_PERUBAHAN")
PYAsal dan konteks
- Catatan induk lengkap · Catatan TA Rajawali Computer / Installer berhenti pada pemeriksaan AuthApp VPS 17 Oktober 2026
- Lampiran teks lengkap
python3 - <<'PY' · 4 baris2 kemunculan
Membaca installer dari ZIP dan menjalankan proses pemasangan patch yang disebutkan. Nama ZIP dan hash acuannya terikat pada versi historis.
Dikirim pengguna bersama hasil terminal
Percobaan historis pada chat ini menghasilkan FITUR_LOGIN_BELUM_LENGKAP dan SOURCE_PERLU_DICOCOKKAN. Nama ZIP yang sama pernah dipakai pada revisi isi berbeda. Entri ini tidak menetapkan ZIP tersebut sebagai rilis aktif.
python3 - <<'PY'
from zipfile import ZipFile
exec(compile(ZipFile("Rajawali_PATCH_REVISI_FITUR_SAJA_17Okt2026_KOREKSI.zip").read("INSTALL_ALL.py"), "INSTALL_ALL.py", "exec"))
PYAsal dan konteks
- Catatan induk lengkap · Pemeriksaan arahan bimbingan terbaru dan revisi lanjutan 17 Oktober 2026 / Jawaban dan langkah berikutnya
- Command dan hasil pengguna pada chat ini · Command dan hasil terminal yang dikirim pengguna pada chat ini / Installer patch koreksi yang pernah gagal
sudo mv 'LOKASI_ZIP/rajawali_13OCT_DEPLOY_SIAP_TRANSFER.zip' /opt/rajawali/1 kemunculan
Membaca, menyiapkan atau memeriksa berkas patch dan artefak source yang disebutkan.
Ditulis sebagai blok panduan atau SQL
sudo mv 'LOKASI_ZIP/rajawali_13OCT_DEPLOY_SIAP_TRANSFER.zip' /opt/rajawali/Asal dan konteks
- Catatan induk lengkap · Panduan Praktis Deployment Rajawali Computer — 13 Oktober 2026 / Tahap A — unggah source (drag-and-drop)
sudo rm -f rajawali_13OCT_DEPLOY_SIAP_TRANSFER.zip1 kemunculan
Membaca, menyiapkan atau memeriksa berkas patch dan artefak source yang disebutkan.
Ditulis sebagai blok panduan atau SQL
sudo rm -f rajawali_13OCT_DEPLOY_SIAP_TRANSFER.zipAsal dan konteks
- Catatan induk lengkap · Panduan Praktis Deployment Rajawali Computer — 13 Oktober 2026 / Tahap A — unggah source (drag-and-drop)
sudo unzip -oq rajawali_13OCT_DEPLOY_SIAP_TRANSFER.zip1 kemunculan
Membaca, menyiapkan atau memeriksa berkas patch dan artefak source yang disebutkan.
Ditulis sebagai blok panduan atau SQL
sudo unzip -oq rajawali_13OCT_DEPLOY_SIAP_TRANSFER.zipAsal dan konteks
- Catatan induk lengkap · Panduan Praktis Deployment Rajawali Computer — 13 Oktober 2026 / Tahap A — unggah source (drag-and-drop)
Preflight, readiness, healthcheck dan smoke 22 entri
compose('ps','-q',name,quiet=True)BARU · 1 kemunculan
Membaca ID container atau keadaan healthcheck layanan. Variabel container dan service ditentukan oleh script asal.
Tertulis dalam script paket, eksekusi VPS belum dibuktikan
Tambahan dari script paket revisi. Variabel dan fungsi Python dibaca pada sumber lengkap. Eksekusinya pada VPS belum dibuktikan oleh arsip ini.
compose('ps','-q',name,quiet=True)Asal dan konteks
- Script asli dalam paket revisi · Rajawali_PATCH_UAT_PENERIMA_ALAMAT_EMAIL_19Okt2026.zip / RUN_PATCH.py
compose('ps','-q',service,quiet=True)BARU · 11 kemunculan
Membaca ID container atau keadaan healthcheck layanan. Variabel container dan service ditentukan oleh script asal.
Tertulis dalam script paket, eksekusi VPS belum dibuktikan
Tambahan dari script paket revisi. Variabel dan fungsi Python dibaca pada sumber lengkap. Eksekusinya pada VPS belum dibuktikan oleh arsip ini.
compose('ps','-q',service,quiet=True)Asal dan konteks
- Script asli dalam paket revisi · Rajawali_PATCH_ADMIN_AUDIT_LOG_TANPA_TABEL_BARU_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_ADMIN_ONLINE_CONTROLLER_KOMPATIBEL_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_ADMIN_ONLINE_ROUTE_KOMPATIBEL_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_BULK_FUNGSIONAL_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_CHECKOUT_PELANGGAN_DAN_PENGIRIMAN_OTOMATIS_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_KONSOLIDASI_ADMIN_AUDIT_BERDASARKAN_VPS_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_PERBAIKAN_UX_TANPA_DUMMY_PRODUKSI_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_SIMULASI_UAT_OWNER_TANPA_TOGGLE_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_TANPA_SIMULASI_DB_DAN_SATU_PAKET_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_UAT_EMAIL_POPUP_WILAYAH_ALAMAT_19Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_UAT_TRANSAKSI_DATABASE_YANG_ADA_20Okt2026.zip / RUN_PATCH.py
curl -i -H 'Host: rajawali.famataraytilo.cloud' http://127.0.0.1:18080/health/live2 kemunculan
Membaca status hidup atau kesiapan layanan dari sisi aplikasi atau container.
Ditulis sebagai blok panduan atau SQL
curl -i -H 'Host: rajawali.famataraytilo.cloud' http://127.0.0.1:18080/health/liveAsal dan konteks
- Catatan induk lengkap · Panduan Praktis Deployment Rajawali Computer — 13 Oktober 2026 / Tahap E — build dan jalankan Laravel di VPS
- Ringkasan penelusuran chat
docker compose --env-file .env.production -f compose.production.yml run --rm --no-deps app_samanhudi php artisan rajawali:preflight --producti…1 kemunculan
Memeriksa kesiapan aplikasi dan konfigurasi produksi. Flag strict memengaruhi penilaian pemeriksaan sesuai versi command.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
docker compose --env-file .env.production -f compose.production.yml run --rm --no-deps app_samanhudi php artisan rajawali:preflight --production --strict --no-interactionAsal dan konteks
- Ringkasan penelusuran chat
docker compose ... run --rm --no-deps app_samanhudi php artisan rajawali:preflight --production --strict --no-interaction1 kemunculan
Memeriksa kesiapan aplikasi dan konfigurasi produksi. Flag strict memengaruhi penilaian pemeriksaan sesuai versi command.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
docker compose ... run --rm --no-deps app_samanhudi php artisan rajawali:preflight --production --strict --no-interactionAsal dan konteks
- Ringkasan penelusuran chat
docker exec rajawali-computer-app_peganden-1 php artisan rajawali:preflight --production --strict --no-interaction1 kemunculan
Memeriksa kesiapan aplikasi dan konfigurasi produksi. Flag strict memengaruhi penilaian pemeriksaan sesuai versi command.
Dikirim pengguna bersama hasil terminal
Pengguna mengirim hasil INFO dan WARN kedua cabang pada chat ini. Exit code tidak ditampilkan. Hasil preflight saat itu tetap terpisah dari UAT oleh pengguna.
docker exec rajawali-computer-app_peganden-1 php artisan rajawali:preflight --production --strict --no-interactionAsal dan konteks
- Command dan hasil pengguna pada chat ini · Command dan hasil terminal yang dikirim pengguna pada chat ini / Preflight dua cabang
docker exec rajawali-computer-app_samanhudi-1 php artisan rajawali:preflight --production --strict --no-interaction2 kemunculan
Memeriksa kesiapan aplikasi dan konfigurasi produksi. Flag strict memengaruhi penilaian pemeriksaan sesuai versi command.
Tercatat sebagai input terminal
Pengguna mengirim hasil INFO dan WARN kedua cabang pada chat ini. Exit code tidak ditampilkan. Hasil preflight saat itu tetap terpisah dari UAT oleh pengguna.
docker exec rajawali-computer-app_samanhudi-1 php artisan rajawali:preflight --production --strict --no-interactionAsal dan konteks
- Ringkasan penelusuran chat
- Command dan hasil pengguna pada chat ini · Command dan hasil terminal yang dikirim pengguna pada chat ini / Preflight dua cabang
invoke(['curl','-sS','-o','/dev/null','--connect-timeout','5','--max-time','20', · 2 barisBARU · 1 kemunculan
Memeriksa status HTTP pada daftar path dalam installer. Status yang diharapkan mengikuti rilis asal, termasuk perbedaan perilaku URL query pada revisi terbaru.
Tertulis dalam script paket, eksekusi VPS belum dibuktikan
Tambahan dari script paket revisi. Variabel dan fungsi Python dibaca pada sumber lengkap. Eksekusinya pada VPS belum dibuktikan oleh arsip ini.
invoke(['curl','-sS','-o','/dev/null','--connect-timeout','5','--max-time','20',
'-w','%{http_code}','https://rajawali.famataraytilo.cloud'+path],quiet=True)Asal dan konteks
- Script asli dalam paket revisi · Rajawali_PATCH_UAT_PENERIMA_ALAMAT_EMAIL_19Okt2026.zip / RUN_PATCH.py
invoke(['docker','inspect','-f', · 2 barisBARU · 1 kemunculan
Membaca ID container atau keadaan healthcheck layanan. Variabel container dan service ditentukan oleh script asal.
Tertulis dalam script paket, eksekusi VPS belum dibuktikan
Tambahan dari script paket revisi. Variabel dan fungsi Python dibaca pada sumber lengkap. Eksekusinya pada VPS belum dibuktikan oleh arsip ini.
invoke(['docker','inspect','-f',
'{{if .State.Health}}{{.State.Health.Status}}{{else}}{{.State.Status}}{{end}}',container],quiet=True)Asal dan konteks
- Script asli dalam paket revisi · Rajawali_PATCH_UAT_PENERIMA_ALAMAT_EMAIL_19Okt2026.zip / RUN_PATCH.py
ops/deploy/preflight.sh .env.production2 kemunculan
Membaca status hidup atau kesiapan layanan dari sisi aplikasi atau container.
Rujukan tertulis, eksekusi tidak disimpulkan
ops/deploy/preflight.sh .env.productionAsal dan konteks
- Catatan induk lengkap · Rajawali Computer Production Deployment Checklist
- Ringkasan penelusuran chat
ops/deploy/smoke.sh https://<host>2 kemunculan
Memeriksa jalur teknis utama setelah aplikasi berjalan. Bukan keputusan penerimaan oleh end user.
Rujukan tertulis, eksekusi tidak disimpulkan
ops/deploy/smoke.sh https://<host>Asal dan konteks
- Catatan induk lengkap · Rajawali Computer Production Deployment Checklist
- Ringkasan penelusuran chat
php artisan rajawali:preflight --production2 kemunculan
Memeriksa kesiapan aplikasi dan konfigurasi produksi. Flag strict memengaruhi penilaian pemeriksaan sesuai versi command.
Tercatat sebagai input terminal
php artisan rajawali:preflight --productionAsal dan konteks
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / Lampiran 28: Pasted text(20261002-080622).txt
- Ringkasan penelusuran chat
php artisan rajawali:preflight --strict2 kemunculan
Memeriksa kesiapan aplikasi dan konfigurasi produksi. Flag strict memengaruhi penilaian pemeriksaan sesuai versi command.
Rujukan tertulis, eksekusi tidak disimpulkan
php artisan rajawali:preflight --strictAsal dan konteks
- Catatan induk lengkap · Rajawali Computer Production Deployment Checklist
- Ringkasan penelusuran chat
php artisan rajawali:smoke3 kemunculan
Memeriksa jalur teknis utama setelah aplikasi berjalan. Bukan keputusan penerimaan oleh end user.
Rujukan tertulis, eksekusi tidak disimpulkan
php artisan rajawali:smokeAsal dan konteks
- Catatan induk lengkap · Rajawali Computer Production Deployment Checklist
- Ringkasan penelusuran chat
- Ringkasan penelusuran chat
rajawali:preflight2 kemunculan
Memeriksa kesiapan aplikasi dan konfigurasi produksi. Flag strict memengaruhi penilaian pemeriksaan sesuai versi command.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
rajawali:preflightAsal dan konteks
- Ringkasan penelusuran chat
- Ringkasan penelusuran chat
rajawali:preflight --production --strict1 kemunculan
Memeriksa kesiapan aplikasi dan konfigurasi produksi. Flag strict memengaruhi penilaian pemeriksaan sesuai versi command.
Rujukan tertulis, eksekusi tidak disimpulkan
rajawali:preflight --production --strictAsal dan konteks
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / 5. Tahap dinyatakan lulus
rajawali:security-check1 kemunculan
Memeriksa konfigurasi keamanan, registry integritas dan batas persediaan sesuai implementasi command.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
rajawali:security-checkAsal dan konteks
- Ringkasan penelusuran chat
rajawali:smoke2 kemunculan
Memeriksa jalur teknis utama setelah aplikasi berjalan. Bukan keputusan penerimaan oleh end user.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
rajawali:smokeAsal dan konteks
- Ringkasan penelusuran chat
- Ringkasan penelusuran chat
run(['curl','-sS','-o','/dev/null','--connect-timeout','5','--max-time','15', · 2 barisBARU · 11 kemunculan
Memeriksa status HTTP pada daftar path dalam installer. Status yang diharapkan mengikuti rilis asal, termasuk perbedaan perilaku URL query pada revisi terbaru.
Tertulis dalam script paket, eksekusi VPS belum dibuktikan
Tambahan dari script paket revisi. Variabel dan fungsi Python dibaca pada sumber lengkap. Eksekusinya pada VPS belum dibuktikan oleh arsip ini.
run(['curl','-sS','-o','/dev/null','--connect-timeout','5','--max-time','15',
'-w','%{http_code}','https://rajawali.famataraytilo.cloud'+path],quiet=True)Asal dan konteks
- Script asli dalam paket revisi · Rajawali_PATCH_ADMIN_AUDIT_LOG_TANPA_TABEL_BARU_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_ADMIN_ONLINE_CONTROLLER_KOMPATIBEL_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_ADMIN_ONLINE_ROUTE_KOMPATIBEL_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_BULK_FUNGSIONAL_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_CHECKOUT_PELANGGAN_DAN_PENGIRIMAN_OTOMATIS_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_KONSOLIDASI_ADMIN_AUDIT_BERDASARKAN_VPS_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_PERBAIKAN_UX_TANPA_DUMMY_PRODUKSI_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_SIMULASI_UAT_OWNER_TANPA_TOGGLE_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_TANPA_SIMULASI_DB_DAN_SATU_PAKET_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_UAT_EMAIL_POPUP_WILAYAH_ALAMAT_19Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_UAT_TRANSAKSI_DATABASE_YANG_ADA_20Okt2026.zip / RUN_PATCH.py
run(['docker','inspect','-f','{{if .State.Health}}{{.State.Health.Status}}{{else}}{{.State.Status}}{{end}}',container],quiet=True)BARU · 11 kemunculan
Membaca ID container atau keadaan healthcheck layanan. Variabel container dan service ditentukan oleh script asal.
Tertulis dalam script paket, eksekusi VPS belum dibuktikan
Tambahan dari script paket revisi. Variabel dan fungsi Python dibaca pada sumber lengkap. Eksekusinya pada VPS belum dibuktikan oleh arsip ini.
run(['docker','inspect','-f','{{if .State.Health}}{{.State.Health.Status}}{{else}}{{.State.Status}}{{end}}',container],quiet=True)Asal dan konteks
- Script asli dalam paket revisi · Rajawali_PATCH_ADMIN_AUDIT_LOG_TANPA_TABEL_BARU_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_ADMIN_ONLINE_CONTROLLER_KOMPATIBEL_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_ADMIN_ONLINE_ROUTE_KOMPATIBEL_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_BULK_FUNGSIONAL_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_CHECKOUT_PELANGGAN_DAN_PENGIRIMAN_OTOMATIS_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_KONSOLIDASI_ADMIN_AUDIT_BERDASARKAN_VPS_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_PERBAIKAN_UX_TANPA_DUMMY_PRODUKSI_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_SIMULASI_UAT_OWNER_TANPA_TOGGLE_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_TANPA_SIMULASI_DB_DAN_SATU_PAKET_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_UAT_EMAIL_POPUP_WILAYAH_ALAMAT_19Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_UAT_TRANSAKSI_DATABASE_YANG_ADA_20Okt2026.zip / RUN_PATCH.py
subprocess.run(['php','-l',temp_path],capture_output=True)BARU · 11 kemunculan
Memeriksa syntax PHP pada berkas sementara sebelum installer menerapkan revisi. Hasil pemeriksaan belum merupakan UAT pengguna.
Tertulis dalam script paket, eksekusi VPS belum dibuktikan
Tambahan dari script paket revisi. Variabel dan fungsi Python dibaca pada sumber lengkap. Eksekusinya pada VPS belum dibuktikan oleh arsip ini.
subprocess.run(['php','-l',temp_path],capture_output=True)Asal dan konteks
- Script asli dalam paket revisi · Rajawali_PATCH_ADMIN_AUDIT_LOG_TANPA_TABEL_BARU_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_ADMIN_ONLINE_CONTROLLER_KOMPATIBEL_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_ADMIN_ONLINE_ROUTE_KOMPATIBEL_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_BULK_FUNGSIONAL_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_CHECKOUT_PELANGGAN_DAN_PENGIRIMAN_OTOMATIS_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_KONSOLIDASI_ADMIN_AUDIT_BERDASARKAN_VPS_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_PERBAIKAN_UX_TANPA_DUMMY_PRODUKSI_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_SIMULASI_UAT_OWNER_TANPA_TOGGLE_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_TANPA_SIMULASI_DB_DAN_SATU_PAKET_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_UAT_EMAIL_POPUP_WILAYAH_ALAMAT_19Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_UAT_TRANSAKSI_DATABASE_YANG_ADA_20Okt2026.zip / RUN_PATCH.py
subprocess.run(['php','-l',tmp],capture_output=True)BARU · 1 kemunculan
Memeriksa syntax PHP pada berkas sementara sebelum installer menerapkan revisi. Hasil pemeriksaan belum merupakan UAT pengguna.
Tertulis dalam script paket, eksekusi VPS belum dibuktikan
Tambahan dari script paket revisi. Variabel dan fungsi Python dibaca pada sumber lengkap. Eksekusinya pada VPS belum dibuktikan oleh arsip ini.
subprocess.run(['php','-l',tmp],capture_output=True)Asal dan konteks
- Script asli dalam paket revisi · Rajawali_PATCH_UAT_PENERIMA_ALAMAT_EMAIL_19Okt2026.zip / RUN_PATCH.py
Backup dan ekspor database 4 entri
ops/backup/backup-postgres.sh2 kemunculan
Membuat atau memeriksa salinan database sesuai alat dan tujuan yang disebutkan.
Rujukan tertulis, eksekusi tidak disimpulkan
ops/backup/backup-postgres.shAsal dan konteks
- Catatan induk lengkap · Rajawali Computer Production Deployment Checklist
- Ringkasan penelusuran chat
ops/backup/verify-postgres-backup.sh2 kemunculan
Membuat atau memeriksa salinan database sesuai alat dan tujuan yang disebutkan.
Rujukan tertulis, eksekusi tidak disimpulkan
ops/backup/verify-postgres-backup.shAsal dan konteks
- Catatan induk lengkap · Rajawali Computer Production Deployment Checklist
- Ringkasan penelusuran chat
pg_dump2 kemunculan
Mengekspor database ke arsip. Bentuk arsip dan target database ditentukan opsi yang tertulis.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
pg_dumpAsal dan konteks
- Ringkasan penelusuran chat
- Ringkasan penelusuran chat
rajawali:backup1 kemunculan
Membuat atau memeriksa salinan database sesuai alat dan tujuan yang disebutkan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
rajawali:backupAsal dan konteks
- Ringkasan penelusuran chat
Restore dan pemulihan transaksi 5 entri
docker compose ... exec -T postgres_rajawali pg_restore ... -d rajawali_master/samanhudi/peganden < ..._v1.sql1 kemunculan
Memulihkan arsip PostgreSQL ke target yang tertulis. Opsi pemulihan dapat mengganti objek yang sudah ada.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
docker compose ... exec -T postgres_rajawali pg_restore ... -d rajawali_master/samanhudi/peganden < ..._v1.sqlAsal dan konteks
- Ringkasan penelusuran chat
ops/backup/restore-drill.sh2 kemunculan
Menjalankan pemulihan database atau transaksi pada target yang disebutkan.
Rujukan tertulis, eksekusi tidak disimpulkan
ops/backup/restore-drill.shAsal dan konteks
- Catatan induk lengkap · Rajawali Computer Production Deployment Checklist
- Ringkasan penelusuran chat
pg_restore1 kemunculan
Memulihkan arsip PostgreSQL ke target yang tertulis. Opsi pemulihan dapat mengganti objek yang sudah ada.
Rujukan tertulis, eksekusi tidak disimpulkan
pg_restoreAsal dan konteks
- Catatan induk lengkap · Panduan Praktis Deployment Rajawali Computer — 13 Oktober 2026 / Tahap D — database di Docker dan restore data
php artisan distributed-transactions:recover2 kemunculan
Menyelesaikan transaksi terdistribusi tertinggal berdasarkan jurnal keputusan, bukan mengulang transaksi bisnis dari awal.
Rujukan tertulis, eksekusi tidak disimpulkan
php artisan distributed-transactions:recoverAsal dan konteks
- Catatan induk lengkap · Rajawali Computer Production Deployment Checklist
- Ringkasan penelusuran chat
rajawali:restore-drill1 kemunculan
Menjalankan pemulihan database atau transaksi pada target yang disebutkan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
rajawali:restore-drillAsal dan konteks
- Ringkasan penelusuran chat
Clark–Wilson E1 dan privilege PostgreSQL 5 entri
php artisan rajawali:cw-e1-install --check1 kemunculan
Membaca keadaan role, ownership, trigger dan fungsi TP persediaan tanpa memasang ulang E1.
Rujukan tertulis, eksekusi tidak disimpulkan
php artisan rajawali:cw-e1-install --checkAsal dan konteks
- Catatan induk lengkap · Panduan Praktis Deployment Rajawali Computer — 13 Oktober 2026 / Tahap E — build dan jalankan Laravel di VPS
rajawali:cw-e1-install1 kemunculan
Memasang atau memeriksa pembatasan stok dengan command dan opsi yang tertulis. Mode pemasangan dapat mengubah privilege database.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
rajawali:cw-e1-installAsal dan konteks
- Ringkasan penelusuran chat
rajawali:cw-e1-install --check2 kemunculan
Membaca keadaan role, ownership, trigger dan fungsi TP persediaan tanpa memasang ulang E1.
Rujukan tertulis, eksekusi tidak disimpulkan
rajawali:cw-e1-install --checkAsal dan konteks
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / 4. Alat dan pemeriksaan lain
- Catatan induk lengkap · Audit status Rajawali Computer, 14 Oktober 2026 / Bukti yang sudah diperoleh dari VPS (berdasarkan output yang dibagikan)
rajawali:integrity1 kemunculan
Menjalankan pemeriksaan integritas atau IVP pada lingkup yang ditulis. Nama command tanpa php artisan dipertahankan sebagai rujukan sumber.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
rajawali:integrityAsal dan konteks
- Ringkasan penelusuran chat
rajawali:integrity --all2 kemunculan
Menjalankan pemeriksaan integritas atau IVP pada lingkup yang ditulis. Nama command tanpa php artisan dipertahankan sebagai rujukan sumber.
Rujukan tertulis, eksekusi tidak disimpulkan
rajawali:integrity --allAsal dan konteks
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / 4. Alat dan pemeriksaan lain
- Catatan induk lengkap · Audit status Rajawali Computer, 14 Oktober 2026 / Bukti yang sudah diperoleh dari VPS (berdasarkan output yang dibagikan)
Pengujian keamanan, audit dependensi dan jaringan 9 entri
composer audit5 kemunculan
Memeriksa laporan kerentanan dependency menurut sumber data alat saat dijalankan.
Tercatat sebagai input terminal
composer auditAsal dan konteks
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / Lampiran 33: Pasted text(6).txt
- Catatan induk lengkap · Rajawali Computer Production Deployment Checklist
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / 4. Alat dan pemeriksaan lain
- Lampiran teks lengkap
- Ringkasan penelusuran chat
nmap -Pn -sT -p 22,80,443,5432,8080,8443,9000,18080 rajawali.famataraytilo.cloud3 kemunculan
Menjalankan pemeriksaan keamanan sesuai alat dan target yang tertulis. Hasil historis tidak membuktikan keadaan rilis lain.
Rujukan tertulis, eksekusi tidak disimpulkan
nmap -Pn -sT -p 22,80,443,5432,8080,8443,9000,18080 rajawali.famataraytilo.cloudAsal dan konteks
- Catatan induk lengkap · Panduan Bimbingan TA Rajawali Computer / E. Langkah alat pengujian keamanan (setelah UAT fungsional)
- Catatan induk lengkap · Rajawali Computer — Pekerjaan, pengujian, dan persiapan bimbingan Pak Miftah / E. Langkah alat pengujian keamanan (setelah UAT fungsional)
- Catatan induk lengkap · Rajawali Computer — Pekerjaan, pengujian, dan persiapan bimbingan Pak Miftah / E. Langkah alat pengujian keamanan (setelah UAT fungsional)
node tests/e2e/zap-local.mjs1 kemunculan
Menjalankan pemeriksaan keamanan sesuai alat dan target yang tertulis. Hasil historis tidak membuktikan keadaan rilis lain.
Rujukan tertulis, eksekusi tidak disimpulkan
node tests/e2e/zap-local.mjsAsal dan konteks
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / 3. OWASP ZAP yang sudah tersedia di source
npm audit4 kemunculan
Memeriksa laporan kerentanan dependency menurut sumber data alat saat dijalankan.
Tercatat sebagai input terminal
npm auditAsal dan konteks
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / Lampiran 33: Pasted text(6).txt
- Catatan induk lengkap · Rajawali Computer Production Deployment Checklist
- Lampiran teks lengkap
- Ringkasan penelusuran chat
npm audit --omit=dev1 kemunculan
Memeriksa laporan kerentanan dependency menurut sumber data alat saat dijalankan.
Rujukan tertulis, eksekusi tidak disimpulkan
npm audit --omit=devAsal dan konteks
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / 4. Alat dan pemeriksaan lain
rajawali:alert-test1 kemunculan
Menjalankan pemeriksaan keamanan pada dependensi, aplikasi atau jaringan yang disebutkan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
rajawali:alert-testAsal dan konteks
- Ringkasan penelusuran chat
trivy image1 kemunculan
Menjalankan pemeriksaan keamanan sesuai alat dan target yang tertulis. Hasil historis tidak membuktikan keadaan rilis lain.
Rujukan tertulis, eksekusi tidak disimpulkan
trivy imageAsal dan konteks
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / 4. Alat dan pemeriksaan lain
trivy image --scanners vuln rajawali-nginx:<tag-release>3 kemunculan
Menjalankan pemeriksaan keamanan sesuai alat dan target yang tertulis. Hasil historis tidak membuktikan keadaan rilis lain.
Rujukan tertulis, eksekusi tidak disimpulkan
trivy image --scanners vuln rajawali-nginx:<tag-release>Asal dan konteks
- Catatan induk lengkap · Panduan Bimbingan TA Rajawali Computer / E. Langkah alat pengujian keamanan (setelah UAT fungsional)
- Catatan induk lengkap · Rajawali Computer — Pekerjaan, pengujian, dan persiapan bimbingan Pak Miftah / E. Langkah alat pengujian keamanan (setelah UAT fungsional)
- Catatan induk lengkap · Rajawali Computer — Pekerjaan, pengujian, dan persiapan bimbingan Pak Miftah / E. Langkah alat pengujian keamanan (setelah UAT fungsional)
trivy image --scanners vuln rajawali-php:<tag-release>3 kemunculan
Menjalankan pemeriksaan keamanan sesuai alat dan target yang tertulis. Hasil historis tidak membuktikan keadaan rilis lain.
Rujukan tertulis, eksekusi tidak disimpulkan
trivy image --scanners vuln rajawali-php:<tag-release>Asal dan konteks
- Catatan induk lengkap · Panduan Bimbingan TA Rajawali Computer / E. Langkah alat pengujian keamanan (setelah UAT fungsional)
- Catatan induk lengkap · Rajawali Computer — Pekerjaan, pengujian, dan persiapan bimbingan Pak Miftah / E. Langkah alat pengujian keamanan (setelah UAT fungsional)
- Catatan induk lengkap · Rajawali Computer — Pekerjaan, pengujian, dan persiapan bimbingan Pak Miftah / E. Langkah alat pengujian keamanan (setelah UAT fungsional)
Pengujian Laravel dan browser 7 entri
npm run build && npx playwright test --workers=14 kemunculan
Membangun aset produksi melalui script package.json. Jika diikuti tes browser, kedua tahap merupakan satu rangkaian.
Tercatat sebagai input terminal
npm run build && npx playwright test --workers=1Asal dan konteks
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / Lampiran 21: Pasted text(10).txt
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / Lampiran 36: Pasted text(9).txt
- Lampiran teks lengkap
- Lampiran teks lengkap
npm run build && npx playwright test tests/e2e/customer-service-pages.spec.ts tests/e2e/end-user-usability.spec.ts tests/e2e/online-payment-gu…1 kemunculan
Membangun aset produksi melalui script package.json. Jika diikuti tes browser, kedua tahap merupakan satu rangkaian.
Tercatat sebagai input terminal
npm run build && npx playwright test tests/e2e/customer-service-pages.spec.ts tests/e2e/end-user-usability.spec.ts tests/e2e/online-payment-guide.spec.ts tests/e2e/customer-navigation-and-cart.spec.ts tests/e2e/auth.spec.tsAsal dan konteks
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / Lampiran 27: Pasted text(20260929-154322).txt
npm run test:e2e1 kemunculan
Menjalankan atau menyiapkan pengujian teknis menurut argumen yang tertulis.
Rujukan tertulis, eksekusi tidak disimpulkan
npm run test:e2eAsal dan konteks
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / 4. Alat dan pemeriksaan lain
npx playwright test tests/e2e/auth.spec.ts tests/e2e/end-user-processes.spec.ts tests/e2e/workflows.spec.ts --workers=12 kemunculan
Menjalankan pengujian browser pada berkas dan jumlah worker yang disebutkan.
Tercatat sebagai input terminal
npx playwright test tests/e2e/auth.spec.ts tests/e2e/end-user-processes.spec.ts tests/e2e/workflows.spec.ts --workers=1Asal dan konteks
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / Lampiran 23: Pasted text(20260923-155546).txt
- Lampiran teks lengkap
php artisan test5 kemunculan
Menjalankan tes PHP atau Laravel dengan filter atau daftar berkas yang tertulis.
Tercatat sebagai input terminal
php artisan testAsal dan konteks
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / Lampiran 26: Pasted text(20260925-103227).txt
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / Lampiran 32: Pasted text(5).txt
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / 4. Alat dan pemeriksaan lain
- Lampiran teks lengkap
- Lampiran teks lengkap
php artisan test tests/Feature/AdminRoleAccessTest.php tests/Feature/FinalRoleSecurityTest.php tests/Feature/AuthSecurityTest.php tests/Featur…4 kemunculan
Menjalankan tes PHP atau Laravel dengan filter atau daftar berkas yang tertulis.
Tercatat sebagai input terminal
php artisan test tests/Feature/AdminRoleAccessTest.php tests/Feature/FinalRoleSecurityTest.php tests/Feature/AuthSecurityTest.php tests/Feature/EmployeeManagementTest.php tests/Feature/MasterDataTest.php tests/Feature/RestockTest.php tests/Feature/StockTransferTest.php tests/Feature/ReportingTest.phpAsal dan konteks
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / Lampiran 24: Pasted text(20260925-094134).txt
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / Lampiran 25: Pasted text(20260925-095358).txt
- Lampiran teks lengkap
- Lampiran teks lengkap
php artisan test tests/Feature/ReleaseConfigurationTest.php tests/Feature/DeploymentSecurityTest.php tests/Feature/DeploymentArtifactsTest.php…1 kemunculan
Menjalankan tes PHP atau Laravel dengan filter atau daftar berkas yang tertulis.
Tercatat sebagai input terminal
php artisan test tests/Feature/ReleaseConfigurationTest.php tests/Feature/DeploymentSecurityTest.php tests/Feature/DeploymentArtifactsTest.php tests/Feature/BackupRestoreTest.phpAsal dan konteks
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / Lampiran 28: Pasted text(20261002-080622).txt
Migration, schema, seeder dan data latihan 8 entri
compose('run','--rm','--no-deps','-T','--entrypoint','php','app_samanhudi', · 4 barisBARU · 1 kemunculan
Panggilan migration email penerima untuk koneksi tenant dan satu path migration yang ditulis. Panggilan ini berasal dari paket penerima 19 Oktober dan dapat mengubah schema.
Tertulis dalam script paket, eksekusi VPS belum dibuktikan
Tambahan dari script paket revisi. Variabel dan fungsi Python dibaca pada sumber lengkap. Eksekusinya pada VPS belum dibuktikan oleh arsip ini.
compose('run','--rm','--no-deps','-T','--entrypoint','php','app_samanhudi',
'artisan','migrate','--database='+name,
'--path=database/migrations/tenant/2026_10_19_130000_add_recipient_email_to_pengiriman.php',
'--force','--no-interaction',env=container_env)Asal dan konteks
- Script asli dalam paket revisi · Rajawali_PATCH_UAT_PENERIMA_ALAMAT_EMAIL_19Okt2026.zip / RUN_PATCH.py
CREATE DATABASE1 kemunculan
Membuat atau mengubah schema serta data awal pada koneksi yang ditentukan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
CREATE DATABASEAsal dan konteks
- Ringkasan penelusuran chat
db:wipe1 kemunculan
Membuat atau mengubah schema serta data awal pada koneksi yang ditentukan.
Rujukan tertulis, eksekusi tidak disimpulkan
db:wipeAsal dan konteks
- Catatan induk lengkap · Implementasi Pengaturan Pembayaran Rajawali Computer / Migrasi yang diperlukan pada setiap lingkungan
migrate:fresh1 kemunculan
Membuat atau mengubah schema serta data awal pada koneksi yang ditentukan.
Rujukan tertulis, eksekusi tidak disimpulkan
migrate:freshAsal dan konteks
- Catatan induk lengkap · Implementasi Pengaturan Pembayaran Rajawali Computer / Migrasi yang diperlukan pada setiap lingkungan
php artisan migrate --database=master ...1 kemunculan
Menerapkan atau memeriksa migration pada database dan path yang ditentukan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
php artisan migrate --database=master ...Asal dan konteks
- Ringkasan penelusuran chat
php artisan migrate:fresh2 kemunculan
Menerapkan atau memeriksa migration pada database dan path yang ditentukan.
Rujukan tertulis, eksekusi tidak disimpulkan
php artisan migrate:freshAsal dan konteks
- Catatan induk lengkap · Panduan Praktis Deployment Rajawali Computer — 13 Oktober 2026 / Tahap D — database di Docker dan restore data
- Catatan induk lengkap · Tahap 2 — Persiapan deployment Rajawali melalui CloudPanel + Docker / Catatan keamanan
php artisan rajawali:setup1 kemunculan
Membuat atau mengubah schema serta data awal pada koneksi yang ditentukan.
Rujukan tertulis, eksekusi tidak disimpulkan
php artisan rajawali:setupAsal dan konteks
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / Lampiran 19: Pasted markdown.md
rajawali:setup1 kemunculan
Membuat atau mengubah schema serta data awal pada koneksi yang ditentukan.
Rujukan tertulis, eksekusi tidak disimpulkan
rajawali:setupAsal dan konteks
- Catatan induk lengkap · Tahap 2 — Persiapan deployment Rajawali melalui CloudPanel + Docker / Hal yang belum dapat diselesaikan dari sini
Akun, session, login dan blokir IP 2 entri
compose('exec','-T','app_samanhudi','php','artisan','rajawali:uat-credentials')BARU · 1 kemunculan
Panggilan command pemeriksaan kredensial UAT dari installer. Penjelasan dibatasi pada source script. Output akun maupun password tidak diminta atau disalin.
Tertulis dalam script paket, eksekusi VPS belum dibuktikan
Tambahan dari script paket revisi. Variabel dan fungsi Python dibaca pada sumber lengkap. Eksekusinya pada VPS belum dibuktikan oleh arsip ini.
compose('exec','-T','app_samanhudi','php','artisan','rajawali:uat-credentials')Asal dan konteks
- Script asli dalam paket revisi · Rajawali_PATCH_UAT_TRANSAKSI_DATABASE_YANG_ADA_20Okt2026.zip / RUN_PATCH.py
docker compose --env-file .env.production -p rajawali-computer -f compose.production.yml -f compose.vps-test.yml -f compose.cloudpanel.yml exe…BARU · 1 kemunculan
Command Bash yang dicetak installer untuk membuat kredensial UAT. Baris ini merupakan saran dari script. Isi paket tidak membuktikan command tersebut dijalankan pengguna.
Tertulis dalam script paket, eksekusi VPS belum dibuktikan
Tambahan dari script paket revisi. Variabel dan fungsi Python dibaca pada sumber lengkap. Eksekusinya pada VPS belum dibuktikan oleh arsip ini.
docker compose --env-file .env.production -p rajawali-computer -f compose.production.yml -f compose.vps-test.yml -f compose.cloudpanel.yml exec -T app_samanhudi php artisan rajawali:uat-credentials --generateAsal dan konteks
- Script asli dalam paket revisi · Rajawali_PATCH_UAT_TRANSAKSI_DATABASE_YANG_ADA_20Okt2026.zip / RUN_PATCH.py
Pemeriksaan dan query PostgreSQL 10 entri
cmd=['docker','exec','postgres_rajawali','sh','-c', · 3 barisBARU · 1 kemunculan
Bagian installer yang berkaitan dengan penghapusan tabel audit tambahan. Baca assignment cmd, syarat pemindahan audit dan AUDIT_CLEANUP.php pada sumber lengkap. Keberadaan script tidak membuktikan data sudah dipindah atau tabel sudah dihapus.
Tertulis dalam script paket, eksekusi VPS belum dibuktikan
Tambahan dari script paket revisi. Variabel dan fungsi Python dibaca pada sumber lengkap. Eksekusinya pada VPS belum dibuktikan oleh arsip ini.
Entri masih menyebut tabel audit yang menjadi sasaran penghapusan dalam koreksi 20 Oktober. Baca keputusan terbaru sebelum memakai rujukan schema lama.
cmd=['docker','exec','postgres_rajawali','sh','-c',
'exec psql -U "${POSTGRES_USER:-postgres}" -d "$1" -v ON_ERROR_STOP=1 -c "DROP TABLE IF EXISTS public.online_checkout_group_audit"',
'sh',dbname]Asal dan konteks
- Script asli dalam paket revisi · Rajawali_PATCH_KONSOLIDASI_ADMIN_AUDIT_BERDASARKAN_VPS_20Okt2026.zip / RUN_PATCH.py
compose('run','--rm','--no-deps','-T','--entrypoint','php','app_samanhudi','-r',probe,quiet=True,env=container_env)BARU · 1 kemunculan
Memanggil pemeriksaan PHP yang membaca kesiapan tabel pengiriman, kolom email penerima, hak koneksi dan konfigurasi SMTP. Isi variabel probe tersedia pada sumber lengkap.
Tertulis dalam script paket, eksekusi VPS belum dibuktikan
Tambahan dari script paket revisi. Variabel dan fungsi Python dibaca pada sumber lengkap. Eksekusinya pada VPS belum dibuktikan oleh arsip ini.
compose('run','--rm','--no-deps','-T','--entrypoint','php','app_samanhudi','-r',probe,quiet=True,env=container_env)Asal dan konteks
- Script asli dalam paket revisi · Rajawali_PATCH_UAT_PENERIMA_ALAMAT_EMAIL_19Okt2026.zip / RUN_PATCH.py
psql5 kemunculan
Membaca atau mengubah database menurut SQL atau opsi klien yang tertulis. Perhatikan kata kerja tiap statement.
Rujukan tertulis, eksekusi tidak disimpulkan
psqlAsal dan konteks
- Catatan induk lengkap · Panduan Praktis Deployment Rajawali Computer — 13 Oktober 2026 / Tahap D — database di Docker dan restore data
- Ringkasan penelusuran chat
- Ringkasan penelusuran chat
- Ringkasan penelusuran chat
- Ringkasan penelusuran chat · Run with: docker compose --env-file .env.production -f compose.production.yml up -d
SELECT * FROM rajawali_stock_issue1 kemunculan
Membaca atau mengubah database menurut SQL atau opsi klien yang tertulis. Perhatikan kata kerja tiap statement.
Rujukan tertulis, eksekusi tidak disimpulkan
SELECT * FROM rajawali_stock_issueAsal dan konteks
- Catatan induk lengkap · Bukti Blok Kode Clark-Wilson dan OWASP Rajawali Computer / Blok 31. A05 Query stok berparameter
SELECT action, actor_id, created_at · 3 baris1 kemunculan
Membaca bukti checkout gabungan, alokasi tiap cabang dan audit sesuai query yang tertulis.
Ditulis sebagai blok panduan atau SQL
Entri masih menyebut tabel audit yang menjadi sasaran penghapusan dalam koreksi 20 Oktober. Baca keputusan terbaru sebelum memakai rujukan schema lama.
SELECT action, actor_id, created_at
FROM online_checkout_group_audit
WHERE group_id = '<ID_CHECKOUT_UAT>' ORDER BY id;Asal dan konteks
- Catatan induk lengkap · Tambahan 19 Oktober 2026: Bukti checkout gabungan, validasi alamat, dan pengujian keamanan / B. Skenario GAB-06: pembuatan dua pesanan dan satu identitas checkout
SELECT group_id, id_cabang, id_penjualan, nomor_nota, allocated_amount · 3 baris1 kemunculan
Membaca bukti checkout gabungan, alokasi tiap cabang dan audit sesuai query yang tertulis.
Ditulis sebagai blok panduan atau SQL
SELECT group_id, id_cabang, id_penjualan, nomor_nota, allocated_amount
FROM online_checkout_group_orders
WHERE group_id = '<ID_CHECKOUT_UAT>' ORDER BY id_cabang;Asal dan konteks
- Catatan induk lengkap · Tambahan 19 Oktober 2026: Bukti checkout gabungan, validasi alamat, dan pengujian keamanan / B. Skenario GAB-06: pembuatan dua pesanan dan satu identitas checkout
SELECT id, total_amount, payment_status, created_at · 3 baris1 kemunculan
Membaca bukti checkout gabungan, alokasi tiap cabang dan audit sesuai query yang tertulis.
Ditulis sebagai blok panduan atau SQL
SELECT id, total_amount, payment_status, created_at
FROM online_checkout_groups
WHERE id = '<ID_CHECKOUT_UAT>';Asal dan konteks
- Catatan induk lengkap · Tambahan 19 Oktober 2026: Bukti checkout gabungan, validasi alamat, dan pengujian keamanan / B. Skenario GAB-06: pembuatan dua pesanan dan satu identitas checkout
SELECT id_penjualan, nomor_nota, checkout_group_id, · 4 baris1 kemunculan
Membaca atau mengubah database menurut SQL atau opsi klien yang tertulis. Perhatikan kata kerja tiap statement.
Ditulis sebagai blok panduan atau SQL
SELECT id_penjualan, nomor_nota, checkout_group_id,
total, status_pembayaran, status_penjualan
FROM penjualan
WHERE checkout_group_id = '<ID_CHECKOUT_UAT>';Asal dan konteks
- Catatan induk lengkap · Tambahan 19 Oktober 2026: Bukti checkout gabungan, validasi alamat, dan pengujian keamanan / B. Skenario GAB-06: pembuatan dua pesanan dan satu identitas checkout
subprocess.run(BASE+['exec','-T','app_samanhudi','php'],cwd=ROOT, · 2 barisBARU · 1 kemunculan
Mengirim script pemindahan audit ke PHP dalam container aplikasi yang sudah ada. Audit tujuan memakai audit_log tenant dan ID penjualan INTEGER. Status hasil tetap harus dibaca dari output VPS.
Tertulis dalam script paket, eksekusi VPS belum dibuktikan
Tambahan dari script paket revisi. Variabel dan fungsi Python dibaca pada sumber lengkap. Eksekusinya pada VPS belum dibuktikan oleh arsip ini.
subprocess.run(BASE+['exec','-T','app_samanhudi','php'],cwd=ROOT,
input=cleanup_php,stdout=subprocess.PIPE,stderr=subprocess.PIPE)Asal dan konteks
- Script asli dalam paket revisi · Rajawali_PATCH_KONSOLIDASI_ADMIN_AUDIT_BERDASARKAN_VPS_20Okt2026.zip / RUN_PATCH.py
subprocess.run(cmd,cwd=ROOT,stdout=subprocess.PIPE,stderr=subprocess.PIPE,text=True)BARU · 1 kemunculan
Bagian installer yang berkaitan dengan penghapusan tabel audit tambahan. Baca assignment cmd, syarat pemindahan audit dan AUDIT_CLEANUP.php pada sumber lengkap. Keberadaan script tidak membuktikan data sudah dipindah atau tabel sudah dihapus.
Tertulis dalam script paket, eksekusi VPS belum dibuktikan
Tambahan dari script paket revisi. Variabel dan fungsi Python dibaca pada sumber lengkap. Eksekusinya pada VPS belum dibuktikan oleh arsip ini.
subprocess.run(cmd,cwd=ROOT,stdout=subprocess.PIPE,stderr=subprocess.PIPE,text=True)Asal dan konteks
- Script asli dalam paket revisi · Rajawali_PATCH_KONSOLIDASI_ADMIN_AUDIT_BERDASARKAN_VPS_20Okt2026.zip / RUN_PATCH.py
Image, container dan Docker Compose 23 entri
compose('config','-q',quiet=True)BARU · 13 kemunculan
Memeriksa konfigurasi Compose beserta environment yang disiapkan installer. BASE berisi tiga file Compose dan nama project Rajawali.
Tertulis dalam script paket, eksekusi VPS belum dibuktikan
Tambahan dari script paket revisi. Variabel dan fungsi Python dibaca pada sumber lengkap. Eksekusinya pada VPS belum dibuktikan oleh arsip ini.
compose('config','-q',quiet=True)Asal dan konteks
- Script asli dalam paket revisi · Rajawali_PATCH_ADMIN_AUDIT_LOG_TANPA_TABEL_BARU_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_ADMIN_ONLINE_CONTROLLER_KOMPATIBEL_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_ADMIN_ONLINE_ROUTE_KOMPATIBEL_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_BULK_FUNGSIONAL_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_CHECKOUT_PELANGGAN_DAN_PENGIRIMAN_OTOMATIS_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_KONSOLIDASI_ADMIN_AUDIT_BERDASARKAN_VPS_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_PERBAIKAN_UX_TANPA_DUMMY_PRODUKSI_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_SIMULASI_UAT_OWNER_TANPA_TOGGLE_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_TANPA_SIMULASI_DB_DAN_SATU_PAKET_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_UAT_EMAIL_POPUP_WILAYAH_ALAMAT_19Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_UAT_PENERIMA_ALAMAT_EMAIL_19Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_UAT_PENERIMA_ALAMAT_EMAIL_19Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_UAT_TRANSAKSI_DATABASE_YANG_ADA_20Okt2026.zip / RUN_PATCH.py
compose('config','-q',quiet=True,env=container_env)BARU · 1 kemunculan
Memeriksa konfigurasi Compose beserta environment yang disiapkan installer. BASE berisi tiga file Compose dan nama project Rajawali.
Tertulis dalam script paket, eksekusi VPS belum dibuktikan
Tambahan dari script paket revisi. Variabel dan fungsi Python dibaca pada sumber lengkap. Eksekusinya pada VPS belum dibuktikan oleh arsip ini.
compose('config','-q',quiet=True,env=container_env)Asal dan konteks
- Script asli dalam paket revisi · Rajawali_PATCH_UAT_PENERIMA_ALAMAT_EMAIL_19Okt2026.zip / RUN_PATCH.py
compose('config','-q',quiet=True,env=dict(os.environ,RAJAWALI_IMAGE=phpimg,RAJAWALI_NGINX_IMAGE=nginximg))BARU · 11 kemunculan
Memeriksa konfigurasi Compose beserta environment yang disiapkan installer. BASE berisi tiga file Compose dan nama project Rajawali.
Tertulis dalam script paket, eksekusi VPS belum dibuktikan
Tambahan dari script paket revisi. Variabel dan fungsi Python dibaca pada sumber lengkap. Eksekusinya pada VPS belum dibuktikan oleh arsip ini.
compose('config','-q',quiet=True,env=dict(os.environ,RAJAWALI_IMAGE=phpimg,RAJAWALI_NGINX_IMAGE=nginximg))Asal dan konteks
- Script asli dalam paket revisi · Rajawali_PATCH_ADMIN_AUDIT_LOG_TANPA_TABEL_BARU_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_ADMIN_ONLINE_CONTROLLER_KOMPATIBEL_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_ADMIN_ONLINE_ROUTE_KOMPATIBEL_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_BULK_FUNGSIONAL_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_CHECKOUT_PELANGGAN_DAN_PENGIRIMAN_OTOMATIS_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_KONSOLIDASI_ADMIN_AUDIT_BERDASARKAN_VPS_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_PERBAIKAN_UX_TANPA_DUMMY_PRODUKSI_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_SIMULASI_UAT_OWNER_TANPA_TOGGLE_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_TANPA_SIMULASI_DB_DAN_SATU_PAKET_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_UAT_EMAIL_POPUP_WILAYAH_ALAMAT_19Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_UAT_TRANSAKSI_DATABASE_YANG_ADA_20Okt2026.zip / RUN_PATCH.py
compose('up','-d','--no-deps','--no-build',*SERVICES)BARU · 24 kemunculan
Memperbarui layanan Compose memakai daftar SERVICES dan image yang dipilih installer. Panggilan serupa juga dipakai pada jalur pemulihan. Baca konteks baris sumber.
Tertulis dalam script paket, eksekusi VPS belum dibuktikan
Tambahan dari script paket revisi. Variabel dan fungsi Python dibaca pada sumber lengkap. Eksekusinya pada VPS belum dibuktikan oleh arsip ini.
compose('up','-d','--no-deps','--no-build',*SERVICES)Asal dan konteks
- Script asli dalam paket revisi · Rajawali_PATCH_ADMIN_AUDIT_LOG_TANPA_TABEL_BARU_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_ADMIN_AUDIT_LOG_TANPA_TABEL_BARU_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_ADMIN_ONLINE_CONTROLLER_KOMPATIBEL_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_ADMIN_ONLINE_CONTROLLER_KOMPATIBEL_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_ADMIN_ONLINE_ROUTE_KOMPATIBEL_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_ADMIN_ONLINE_ROUTE_KOMPATIBEL_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_BULK_FUNGSIONAL_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_BULK_FUNGSIONAL_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_CHECKOUT_PELANGGAN_DAN_PENGIRIMAN_OTOMATIS_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_CHECKOUT_PELANGGAN_DAN_PENGIRIMAN_OTOMATIS_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_KONSOLIDASI_ADMIN_AUDIT_BERDASARKAN_VPS_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_KONSOLIDASI_ADMIN_AUDIT_BERDASARKAN_VPS_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_PERBAIKAN_UX_TANPA_DUMMY_PRODUKSI_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_PERBAIKAN_UX_TANPA_DUMMY_PRODUKSI_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_SIMULASI_UAT_OWNER_TANPA_TOGGLE_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_SIMULASI_UAT_OWNER_TANPA_TOGGLE_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_TANPA_SIMULASI_DB_DAN_SATU_PAKET_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_TANPA_SIMULASI_DB_DAN_SATU_PAKET_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_UAT_EMAIL_POPUP_WILAYAH_ALAMAT_19Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_UAT_EMAIL_POPUP_WILAYAH_ALAMAT_19Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_UAT_PENERIMA_ALAMAT_EMAIL_19Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_UAT_PENERIMA_ALAMAT_EMAIL_19Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_UAT_TRANSAKSI_DATABASE_YANG_ADA_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_UAT_TRANSAKSI_DATABASE_YANG_ADA_20Okt2026.zip / RUN_PATCH.py
docker build --target nginx -t rajawali-nginx:20261013 .1 kemunculan
Membangun image dari Dockerfile dengan target dan tag yang disebutkan.
Ditulis sebagai blok panduan atau SQL
docker build --target nginx -t rajawali-nginx:20261013 .Asal dan konteks
- Catatan induk lengkap · Panduan Praktis Deployment Rajawali Computer — 13 Oktober 2026 / Tahap E — build dan jalankan Laravel di VPS
docker build --target runtime -t rajawali-php:20261013 .2 kemunculan
Membangun image dari Dockerfile dengan target dan tag yang disebutkan.
Ditulis sebagai blok panduan atau SQL
docker build --target runtime -t rajawali-php:20261013 .Asal dan konteks
- Catatan induk lengkap · Panduan Praktis Deployment Rajawali Computer — 13 Oktober 2026 / Tahap E — build dan jalankan Laravel di VPS
- Ringkasan penelusuran chat
docker compose1 kemunculan
Memeriksa atau mengoperasikan image, container dan konfigurasi Docker yang disebutkan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
docker composeAsal dan konteks
- Ringkasan penelusuran chat
docker compose --env-file .env.production -f compose.production.yml config -q1 kemunculan
Memeriksa atau menampilkan hasil konfigurasi Compose. Output config biasa dapat memuat hasil substitusi environment.
Ditulis sebagai blok panduan atau SQL
docker compose --env-file .env.production -f compose.production.yml config -qAsal dan konteks
- Catatan induk lengkap · Panduan Praktis Deployment Rajawali Computer — 13 Oktober 2026 / Tahap D — database di Docker dan restore data
docker compose --env-file .env.production -f compose.production.yml ps2 kemunculan
Memeriksa atau mengoperasikan image, container dan konfigurasi Docker yang disebutkan.
Ditulis sebagai blok panduan atau SQL
docker compose --env-file .env.production -f compose.production.yml psAsal dan konteks
- Catatan induk lengkap · Panduan Praktis Deployment Rajawali Computer — 13 Oktober 2026 / Tahap E — build dan jalankan Laravel di VPS
- Ringkasan penelusuran chat
docker compose --env-file .env.production -f compose.production.yml ps postgres_rajawali1 kemunculan
Memeriksa atau mengoperasikan image, container dan konfigurasi Docker yang disebutkan.
Ditulis sebagai blok panduan atau SQL
docker compose --env-file .env.production -f compose.production.yml ps postgres_rajawaliAsal dan konteks
- Catatan induk lengkap · Panduan Praktis Deployment Rajawali Computer — 13 Oktober 2026 / Tahap D — database di Docker dan restore data
docker compose --env-file .env.production -f compose.production.yml up -d2 kemunculan
Membuat atau memperbarui layanan Compose sesuai image, opsi dan berkas konfigurasi yang tertulis.
Ditulis sebagai blok panduan atau SQL
docker compose --env-file .env.production -f compose.production.yml up -dAsal dan konteks
- Catatan induk lengkap · Panduan Praktis Deployment Rajawali Computer — 13 Oktober 2026 / Tahap E — build dan jalankan Laravel di VPS
- Ringkasan penelusuran chat
docker compose --env-file .env.production -f compose.production.yml up -d postgres_rajawali1 kemunculan
Membuat atau memperbarui layanan Compose sesuai image, opsi dan berkas konfigurasi yang tertulis.
Ditulis sebagai blok panduan atau SQL
docker compose --env-file .env.production -f compose.production.yml up -d postgres_rajawaliAsal dan konteks
- Catatan induk lengkap · Panduan Praktis Deployment Rajawali Computer — 13 Oktober 2026 / Tahap D — database di Docker dan restore data
docker compose ...1 kemunculan
Memeriksa atau mengoperasikan image, container dan konfigurasi Docker yang disebutkan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
docker compose ...Asal dan konteks
- Ringkasan penelusuran chat
docker compose down -v1 kemunculan
Memeriksa atau mengoperasikan image, container dan konfigurasi Docker yang disebutkan.
Rujukan tertulis, eksekusi tidak disimpulkan
docker compose down -vAsal dan konteks
- Catatan induk lengkap · Tahap 2 — Persiapan deployment Rajawali melalui CloudPanel + Docker / Catatan keamanan
docker compose up2 kemunculan
Membuat atau memperbarui layanan Compose sesuai image, opsi dan berkas konfigurasi yang tertulis.
Rujukan tertulis, eksekusi tidak disimpulkan
docker compose upAsal dan konteks
- Catatan induk lengkap · Rajawali Computer Production Deployment Checklist
- Ringkasan penelusuran chat
docker compose up -d --no-deps --no-build1 kemunculan
Membuat atau memperbarui layanan Compose sesuai image, opsi dan berkas konfigurasi yang tertulis.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
docker compose up -d --no-deps --no-buildAsal dan konteks
- Ringkasan penelusuran chat
docker exec2 kemunculan
Memeriksa atau mengoperasikan image, container dan konfigurasi Docker yang disebutkan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
docker execAsal dan konteks
- Ringkasan penelusuran chat
- Ringkasan penelusuran chat
docker volume prune1 kemunculan
Memeriksa atau mengoperasikan image, container dan konfigurasi Docker yang disebutkan.
Rujukan tertulis, eksekusi tidak disimpulkan
docker volume pruneAsal dan konteks
- Catatan induk lengkap · Tahap 2 — Persiapan deployment Rajawali melalui CloudPanel + Docker / Catatan keamanan
invoke(['docker','build','--target','nginx','-t',nginximage,'.'])BARU · 1 kemunculan
Membangun image PHP atau Nginx dengan target dan tag dari installer. Variabel tag image tetap dipertahankan dalam bentuk Python asli.
Tertulis dalam script paket, eksekusi VPS belum dibuktikan
Tambahan dari script paket revisi. Variabel dan fungsi Python dibaca pada sumber lengkap. Eksekusinya pada VPS belum dibuktikan oleh arsip ini.
invoke(['docker','build','--target','nginx','-t',nginximage,'.'])Asal dan konteks
- Script asli dalam paket revisi · Rajawali_PATCH_UAT_PENERIMA_ALAMAT_EMAIL_19Okt2026.zip / RUN_PATCH.py
invoke(['docker','build','--target','runtime','-t',phpimage,'.'])BARU · 1 kemunculan
Membangun image PHP atau Nginx dengan target dan tag dari installer. Variabel tag image tetap dipertahankan dalam bentuk Python asli.
Tertulis dalam script paket, eksekusi VPS belum dibuktikan
Tambahan dari script paket revisi. Variabel dan fungsi Python dibaca pada sumber lengkap. Eksekusinya pada VPS belum dibuktikan oleh arsip ini.
invoke(['docker','build','--target','runtime','-t',phpimage,'.'])Asal dan konteks
- Script asli dalam paket revisi · Rajawali_PATCH_UAT_PENERIMA_ALAMAT_EMAIL_19Okt2026.zip / RUN_PATCH.py
run(['docker','build','--target','nginx','-t',nginximg,'.'])BARU · 11 kemunculan
Membangun image PHP atau Nginx dengan target dan tag dari installer. Variabel tag image tetap dipertahankan dalam bentuk Python asli.
Tertulis dalam script paket, eksekusi VPS belum dibuktikan
Tambahan dari script paket revisi. Variabel dan fungsi Python dibaca pada sumber lengkap. Eksekusinya pada VPS belum dibuktikan oleh arsip ini.
run(['docker','build','--target','nginx','-t',nginximg,'.'])Asal dan konteks
- Script asli dalam paket revisi · Rajawali_PATCH_ADMIN_AUDIT_LOG_TANPA_TABEL_BARU_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_ADMIN_ONLINE_CONTROLLER_KOMPATIBEL_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_ADMIN_ONLINE_ROUTE_KOMPATIBEL_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_BULK_FUNGSIONAL_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_CHECKOUT_PELANGGAN_DAN_PENGIRIMAN_OTOMATIS_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_KONSOLIDASI_ADMIN_AUDIT_BERDASARKAN_VPS_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_PERBAIKAN_UX_TANPA_DUMMY_PRODUKSI_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_SIMULASI_UAT_OWNER_TANPA_TOGGLE_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_TANPA_SIMULASI_DB_DAN_SATU_PAKET_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_UAT_EMAIL_POPUP_WILAYAH_ALAMAT_19Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_UAT_TRANSAKSI_DATABASE_YANG_ADA_20Okt2026.zip / RUN_PATCH.py
run(['docker','build','--target','runtime','-t',phpimg,'.'])BARU · 11 kemunculan
Membangun image PHP atau Nginx dengan target dan tag dari installer. Variabel tag image tetap dipertahankan dalam bentuk Python asli.
Tertulis dalam script paket, eksekusi VPS belum dibuktikan
Tambahan dari script paket revisi. Variabel dan fungsi Python dibaca pada sumber lengkap. Eksekusinya pada VPS belum dibuktikan oleh arsip ini.
run(['docker','build','--target','runtime','-t',phpimg,'.'])Asal dan konteks
- Script asli dalam paket revisi · Rajawali_PATCH_ADMIN_AUDIT_LOG_TANPA_TABEL_BARU_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_ADMIN_ONLINE_CONTROLLER_KOMPATIBEL_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_ADMIN_ONLINE_ROUTE_KOMPATIBEL_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_BULK_FUNGSIONAL_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_CHECKOUT_PELANGGAN_DAN_PENGIRIMAN_OTOMATIS_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_KONSOLIDASI_ADMIN_AUDIT_BERDASARKAN_VPS_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_PERBAIKAN_UX_TANPA_DUMMY_PRODUKSI_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_SIMULASI_UAT_OWNER_TANPA_TOGGLE_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_TANPA_SIMULASI_DB_DAN_SATU_PAKET_20Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_UAT_EMAIL_POPUP_WILAYAH_ALAMAT_19Okt2026.zip / RUN_PATCH.py
- Script asli dalam paket revisi · Rajawali_PATCH_UAT_TRANSAKSI_DATABASE_YANG_ADA_20Okt2026.zip / RUN_PATCH.py
sed -i '/^USER www-data$/i RUN chmod -R a+rX /var/www/html' Dockerfile1 kemunculan
Memeriksa atau mengoperasikan image, container dan konfigurasi Docker yang disebutkan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
sed -i '/^USER www-data$/i RUN chmod -R a+rX /var/www/html' DockerfileAsal dan konteks
- Ringkasan penelusuran chat
HTTP, domain, HTTPS, WSS dan Nginx 1 entri
nginx3 kemunculan
Memeriksa atau mengatur HTTP, Nginx, domain dan transport HTTPS atau WSS.
Rujukan tertulis, eksekusi tidak disimpulkan
nginxAsal dan konteks
- Catatan induk lengkap · Panduan Praktis Deployment Rajawali Computer — 13 Oktober 2026 / Tahap E — build dan jalankan Laravel di VPS
- Ringkasan penelusuran chat
- Ringkasan penelusuran chat
Dependensi PHP, frontend dan build 16 entri
composer1 kemunculan
Memasang dependensi, membangun aset atau mengelola cache aplikasi sesuai subcommand.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
composerAsal dan konteks
- Ringkasan penelusuran chat · Run with: docker compose --env-file .env.production -f compose.production.yml up -d
composer create-project laravel/laravel .1 kemunculan
Memasang dependensi, membangun aset atau mengelola cache aplikasi sesuai subcommand.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
composer create-project laravel/laravel .Asal dan konteks
- Ringkasan penelusuran chat
composer create-project laravel/laravel . "^13.0"2 kemunculan
Memasang dependensi, membangun aset atau mengelola cache aplikasi sesuai subcommand.
Tercatat sebagai input terminal
composer create-project laravel/laravel . "^13.0"Asal dan konteks
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / Lampiran 31: Pasted text(4).txt
- Lampiran teks lengkap
composer install --no-dev1 kemunculan
Memasang dependensi, membangun aset atau mengelola cache aplikasi sesuai subcommand.
Rujukan tertulis, eksekusi tidak disimpulkan
composer install --no-devAsal dan konteks
- Catatan induk lengkap · Bukti Blok Kode Clark-Wilson dan OWASP Rajawali Computer / Blok 27. A03 Instalasi dependency PHP dari lockfile
npm1 kemunculan
Memasang dependensi, membangun aset atau mengelola cache aplikasi sesuai subcommand.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
npmAsal dan konteks
- Ringkasan penelusuran chat · Run with: docker compose --env-file .env.production -f compose.production.yml up -d
npm ci12 kemunculan
Memasang dependensi, membangun aset atau mengelola cache aplikasi sesuai subcommand.
Rujukan tertulis, eksekusi tidak disimpulkan
npm ciAsal dan konteks
- Catatan induk lengkap · Analisis setelah seluruh rekaman diproses / Pembahasan DataTables JS secara utuh
- Catatan induk lengkap · Bimbingan Pak Fikri 9 Oktober 2026 / Hasil revisi dan pemeriksaan source 12 Oktober 2026
- Catatan induk lengkap · Pemeriksaan lanjutan 13 Oktober 2026 setelah Work terhenti / Kedudukan teknis dan perubahan source pada kelanjutan ini
- Catatan induk lengkap · Analisis setelah seluruh rekaman diproses / Pembahasan DataTables JS secara utuh
- Catatan induk lengkap · Bimbingan Pak Fikri 9 Oktober 2026 / Hasil revisi dan pemeriksaan source 12 Oktober 2026
- Catatan induk lengkap · Pemeriksaan lanjutan 13 Oktober 2026 setelah Work terhenti / Kedudukan teknis dan perubahan source pada kelanjutan ini
- Catatan induk lengkap · Analisis setelah seluruh rekaman diproses / Pembahasan DataTables JS secara utuh
- Catatan induk lengkap · Analisis setelah seluruh rekaman diproses / Pembahasan DataTables JS secara utuh
- Catatan induk lengkap · Bimbingan Pak Fikri 9 Oktober 2026 / Hasil revisi dan pemeriksaan source 12 Oktober 2026
- Catatan induk lengkap · Pemeriksaan lanjutan 13 Oktober 2026 setelah Work terhenti / Kedudukan teknis dan perubahan source pada kelanjutan ini
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / 4. Alat dan pemeriksaan lain
- Catatan induk lengkap · Rajawali Computer — Pekerjaan, pengujian, dan persiapan bimbingan Pak Miftah / Pembaruan implementasi dari ZIP source VPS aktual, 17 Oktober 2026
npm ci --ignore-scripts1 kemunculan
Memasang dependensi, membangun aset atau mengelola cache aplikasi sesuai subcommand.
Rujukan tertulis, eksekusi tidak disimpulkan
npm ci --ignore-scriptsAsal dan konteks
- Catatan induk lengkap · Bukti Blok Kode Clark-Wilson dan OWASP Rajawali Computer / Blok 26. A03 Instalasi dependency frontend dari lockfile
npm install3 kemunculan
Memasang dependensi, membangun aset atau mengelola cache aplikasi sesuai subcommand.
Rujukan tertulis, eksekusi tidak disimpulkan
npm installAsal dan konteks
- Catatan induk lengkap · Pemeriksaan lanjutan 13 Oktober 2026 setelah Work terhenti / Kedudukan teknis dan perubahan source pada kelanjutan ini
- Catatan induk lengkap · Pemeriksaan lanjutan 13 Oktober 2026 setelah Work terhenti / Kedudukan teknis dan perubahan source pada kelanjutan ini
- Catatan induk lengkap · Pemeriksaan lanjutan 13 Oktober 2026 setelah Work terhenti / Kedudukan teknis dan perubahan source pada kelanjutan ini
npm install --package-lock-only --ignore-scripts --no-audit --no-fund1 kemunculan
Memasang dependensi, membangun aset atau mengelola cache aplikasi sesuai subcommand.
Rujukan tertulis, eksekusi tidak disimpulkan
npm install --package-lock-only --ignore-scripts --no-audit --no-fundAsal dan konteks
- Catatan induk lengkap · Tahap 2 — Persiapan deployment Rajawali melalui CloudPanel + Docker / Hal yang belum dapat diselesaikan dari sini
npm run build5 kemunculan
Membangun aset produksi melalui script package.json. Jika diikuti tes browser, kedua tahap merupakan satu rangkaian.
Tercatat sebagai input terminal
npm run buildAsal dan konteks
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / Lampiran 33: Pasted text(6).txt
- Catatan induk lengkap · Rajawali Computer Production Deployment Checklist
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / Lampiran 19: Pasted markdown.md
- Lampiran teks lengkap
- Ringkasan penelusuran chat
npx tsc --noEmit2 kemunculan
Memasang dependensi, membangun aset atau mengelola cache aplikasi sesuai subcommand.
Rujukan tertulis, eksekusi tidak disimpulkan
npx tsc --noEmitAsal dan konteks
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / Lampiran 33: Pasted text(6).txt
- Lampiran teks lengkap
optimize:clear1 kemunculan
Memasang dependensi, membangun aset atau mengelola cache aplikasi sesuai subcommand.
Rujukan tertulis, eksekusi tidak disimpulkan
optimize:clearAsal dan konteks
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / Lampiran 19: Pasted markdown.md
php artisan optimize:clear4 kemunculan
Membersihkan cache optimasi Laravel agar konfigurasi atau route tidak dibaca dari cache lama.
Tercatat sebagai input terminal
php artisan optimize:clearAsal dan konteks
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / Lampiran 32: Pasted text(5).txt
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / Lampiran 33: Pasted text(6).txt
- Lampiran teks lengkap
- Lampiran teks lengkap
php artisan route:list2 kemunculan
Memasang dependensi, membangun aset atau mengelola cache aplikasi sesuai subcommand.
Tercatat sebagai input terminal
php artisan route:listAsal dan konteks
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / Lampiran 33: Pasted text(6).txt
- Lampiran teks lengkap
route:list1 kemunculan
Memasang dependensi, membangun aset atau mengelola cache aplikasi sesuai subcommand.
Rujukan tertulis, eksekusi tidak disimpulkan
route:listAsal dan konteks
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / Lampiran 19: Pasted markdown.md
sh ops/deploy/sync-datatables-lock.sh1 kemunculan
Memasang dependensi, membangun aset atau mengelola cache aplikasi sesuai subcommand.
Ditulis sebagai blok panduan atau SQL
sh ops/deploy/sync-datatables-lock.shAsal dan konteks
- Catatan induk lengkap · Panduan Praktis Deployment Rajawali Computer — 13 Oktober 2026 / Tahap A — unggah source (drag-and-drop)
Git dan pemeriksaan versi source 7 entri
git1 kemunculan
Memeriksa atau mengoperasikan source dengan Git sesuai subcommand historis.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
gitAsal dan konteks
- Ringkasan penelusuran chat · Run with: docker compose --env-file .env.production -f compose.production.yml up -d
git add2 kemunculan
Memeriksa atau mengoperasikan source dengan Git sesuai subcommand historis.
Rujukan tertulis, eksekusi tidak disimpulkan
git addAsal dan konteks
- Catatan induk lengkap · Bimbingan Pak Fikri 9 Oktober 2026 / Koreksi keputusan setelah bimbingan, 13 Oktober 2026: Git untuk pekerjaan TA pribadi
- Catatan induk lengkap · Bimbingan Pak Fikri 9 Oktober 2026 / Koreksi keputusan setelah bimbingan, 13 Oktober 2026: Git untuk pekerjaan TA pribadi
git commit2 kemunculan
Memeriksa atau mengoperasikan source dengan Git sesuai subcommand historis.
Rujukan tertulis, eksekusi tidak disimpulkan
git commitAsal dan konteks
- Catatan induk lengkap · Bimbingan Pak Fikri 9 Oktober 2026 / Koreksi keputusan setelah bimbingan, 13 Oktober 2026: Git untuk pekerjaan TA pribadi
- Catatan induk lengkap · Bimbingan Pak Fikri 9 Oktober 2026 / Koreksi keputusan setelah bimbingan, 13 Oktober 2026: Git untuk pekerjaan TA pribadi
git init2 kemunculan
Memeriksa atau mengoperasikan source dengan Git sesuai subcommand historis.
Rujukan tertulis, eksekusi tidak disimpulkan
git initAsal dan konteks
- Catatan induk lengkap · Bimbingan Pak Fikri 9 Oktober 2026 / Koreksi keputusan setelah bimbingan, 13 Oktober 2026: Git untuk pekerjaan TA pribadi
- Catatan induk lengkap · Bimbingan Pak Fikri 9 Oktober 2026 / Koreksi keputusan setelah bimbingan, 13 Oktober 2026: Git untuk pekerjaan TA pribadi
git status2 kemunculan
Memeriksa atau mengoperasikan source dengan Git sesuai subcommand historis.
Rujukan tertulis, eksekusi tidak disimpulkan
git statusAsal dan konteks
- Catatan induk lengkap · Bimbingan Pak Fikri 9 Oktober 2026 / Koreksi keputusan setelah bimbingan, 13 Oktober 2026: Git untuk pekerjaan TA pribadi
- Catatan induk lengkap · Bimbingan Pak Fikri 9 Oktober 2026 / Koreksi keputusan setelah bimbingan, 13 Oktober 2026: Git untuk pekerjaan TA pribadi
ops/deploy/git-sync.sh8 kemunculan
Memeriksa atau mengoperasikan source dengan Git sesuai subcommand historis.
Rujukan tertulis, eksekusi tidak disimpulkan
ops/deploy/git-sync.shAsal dan konteks
- Catatan induk lengkap · Analisis setelah seluruh rekaman diproses / Pembahasan Git secara utuh
- Catatan induk lengkap · Analisis setelah seluruh rekaman diproses / Penunjuk source untuk persiapan penjelasan
- Catatan induk lengkap · Analisis setelah seluruh rekaman diproses / Pembahasan Git secara utuh
- Catatan induk lengkap · Analisis setelah seluruh rekaman diproses / Penunjuk source untuk persiapan penjelasan
- Catatan induk lengkap · Pemeriksaan lanjutan 13 Oktober 2026 setelah Work terhenti / Kedudukan teknis dan perubahan source pada kelanjutan ini
- Catatan induk lengkap · Analisis setelah seluruh rekaman diproses / Pembahasan Git secara utuh
- Catatan induk lengkap · Analisis setelah seluruh rekaman diproses / Pembahasan Git secara utuh
- Catatan induk lengkap · Analisis setelah seluruh rekaman diproses / Penunjuk source untuk persiapan penjelasan
subprocess.run(['git','merge-file','-p',str(p1),str(p2),str(p3)],capture_output=True)BARU · 1 kemunculan
Panggilan Git merge-file pada installer untuk membandingkan source aktual, basis dan revisi. Panggilan ini belum membuktikan konflik source sudah terselesaikan pada VPS.
Tertulis dalam script paket, eksekusi VPS belum dibuktikan
Tambahan dari script paket revisi. Variabel dan fungsi Python dibaca pada sumber lengkap. Eksekusinya pada VPS belum dibuktikan oleh arsip ini.
subprocess.run(['git','merge-file','-p',str(p1),str(p2),str(p3)],capture_output=True)Asal dan konteks
- Script asli dalam paket revisi · Rajawali_PATCH_KONSOLIDASI_ADMIN_AUDIT_BERDASARKAN_VPS_20Okt2026.zip / RUN_PATCH.py
Pemeriksaan perangkat dan lingkungan lokal 29 entri
code --version2 kemunculan
Memeriksa versi, lokasi executable atau kemampuan perangkat pengembangan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
code --versionAsal dan konteks
- Ringkasan penelusuran chat
- Ringkasan penelusuran chat
composer --version2 kemunculan
Memeriksa versi, lokasi executable atau kemampuan perangkat pengembangan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
composer --versionAsal dan konteks
- Ringkasan penelusuran chat
- Ringkasan penelusuran chat
docker --version1 kemunculan
Memeriksa versi, lokasi executable atau kemampuan perangkat pengembangan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
docker --versionAsal dan konteks
- Ringkasan penelusuran chat
docker compose version1 kemunculan
Memeriksa versi, lokasi executable atau kemampuan perangkat pengembangan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
docker compose versionAsal dan konteks
- Ringkasan penelusuran chat
git --version2 kemunculan
Memeriksa versi, lokasi executable atau kemampuan perangkat pengembangan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
git --versionAsal dan konteks
- Ringkasan penelusuran chat
- Ringkasan penelusuran chat
node -v2 kemunculan
Memeriksa versi, lokasi executable atau kemampuan perangkat pengembangan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
node -vAsal dan konteks
- Ringkasan penelusuran chat
- Ringkasan penelusuran chat
npm -v2 kemunculan
Memeriksa versi, lokasi executable atau kemampuan perangkat pengembangan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
npm -vAsal dan konteks
- Ringkasan penelusuran chat
- Ringkasan penelusuran chat
php --ini1 kemunculan
Memeriksa versi, lokasi executable atau kemampuan perangkat pengembangan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
php --iniAsal dan konteks
- Ringkasan penelusuran chat
php -v2 kemunculan
Memeriksa versi, lokasi executable atau kemampuan perangkat pengembangan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
php -vAsal dan konteks
- Ringkasan penelusuran chat
- Ringkasan penelusuran chat
psql --version2 kemunculan
Memeriksa versi, lokasi executable atau kemampuan perangkat pengembangan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
psql --versionAsal dan konteks
- Ringkasan penelusuran chat
- Ringkasan penelusuran chat
ssh -V1 kemunculan
Memeriksa versi, lokasi executable atau kemampuan perangkat pengembangan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
ssh -VAsal dan konteks
- Ringkasan penelusuran chat
where code1 kemunculan
Memeriksa versi, lokasi executable atau kemampuan perangkat pengembangan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
where codeAsal dan konteks
- Ringkasan penelusuran chat
where composer1 kemunculan
Memeriksa versi, lokasi executable atau kemampuan perangkat pengembangan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
where composerAsal dan konteks
- Ringkasan penelusuran chat
where git1 kemunculan
Memeriksa versi, lokasi executable atau kemampuan perangkat pengembangan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
where gitAsal dan konteks
- Ringkasan penelusuran chat
where node1 kemunculan
Memeriksa versi, lokasi executable atau kemampuan perangkat pengembangan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
where nodeAsal dan konteks
- Ringkasan penelusuran chat
where npm1 kemunculan
Memeriksa versi, lokasi executable atau kemampuan perangkat pengembangan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
where npmAsal dan konteks
- Ringkasan penelusuran chat
where php1 kemunculan
Memeriksa versi, lokasi executable atau kemampuan perangkat pengembangan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
where phpAsal dan konteks
- Ringkasan penelusuran chat
where psql1 kemunculan
Memeriksa versi, lokasi executable atau kemampuan perangkat pengembangan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
where psqlAsal dan konteks
- Ringkasan penelusuran chat
where ssh1 kemunculan
Memeriksa versi, lokasi executable atau kemampuan perangkat pengembangan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
where sshAsal dan konteks
- Ringkasan penelusuran chat
where.exe code1 kemunculan
Memeriksa versi, lokasi executable atau kemampuan perangkat pengembangan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
where.exe codeAsal dan konteks
- Ringkasan penelusuran chat
where.exe composer1 kemunculan
Memeriksa versi, lokasi executable atau kemampuan perangkat pengembangan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
where.exe composerAsal dan konteks
- Ringkasan penelusuran chat
where.exe docker1 kemunculan
Memeriksa versi, lokasi executable atau kemampuan perangkat pengembangan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
where.exe dockerAsal dan konteks
- Ringkasan penelusuran chat
where.exe git1 kemunculan
Memeriksa versi, lokasi executable atau kemampuan perangkat pengembangan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
where.exe gitAsal dan konteks
- Ringkasan penelusuran chat
where.exe node1 kemunculan
Memeriksa versi, lokasi executable atau kemampuan perangkat pengembangan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
where.exe nodeAsal dan konteks
- Ringkasan penelusuran chat
where.exe npm1 kemunculan
Memeriksa versi, lokasi executable atau kemampuan perangkat pengembangan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
where.exe npmAsal dan konteks
- Ringkasan penelusuran chat
where.exe php1 kemunculan
Memeriksa versi, lokasi executable atau kemampuan perangkat pengembangan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
where.exe phpAsal dan konteks
- Ringkasan penelusuran chat
where.exe psql1 kemunculan
Memeriksa versi, lokasi executable atau kemampuan perangkat pengembangan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
where.exe psqlAsal dan konteks
- Ringkasan penelusuran chat
wsl --status1 kemunculan
Memeriksa versi, lokasi executable atau kemampuan perangkat pengembangan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
wsl --statusAsal dan konteks
- Ringkasan penelusuran chat
wsl --version1 kemunculan
Memeriksa versi, lokasi executable atau kemampuan perangkat pengembangan.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
wsl --versionAsal dan konteks
- Ringkasan penelusuran chat
Layanan host, jaringan dan izin berkas 1 entri
chmod 600 .env.production1 kemunculan
Memeriksa atau mengubah layanan host, jaringan serta permission berkas.
Ditulis sebagai blok panduan atau SQL
chmod 600 .env.productionAsal dan konteks
- Catatan induk lengkap · Panduan Praktis Deployment Rajawali Computer — 13 Oktober 2026 / Tahap C — konfigurasi production secara privat pada VPS
Navigasi terminal dan pengelolaan berkas 9 entri
cd /d "C:\Semester 8\TA - Research Methodology\rajawali_computer"2 kemunculan
Berpindah direktori, membaca atau mengelola berkas sesuai perintah yang tertulis.
Tercatat sebagai input terminal
cd /d "C:\Semester 8\TA - Research Methodology\rajawali_computer"Asal dan konteks
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / Lampiran 31: Pasted text(4).txt
- Lampiran teks lengkap
cd /d ...1 kemunculan
Berpindah direktori, membaca atau mengelola berkas sesuai perintah yang tertulis.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
cd /d ...Asal dan konteks
- Ringkasan penelusuran chat
cd /home/rajawalicompgresik/rajawalicompgresik6 kemunculan
Berpindah direktori, membaca atau mengelola berkas sesuai perintah yang tertulis.
Tercatat sebagai input terminal
cd /home/rajawalicompgresik/rajawalicompgresikAsal dan konteks
- Catatan induk lengkap · Catatan TA Rajawali Computer / Installer berhenti pada pemeriksaan AuthApp VPS 17 Oktober 2026
- Catatan induk lengkap · Pemeriksaan arahan bimbingan terbaru dan revisi lanjutan 17 Oktober 2026 / Jawaban dan langkah berikutnya
- Lampiran teks lengkap
- Ringkasan penelusuran chat
- Ringkasan penelusuran chat
- Command dan hasil pengguna pada chat ini · Command dan hasil terminal yang dikirim pengguna pada chat ini / Installer patch koreksi yang pernah gagal
cd /opt/rajawali3 kemunculan
Berpindah direktori, membaca atau mengelola berkas sesuai perintah yang tertulis.
Ditulis sebagai blok panduan atau SQL
cd /opt/rajawaliAsal dan konteks
- Catatan induk lengkap · Panduan Praktis Deployment Rajawali Computer — 13 Oktober 2026 / Tahap A — unggah source (drag-and-drop)
- Catatan induk lengkap · Panduan Praktis Deployment Rajawali Computer — 13 Oktober 2026 / Tahap D — database di Docker dan restore data
- Catatan induk lengkap · Panduan Praktis Deployment Rajawali Computer — 13 Oktober 2026 / Tahap E — build dan jalankan Laravel di VPS
Copy-Item $syncSource $syncTarget -Force2 kemunculan
Berpindah direktori, membaca atau mengelola berkas sesuai perintah yang tertulis.
Rujukan tertulis, eksekusi tidak disimpulkan
Copy-Item $syncSource $syncTarget -ForceAsal dan konteks
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / Lampiran 36: Pasted text(9).txt
- Lampiran teks lengkap
cp .env.production.example .env.production1 kemunculan
Berpindah direktori, membaca atau mengelola berkas sesuai perintah yang tertulis.
Ditulis sebagai blok panduan atau SQL
cp .env.production.example .env.productionAsal dan konteks
- Catatan induk lengkap · Panduan Praktis Deployment Rajawali Computer — 13 Oktober 2026 / Tahap C — konfigurasi production secara privat pada VPS
dir "C:\Semester 8\TA - Research Methodology\rajawali_computer"1 kemunculan
Berpindah direktori, membaca atau mengelola berkas sesuai perintah yang tertulis.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
dir "C:\Semester 8\TA - Research Methodology\rajawali_computer"Asal dan konteks
- Ringkasan penelusuran chat
ls1 kemunculan
Berpindah direktori, membaca atau mengelola berkas sesuai perintah yang tertulis.
Rujukan tertulis, eksekusi tidak disimpulkan
lsAsal dan konteks
- Catatan induk lengkap · Tahap 2 — Persiapan deployment Rajawali melalui CloudPanel + Docker / Contoh perintah pengecekan setelah ZIP berada di VPS
sudo mkdir -p /opt/rajawali1 kemunculan
Berpindah direktori, membaca atau mengelola berkas sesuai perintah yang tertulis.
Ditulis sebagai blok panduan atau SQL
sudo mkdir -p /opt/rajawaliAsal dan konteks
- Catatan induk lengkap · Panduan Praktis Deployment Rajawali Computer — 13 Oktober 2026 / Tahap A — unggah source (drag-and-drop)
Command atau potongan lain dari arsip 4 entri
node1 kemunculan
Potongan command dipertahankan sesuai sumber. Konteks asal perlu dibaca sebelum dipakai kembali.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
nodeAsal dan konteks
- Ringkasan penelusuran chat · Run with: docker compose --env-file .env.production -f compose.production.yml up -d
node --cpu-prof5 kemunculan
Potongan command dipertahankan sesuai sumber. Konteks asal perlu dibaca sebelum dipakai kembali.
Rujukan tertulis, eksekusi tidak disimpulkan
node --cpu-profAsal dan konteks
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / Lampiran 21: Pasted text(10).txt
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / Lampiran 27: Pasted text(20260929-154322).txt
- Catatan induk lengkap · Panduan pengujian fungsional dan keamanan Rajawali Computer / Lampiran 33: Pasted text(6).txt
- Lampiran teks lengkap
- Lampiran teks lengkap
php1 kemunculan
Potongan command dipertahankan sesuai sumber. Konteks asal perlu dibaca sebelum dipakai kembali.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
phpAsal dan konteks
- Ringkasan penelusuran chat · Run with: docker compose --env-file .env.production -f compose.production.yml up -d
python31 kemunculan
Potongan command dipertahankan sesuai sumber. Konteks asal perlu dibaca sebelum dipakai kembali.
Kutipan ringkas dari penelusuran, bukan transkrip lengkap
python3Asal dan konteks
- Ringkasan penelusuran chat
Sumber katalog dan pembaruan
Tombol sumber membuka teks yang disimpan dalam HTML ini. Pada source paket, label menjelaskan nama ZIP dan file di dalamnya. Isi tersebut tidak diperlakukan sebagai source aktif VPS tanpa bukti pemasangan.
| Sumber | Bentuk | Baris | Teks |
|---|---|---|---|
| Catatan_Bimbingan_Pak_Fikri_7_Agustus_2026.md | Catatan induk lengkap | 23.134 | |
| Pasted text(2).txt | Lampiran teks lengkap | 1.562 | |
| Pasted text(1).txt | Lampiran teks lengkap | 40 | |
| Pasted text(10).txt | Lampiran teks lengkap | 316 | |
| Pasted text(20260923-155546).txt | Lampiran teks lengkap | 213 | |
| Pasted text(20260925-094134).txt | Lampiran teks lengkap | 463 | |
| Pasted text(20260925-095358).txt | Lampiran teks lengkap | 195 | |
| Pasted text(20260925-103227).txt | Lampiran teks lengkap | 623 | |
| Pasted text(20261017-063546).txt | Lampiran teks lengkap | 411 | |
| Pasted text(20261017-090321).txt | Lampiran teks lengkap | 599 | |
| Pasted text(20261017-111206).txt | Lampiran teks lengkap | 411 | |
| Pasted text(20261017-115329).txt | Lampiran teks lengkap | 696 | |
| Pasted text(3).txt | Lampiran teks lengkap | 25 | |
| Pasted text(4).txt | Lampiran teks lengkap | 692 | |
| Pasted text(5).txt | Lampiran teks lengkap | 258 | |
| Pasted text(6).txt | Lampiran teks lengkap | 318 | |
| Pasted text(7).txt | Lampiran teks lengkap | 689 | |
| Pasted text(8).txt | Lampiran teks lengkap | 237 | |
| Pasted text(9).txt | Lampiran teks lengkap | 423 | |
| Pasted text.txt | Lampiran teks lengkap | 29 | |
| Potongan penelusuran riwayat 1 | Ringkasan penelusuran chat | 35 | |
| Potongan penelusuran riwayat 2 | Ringkasan penelusuran chat | 25 | |
| Potongan penelusuran riwayat 3 | Ringkasan penelusuran chat | 65 | |
| Potongan penelusuran riwayat 4 | Ringkasan penelusuran chat | 12 | |
| Command dan output pengguna pada chat ini | Command dan hasil pengguna pada chat ini | 19 | |
| Penelusuran pembaruan chat 20 Oktober 2026 · 1 | Ringkasan penelusuran chat | 19 | |
| Penelusuran pembaruan chat 20 Oktober 2026 · 2 | Ringkasan penelusuran chat | 7 | |
| Penelusuran pembaruan chat 20 Oktober 2026 · 3 | Ringkasan penelusuran chat | 19 | |
| Rajawali_PATCH_ADMIN_AUDIT_LOG_TANPA_TABEL_BARU_20Okt2026.zip / RUN_PATCH.py | Script asli dalam paket revisi | 426 | |
| Rajawali_PATCH_ADMIN_ONLINE_CONTROLLER_KOMPATIBEL_20Okt2026.zip / RUN_PATCH.py | Script asli dalam paket revisi | 240 | |
| Rajawali_PATCH_ADMIN_ONLINE_ROUTE_KOMPATIBEL_20Okt2026.zip / RUN_PATCH.py | Script asli dalam paket revisi | 173 | |
| Rajawali_PATCH_BULK_FUNGSIONAL_20Okt2026.zip / RUN_PATCH.py | Script asli dalam paket revisi | 134 | |
| Rajawali_PATCH_CHECKOUT_PELANGGAN_DAN_PENGIRIMAN_OTOMATIS_20Okt2026.zip / RUN_PATCH.py | Script asli dalam paket revisi | 135 | |
| Rajawali_PATCH_KONSOLIDASI_ADMIN_AUDIT_BERDASARKAN_VPS_20Okt2026.zip / RUN_PATCH.py | Script asli dalam paket revisi | 554 | |
| Rajawali_PATCH_KONSOLIDASI_ADMIN_AUDIT_BERDASARKAN_VPS_20Okt2026.zip / AUDIT_CLEANUP.php | Source pendukung dalam paket revisi | 91 | |
| Rajawali_PATCH_KONSOLIDASI_ADMIN_AUDIT_BERDASARKAN_VPS_20Okt2026.zip / files/app/Services/Transactions/GroupedOnlineCheckout.php | Source pendukung dalam paket revisi | 473 | |
| Rajawali_PATCH_KONSOLIDASI_ADMIN_AUDIT_BERDASARKAN_VPS_20Okt2026.zip / files/app/Services/Transactions/OnlineOrderWorkflow.php | Source pendukung dalam paket revisi | 294 | |
| Rajawali_PATCH_KONSOLIDASI_ADMIN_AUDIT_BERDASARKAN_VPS_20Okt2026.zip / files/resources/js/online/OnlineOrdersPanel.tsx | Source pendukung dalam paket revisi | 299 | |
| Rajawali_PATCH_KONSOLIDASI_ADMIN_AUDIT_BERDASARKAN_VPS_20Okt2026.zip / files/database/migrations/master/2026_10_18_120000_create_online_checkout_groups.php | Source pendukung dalam paket revisi | 69 | |
| Rajawali_PATCH_PERBAIKAN_UX_TANPA_DUMMY_PRODUKSI_20Okt2026.zip / RUN_PATCH.py | Script asli dalam paket revisi | 134 | |
| Rajawali_PATCH_SIMULASI_UAT_OWNER_TANPA_TOGGLE_20Okt2026.zip / RUN_PATCH.py | Script asli dalam paket revisi | 135 | |
| Rajawali_PATCH_TANPA_SIMULASI_DB_DAN_SATU_PAKET_20Okt2026.zip / RUN_PATCH.py | Script asli dalam paket revisi | 135 | |
| Rajawali_PATCH_UAT_EMAIL_POPUP_WILAYAH_ALAMAT_19Okt2026.zip / RUN_PATCH.py | Script asli dalam paket revisi | 134 | |
| Rajawali_PATCH_UAT_PENERIMA_ALAMAT_EMAIL_19Okt2026.zip / RUN_PATCH.py | Script asli dalam paket revisi | 172 | |
| Rajawali_PATCH_UAT_TRANSAKSI_DATABASE_YANG_ADA_20Okt2026.zip / RUN_PATCH.py | Script asli dalam paket revisi | 141 |
Katalog dipakai untuk belajar dan menelusuri bukti. Penggabungan dokumen ini tidak menjalankan installer, command VPS, SQL atau pengujian keamanan.