Belum masuk. Progresmu tidak tersimpan.

Masuk
Ruang Materi
Masuk

Audit modul pesanan kantin buatan AI

Bangun sendiri dari brief di bawah. Semua pemeriksaan lolos berarti proyekmu selesai, salah satu syarat sertifikat Vibe Coding: Membangun Software Bersama AI dengan Aman.

Brief

Seorang teman membuat aplikasi pesanan kantin sekolah dengan vibe coding. Aplikasinya terlihat jalan, tetapi modul pesanannya ditulis AI tanpa dibaca: ada bug ID ganda, validasi yang bolong, harga yang dipercaya dari klien, dan celah XSS. Tugasmu adalah meninjau dan memperbaiki modul itu sampai semua pemeriksaan lolos, seperti latihan level 3 "Rilis yang aman" dalam bentuk kecil.

Data yang tersedia

MENU sudah disiapkan (jangan diubah):

const MENU = [
  { id: "nasgor", nama: "Nasi Goreng", harga: 12000 },
  { id: "esteh", nama: "Es Teh", harga: 4000 },
  { id: "mie", nama: "Mie Ayam", harga: 10000 },
];

Fitur wajib

  1. validasiPesanan(p) mengembalikan array field bermasalah, urut nama, menu, jumlah:
    • nama harus teks, setelah dipangkas panjangnya 1 sampai 40;
    • menu harus id yang ada di MENU;
    • jumlah harus bilangan bulat 1 sampai 20 (teks "2" ditolak).
  2. tambahPesanan(daftar, p) melempar Error bila pesanan tidak valid. Bila valid, kembalikan array baru (array asli tidak berubah) berisi pesanan { id, nama, menu, jumlah } dengan nama dipangkas dan id = id terbesar + 1 (daftar kosong berarti 1). Field lain dari klien, seperti harga, tidak disimpan.
  3. hitungTotal(daftar) menjumlah harga menu x jumlah memakai harga dari MENU, bukan harga kiriman klien. Daftar kosong bernilai 0.
  4. escapeHtml(teks) mengganti semua &, <, >, ", ' menjadi &amp;, &lt;, &gt;, &quot;, &#39;.
  5. barisPesanan(p) mengembalikan <li>NAMA: JUMLAHx NAMA MENU</li> dengan nama pemesan sudah di-escape.

Contoh hasil

const d = tambahPesanan([], { nama: "  Ani ", menu: "nasgor", jumlah: 2, harga: 1 });
// [{ id: 1, nama: "Ani", menu: "nasgor", jumlah: 2 }]
hitungTotal(d); // 24000, bukan 2
barisPesanan({ nama: "<b>Ani</b>", menu: "esteh", jumlah: 1 });
// "<li>&lt;b&gt;Ani&lt;/b&gt;: 1x Es Teh</li>"

Tips: baca kode awal dengan teliti dan tulis daftar masalahnya dulu sebelum mengubah apa pun, seperti code review.

Latihan kode: Audit modul pesanan kantin buatan AI

Perbaiki modul pesanan kantin buatan AI sampai semua pemeriksaan lolos: validasi input, id unik tanpa mutasi, total dari harga MENU, dan escaping untuk mencegah XSS. Baca brief untuk spesifikasi lengkap.