{"content_id":"rl3zchhyg6","slug":"five-policies-before-ai-ecommerce-search-development","locale":"id","schema_type":"HowTo","category":"how_to","category_name":"Panduan","title":"5 Kebijakan Operasional yang Harus Ditetapkan Sebelum Mengembangkan Pencarian Toko Online AI","summary":"AI dapat membuat kode pencarian toko online dengan cepat, tetapi standar penayangan produk dan penanganan pengecualian harus lebih dulu ditentukan oleh operator. Panduan ini merangkum pengurutan, status produk, metode daftar, cakupan pencarian, dan kebijakan log hingga tingkat implementasi dan pengujian nyata.","author":{"name":"Injoys Admin","url":"https://injoys.com/ko/about"},"key_points":["Pengurutan dasar harus menggabungkan relevansi pencarian serta sinyal penjualan dan kualitas dengan formula yang terdokumentasi, dan penayangan iklan harus dipisahkan dari peringkat organik.","Produk habis, penghentian penjualan sementara, penjualan berakhir, dan recall harus dimodelkan sebagai status yang berbeda serta ditangani secara konsisten di pencarian, detail, keranjang, dan pembayaran.","Daftar produk berskala besar harus memilih paginasi, muat lebih banyak, atau scroll tanpa batas sesuai tujuan, serta menjamin status URL dan pemulihan saat kembali.","Selain nama produk, cakupan pencarian harus mencakup merek, kategori, atribut, sinonim, dan nama model, serta layar tanpa hasil harus dirancang sebagai etalase terpisah.","Log pencarian harus dimanfaatkan sebagai data permintaan, tetapi pengenal pribadi dan kata pencarian sensitif harus diminimalkan, serta penyimpanan teks asli dan penyimpanan agregat harus dipisahkan."],"content_markdown":"AI dapat dengan cepat membuat API daftar produk, kotak pencarian, dan tombol pengurutan. Namun, **produk mana yang ditampilkan, produk mana yang disembunyikan, dan apa yang disebut sebagai ‘rekomendasi’** bukanlah kode, melainkan kebijakan operasional. Pencarian di toko online bukan sekadar fungsi kueri, melainkan sistem pengambilan keputusan yang menggabungkan penataan etalase, ruang iklan, penanganan stok, pengalaman pelanggan, dan pengumpulan data di satu tempat.\n\nJika hanya memberi instruksi “buatkan fitur pencarian produk” tanpa memberikan kebijakan, AI dapat secara acak mengisi contoh yang familier seperti urutan terbaru berdasarkan pendaftaran, kecocokan sebagian nama produk, dan paginasi sederhana. Kodenya mungkin berjalan, tetapi bisa tidak sesuai dengan operasional toko. Masalah yang umum terjadi adalah produk terbaru tetap tampil di baris pertama meski stoknya habis, produk yang penjualannya telah berakhir tetap bisa dimasukkan ke keranjang, dan pelanggan yang mencari “apel” tidak menemukan “청송 부사”.\n\n## Peringkat pencarian bukan fungsi teknis, melainkan kebijakan operasional\n\nUrutan penataan produk dapat dirancang oleh pelaku usaha. Namun, jika makna yang disampaikan layar kepada konsumen tidak selaras dengan cara perhitungan peringkat sebenarnya, atau jika paparan yang memiliki kepentingan ekonomi dibuat tampak seperti rekomendasi umum, risiko hukum dan kepercayaan akan meningkat.\n\nKomisi Perdagangan yang Adil pada Juni 2024 mempermasalahkan pengoperasian peringkat pencarian oleh Coupang dan CPLB serta penulisan ulasan pembelian oleh karyawan, lalu mengumumkan denda sementara sebesar 1,400억 won. Pada Agustus tahun yang sama, berdasarkan surat keputusan, dendanya ditetapkan sebesar 1,628억 won. Pihak pelaku usaha menolak keputusan tersebut, dan berdasarkan pemberitaan April 2026, gugatan pembatalan terkait masih berlangsung. Pelajaran praktis dari kasus ini bukanlah proposisi sederhana bahwa “mengutamakan produk sendiri selalu ilegal”. Yang perlu ditinjau sejak tahap desain adalah **apa arti label rekomendasi, apakah iklan dan kepentingan internal perusahaan telah ditampilkan dengan jelas, dan apakah perubahan peringkat dapat dijelaskan dengan data dan dokumen**.\n\nKarena penerapan hukum dapat berbeda tergantung struktur layanan dan cara penandaan, sebelum peluncuran aktual akan lebih aman untuk memeriksa secara terpisah peraturan terkait dan kasus penegakan terbaru.\n\n## Titik kegagalan ‘versi instan’ yang dibuat oleh prompt satu baris\n\n| Kebijakan yang belum ditentukan | Implementasi yang dapat diisi AI secara acak | Risiko operasional nyata |\n|---|---|---|\n| Pengurutan default | `created_at DESC` | Produk yang baru didaftarkan tetapi stok habis atau belum diperiksa tampil di bagian atas |\n| Status penjualan | Hanya memeriksa apakah dihapus | Produk yang dihentikan penjualannya atau ditarik kembali muncul di pencarian atau dapat dipesan |\n| Pemuatan daftar | Kueri seluruh data atau infinite scroll sederhana | Respons lambat, posisi hilang saat kembali, sulit membandingkan |\n| Cakupan pencarian | Hanya kecocokan sebagian nama produk | Pencarian merek, varietas, nama model, sinonim gagal |\n| Tidak ada hasil | Hanya mengembalikan array kosong | Pelanggan dengan niat beli tinggi langsung pergi |\n| Log | Menyimpan kata pencarian bersama anggota dan IP apa adanya | Risiko pengumpulan di luar tujuan, penyimpanan berlebihan, paparan kata pencarian sensitif |\n\nAI dapat mengisi kekosongan persyaratan, tetapi tidak dapat menilai apakah pilihan tersebut sesuai dengan strategi toko dan tanggung jawab hukum. Karena itu, sebelum implementasi, setidaknya lima kebijakan berikut harus ditetapkan dalam dokumen.\n\n## 1. Nilai default pengurutan: apa yang akan disebut ‘urutan rekomendasi’\n\nPengurutan default adalah etalase pertama yang dilihat pelanggan. Karena banyak pengguna tidak mengubah opsi pengurutan, nilai default secara langsung memengaruhi penjualan, penghabisan stok, pengembangan produk baru, dan kepuasan pelanggan.\n\n### Pisahkan terlebih dahulu tahap perhitungan peringkat\n\nLebih aman membagi hasil pencarian ke dalam urutan berikut daripada mencampur dan menghitung semuanya sekaligus.\n\n1. **Penentuan kelayakan tampil:** Hanya produk yang dapat dijual, dapat dipublikasikan, dan bukan target pemblokiran hukum maupun operasional yang dimasukkan sebagai kandidat.\n2. **Perhitungan relevansi pencarian:** Menghitung seberapa cocok nama produk, merek, kategori, atribut, dan sinonim dengan kata pencarian.\n3. **Perhitungan peringkat organik:** Menggabungkan sinyal seperti kecepatan penjualan, tingkat konversi, reliabilitas rating, dan kualitas pengiriman.\n4. **Penerapan aturan bisnis:** Menerapkan penalti stok habis, kesempatan eksplorasi produk baru, pembatasan keragaman, dan sebagainya.\n5. **Penggabungan slot iklan:** Produk iklan disisipkan terpisah dari peringkat organik dan ditandai dengan jelas.\n6. **Penanganan seri yang stabil:** Jika skornya sama, urutan ditentukan dengan kunci tetap seperti `product_id`.\n\n### Skor rekomendasi harus berupa rumus yang terdokumentasi\n\nBerikut hanyalah contoh untuk menjelaskan struktur, bukan jawaban yang cocok untuk semua toko online.\n\n```text\norganic_score =\n  0.45 × query_relevance\n+ 0.20 × conversion_rate_28d\n+ 0.15 × sales_velocity_14d\n+ 0.10 × rating_confidence\n+ 0.10 × fulfillment_quality\n```\n\nSetiap sinyal harus dinormalisasi ke rentang yang sama, serta periode dan objek agregasinya harus dinyatakan. Rata-rata rating sederhana dapat membuat produk dengan 1 ulasan bernilai 5 lebih tinggi daripada produk dengan 1,000 ulasan bernilai 4.8, sehingga lebih baik menggunakan skor koreksi yang juga mencerminkan jumlah ulasan. Jika hanya menggunakan volume penjualan, produk yang telah lama terjual dapat memperoleh keuntungan permanen, sehingga kecepatan penjualan dan tingkat konversi dalam periode terbaru perlu dilihat bersama.\n\n### Rincian yang wajib ditentukan\n\n- Apakah tujuan urutan rekomendasi adalah kecocokan pencarian, kemungkinan pembelian, kepuasan pelanggan, atau efisiensi stok\n- Periode agregasi dan siklus pembaruan setiap sinyal\n- Sinyal penalti seperti tingkat pembatalan, tingkat retur, keterlambatan pengiriman, dan kemungkinan stok habis\n- Kesempatan eksplorasi dan poin tambahan maksimum yang akan diberikan kepada produk baru dengan sedikit ulasan\n- Aturan keragaman agar merek yang sama atau penjual yang sama tidak terlalu mendominasi bagian atas\n- Kunci pengurutan tetap yang akan digunakan saat skor seri\n- Catatan audit yang menyimpan versi rumus peringkat, alasan perubahan, waktu penerapan, dan pemberi persetujuan\n- Indikator keberhasilan dan kondisi penghentian A/B test\n\n### Jangan mencampur iklan dan rekomendasi organik\n\nKepentingan ekonomi seperti biaya iklan, apakah produk milik sendiri, dan margin tinggi dapat saja dipertimbangkan, tetapi berisiko jika hal itu membuat konsumen salah mengira sebagai “urutan populer” atau “urutan rekomendasi” umum. Komisi Perdagangan yang Adil pada 2025 juga mempermasalahkan struktur dan penandaan terkait dalam kasus platform penjualan produk mahal, di mana produk penjual yang membeli opsi berbayar tampil lebih dulu dalam pengurutan default. Produk iklan pada dasarnya harus dikelola sebagai kumpulan kandidat dan slot terpisah, serta diberi label “iklan” atau “sponsor” yang dapat diidentifikasi pada tingkat kartu. Layar administrator harus menampilkan aturan penayangan iklan dan rumus peringkat organik secara terpisah.\n\n## 2. Produk berstatus tidak normal: stok habis dan penghentian penjualan adalah status yang berbeda\n\nJika semua pengecualian ditangani hanya dengan `is_sold_out`, pencarian, detail, keranjang, dan validasi pesanan akan saling tidak selaras. Minimal, **status penjualan, status stok, status publikasi, dan status regulasi** harus dipisahkan.\n\n### Model status yang direkomendasikan\n\n| Status | Pencarian·daftar | Detail URL langsung | Keranjang·pesanan | Penanganan yang direkomendasikan |\n|---|---|---|---|---|\n| Sedang dijual·stok tersedia | Tampil normal | Ditampilkan normal | Bisa | Kandidat dasar |\n| Sedang dijual·stok habis sementara | Dapat ditampilkan tetapi diberi penalti atau diturunkan | Menampilkan stok habis·notifikasi restock | Tidak bisa | Menjaga kemungkinan restock |\n| Penjualan dihentikan sementara | Pada dasarnya disembunyikan | Informasi penghentian sementara | Tidak bisa | Dipulihkan saat dibuka kembali |\n| Penjualan berakhir | Disembunyikan dari pencarian·kategori | Informasi berakhir dan produk pengganti | Tidak bisa | Menjaga tautan lama dan konteks CS |\n| Draf·dalam pemeriksaan | Disembunyikan sepenuhnya | Hanya admin berwenang | Tidak bisa | Pemeriksaan sebelum publikasi |\n| Recall·pemblokiran hukum | Disembunyikan sepenuhnya | Pengumuman keselamatan jika perlu | Tidak bisa | Informasi keselamatan didahulukan daripada rekomendasi pengganti |\n\nProduk stok habis memiliki nilai untuk notifikasi restock dan pemahaman permintaan pencarian, sehingga tidak selalu perlu dihapus. Sebaliknya, produk yang penjualannya telah berakhir sebaiknya dikecualikan dari daftar umum, tetapi pelanggan yang masuk melalui bookmark lama atau tautan eksternal dapat diberi penjelasan “penjualan telah berakhir” dan produk serupa. Apakah URL detail dipertahankan atau diakhiri dengan `410 Gone` ditentukan berdasarkan trafik pencarian, kebutuhan pemberitahuan hukum, dan nilai konten pengganti.\n\n### Indeks pencarian bukan otoritas final untuk ketersediaan pemesanan\n\nIndeks pencarian dapat mengalami keterlambatan sinkronisasi. Karena itu, meskipun hasil pencarian menunjukkan stok tersedia, tahap berikutnya harus memvalidasi ulang.\n\n- Validasi ulang status penjualan dan stok saat memasukkan ke keranjang\n- Validasi ulang harga, diskon, dan stok saat masuk ke formulir pesanan\n- Reservasi stok atau pengurangan atomik tepat sebelum pembayaran\n- Penghapusan darurat dari indeks pencarian saat terjadi event penghentian penjualan\n- Pemantauan waktu keterlambatan pengindeksan dan jumlah kegagalan\n\nTanpa aturan ini, insiden CS akan berulang: layar pencarian tampak normal, tetapi gagal hanya pada tahap pembayaran.\n\n## 3. Cara menampilkan daftar: apakah memakai paginasi, lihat lainnya, atau infinite scroll\n\nJika produk berjumlah ribuan atau puluhan ribu, semuanya tidak boleh dikirim sekaligus. Namun, menyatakan bahwa “toko online selalu harus memakai halaman bernomor” juga tidak tepat. Dalam pencarian yang berfokus pada perbandingan, pemulihan posisi dan status penting, sedangkan dalam eksplorasi kategori, “lihat lainnya” bisa lebih nyaman.\n\n| Cara | Kekuatan | Kelemahan | Situasi yang cocok |\n|---|---|---|---|\n| Paginasi bernomor | Mudah memahami posisi saat ini dan skala hasil, dapat mengunjungi ulang halaman tertentu | Perpindahan halaman terputus dan perbandingan antarhalaman merepotkan | Pencarian desktop, eksplorasi mendalam, hasil yang dapat dibagikan |\n| Lihat lainnya | Pengguna mengontrol pemuatan sambil mempertahankan produk yang sudah ada | Jika hasil sangat banyak, DOM dan memori membesar | Eksplorasi mobile·kategori, hasil skala menengah |\n| Infinite scroll | Eksplorasi berkelanjutan terasa natural | Posisi, akhir, dan skala keseluruhan tidak jelas, pemulihan saat kembali sulit | Layar feed yang lebih mementingkan penemuan daripada perbandingan |\n\nSecara praktis, **untuk hasil pencarian dapat diprioritaskan paginasi atau “lihat lainnya + URL halaman yang dapat dipulihkan”**, sedangkan untuk feed rekomendasi bertipe penemuan dapat dipertimbangkan infinite scroll lebih dulu. Sekalipun menggunakan infinite scroll murni, syarat berikut harus dipenuhi.\n\n- Menyimpan kata pencarian, pengurutan, filter, halaman, atau kursor di URL atau status yang dapat dipulihkan\n- Memulihkan produk sebelumnya dan posisi scroll saat kembali dari halaman detail\n- Mendukung navigasi keyboard, screen reader, dan perpindahan fokus\n- Menyediakan alternatif yang dapat diakses untuk footer dan tautan navigasi utama\n- Menyediakan UI kegagalan pemuatan dan coba lagi\n- Menyediakan URL unik atau struktur tautan yang dapat diakses untuk setiap kumpulan hasil\n\n### Paginasi offset dan kursor\n\nOffset dalam seperti `OFFSET 5000 LIMIT 40` akan makin lambat dan mudah menimbulkan duplikasi atau kehilangan data ketika data banyak dan sering diperbarui. Untuk halaman dangkal dan layar administrator, offset sederhana, tetapi untuk pencarian skala besar, metode kursor yang meneruskan kunci pengurutan dari hasil terakhir lebih stabil.\n\n```text\nORDER BY score DESC, product_id DESC\ncursor = last_score + last_product_id\n```\n\nJika hanya skor yang digunakan sebagai kursor, produk dengan skor seri dapat terlewat, sehingga kunci unik harus digunakan bersama. Jika skor rekomendasi sering berubah secara real-time, kebijakan untuk mengunci versi snapshot atau waktu acuan ranking selama sesi pencarian juga diperlukan.\n\n## 4. Cakupan pencarian dan layar tanpa hasil: menghubungkan ekspresi pelanggan dengan data produk\n\nPelanggan tidak mengetahui nama produk persis yang didaftarkan operator. Agar pelanggan yang mencari “apel” dapat melihat “청송 부사”, “홍로”, dan “apel rumahan”, data produk dan kamus pencarian harus dirancang bersama.\n\n### Prioritas bidang pencarian\n\n| Bidang | Prioritas yang direkomendasikan | Contoh |\n|---|---:|---|\n| SKU·nama model·barcode | Sangat tinggi | `SM-S928N`, `880...` |\n| Nama produk | Tinggi | Apel Cheongsong Busa 3kg |\n| Merek·produsen | Tinggi | Samsung, Apple |\n| Kategori·jenis produk | Menengah ke atas | Buah, sepatu lari |\n| Atribut utama | Menengah ke atas | Kapasitas, warna, spesifikasi, model kompatibel |\n| Sinonim·alias·varietas·tag | Menengah ke atas | sepatu jogging↔sepatu lari, apel↔busa |\n| Deskripsi detail | Rendah | Bobot rendah untuk mengurangi noise dari deskripsi panjang |\n| Isi ulasan | Opsional | Digunakan terbatas setelah meninjau kualitas·spam·informasi pribadi |\n\nDalam pencarian bahasa Korea, perbedaan spasi, pemisahan jamo, penulisan merek dalam Inggris·Hangul, angka dan satuan, serta kata majemuk juga harus dipertimbangkan. Misalnya, buat aturan normalisasi agar “에어팟프로2”, “에어팟 프로 2”, dan “AirPods Pro 2” terhubung ke kelompok produk yang sama.\n\n### Pipeline pencarian yang direkomendasikan\n\n1. Memvalidasi panjang input dan karakter yang diizinkan.\n2. Menormalisasi huruf besar-kecil, spasi, karakter khusus, dan satuan.\n3. Memeriksa kecocokan tepat dengan kode produk terlebih dahulu.\n4. Menerapkan tokenisasi serta variasi bentuk dan ejaan.\n5. Memperluas sinonim dan kamus kategori yang dikelola operator.\n6. Menemukan kandidat dengan pencarian teks.\n7. Jika perlu, menggunakan pencarian semantik untuk pembuatan kandidat pendukung.\n8. Memfilter status penjualan·publikasi·regulasi.\n9. Menghitung skor organik dan menggabungkan iklan secara terpisah.\n10. Mengembalikan hasil dan informasi diagnosis.\n\nMeskipun menerapkan AI generatif atau pencarian vektor, kecocokan tepat seperti SKU, merek, dan nama model tidak boleh dilemahkan. Dalam pencarian belanja, pendekatan hibrida yang menggabungkan **pencarian tepat + relevansi teks + pencarian semantik opsional** umumnya lebih aman. Agar AI tidak mengarang produk, harga, atau stok yang tidak ada di katalog, semua respons harus dihubungkan dengan ID produk nyata dan data saat ini.\n\n### Layar tanpa hasil adalah etalase kedua\n\nKetika tidak ada hasil pencarian, jangan hanya menampilkan layar kosong. Namun, produk populer yang tidak relevan juga tidak boleh dicampur seolah-olah merupakan hasil pencarian.\n\nKomposisi yang direkomendasikan adalah sebagai berikut.\n\n- Menampilkan kata pencarian yang dimasukkan pengguna apa adanya dan menginformasikan dengan jelas bahwa tidak ada produk yang cocok\n- Kandidat koreksi typo dan saran sinonim\n- Jika menjadi 0 hasil karena filter, memberi tahu filter yang dapat dihapus\n- Menyajikan hasil dengan cakupan yang diperluas memakai label terpisah\n- Membedakan dan menampilkan kategori terkait, produk pengganti, dan produk populer keseluruhan\n- Permintaan restock·masuk produk atau koneksi ke pusat layanan pelanggan\n- Mencatat event pencarian tanpa hasil ke analisis administrator\n\n“Tidak ada hasil” dan “tidak ada hasil setelah filter diterapkan” adalah masalah berbeda. Jika sebelumnya ada kandidat tetapi menjadi 0 karena filter harga·warna, pelonggaran filter adalah yang paling berguna. Jika katalog memang tidak memiliki produk tersebut, hal itu harus dimanfaatkan sebagai data sourcing.\n\n## 5. Riwayat pencarian: mengelola data riset pasar dan informasi pribadi bersama-sama\n\nKata pencarian tanpa hasil menunjukkan permintaan yang dicari pelanggan tetapi tidak dapat dibeli. Kata pencarian populer membantu penataan dan perencanaan stok, dan alur klik·keranjang·pembelian setelah pencarian menjadi indikator inti untuk mengevaluasi kualitas pencarian.\n\nNamun, tidak bisa disimpulkan bahwa “jika hanya menyimpan kata pencarian dan jumlahnya, itu selalu bukan informasi pribadi”. Kata pencarian itu sendiri dapat berisi nomor telepon, nomor pesanan, nama, serta informasi sensitif seperti kesehatan, agama, dan kehidupan seksual. Jika digabungkan dengan akun·IP·informasi perangkat, kemungkinan mengidentifikasi atau melacak individu meningkat.\n\n### Item pengumpulan yang direkomendasikan\n\n| Kategori | Penanganan yang direkomendasikan |\n|---|---|\n| Kata pencarian yang dinormalisasi | Agregasikan per hari·jam dan minimalkan periode penyimpanan teks asli |\n| Jumlah hasil | Simpan apakah 0 hasil dan nilai rentang |\n| Filter·pengurutan yang diterapkan | Simpan hanya dalam cakupan yang diperlukan untuk analisis kualitas pencarian |\n| Klik·keranjang·pembelian | Jika memungkinkan, simpan sebagai metrik agregat pada tingkat kata pencarian |\n| Koneksi sesi | Gunakan pengenal acak berumur pendek hanya jika benar-benar diperlukan |\n| ID anggota·IP·lokasi akurat | Kecualikan dari log analisis pencarian jika tidak ada tujuan dan dasar yang jelas |\n| Informasi pribadi dalam teks asli | Masking atau buang pola email·nomor telepon·nomor pesanan |\n\nID anggota yang di-hash juga tidak otomatis menjadi informasi anonim. Jika masih dapat dihubungkan kembali dengan pengguna tertentu, itu harus diperlakukan sebagai informasi pseudonim atau informasi pribadi. Periode penyimpanan juga jangan ditentukan seragam; tetapkan masing-masing untuk teks asli dan data agregat berdasarkan tujuan, siklus analisis, dan risiko keamanan.\n\n### Metrik yang diperlukan di dashboard administrator\n\n- Volume pencarian dan jumlah kata pencarian unik\n- Rasio tanpa hasil\n- Click-through rate hasil pencarian\n- Rasio keranjang dan konversi pembelian setelah pencarian\n- Rasio koreksi kata pencarian dan pelepasan filter\n- Rasio paparan produk stok habis\n- Konsentrasi hasil teratas dan keragaman merek\n- Metrik yang memisahkan performa iklan dan hasil organik\n- Kebaruan indeks pencarian dan jumlah kegagalan pengindeksan\n\nKarena kata pencarian teks asli berfrekuensi rendah dapat mengandung informasi pribadi, metode menampilkan hanya item yang melewati standar agregasi minimum pada layar operator juga berguna.\n\n## Prompt praktis: cara mengubah kebijakan menjadi kode\n\nLebih penting menulis aturan operasional dengan jelas daripada menggunakan banyak istilah pengembangan. Template berikut dapat diisi sesuai situasi layanan dan diberikan kepada AI.\n\n```text\nRancang dan implementasikan fitur pencarian produk untuk toko online kami.\n\n1. Kelayakan tampil\n- Hanya produk yang sedang dijual, berstatus publik, dan tidak memiliki pemblokiran regulasi yang dimasukkan sebagai kandidat pencarian.\n- Stok habis sementara tetap ditampilkan, tetapi ditempatkan di belakang produk dengan stok tersedia dalam kondisi yang sama.\n- Produk yang penjualannya berakhir dan produk yang penjualannya dihentikan sementara disembunyikan dari pencarian·kategori.\n- Pada URL langsung produk yang penjualannya berakhir, tampilkan informasi berakhir dan produk pengganti, serta hapus tombol pembelian.\n\n2. Pengurutan default\n- Relevansi kata pencarian diberi bobot paling besar.\n- Mencerminkan tingkat konversi 28 hari terakhir, kecepatan penjualan 14 hari terakhir, rating terkoreksi, dan kualitas pengiriman.\n- Setiap bobot dapat diubah melalui file konfigurasi atau kebijakan administrator.\n- Seri diurutkan secara stabil berdasarkan product_id menurun.\n- Produk iklan jangan dicampur ke skor organik, tetapi masukkan ke slot terpisah dan tandai sebagai 'iklan'.\n\n3. Eksplorasi daftar\n- Kembalikan 40 item sekali jalan.\n- Kata pencarian, pengurutan, filter, halaman, atau kursor harus dapat dipulihkan dari URL.\n- Jika kembali dari halaman detail, pulihkan daftar dan posisi scroll.\n- Untuk hasil skala besar, gunakan paginasi kursor.\n\n4. Cakupan pencarian\n- Kecocokan tepat SKU dan nama model menjadi prioritas tertinggi.\n- Cari nama produk, merek, kategori, atribut, dan tag sinonim.\n- Tangani spasi bahasa Korea serta variasi merek Inggris·Hangul.\n- Jika tidak ada hasil, tampilkan saran typo, pelonggaran filter, kategori terkait, dan rekomendasi pengganti secara terpisah.\n\n5. Log pencarian\n- Secara default hanya simpan kata pencarian yang dinormalisasi, rentang waktu, jumlah hasil, filter, serta metrik klik·pembelian agregat.\n- ID anggota dan IP tidak disimpan di log analisis pencarian.\n- Bentuk email, nomor telepon, dan nomor pesanan di-masking.\n- Periode penyimpanan teks asli dan periode penyimpanan agregat dipisahkan sebagai nilai pengaturan.\n\n6. Kebutuhan teknis\n- Rancang bersama model data, kontrak API, indeks pencarian, metode sinkronisasi, penanganan pengecualian, dan metrik administrator.\n- Usulkan indeks yang sesuai dengan pola kueri aktual dan jelaskan cara memeriksa execution plan.\n- Meski terjadi keterlambatan indeks pencarian, validasi ulang status·harga·stok pada tahap keranjang dan pembayaran.\n- Tulis skenario unit test, integration test, performance test, dan accessibility test.\n\nSebelum memulai implementasi, jika ada keputusan dari kebijakan yang belum saya tentukan dan memengaruhi hasil, tanyakan terlebih dahulu, dan tampilkan asumsi yang ditentukan secara acak dalam daftar terpisah.\n```\n\nKalimat terakhir adalah perangkat inti yang mengubah AI dari sekadar pembuat kode menjadi mitra peninjau persyaratan. Namun, jangan berhenti hanya dengan menerima pertanyaan; jawaban yang telah ditetapkan harus tercermin dalam dokumen kebijakan dan kondisi pengujian.\n\n## Desain implementasi: menetapkan kebijakan ke data dan API\n\n### Contoh model data\n\n```text\nproducts\n- product_id\n- sales_status\n- stock_status\n- visibility_status\n- compliance_status\n- brand_id\n- category_id\n- searchable_name\n- search_tags\n- price\n- inventory_quantity\n- ranking_feature_version\n- updated_at\n```\n\nJangan memasukkan beberapa makna ke dalam satu bidang. Misalnya, jika hanya ada `status = 1`, tidak jelas apakah itu berarti dapat dijual, dapat dipublikasikan, stok tersedia, atau lolos regulasi. Transisi status juga dikelola dalam tabel untuk mendefinisikan pemeriksaan dan event yang diperlukan saat berpindah dari draf ke sedang dijual, dan dari sedang dijual ke berakhir.\n\n### Informasi yang perlu disertakan dalam respons API\n\n- Kata pencarian yang dinormalisasi\n- Pengurutan dan filter yang diterapkan\n- Kumpulan hasil dan kursor berikutnya\n- Jumlah hasil atau perkiraan jumlah hasil\n- Badge stok habis·status penjualan\n- Apakah iklan dan teks penandaan iklan\n- Apakah ada koreksi typo·perluasan cakupan pencarian\n- Versi kebijakan pencarian dan ID permintaan untuk pelacakan\n\nSkor mentah sebagai informasi debugging internal dan bobot yang sensitif secara bisnis tidak perlu diekspos apa adanya ke API pelanggan. Sebaliknya, operator harus dapat mereproduksi jalur perhitungan peringkat dengan ID permintaan.\n\n### Indeks dirancang sesuai pola kueri aktual\n\nSecara umum, untuk kolom yang digunakan dalam filter status dan pengurutan, pertimbangkan indeks keluarga B-tree; untuk dokumen full-text search, pertimbangkan keluarga inverted index. Jika menggunakan PostgreSQL, `tsvector` dan indeks GIN dapat digunakan, dan jika pencarian string mirip diperlukan, `pg_trgm` dapat digunakan. Prinsipnya sama meskipun menggunakan mesin pencari eksternal.\n\n```sql\nCREATE INDEX idx_products_visibility\nON products (visibility_status, sales_status, compliance_status);\n\nCREATE INDEX idx_products_search_document\nON products USING GIN (search_document);\n```\n\nSemakin banyak indeks dibuat, biaya tulis dan ruang penyimpanan juga meningkat. Jangan menentukan hanya berdasarkan perkiraan; periksa `EXPLAIN ANALYZE`, slow query log, dan load test berdasarkan kueri nyata serta distribusi data. Ketika jumlah produk meningkat, lihat p95·p99 latency, tingkat timeout, dan kebaruan pengindeksan bersama-sama, bukan hanya waktu respons rata-rata.\n\n### Pengaman tambahan saat memasang AI generatif\n\n- Keberadaan produk, harga, stok, dan tanggal pengiriman hanya menggunakan hasil API katalog\n- Perluasan kata pencarian yang dibuat model dicatat bersama teks asli dan perluasan berlebihan dibatasi\n- Pencarian SKU·nama model yang tepat didahulukan daripada pencarian semantik\n- Filter penghentian penjualan·recall diterapkan sama pada kandidat pencarian AI\n- Melacak ID produk dan bidang dasar yang ditampilkan dalam jawaban\n- Jika model gagal, fallback ke pencarian teks umum\n- Memisahkan agar frasa bersifat prompt injection dalam deskripsi produk atau ulasan tidak dijalankan sebagai instruksi sistem\n\n## Acceptance test sebelum peluncuran\n\n| Skenario | Hasil yang diharapkan |\n|---|---|\n| Ada produk stok habis yang didaftarkan kemarin bersama produk stok tersedia yang terus terjual | Produk stok habis tidak mendominasi bagian atas default |\n| Mencari produk yang penjualannya telah berakhir | Tidak ada di daftar, dan pada URL langsung ditampilkan informasi berakhir serta status tidak dapat dibeli |\n| Produk iklan tampil di slot peringkat 1 | Pada kartu, status sebagai iklan dapat segera diidentifikasi |\n| 0 hasil setelah filter diterapkan | Menampilkan saran penghapusan filter dan apakah kandidat awal ada |\n| Pencarian “sepatu lari”, “sepatu jogging” | Kelompok produk terkait tampil konsisten sesuai kebijakan sinonim |\n| Membuka detail lalu kembali | Kata pencarian, filter, pengurutan, daftar, dan posisi scroll dipulihkan |\n| Ada beberapa produk dengan skor sama | Meski berpindah halaman berulang, urutan tetap tanpa duplikasi·kehilangan |\n| Stok masih tersisa di indeks pencarian | Diblokir dengan stok terbaru pada tahap keranjang·pembayaran |\n| Kata pencarian mengandung email·nomor telepon | Di-masking atau dibuang sebelum penyimpanan log |\n| Pencarian serentak dalam jumlah besar | Memenuhi standar p95 latency dan tingkat error yang didefinisikan |\n| Dashboard kata pencarian administrator | Teks asli berfrekuensi rendah dan pola sensitif tidak terekspos apa adanya |\n| Perubahan bobot ranking | Versi kebijakan, pemberi persetujuan, waktu penerapan, serta metrik sebelum-sesudah dicatat |\n\n## Hal yang harus diulang pada tahap operasional\n\nPencarian bukan fitur yang selesai setelah sekali dikembangkan. Karena komposisi produk, musim, promosi, dan ekspresi pelanggan berubah, siklus berikut harus dijadikan proses operasional.\n\n1. Meninjau kata pencarian tanpa hasil dan kata pencarian yang melonjak setiap minggu.\n2. Memperbarui sinonim dan pemetaan kategori melalui prosedur persetujuan.\n3. Melihat rasio paparan stok habis, click-through rate, tingkat konversi, dan tingkat koreksi kata pencarian bersama-sama.\n4. Perubahan bobot diperluas setelah evaluasi offline dan A/B test terbatas.\n5. Mengaudit secara terpisah proporsi paparan iklan·produk sendiri·hasil organik.\n6. Memeriksa secara berkala periode penyimpanan log pencarian, hak akses, dan kegagalan masking.\n7. Meninjau ulang tingkat penggunaan indeks dan kueri lambat dengan trafik nyata.\n\n## Kesimpulan\n\nAI dapat dengan cepat membuat API dan layar pencarian, tetapi tidak dapat menentukan produk mana yang berhak berdiri di depan pelanggan. Pencarian toko online yang praktis selesai ketika **nilai default pengurutan, status produk, eksplorasi daftar, cakupan pencarian dan penanganan tanpa hasil, serta log pencarian** terlebih dahulu ditetapkan sebagai kebijakan, lalu kebijakan itu tercermin secara konsisten dalam model data, API, indeks, pengujian, dan metrik administrator.\n\nCoding dapat diotomatisasi, tetapi prinsip penataan dan tanggung jawab tidak muncul otomatis. Prompt AI terbaik bukanlah istilah pengembangan yang panjang dan sulit, melainkan dokumen yang membedakan dengan jelas kebijakan yang telah diputuskan operator dan pertanyaan yang belum diputuskan.","content_html":"\u003cp\u003eAI dapat dengan cepat membuat API daftar produk, kotak pencarian, dan tombol pengurutan. Namun, \u003cstrong\u003eproduk mana yang ditampilkan, produk mana yang disembunyikan, dan apa yang disebut sebagai ‘rekomendasi’\u003c/strong\u003e bukanlah kode, melainkan kebijakan operasional. Pencarian di toko online bukan sekadar fungsi kueri, melainkan sistem pengambilan keputusan yang menggabungkan penataan etalase, ruang iklan, penanganan stok, pengalaman pelanggan, dan pengumpulan data di satu tempat.\u003c/p\u003e\n\u003cp\u003eJika hanya memberi instruksi “buatkan fitur pencarian produk” tanpa memberikan kebijakan, AI dapat secara acak mengisi contoh yang familier seperti urutan terbaru berdasarkan pendaftaran, kecocokan sebagian nama produk, dan paginasi sederhana. Kodenya mungkin berjalan, tetapi bisa tidak sesuai dengan operasional toko. Masalah yang umum terjadi adalah produk terbaru tetap tampil di baris pertama meski stoknya habis, produk yang penjualannya telah berakhir tetap bisa dimasukkan ke keranjang, dan pelanggan yang mencari “apel” tidak menemukan “청송 부사”.\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#peringkat-pencarian-bukan-fungsi-teknis-melainkan-kebijakan-operasional\" class=\"anchor\" id=\"peringkat-pencarian-bukan-fungsi-teknis-melainkan-kebijakan-operasional\"\u003e\u003c/a\u003ePeringkat pencarian bukan fungsi teknis, melainkan kebijakan operasional\u003c/h2\u003e\n\u003cp\u003eUrutan penataan produk dapat dirancang oleh pelaku usaha. Namun, jika makna yang disampaikan layar kepada konsumen tidak selaras dengan cara perhitungan peringkat sebenarnya, atau jika paparan yang memiliki kepentingan ekonomi dibuat tampak seperti rekomendasi umum, risiko hukum dan kepercayaan akan meningkat.\u003c/p\u003e\n\u003cp\u003eKomisi Perdagangan yang Adil pada Juni 2024 mempermasalahkan pengoperasian peringkat pencarian oleh Coupang dan CPLB serta penulisan ulasan pembelian oleh karyawan, lalu mengumumkan denda sementara sebesar 1,400억 won. Pada Agustus tahun yang sama, berdasarkan surat keputusan, dendanya ditetapkan sebesar 1,628억 won. Pihak pelaku usaha menolak keputusan tersebut, dan berdasarkan pemberitaan April 2026, gugatan pembatalan terkait masih berlangsung. Pelajaran praktis dari kasus ini bukanlah proposisi sederhana bahwa “mengutamakan produk sendiri selalu ilegal”. Yang perlu ditinjau sejak tahap desain adalah \u003cstrong\u003eapa arti label rekomendasi, apakah iklan dan kepentingan internal perusahaan telah ditampilkan dengan jelas, dan apakah perubahan peringkat dapat dijelaskan dengan data dan dokumen\u003c/strong\u003e.\u003c/p\u003e\n\u003cp\u003eKarena penerapan hukum dapat berbeda tergantung struktur layanan dan cara penandaan, sebelum peluncuran aktual akan lebih aman untuk memeriksa secara terpisah peraturan terkait dan kasus penegakan terbaru.\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#titik-kegagalan-versi-instan-yang-dibuat-oleh-prompt-satu-baris\" class=\"anchor\" id=\"titik-kegagalan-versi-instan-yang-dibuat-oleh-prompt-satu-baris\"\u003e\u003c/a\u003eTitik kegagalan ‘versi instan’ yang dibuat oleh prompt satu baris\u003c/h2\u003e\n\u003cdiv class=\"overflow-x-auto\"\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eKebijakan yang belum ditentukan\u003c/th\u003e\n\u003cth\u003eImplementasi yang dapat diisi AI secara acak\u003c/th\u003e\n\u003cth\u003eRisiko operasional nyata\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Kebijakan yang belum ditentukan\"\u003ePengurutan default\u003c/td\u003e\n\u003ctd data-label=\"Implementasi yang dapat diisi AI secara acak\"\u003e\u003ccode\u003ecreated_at DESC\u003c/code\u003e\u003c/td\u003e\n\u003ctd data-label=\"Risiko operasional nyata\"\u003eProduk yang baru didaftarkan tetapi stok habis atau belum diperiksa tampil di bagian atas\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Kebijakan yang belum ditentukan\"\u003eStatus penjualan\u003c/td\u003e\n\u003ctd data-label=\"Implementasi yang dapat diisi AI secara acak\"\u003eHanya memeriksa apakah dihapus\u003c/td\u003e\n\u003ctd data-label=\"Risiko operasional nyata\"\u003eProduk yang dihentikan penjualannya atau ditarik kembali muncul di pencarian atau dapat dipesan\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Kebijakan yang belum ditentukan\"\u003ePemuatan daftar\u003c/td\u003e\n\u003ctd data-label=\"Implementasi yang dapat diisi AI secara acak\"\u003eKueri seluruh data atau infinite scroll sederhana\u003c/td\u003e\n\u003ctd data-label=\"Risiko operasional nyata\"\u003eRespons lambat, posisi hilang saat kembali, sulit membandingkan\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Kebijakan yang belum ditentukan\"\u003eCakupan pencarian\u003c/td\u003e\n\u003ctd data-label=\"Implementasi yang dapat diisi AI secara acak\"\u003eHanya kecocokan sebagian nama produk\u003c/td\u003e\n\u003ctd data-label=\"Risiko operasional nyata\"\u003ePencarian merek, varietas, nama model, sinonim gagal\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Kebijakan yang belum ditentukan\"\u003eTidak ada hasil\u003c/td\u003e\n\u003ctd data-label=\"Implementasi yang dapat diisi AI secara acak\"\u003eHanya mengembalikan array kosong\u003c/td\u003e\n\u003ctd data-label=\"Risiko operasional nyata\"\u003ePelanggan dengan niat beli tinggi langsung pergi\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Kebijakan yang belum ditentukan\"\u003eLog\u003c/td\u003e\n\u003ctd data-label=\"Implementasi yang dapat diisi AI secara acak\"\u003eMenyimpan kata pencarian bersama anggota dan IP apa adanya\u003c/td\u003e\n\u003ctd data-label=\"Risiko operasional nyata\"\u003eRisiko pengumpulan di luar tujuan, penyimpanan berlebihan, paparan kata pencarian sensitif\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/div\u003e\n\u003cp\u003eAI dapat mengisi kekosongan persyaratan, tetapi tidak dapat menilai apakah pilihan tersebut sesuai dengan strategi toko dan tanggung jawab hukum. Karena itu, sebelum implementasi, setidaknya lima kebijakan berikut harus ditetapkan dalam dokumen.\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#1-nilai-default-pengurutan-apa-yang-akan-disebut-urutan-rekomendasi\" class=\"anchor\" id=\"1-nilai-default-pengurutan-apa-yang-akan-disebut-urutan-rekomendasi\"\u003e\u003c/a\u003e1. Nilai default pengurutan: apa yang akan disebut ‘urutan rekomendasi’\u003c/h2\u003e\n\u003cp\u003ePengurutan default adalah etalase pertama yang dilihat pelanggan. Karena banyak pengguna tidak mengubah opsi pengurutan, nilai default secara langsung memengaruhi penjualan, penghabisan stok, pengembangan produk baru, dan kepuasan pelanggan.\u003c/p\u003e\n\u003ch3\u003e\n\u003ca href=\"#pisahkan-terlebih-dahulu-tahap-perhitungan-peringkat\" class=\"anchor\" id=\"pisahkan-terlebih-dahulu-tahap-perhitungan-peringkat\"\u003e\u003c/a\u003ePisahkan terlebih dahulu tahap perhitungan peringkat\u003c/h3\u003e\n\u003cp\u003eLebih aman membagi hasil pencarian ke dalam urutan berikut daripada mencampur dan menghitung semuanya sekaligus.\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cstrong\u003ePenentuan kelayakan tampil:\u003c/strong\u003e Hanya produk yang dapat dijual, dapat dipublikasikan, dan bukan target pemblokiran hukum maupun operasional yang dimasukkan sebagai kandidat.\u003c/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePerhitungan relevansi pencarian:\u003c/strong\u003e Menghitung seberapa cocok nama produk, merek, kategori, atribut, dan sinonim dengan kata pencarian.\u003c/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePerhitungan peringkat organik:\u003c/strong\u003e Menggabungkan sinyal seperti kecepatan penjualan, tingkat konversi, reliabilitas rating, dan kualitas pengiriman.\u003c/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePenerapan aturan bisnis:\u003c/strong\u003e Menerapkan penalti stok habis, kesempatan eksplorasi produk baru, pembatasan keragaman, dan sebagainya.\u003c/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePenggabungan slot iklan:\u003c/strong\u003e Produk iklan disisipkan terpisah dari peringkat organik dan ditandai dengan jelas.\u003c/li\u003e\n\u003cli\u003e\n\u003cstrong\u003ePenanganan seri yang stabil:\u003c/strong\u003e Jika skornya sama, urutan ditentukan dengan kunci tetap seperti \u003ccode\u003eproduct_id\u003c/code\u003e.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3\u003e\n\u003ca href=\"#skor-rekomendasi-harus-berupa-rumus-yang-terdokumentasi\" class=\"anchor\" id=\"skor-rekomendasi-harus-berupa-rumus-yang-terdokumentasi\"\u003e\u003c/a\u003eSkor rekomendasi harus berupa rumus yang terdokumentasi\u003c/h3\u003e\n\u003cp\u003eBerikut hanyalah contoh untuk menjelaskan struktur, bukan jawaban yang cocok untuk semua toko online.\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\u003cspan\u003eorganic_score =\n\u003c/span\u003e\u003cspan\u003e  0.45 × query_relevance\n\u003c/span\u003e\u003cspan\u003e+ 0.20 × conversion_rate_28d\n\u003c/span\u003e\u003cspan\u003e+ 0.15 × sales_velocity_14d\n\u003c/span\u003e\u003cspan\u003e+ 0.10 × rating_confidence\n\u003c/span\u003e\u003cspan\u003e+ 0.10 × fulfillment_quality\n\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSetiap sinyal harus dinormalisasi ke rentang yang sama, serta periode dan objek agregasinya harus dinyatakan. Rata-rata rating sederhana dapat membuat produk dengan 1 ulasan bernilai 5 lebih tinggi daripada produk dengan 1,000 ulasan bernilai 4.8, sehingga lebih baik menggunakan skor koreksi yang juga mencerminkan jumlah ulasan. Jika hanya menggunakan volume penjualan, produk yang telah lama terjual dapat memperoleh keuntungan permanen, sehingga kecepatan penjualan dan tingkat konversi dalam periode terbaru perlu dilihat bersama.\u003c/p\u003e\n\u003ch3\u003e\n\u003ca href=\"#rincian-yang-wajib-ditentukan\" class=\"anchor\" id=\"rincian-yang-wajib-ditentukan\"\u003e\u003c/a\u003eRincian yang wajib ditentukan\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eApakah tujuan urutan rekomendasi adalah kecocokan pencarian, kemungkinan pembelian, kepuasan pelanggan, atau efisiensi stok\u003c/li\u003e\n\u003cli\u003ePeriode agregasi dan siklus pembaruan setiap sinyal\u003c/li\u003e\n\u003cli\u003eSinyal penalti seperti tingkat pembatalan, tingkat retur, keterlambatan pengiriman, dan kemungkinan stok habis\u003c/li\u003e\n\u003cli\u003eKesempatan eksplorasi dan poin tambahan maksimum yang akan diberikan kepada produk baru dengan sedikit ulasan\u003c/li\u003e\n\u003cli\u003eAturan keragaman agar merek yang sama atau penjual yang sama tidak terlalu mendominasi bagian atas\u003c/li\u003e\n\u003cli\u003eKunci pengurutan tetap yang akan digunakan saat skor seri\u003c/li\u003e\n\u003cli\u003eCatatan audit yang menyimpan versi rumus peringkat, alasan perubahan, waktu penerapan, dan pemberi persetujuan\u003c/li\u003e\n\u003cli\u003eIndikator keberhasilan dan kondisi penghentian A/B test\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\n\u003ca href=\"#jangan-mencampur-iklan-dan-rekomendasi-organik\" class=\"anchor\" id=\"jangan-mencampur-iklan-dan-rekomendasi-organik\"\u003e\u003c/a\u003eJangan mencampur iklan dan rekomendasi organik\u003c/h3\u003e\n\u003cp\u003eKepentingan ekonomi seperti biaya iklan, apakah produk milik sendiri, dan margin tinggi dapat saja dipertimbangkan, tetapi berisiko jika hal itu membuat konsumen salah mengira sebagai “urutan populer” atau “urutan rekomendasi” umum. Komisi Perdagangan yang Adil pada 2025 juga mempermasalahkan struktur dan penandaan terkait dalam kasus platform penjualan produk mahal, di mana produk penjual yang membeli opsi berbayar tampil lebih dulu dalam pengurutan default. Produk iklan pada dasarnya harus dikelola sebagai kumpulan kandidat dan slot terpisah, serta diberi label “iklan” atau “sponsor” yang dapat diidentifikasi pada tingkat kartu. Layar administrator harus menampilkan aturan penayangan iklan dan rumus peringkat organik secara terpisah.\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#2-produk-berstatus-tidak-normal-stok-habis-dan-penghentian-penjualan-adalah-status-yang-berbeda\" class=\"anchor\" id=\"2-produk-berstatus-tidak-normal-stok-habis-dan-penghentian-penjualan-adalah-status-yang-berbeda\"\u003e\u003c/a\u003e2. Produk berstatus tidak normal: stok habis dan penghentian penjualan adalah status yang berbeda\u003c/h2\u003e\n\u003cp\u003eJika semua pengecualian ditangani hanya dengan \u003ccode\u003eis_sold_out\u003c/code\u003e, pencarian, detail, keranjang, dan validasi pesanan akan saling tidak selaras. Minimal, \u003cstrong\u003estatus penjualan, status stok, status publikasi, dan status regulasi\u003c/strong\u003e harus dipisahkan.\u003c/p\u003e\n\u003ch3\u003e\n\u003ca href=\"#model-status-yang-direkomendasikan\" class=\"anchor\" id=\"model-status-yang-direkomendasikan\"\u003e\u003c/a\u003eModel status yang direkomendasikan\u003c/h3\u003e\n\u003cdiv class=\"overflow-x-auto\"\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eStatus\u003c/th\u003e\n\u003cth\u003ePencarian·daftar\u003c/th\u003e\n\u003cth\u003eDetail URL langsung\u003c/th\u003e\n\u003cth\u003eKeranjang·pesanan\u003c/th\u003e\n\u003cth\u003ePenanganan yang direkomendasikan\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Status\"\u003eSedang dijual·stok tersedia\u003c/td\u003e\n\u003ctd data-label=\"Pencarian·daftar\"\u003eTampil normal\u003c/td\u003e\n\u003ctd data-label=\"Detail URL langsung\"\u003eDitampilkan normal\u003c/td\u003e\n\u003ctd data-label=\"Keranjang·pesanan\"\u003eBisa\u003c/td\u003e\n\u003ctd data-label=\"Penanganan yang direkomendasikan\"\u003eKandidat dasar\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Status\"\u003eSedang dijual·stok habis sementara\u003c/td\u003e\n\u003ctd data-label=\"Pencarian·daftar\"\u003eDapat ditampilkan tetapi diberi penalti atau diturunkan\u003c/td\u003e\n\u003ctd data-label=\"Detail URL langsung\"\u003eMenampilkan stok habis·notifikasi restock\u003c/td\u003e\n\u003ctd data-label=\"Keranjang·pesanan\"\u003eTidak bisa\u003c/td\u003e\n\u003ctd data-label=\"Penanganan yang direkomendasikan\"\u003eMenjaga kemungkinan restock\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Status\"\u003ePenjualan dihentikan sementara\u003c/td\u003e\n\u003ctd data-label=\"Pencarian·daftar\"\u003ePada dasarnya disembunyikan\u003c/td\u003e\n\u003ctd data-label=\"Detail URL langsung\"\u003eInformasi penghentian sementara\u003c/td\u003e\n\u003ctd data-label=\"Keranjang·pesanan\"\u003eTidak bisa\u003c/td\u003e\n\u003ctd data-label=\"Penanganan yang direkomendasikan\"\u003eDipulihkan saat dibuka kembali\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Status\"\u003ePenjualan berakhir\u003c/td\u003e\n\u003ctd data-label=\"Pencarian·daftar\"\u003eDisembunyikan dari pencarian·kategori\u003c/td\u003e\n\u003ctd data-label=\"Detail URL langsung\"\u003eInformasi berakhir dan produk pengganti\u003c/td\u003e\n\u003ctd data-label=\"Keranjang·pesanan\"\u003eTidak bisa\u003c/td\u003e\n\u003ctd data-label=\"Penanganan yang direkomendasikan\"\u003eMenjaga tautan lama dan konteks CS\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Status\"\u003eDraf·dalam pemeriksaan\u003c/td\u003e\n\u003ctd data-label=\"Pencarian·daftar\"\u003eDisembunyikan sepenuhnya\u003c/td\u003e\n\u003ctd data-label=\"Detail URL langsung\"\u003eHanya admin berwenang\u003c/td\u003e\n\u003ctd data-label=\"Keranjang·pesanan\"\u003eTidak bisa\u003c/td\u003e\n\u003ctd data-label=\"Penanganan yang direkomendasikan\"\u003ePemeriksaan sebelum publikasi\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Status\"\u003eRecall·pemblokiran hukum\u003c/td\u003e\n\u003ctd data-label=\"Pencarian·daftar\"\u003eDisembunyikan sepenuhnya\u003c/td\u003e\n\u003ctd data-label=\"Detail URL langsung\"\u003ePengumuman keselamatan jika perlu\u003c/td\u003e\n\u003ctd data-label=\"Keranjang·pesanan\"\u003eTidak bisa\u003c/td\u003e\n\u003ctd data-label=\"Penanganan yang direkomendasikan\"\u003eInformasi keselamatan didahulukan daripada rekomendasi pengganti\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/div\u003e\n\u003cp\u003eProduk stok habis memiliki nilai untuk notifikasi restock dan pemahaman permintaan pencarian, sehingga tidak selalu perlu dihapus. Sebaliknya, produk yang penjualannya telah berakhir sebaiknya dikecualikan dari daftar umum, tetapi pelanggan yang masuk melalui bookmark lama atau tautan eksternal dapat diberi penjelasan “penjualan telah berakhir” dan produk serupa. Apakah URL detail dipertahankan atau diakhiri dengan \u003ccode\u003e410 Gone\u003c/code\u003e ditentukan berdasarkan trafik pencarian, kebutuhan pemberitahuan hukum, dan nilai konten pengganti.\u003c/p\u003e\n\u003ch3\u003e\n\u003ca href=\"#indeks-pencarian-bukan-otoritas-final-untuk-ketersediaan-pemesanan\" class=\"anchor\" id=\"indeks-pencarian-bukan-otoritas-final-untuk-ketersediaan-pemesanan\"\u003e\u003c/a\u003eIndeks pencarian bukan otoritas final untuk ketersediaan pemesanan\u003c/h3\u003e\n\u003cp\u003eIndeks pencarian dapat mengalami keterlambatan sinkronisasi. Karena itu, meskipun hasil pencarian menunjukkan stok tersedia, tahap berikutnya harus memvalidasi ulang.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eValidasi ulang status penjualan dan stok saat memasukkan ke keranjang\u003c/li\u003e\n\u003cli\u003eValidasi ulang harga, diskon, dan stok saat masuk ke formulir pesanan\u003c/li\u003e\n\u003cli\u003eReservasi stok atau pengurangan atomik tepat sebelum pembayaran\u003c/li\u003e\n\u003cli\u003ePenghapusan darurat dari indeks pencarian saat terjadi event penghentian penjualan\u003c/li\u003e\n\u003cli\u003ePemantauan waktu keterlambatan pengindeksan dan jumlah kegagalan\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eTanpa aturan ini, insiden CS akan berulang: layar pencarian tampak normal, tetapi gagal hanya pada tahap pembayaran.\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#3-cara-menampilkan-daftar-apakah-memakai-paginasi-lihat-lainnya-atau-infinite-scroll\" class=\"anchor\" id=\"3-cara-menampilkan-daftar-apakah-memakai-paginasi-lihat-lainnya-atau-infinite-scroll\"\u003e\u003c/a\u003e3. Cara menampilkan daftar: apakah memakai paginasi, lihat lainnya, atau infinite scroll\u003c/h2\u003e\n\u003cp\u003eJika produk berjumlah ribuan atau puluhan ribu, semuanya tidak boleh dikirim sekaligus. Namun, menyatakan bahwa “toko online selalu harus memakai halaman bernomor” juga tidak tepat. Dalam pencarian yang berfokus pada perbandingan, pemulihan posisi dan status penting, sedangkan dalam eksplorasi kategori, “lihat lainnya” bisa lebih nyaman.\u003c/p\u003e\n\u003cdiv class=\"overflow-x-auto\"\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eCara\u003c/th\u003e\n\u003cth\u003eKekuatan\u003c/th\u003e\n\u003cth\u003eKelemahan\u003c/th\u003e\n\u003cth\u003eSituasi yang cocok\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Cara\"\u003ePaginasi bernomor\u003c/td\u003e\n\u003ctd data-label=\"Kekuatan\"\u003eMudah memahami posisi saat ini dan skala hasil, dapat mengunjungi ulang halaman tertentu\u003c/td\u003e\n\u003ctd data-label=\"Kelemahan\"\u003ePerpindahan halaman terputus dan perbandingan antarhalaman merepotkan\u003c/td\u003e\n\u003ctd data-label=\"Situasi yang cocok\"\u003ePencarian desktop, eksplorasi mendalam, hasil yang dapat dibagikan\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Cara\"\u003eLihat lainnya\u003c/td\u003e\n\u003ctd data-label=\"Kekuatan\"\u003ePengguna mengontrol pemuatan sambil mempertahankan produk yang sudah ada\u003c/td\u003e\n\u003ctd data-label=\"Kelemahan\"\u003eJika hasil sangat banyak, DOM dan memori membesar\u003c/td\u003e\n\u003ctd data-label=\"Situasi yang cocok\"\u003eEksplorasi mobile·kategori, hasil skala menengah\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Cara\"\u003eInfinite scroll\u003c/td\u003e\n\u003ctd data-label=\"Kekuatan\"\u003eEksplorasi berkelanjutan terasa natural\u003c/td\u003e\n\u003ctd data-label=\"Kelemahan\"\u003ePosisi, akhir, dan skala keseluruhan tidak jelas, pemulihan saat kembali sulit\u003c/td\u003e\n\u003ctd data-label=\"Situasi yang cocok\"\u003eLayar feed yang lebih mementingkan penemuan daripada perbandingan\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/div\u003e\n\u003cp\u003eSecara praktis, \u003cstrong\u003euntuk hasil pencarian dapat diprioritaskan paginasi atau “lihat lainnya + URL halaman yang dapat dipulihkan”\u003c/strong\u003e, sedangkan untuk feed rekomendasi bertipe penemuan dapat dipertimbangkan infinite scroll lebih dulu. Sekalipun menggunakan infinite scroll murni, syarat berikut harus dipenuhi.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMenyimpan kata pencarian, pengurutan, filter, halaman, atau kursor di URL atau status yang dapat dipulihkan\u003c/li\u003e\n\u003cli\u003eMemulihkan produk sebelumnya dan posisi scroll saat kembali dari halaman detail\u003c/li\u003e\n\u003cli\u003eMendukung navigasi keyboard, screen reader, dan perpindahan fokus\u003c/li\u003e\n\u003cli\u003eMenyediakan alternatif yang dapat diakses untuk footer dan tautan navigasi utama\u003c/li\u003e\n\u003cli\u003eMenyediakan UI kegagalan pemuatan dan coba lagi\u003c/li\u003e\n\u003cli\u003eMenyediakan URL unik atau struktur tautan yang dapat diakses untuk setiap kumpulan hasil\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\n\u003ca href=\"#paginasi-offset-dan-kursor\" class=\"anchor\" id=\"paginasi-offset-dan-kursor\"\u003e\u003c/a\u003ePaginasi offset dan kursor\u003c/h3\u003e\n\u003cp\u003eOffset dalam seperti \u003ccode\u003eOFFSET 5000 LIMIT 40\u003c/code\u003e akan makin lambat dan mudah menimbulkan duplikasi atau kehilangan data ketika data banyak dan sering diperbarui. Untuk halaman dangkal dan layar administrator, offset sederhana, tetapi untuk pencarian skala besar, metode kursor yang meneruskan kunci pengurutan dari hasil terakhir lebih stabil.\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\u003cspan\u003eORDER BY score DESC, product_id DESC\n\u003c/span\u003e\u003cspan\u003ecursor = last_score + last_product_id\n\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eJika hanya skor yang digunakan sebagai kursor, produk dengan skor seri dapat terlewat, sehingga kunci unik harus digunakan bersama. Jika skor rekomendasi sering berubah secara real-time, kebijakan untuk mengunci versi snapshot atau waktu acuan ranking selama sesi pencarian juga diperlukan.\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#4-cakupan-pencarian-dan-layar-tanpa-hasil-menghubungkan-ekspresi-pelanggan-dengan-data-produk\" class=\"anchor\" id=\"4-cakupan-pencarian-dan-layar-tanpa-hasil-menghubungkan-ekspresi-pelanggan-dengan-data-produk\"\u003e\u003c/a\u003e4. Cakupan pencarian dan layar tanpa hasil: menghubungkan ekspresi pelanggan dengan data produk\u003c/h2\u003e\n\u003cp\u003ePelanggan tidak mengetahui nama produk persis yang didaftarkan operator. Agar pelanggan yang mencari “apel” dapat melihat “청송 부사”, “홍로”, dan “apel rumahan”, data produk dan kamus pencarian harus dirancang bersama.\u003c/p\u003e\n\u003ch3\u003e\n\u003ca href=\"#prioritas-bidang-pencarian\" class=\"anchor\" id=\"prioritas-bidang-pencarian\"\u003e\u003c/a\u003ePrioritas bidang pencarian\u003c/h3\u003e\n\u003cdiv class=\"overflow-x-auto\"\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eBidang\u003c/th\u003e\n\u003cth\u003ePrioritas yang direkomendasikan\u003c/th\u003e\n\u003cth\u003eContoh\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Bidang\"\u003eSKU·nama model·barcode\u003c/td\u003e\n\u003ctd data-label=\"Prioritas yang direkomendasikan\"\u003eSangat tinggi\u003c/td\u003e\n\u003ctd data-label=\"Contoh\"\u003e\n\u003ccode\u003eSM-S928N\u003c/code\u003e, \u003ccode\u003e880...\u003c/code\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Bidang\"\u003eNama produk\u003c/td\u003e\n\u003ctd data-label=\"Prioritas yang direkomendasikan\"\u003eTinggi\u003c/td\u003e\n\u003ctd data-label=\"Contoh\"\u003eApel Cheongsong Busa 3kg\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Bidang\"\u003eMerek·produsen\u003c/td\u003e\n\u003ctd data-label=\"Prioritas yang direkomendasikan\"\u003eTinggi\u003c/td\u003e\n\u003ctd data-label=\"Contoh\"\u003eSamsung, Apple\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Bidang\"\u003eKategori·jenis produk\u003c/td\u003e\n\u003ctd data-label=\"Prioritas yang direkomendasikan\"\u003eMenengah ke atas\u003c/td\u003e\n\u003ctd data-label=\"Contoh\"\u003eBuah, sepatu lari\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Bidang\"\u003eAtribut utama\u003c/td\u003e\n\u003ctd data-label=\"Prioritas yang direkomendasikan\"\u003eMenengah ke atas\u003c/td\u003e\n\u003ctd data-label=\"Contoh\"\u003eKapasitas, warna, spesifikasi, model kompatibel\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Bidang\"\u003eSinonim·alias·varietas·tag\u003c/td\u003e\n\u003ctd data-label=\"Prioritas yang direkomendasikan\"\u003eMenengah ke atas\u003c/td\u003e\n\u003ctd data-label=\"Contoh\"\u003esepatu jogging↔sepatu lari, apel↔busa\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Bidang\"\u003eDeskripsi detail\u003c/td\u003e\n\u003ctd data-label=\"Prioritas yang direkomendasikan\"\u003eRendah\u003c/td\u003e\n\u003ctd data-label=\"Contoh\"\u003eBobot rendah untuk mengurangi noise dari deskripsi panjang\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Bidang\"\u003eIsi ulasan\u003c/td\u003e\n\u003ctd data-label=\"Prioritas yang direkomendasikan\"\u003eOpsional\u003c/td\u003e\n\u003ctd data-label=\"Contoh\"\u003eDigunakan terbatas setelah meninjau kualitas·spam·informasi pribadi\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/div\u003e\n\u003cp\u003eDalam pencarian bahasa Korea, perbedaan spasi, pemisahan jamo, penulisan merek dalam Inggris·Hangul, angka dan satuan, serta kata majemuk juga harus dipertimbangkan. Misalnya, buat aturan normalisasi agar “에어팟프로2”, “에어팟 프로 2”, dan “AirPods Pro 2” terhubung ke kelompok produk yang sama.\u003c/p\u003e\n\u003ch3\u003e\n\u003ca href=\"#pipeline-pencarian-yang-direkomendasikan\" class=\"anchor\" id=\"pipeline-pencarian-yang-direkomendasikan\"\u003e\u003c/a\u003ePipeline pencarian yang direkomendasikan\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003eMemvalidasi panjang input dan karakter yang diizinkan.\u003c/li\u003e\n\u003cli\u003eMenormalisasi huruf besar-kecil, spasi, karakter khusus, dan satuan.\u003c/li\u003e\n\u003cli\u003eMemeriksa kecocokan tepat dengan kode produk terlebih dahulu.\u003c/li\u003e\n\u003cli\u003eMenerapkan tokenisasi serta variasi bentuk dan ejaan.\u003c/li\u003e\n\u003cli\u003eMemperluas sinonim dan kamus kategori yang dikelola operator.\u003c/li\u003e\n\u003cli\u003eMenemukan kandidat dengan pencarian teks.\u003c/li\u003e\n\u003cli\u003eJika perlu, menggunakan pencarian semantik untuk pembuatan kandidat pendukung.\u003c/li\u003e\n\u003cli\u003eMemfilter status penjualan·publikasi·regulasi.\u003c/li\u003e\n\u003cli\u003eMenghitung skor organik dan menggabungkan iklan secara terpisah.\u003c/li\u003e\n\u003cli\u003eMengembalikan hasil dan informasi diagnosis.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eMeskipun menerapkan AI generatif atau pencarian vektor, kecocokan tepat seperti SKU, merek, dan nama model tidak boleh dilemahkan. Dalam pencarian belanja, pendekatan hibrida yang menggabungkan \u003cstrong\u003epencarian tepat + relevansi teks + pencarian semantik opsional\u003c/strong\u003e umumnya lebih aman. Agar AI tidak mengarang produk, harga, atau stok yang tidak ada di katalog, semua respons harus dihubungkan dengan ID produk nyata dan data saat ini.\u003c/p\u003e\n\u003ch3\u003e\n\u003ca href=\"#layar-tanpa-hasil-adalah-etalase-kedua\" class=\"anchor\" id=\"layar-tanpa-hasil-adalah-etalase-kedua\"\u003e\u003c/a\u003eLayar tanpa hasil adalah etalase kedua\u003c/h3\u003e\n\u003cp\u003eKetika tidak ada hasil pencarian, jangan hanya menampilkan layar kosong. Namun, produk populer yang tidak relevan juga tidak boleh dicampur seolah-olah merupakan hasil pencarian.\u003c/p\u003e\n\u003cp\u003eKomposisi yang direkomendasikan adalah sebagai berikut.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMenampilkan kata pencarian yang dimasukkan pengguna apa adanya dan menginformasikan dengan jelas bahwa tidak ada produk yang cocok\u003c/li\u003e\n\u003cli\u003eKandidat koreksi typo dan saran sinonim\u003c/li\u003e\n\u003cli\u003eJika menjadi 0 hasil karena filter, memberi tahu filter yang dapat dihapus\u003c/li\u003e\n\u003cli\u003eMenyajikan hasil dengan cakupan yang diperluas memakai label terpisah\u003c/li\u003e\n\u003cli\u003eMembedakan dan menampilkan kategori terkait, produk pengganti, dan produk populer keseluruhan\u003c/li\u003e\n\u003cli\u003ePermintaan restock·masuk produk atau koneksi ke pusat layanan pelanggan\u003c/li\u003e\n\u003cli\u003eMencatat event pencarian tanpa hasil ke analisis administrator\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e“Tidak ada hasil” dan “tidak ada hasil setelah filter diterapkan” adalah masalah berbeda. Jika sebelumnya ada kandidat tetapi menjadi 0 karena filter harga·warna, pelonggaran filter adalah yang paling berguna. Jika katalog memang tidak memiliki produk tersebut, hal itu harus dimanfaatkan sebagai data sourcing.\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#5-riwayat-pencarian-mengelola-data-riset-pasar-dan-informasi-pribadi-bersama-sama\" class=\"anchor\" id=\"5-riwayat-pencarian-mengelola-data-riset-pasar-dan-informasi-pribadi-bersama-sama\"\u003e\u003c/a\u003e5. Riwayat pencarian: mengelola data riset pasar dan informasi pribadi bersama-sama\u003c/h2\u003e\n\u003cp\u003eKata pencarian tanpa hasil menunjukkan permintaan yang dicari pelanggan tetapi tidak dapat dibeli. Kata pencarian populer membantu penataan dan perencanaan stok, dan alur klik·keranjang·pembelian setelah pencarian menjadi indikator inti untuk mengevaluasi kualitas pencarian.\u003c/p\u003e\n\u003cp\u003eNamun, tidak bisa disimpulkan bahwa “jika hanya menyimpan kata pencarian dan jumlahnya, itu selalu bukan informasi pribadi”. Kata pencarian itu sendiri dapat berisi nomor telepon, nomor pesanan, nama, serta informasi sensitif seperti kesehatan, agama, dan kehidupan seksual. Jika digabungkan dengan akun·IP·informasi perangkat, kemungkinan mengidentifikasi atau melacak individu meningkat.\u003c/p\u003e\n\u003ch3\u003e\n\u003ca href=\"#item-pengumpulan-yang-direkomendasikan\" class=\"anchor\" id=\"item-pengumpulan-yang-direkomendasikan\"\u003e\u003c/a\u003eItem pengumpulan yang direkomendasikan\u003c/h3\u003e\n\u003cdiv class=\"overflow-x-auto\"\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eKategori\u003c/th\u003e\n\u003cth\u003ePenanganan yang direkomendasikan\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Kategori\"\u003eKata pencarian yang dinormalisasi\u003c/td\u003e\n\u003ctd data-label=\"Penanganan yang direkomendasikan\"\u003eAgregasikan per hari·jam dan minimalkan periode penyimpanan teks asli\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Kategori\"\u003eJumlah hasil\u003c/td\u003e\n\u003ctd data-label=\"Penanganan yang direkomendasikan\"\u003eSimpan apakah 0 hasil dan nilai rentang\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Kategori\"\u003eFilter·pengurutan yang diterapkan\u003c/td\u003e\n\u003ctd data-label=\"Penanganan yang direkomendasikan\"\u003eSimpan hanya dalam cakupan yang diperlukan untuk analisis kualitas pencarian\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Kategori\"\u003eKlik·keranjang·pembelian\u003c/td\u003e\n\u003ctd data-label=\"Penanganan yang direkomendasikan\"\u003eJika memungkinkan, simpan sebagai metrik agregat pada tingkat kata pencarian\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Kategori\"\u003eKoneksi sesi\u003c/td\u003e\n\u003ctd data-label=\"Penanganan yang direkomendasikan\"\u003eGunakan pengenal acak berumur pendek hanya jika benar-benar diperlukan\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Kategori\"\u003eID anggota·IP·lokasi akurat\u003c/td\u003e\n\u003ctd data-label=\"Penanganan yang direkomendasikan\"\u003eKecualikan dari log analisis pencarian jika tidak ada tujuan dan dasar yang jelas\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Kategori\"\u003eInformasi pribadi dalam teks asli\u003c/td\u003e\n\u003ctd data-label=\"Penanganan yang direkomendasikan\"\u003eMasking atau buang pola email·nomor telepon·nomor pesanan\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/div\u003e\n\u003cp\u003eID anggota yang di-hash juga tidak otomatis menjadi informasi anonim. Jika masih dapat dihubungkan kembali dengan pengguna tertentu, itu harus diperlakukan sebagai informasi pseudonim atau informasi pribadi. Periode penyimpanan juga jangan ditentukan seragam; tetapkan masing-masing untuk teks asli dan data agregat berdasarkan tujuan, siklus analisis, dan risiko keamanan.\u003c/p\u003e\n\u003ch3\u003e\n\u003ca href=\"#metrik-yang-diperlukan-di-dashboard-administrator\" class=\"anchor\" id=\"metrik-yang-diperlukan-di-dashboard-administrator\"\u003e\u003c/a\u003eMetrik yang diperlukan di dashboard administrator\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eVolume pencarian dan jumlah kata pencarian unik\u003c/li\u003e\n\u003cli\u003eRasio tanpa hasil\u003c/li\u003e\n\u003cli\u003eClick-through rate hasil pencarian\u003c/li\u003e\n\u003cli\u003eRasio keranjang dan konversi pembelian setelah pencarian\u003c/li\u003e\n\u003cli\u003eRasio koreksi kata pencarian dan pelepasan filter\u003c/li\u003e\n\u003cli\u003eRasio paparan produk stok habis\u003c/li\u003e\n\u003cli\u003eKonsentrasi hasil teratas dan keragaman merek\u003c/li\u003e\n\u003cli\u003eMetrik yang memisahkan performa iklan dan hasil organik\u003c/li\u003e\n\u003cli\u003eKebaruan indeks pencarian dan jumlah kegagalan pengindeksan\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eKarena kata pencarian teks asli berfrekuensi rendah dapat mengandung informasi pribadi, metode menampilkan hanya item yang melewati standar agregasi minimum pada layar operator juga berguna.\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#prompt-praktis-cara-mengubah-kebijakan-menjadi-kode\" class=\"anchor\" id=\"prompt-praktis-cara-mengubah-kebijakan-menjadi-kode\"\u003e\u003c/a\u003ePrompt praktis: cara mengubah kebijakan menjadi kode\u003c/h2\u003e\n\u003cp\u003eLebih penting menulis aturan operasional dengan jelas daripada menggunakan banyak istilah pengembangan. Template berikut dapat diisi sesuai situasi layanan dan diberikan kepada AI.\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\u003cspan\u003eRancang dan implementasikan fitur pencarian produk untuk toko online kami.\n\u003c/span\u003e\u003cspan\u003e\n\u003c/span\u003e\u003cspan\u003e1. Kelayakan tampil\n\u003c/span\u003e\u003cspan\u003e- Hanya produk yang sedang dijual, berstatus publik, dan tidak memiliki pemblokiran regulasi yang dimasukkan sebagai kandidat pencarian.\n\u003c/span\u003e\u003cspan\u003e- Stok habis sementara tetap ditampilkan, tetapi ditempatkan di belakang produk dengan stok tersedia dalam kondisi yang sama.\n\u003c/span\u003e\u003cspan\u003e- Produk yang penjualannya berakhir dan produk yang penjualannya dihentikan sementara disembunyikan dari pencarian·kategori.\n\u003c/span\u003e\u003cspan\u003e- Pada URL langsung produk yang penjualannya berakhir, tampilkan informasi berakhir dan produk pengganti, serta hapus tombol pembelian.\n\u003c/span\u003e\u003cspan\u003e\n\u003c/span\u003e\u003cspan\u003e2. Pengurutan default\n\u003c/span\u003e\u003cspan\u003e- Relevansi kata pencarian diberi bobot paling besar.\n\u003c/span\u003e\u003cspan\u003e- Mencerminkan tingkat konversi 28 hari terakhir, kecepatan penjualan 14 hari terakhir, rating terkoreksi, dan kualitas pengiriman.\n\u003c/span\u003e\u003cspan\u003e- Setiap bobot dapat diubah melalui file konfigurasi atau kebijakan administrator.\n\u003c/span\u003e\u003cspan\u003e- Seri diurutkan secara stabil berdasarkan product_id menurun.\n\u003c/span\u003e\u003cspan\u003e- Produk iklan jangan dicampur ke skor organik, tetapi masukkan ke slot terpisah dan tandai sebagai 'iklan'.\n\u003c/span\u003e\u003cspan\u003e\n\u003c/span\u003e\u003cspan\u003e3. Eksplorasi daftar\n\u003c/span\u003e\u003cspan\u003e- Kembalikan 40 item sekali jalan.\n\u003c/span\u003e\u003cspan\u003e- Kata pencarian, pengurutan, filter, halaman, atau kursor harus dapat dipulihkan dari URL.\n\u003c/span\u003e\u003cspan\u003e- Jika kembali dari halaman detail, pulihkan daftar dan posisi scroll.\n\u003c/span\u003e\u003cspan\u003e- Untuk hasil skala besar, gunakan paginasi kursor.\n\u003c/span\u003e\u003cspan\u003e\n\u003c/span\u003e\u003cspan\u003e4. Cakupan pencarian\n\u003c/span\u003e\u003cspan\u003e- Kecocokan tepat SKU dan nama model menjadi prioritas tertinggi.\n\u003c/span\u003e\u003cspan\u003e- Cari nama produk, merek, kategori, atribut, dan tag sinonim.\n\u003c/span\u003e\u003cspan\u003e- Tangani spasi bahasa Korea serta variasi merek Inggris·Hangul.\n\u003c/span\u003e\u003cspan\u003e- Jika tidak ada hasil, tampilkan saran typo, pelonggaran filter, kategori terkait, dan rekomendasi pengganti secara terpisah.\n\u003c/span\u003e\u003cspan\u003e\n\u003c/span\u003e\u003cspan\u003e5. Log pencarian\n\u003c/span\u003e\u003cspan\u003e- Secara default hanya simpan kata pencarian yang dinormalisasi, rentang waktu, jumlah hasil, filter, serta metrik klik·pembelian agregat.\n\u003c/span\u003e\u003cspan\u003e- ID anggota dan IP tidak disimpan di log analisis pencarian.\n\u003c/span\u003e\u003cspan\u003e- Bentuk email, nomor telepon, dan nomor pesanan di-masking.\n\u003c/span\u003e\u003cspan\u003e- Periode penyimpanan teks asli dan periode penyimpanan agregat dipisahkan sebagai nilai pengaturan.\n\u003c/span\u003e\u003cspan\u003e\n\u003c/span\u003e\u003cspan\u003e6. Kebutuhan teknis\n\u003c/span\u003e\u003cspan\u003e- Rancang bersama model data, kontrak API, indeks pencarian, metode sinkronisasi, penanganan pengecualian, dan metrik administrator.\n\u003c/span\u003e\u003cspan\u003e- Usulkan indeks yang sesuai dengan pola kueri aktual dan jelaskan cara memeriksa execution plan.\n\u003c/span\u003e\u003cspan\u003e- Meski terjadi keterlambatan indeks pencarian, validasi ulang status·harga·stok pada tahap keranjang dan pembayaran.\n\u003c/span\u003e\u003cspan\u003e- Tulis skenario unit test, integration test, performance test, dan accessibility test.\n\u003c/span\u003e\u003cspan\u003e\n\u003c/span\u003e\u003cspan\u003eSebelum memulai implementasi, jika ada keputusan dari kebijakan yang belum saya tentukan dan memengaruhi hasil, tanyakan terlebih dahulu, dan tampilkan asumsi yang ditentukan secara acak dalam daftar terpisah.\n\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eKalimat terakhir adalah perangkat inti yang mengubah AI dari sekadar pembuat kode menjadi mitra peninjau persyaratan. Namun, jangan berhenti hanya dengan menerima pertanyaan; jawaban yang telah ditetapkan harus tercermin dalam dokumen kebijakan dan kondisi pengujian.\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#desain-implementasi-menetapkan-kebijakan-ke-data-dan-api\" class=\"anchor\" id=\"desain-implementasi-menetapkan-kebijakan-ke-data-dan-api\"\u003e\u003c/a\u003eDesain implementasi: menetapkan kebijakan ke data dan API\u003c/h2\u003e\n\u003ch3\u003e\n\u003ca href=\"#contoh-model-data\" class=\"anchor\" id=\"contoh-model-data\"\u003e\u003c/a\u003eContoh model data\u003c/h3\u003e\n\u003cpre\u003e\u003ccode\u003e\u003cspan\u003eproducts\n\u003c/span\u003e\u003cspan\u003e- product_id\n\u003c/span\u003e\u003cspan\u003e- sales_status\n\u003c/span\u003e\u003cspan\u003e- stock_status\n\u003c/span\u003e\u003cspan\u003e- visibility_status\n\u003c/span\u003e\u003cspan\u003e- compliance_status\n\u003c/span\u003e\u003cspan\u003e- brand_id\n\u003c/span\u003e\u003cspan\u003e- category_id\n\u003c/span\u003e\u003cspan\u003e- searchable_name\n\u003c/span\u003e\u003cspan\u003e- search_tags\n\u003c/span\u003e\u003cspan\u003e- price\n\u003c/span\u003e\u003cspan\u003e- inventory_quantity\n\u003c/span\u003e\u003cspan\u003e- ranking_feature_version\n\u003c/span\u003e\u003cspan\u003e- updated_at\n\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eJangan memasukkan beberapa makna ke dalam satu bidang. Misalnya, jika hanya ada \u003ccode\u003estatus = 1\u003c/code\u003e, tidak jelas apakah itu berarti dapat dijual, dapat dipublikasikan, stok tersedia, atau lolos regulasi. Transisi status juga dikelola dalam tabel untuk mendefinisikan pemeriksaan dan event yang diperlukan saat berpindah dari draf ke sedang dijual, dan dari sedang dijual ke berakhir.\u003c/p\u003e\n\u003ch3\u003e\n\u003ca href=\"#informasi-yang-perlu-disertakan-dalam-respons-api\" class=\"anchor\" id=\"informasi-yang-perlu-disertakan-dalam-respons-api\"\u003e\u003c/a\u003eInformasi yang perlu disertakan dalam respons API\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKata pencarian yang dinormalisasi\u003c/li\u003e\n\u003cli\u003ePengurutan dan filter yang diterapkan\u003c/li\u003e\n\u003cli\u003eKumpulan hasil dan kursor berikutnya\u003c/li\u003e\n\u003cli\u003eJumlah hasil atau perkiraan jumlah hasil\u003c/li\u003e\n\u003cli\u003eBadge stok habis·status penjualan\u003c/li\u003e\n\u003cli\u003eApakah iklan dan teks penandaan iklan\u003c/li\u003e\n\u003cli\u003eApakah ada koreksi typo·perluasan cakupan pencarian\u003c/li\u003e\n\u003cli\u003eVersi kebijakan pencarian dan ID permintaan untuk pelacakan\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSkor mentah sebagai informasi debugging internal dan bobot yang sensitif secara bisnis tidak perlu diekspos apa adanya ke API pelanggan. Sebaliknya, operator harus dapat mereproduksi jalur perhitungan peringkat dengan ID permintaan.\u003c/p\u003e\n\u003ch3\u003e\n\u003ca href=\"#indeks-dirancang-sesuai-pola-kueri-aktual\" class=\"anchor\" id=\"indeks-dirancang-sesuai-pola-kueri-aktual\"\u003e\u003c/a\u003eIndeks dirancang sesuai pola kueri aktual\u003c/h3\u003e\n\u003cp\u003eSecara umum, untuk kolom yang digunakan dalam filter status dan pengurutan, pertimbangkan indeks keluarga B-tree; untuk dokumen full-text search, pertimbangkan keluarga inverted index. Jika menggunakan PostgreSQL, \u003ccode\u003etsvector\u003c/code\u003e dan indeks GIN dapat digunakan, dan jika pencarian string mirip diperlukan, \u003ccode\u003epg_trgm\u003c/code\u003e dapat digunakan. Prinsipnya sama meskipun menggunakan mesin pencari eksternal.\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\u003cspan\u003eCREATE INDEX \u003c/span\u003e\u003cspan\u003eidx_products_visibility\n\u003c/span\u003e\u003cspan\u003eON\u003c/span\u003e\u003cspan\u003e products (visibility_status, sales_status, compliance_status);\n\u003c/span\u003e\u003cspan\u003e\n\u003c/span\u003e\u003cspan\u003eCREATE INDEX \u003c/span\u003e\u003cspan\u003eidx_products_search_document\n\u003c/span\u003e\u003cspan\u003eON\u003c/span\u003e\u003cspan\u003e products USING GIN (search_document);\n\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSemakin banyak indeks dibuat, biaya tulis dan ruang penyimpanan juga meningkat. Jangan menentukan hanya berdasarkan perkiraan; periksa \u003ccode\u003eEXPLAIN ANALYZE\u003c/code\u003e, slow query log, dan load test berdasarkan kueri nyata serta distribusi data. Ketika jumlah produk meningkat, lihat p95·p99 latency, tingkat timeout, dan kebaruan pengindeksan bersama-sama, bukan hanya waktu respons rata-rata.\u003c/p\u003e\n\u003ch3\u003e\n\u003ca href=\"#pengaman-tambahan-saat-memasang-ai-generatif\" class=\"anchor\" id=\"pengaman-tambahan-saat-memasang-ai-generatif\"\u003e\u003c/a\u003ePengaman tambahan saat memasang AI generatif\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKeberadaan produk, harga, stok, dan tanggal pengiriman hanya menggunakan hasil API katalog\u003c/li\u003e\n\u003cli\u003ePerluasan kata pencarian yang dibuat model dicatat bersama teks asli dan perluasan berlebihan dibatasi\u003c/li\u003e\n\u003cli\u003ePencarian SKU·nama model yang tepat didahulukan daripada pencarian semantik\u003c/li\u003e\n\u003cli\u003eFilter penghentian penjualan·recall diterapkan sama pada kandidat pencarian AI\u003c/li\u003e\n\u003cli\u003eMelacak ID produk dan bidang dasar yang ditampilkan dalam jawaban\u003c/li\u003e\n\u003cli\u003eJika model gagal, fallback ke pencarian teks umum\u003c/li\u003e\n\u003cli\u003eMemisahkan agar frasa bersifat prompt injection dalam deskripsi produk atau ulasan tidak dijalankan sebagai instruksi sistem\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\n\u003ca href=\"#acceptance-test-sebelum-peluncuran\" class=\"anchor\" id=\"acceptance-test-sebelum-peluncuran\"\u003e\u003c/a\u003eAcceptance test sebelum peluncuran\u003c/h2\u003e\n\u003cdiv class=\"overflow-x-auto\"\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eSkenario\u003c/th\u003e\n\u003cth\u003eHasil yang diharapkan\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Skenario\"\u003eAda produk stok habis yang didaftarkan kemarin bersama produk stok tersedia yang terus terjual\u003c/td\u003e\n\u003ctd data-label=\"Hasil yang diharapkan\"\u003eProduk stok habis tidak mendominasi bagian atas default\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Skenario\"\u003eMencari produk yang penjualannya telah berakhir\u003c/td\u003e\n\u003ctd data-label=\"Hasil yang diharapkan\"\u003eTidak ada di daftar, dan pada URL langsung ditampilkan informasi berakhir serta status tidak dapat dibeli\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Skenario\"\u003eProduk iklan tampil di slot peringkat 1\u003c/td\u003e\n\u003ctd data-label=\"Hasil yang diharapkan\"\u003ePada kartu, status sebagai iklan dapat segera diidentifikasi\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Skenario\"\u003e0 hasil setelah filter diterapkan\u003c/td\u003e\n\u003ctd data-label=\"Hasil yang diharapkan\"\u003eMenampilkan saran penghapusan filter dan apakah kandidat awal ada\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Skenario\"\u003ePencarian “sepatu lari”, “sepatu jogging”\u003c/td\u003e\n\u003ctd data-label=\"Hasil yang diharapkan\"\u003eKelompok produk terkait tampil konsisten sesuai kebijakan sinonim\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Skenario\"\u003eMembuka detail lalu kembali\u003c/td\u003e\n\u003ctd data-label=\"Hasil yang diharapkan\"\u003eKata pencarian, filter, pengurutan, daftar, dan posisi scroll dipulihkan\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Skenario\"\u003eAda beberapa produk dengan skor sama\u003c/td\u003e\n\u003ctd data-label=\"Hasil yang diharapkan\"\u003eMeski berpindah halaman berulang, urutan tetap tanpa duplikasi·kehilangan\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Skenario\"\u003eStok masih tersisa di indeks pencarian\u003c/td\u003e\n\u003ctd data-label=\"Hasil yang diharapkan\"\u003eDiblokir dengan stok terbaru pada tahap keranjang·pembayaran\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Skenario\"\u003eKata pencarian mengandung email·nomor telepon\u003c/td\u003e\n\u003ctd data-label=\"Hasil yang diharapkan\"\u003eDi-masking atau dibuang sebelum penyimpanan log\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Skenario\"\u003ePencarian serentak dalam jumlah besar\u003c/td\u003e\n\u003ctd data-label=\"Hasil yang diharapkan\"\u003eMemenuhi standar p95 latency dan tingkat error yang didefinisikan\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Skenario\"\u003eDashboard kata pencarian administrator\u003c/td\u003e\n\u003ctd data-label=\"Hasil yang diharapkan\"\u003eTeks asli berfrekuensi rendah dan pola sensitif tidak terekspos apa adanya\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"Skenario\"\u003ePerubahan bobot ranking\u003c/td\u003e\n\u003ctd data-label=\"Hasil yang diharapkan\"\u003eVersi kebijakan, pemberi persetujuan, waktu penerapan, serta metrik sebelum-sesudah dicatat\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/div\u003e\n\u003ch2\u003e\n\u003ca href=\"#hal-yang-harus-diulang-pada-tahap-operasional\" class=\"anchor\" id=\"hal-yang-harus-diulang-pada-tahap-operasional\"\u003e\u003c/a\u003eHal yang harus diulang pada tahap operasional\u003c/h2\u003e\n\u003cp\u003ePencarian bukan fitur yang selesai setelah sekali dikembangkan. Karena komposisi produk, musim, promosi, dan ekspresi pelanggan berubah, siklus berikut harus dijadikan proses operasional.\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eMeninjau kata pencarian tanpa hasil dan kata pencarian yang melonjak setiap minggu.\u003c/li\u003e\n\u003cli\u003eMemperbarui sinonim dan pemetaan kategori melalui prosedur persetujuan.\u003c/li\u003e\n\u003cli\u003eMelihat rasio paparan stok habis, click-through rate, tingkat konversi, dan tingkat koreksi kata pencarian bersama-sama.\u003c/li\u003e\n\u003cli\u003ePerubahan bobot diperluas setelah evaluasi offline dan A/B test terbatas.\u003c/li\u003e\n\u003cli\u003eMengaudit secara terpisah proporsi paparan iklan·produk sendiri·hasil organik.\u003c/li\u003e\n\u003cli\u003eMemeriksa secara berkala periode penyimpanan log pencarian, hak akses, dan kegagalan masking.\u003c/li\u003e\n\u003cli\u003eMeninjau ulang tingkat penggunaan indeks dan kueri lambat dengan trafik nyata.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2\u003e\n\u003ca href=\"#kesimpulan\" class=\"anchor\" id=\"kesimpulan\"\u003e\u003c/a\u003eKesimpulan\u003c/h2\u003e\n\u003cp\u003eAI dapat dengan cepat membuat API dan layar pencarian, tetapi tidak dapat menentukan produk mana yang berhak berdiri di depan pelanggan. Pencarian toko online yang praktis selesai ketika \u003cstrong\u003enilai default pengurutan, status produk, eksplorasi daftar, cakupan pencarian dan penanganan tanpa hasil, serta log pencarian\u003c/strong\u003e terlebih dahulu ditetapkan sebagai kebijakan, lalu kebijakan itu tercermin secara konsisten dalam model data, API, indeks, pengujian, dan metrik administrator.\u003c/p\u003e\n\u003cp\u003eCoding dapat diotomatisasi, tetapi prinsip penataan dan tanggung jawab tidak muncul otomatis. Prompt AI terbaik bukanlah istilah pengembangan yang panjang dan sulit, melainkan dokumen yang membedakan dengan jelas kebijakan yang telah diputuskan operator dan pertanyaan yang belum diputuskan.\u003c/p\u003e\n","tags":["Pengembangan AI","Pencarian toko online","Kebijakan pencarian","Operasi ecommerce","UX pencarian"],"faqs":[{"question":"Mengapa bermasalah jika urutan default pencarian mal belanja ditetapkan berdasarkan yang terbaru didaftarkan?","answer":"Urutan terbaru didaftarkan hanya mencerminkan waktu pendaftaran, sehingga produk yang habis stok, belum melalui pemeriksaan, atau memiliki daya jual rendah dapat menempati posisi teratas. Lebih aman untuk terlebih dahulu memastikan relevansi dengan kata pencarian dan status yang memungkinkan penjualan, lalu menggabungkan sinyal seperti tingkat konversi, kecepatan penjualan, dan keandalan rating."},{"question":"Apakah bobot urutan rekomendasi boleh ditentukan otomatis oleh AI?","answer":"AI dapat mengusulkan rumus kandidat dan membuat kode simulasi, tetapi tujuan dan batas toleransi harus ditentukan oleh operator. Bobot harus dievaluasi secara offline dengan data historis, lalu diubah setelah melalui A/B test terbatas dan ketentuan penghentian."},{"question":"Apakah produk yang habis stok harus disembunyikan sepenuhnya dari hasil pencarian?","answer":"Jika ada kemungkinan restok dan pelanggan dapat menggunakan notifikasi restok, lencana habis stok dan penempatan di urutan belakang lebih berguna daripada penghapusan penuh. Produk yang habis stok dalam jangka panjang atau dihentikan pasokannya sebaiknya disembunyikan berdasarkan kriteria terpisah, dan ketersediaan pembelian harus diverifikasi kembali pada tahap keranjang dan pembayaran."},{"question":"Apakah benar halaman detail produk yang penjualannya telah berakhir dihapus menjadi 404?","answer":"Tidak selalu demikian. Jika ada nilai dari tautan lama, riwayat pesanan, pemberitahuan keselamatan, atau panduan produk pengganti, halaman detail dapat dipertahankan sambil menampilkan dengan jelas bahwa penjualan telah berakhir dan pembelian tidak tersedia. Jika sama sekali tidak ada nilai konten dan penghapusan permanen memang tepat, kebijakan 404 atau 410 dapat ditinjau."},{"question":"Mana yang lebih baik untuk mal belanja, paginasi atau infinite scroll?","answer":"Untuk hasil pencarian yang mengutamakan perbandingan dan kunjungan ulang, paginasi bernomor atau metode lihat lebih banyak umumnya lebih mudah dikelola. Jika menggunakan infinite scroll, status URL, tombol kembali, posisi scroll, aksesibilitas, dan pemulihan error harus diselesaikan, dan ini lebih cocok untuk feed berbasis penemuan."},{"question":"Jika menerapkan pencarian AI atau pencarian vektor, apakah pencarian teks yang ada tidak diperlukan lagi?","answer":"Tetap diperlukan. Pencarian belanja yang menuntut kecocokan tepat seperti SKU, nama model, merek, dan spesifikasi harus berbasis pada pencarian teks. Pencarian semantik digunakan sebagai lapisan pendukung untuk memperluas kandidat dengan ungkapan yang berbeda, dan harus dihubungkan dengan ID produk nyata serta data stok."},{"question":"Jika hanya menyimpan kata pencarian dan jumlah pencarian, apakah tidak ada masalah data pribadi?","answer":"Tidak bisa dianggap otomatis aman. Kata pencarian dapat berisi email, nomor telepon, nomor pesanan, atau konten sensitif, dan jika digabungkan dengan pengenal lain dapat digunakan untuk melacak individu. Diperlukan minimisasi tujuan, masking, kontrol akses, serta penyimpanan terpisah antara data asli dan data agregat."},{"question":"Apakah produk iklan boleh ditempatkan di bagian atas urutan rekomendasi?","answer":"Yang penting adalah merancang agar paparan iklan tidak disalahartikan sebagai rekomendasi organik biasa. Kandidat iklan dan kandidat organik harus dipisahkan, kartu produk harus menyediakan penanda yang dapat segera dikenali, dan aturan paparan iklan serta metrik kinerja harus dikelola secara terpisah."},{"question":"Indeks database apa yang diperlukan untuk pencarian produk?","answer":"Jawaban yang tepat bergantung pada kueri aktual dan distribusi data. Untuk filter status dan pengurutan dapat dipertimbangkan indeks keluarga B-tree, untuk pencarian teks penuh indeks terbalik seperti GIN, dan untuk pencarian string serupa keluarga trigram, lalu efektivitasnya harus dikonfirmasi melalui rencana eksekusi dan uji beban."},{"question":"Dengan indikator apa kualitas pencarian harus dievaluasi?","answer":"Perlu melihat bersama rasio tanpa hasil, rasio klik hasil pencarian, rasio masuk keranjang dan konversi pembelian setelah pencarian, rasio perubahan kata pencarian, serta rasio paparan produk habis stok. Dengan menggabungkan p95 latency, rasio timeout, dan kesegaran indeks, kualitas dan performa dapat dinilai sekaligus."},{"question":"Berapa lama log pencarian harus disimpan?","answer":"Tidak ada satu periode yang berlaku untuk semua layanan. Kata pencarian asli sebaiknya hanya disimpan selama periode minimum yang diperlukan untuk analisis, sedangkan tren jangka panjang sebaiknya disimpan sebagai data agregat yang menurunkan risiko data pribadi. Tujuan penyimpanan, siklus penghapusan, dan hak akses harus diselaraskan dengan kebijakan pemrosesan data pribadi serta kebijakan internal."},{"question":"Apa kalimat terpenting untuk membuat AI bertanya sebelum implementasi?","answer":"Anda dapat menginstruksikan, “Sebelum mulai implementasi, jika ada keputusan di antara kebijakan yang belum saya tentukan yang memengaruhi hasil, tanyakan terlebih dahulu, dan tampilkan asumsi yang ditentukan secara sewenang-wenang dalam daftar terpisah.” Setelah itu, jawaban tersebut harus tercermin dalam dokumen kebijakan, kontrak API, dan ketentuan pengujian agar efektif."}],"sources":[{"url":"https://www.ftc.go.kr/www/selectBbsNttView.do?bordCd=3\u0026key=12\u0026nttSn=43448\u0026pageIndex=1\u0026pageUnit=10\u0026rltnNttSn=46624\u0026searchCnd=all\u0026searchViolt=0604","title":"Komisi Perdagangan yang Adil: Sanksi dalam kasus tindakan menarik pelanggan melalui tipu daya oleh Coupang dan CPLB","type":"source"},{"url":"https://www.lawtimes.co.kr/news/articleView.html?idxno=218796","title":"Law Times: Gugatan Coupang-Komisi Perdagangan yang Adil, kasus Naver Shopping menjadi isu sengketa","type":"source"},{"url":"https://www.law.go.kr/LSW/lsInfoP.do?lsId=002011","title":"Pusat Informasi Hukum Nasional: Undang-Undang tentang Kewajaran Pencantuman dan Periklanan","type":"source"},{"url":"https://case.ftc.go.kr/ocp/co/openDocView.do?docCnvrMnNo=12808\u0026docId=20221229104156671154\u0026docTy=LTFR\u0026id=OCPLTFR20140759018192","title":"Pemrosesan Kasus Online Komisi Perdagangan yang Adil: Keputusan 2014-103 terkait pencantuman iklan kata kunci","type":"source"},{"url":"https://www.ftc.go.kr/www/selectBbsNttView.do?bordCd=3\u0026key=12\u0026nttSn=46006\u0026pageIndex=2\u0026pageUnit=10\u0026rltnNttSn=37048\u0026searchCnd=all\u0026searchCtgry=01%2C02\u0026searchKrwd=%EA%B4%91%EA%B3%A0\u0026searchViolt=0609","title":"Komisi Perdagangan yang Adil: Sanksi atas pelanggaran Undang-Undang Pencantuman dan Periklanan serta Undang-Undang Perdagangan Elektronik oleh platform penjualan produk terkenal berharga tinggi","type":"source"},{"url":"https://www.law.go.kr/LSW/lsInfoP.do?ancYnChk=0\u0026lsId=011357","title":"Pusat Informasi Hukum Nasional: Undang-Undang Perlindungan Informasi Pribadi","type":"source"},{"url":"https://baymard.com/learn/ecommerce-ux-best-practices","title":"Baymard Institute: Praktik Terbaik UX Ecommerce Berbasis Data","type":"source"},{"url":"https://developers.google.com/search/docs/specialty/ecommerce/pagination-and-incremental-page-loading","title":"Google Search Central: Paginasi dan Pemuatan Halaman Bertahap","type":"source"},{"url":"https://www.postgresql.org/docs/current/textsearch.html","title":"Dokumentasi PostgreSQL: Pencarian Teks Lengkap","type":"source"},{"url":"https://www.postgresql.org/docs/current/textsearch-indexes.html","title":"Dokumentasi PostgreSQL: Jenis Indeks yang Disukai untuk Pencarian Teks","type":"source"},{"url":"https://www.postgresql.org/docs/current/pgtrgm.html","title":"Dokumentasi PostgreSQL: pg_trgm","type":"source"}],"images":[{"id":240,"url":"https://injoys.com/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MjM1NSwicHVyIjoiYmxvYl9pZCJ9fQ==--6c0b755d9bc5bce8a57d0306acd05a2302fe176e/ChatGPT%20Image%202026%E1%84%82%E1%85%A7%E1%86%AB%207%E1%84%8B%E1%85%AF%E1%86%AF%2021%E1%84%8B%E1%85%B5%E1%86%AF%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%2002_29_49.webp","is_representative":true,"generation_method":"upload","mime_type":"image/webp","original_filename":"ChatGPT Image 2026년 7월 21일 오전 02_29_49.png","translations":{"ko":{"alt":"AI 네트워크와 상품 검색 화면, 정책 체크카드, 분석 대시보드가 결합된 쇼핑몰 검색 설계 일러스트","caption":"AI 쇼핑몰 검색을 구현하기 전에 정렬, 상품 상태, 탐색, 검색 범위, 데이터 정책을 설계하는 과정을 보여준다.","description":null},"en":{"alt":"AI network, product search interface, policy checklist cards, and analytics dashboard for e-commerce search planning","caption":"The illustration shows the planning of ranking, product status, navigation, search scope, and data policies before building AI-powered e-commerce search.","description":null},"ja":{"alt":"AIネットワーク、商品検索画面、ポリシーカード、分析ダッシュボードを組み合わせたEC検索設計","caption":"AI搭載のEC検索を構築する前に、並び順、商品状態、ナビゲーション、検索範囲、データ方針を設計する様子を示している。","description":null},"es":{"alt":"Red de IA, interfaz de búsqueda de productos, tarjetas de políticas y panel analítico para comercio electrónico","caption":"La ilustración muestra cómo definir el orden, el estado de los productos, la navegación, el alcance de búsqueda y la política de datos antes de crear un buscador con IA.","description":null},"id":{"alt":"Jaringan AI, antarmuka pencarian produk, kartu kebijakan, dan dasbor analitik untuk perencanaan pencarian toko online","caption":"Ilustrasi ini menunjukkan perencanaan peringkat, status produk, navigasi, cakupan pencarian, dan kebijakan data sebelum membangun pencarian e-commerce berbasis AI.","description":null},"pt":{"alt":"Rede de IA, interface de busca de produtos, cartões de políticas e painel analítico para comércio eletrônico","caption":"A ilustração mostra o planejamento de ordenação, status dos produtos, navegação, escopo da busca e política de dados antes de criar uma busca de e-commerce com IA.","description":null},"zh-hant":{"alt":"結合AI網路、商品搜尋介面、政策檢查卡與分析儀表板的電商搜尋規劃圖","caption":"此圖呈現在建立AI電商搜尋前，規劃排序、商品狀態、瀏覽方式、搜尋範圍與資料政策的過程。","description":null}}},{"id":241,"url":"https://injoys.com/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MjM2MiwicHVyIjoiYmxvYl9pZCJ9fQ==--7aa0dfb3a548f3bdfe5cf4f73b74b387fe8da178/ChatGPT%20Image%202026%E1%84%82%E1%85%A7%E1%86%AB%207%E1%84%8B%E1%85%AF%E1%86%AF%2021%E1%84%8B%E1%85%B5%E1%86%AF%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%2002_32_48.webp","is_representative":false,"generation_method":"upload","mime_type":"image/webp","original_filename":"ChatGPT Image 2026년 7월 21일 오전 02_32_48.png","translations":{"ko":{"alt":"상품 의미 연결망, 대체 추천 화면, 보안 데이터 저장소로 구성된 AI 쇼핑 검색 설계도","caption":"상품 속성과 동의어를 연결하고 검색 결과가 없을 때 대안을 추천하며 로그를 안전하게 집계하는 구조를 보여준다.","description":null},"en":{"alt":"AI shopping search map with semantic product links, fallback recommendations, and secure data storage","caption":"The illustration shows product attributes and synonyms being connected, alternative items suggested for empty results, and search logs aggregated securely.","description":null},"ja":{"alt":"商品意味ネットワーク、代替推薦画面、安全なデータ保存で構成されたAIショッピング検索設計","caption":"商品属性や同義語を結び、検索結果がない場合に代替商品を提案し、検索ログを安全に集計する仕組みを示している。","description":null},"es":{"alt":"Mapa de búsqueda comercial con vínculos semánticos, recomendaciones alternativas y almacenamiento seguro de datos","caption":"La ilustración muestra cómo conectar atributos y sinónimos, recomendar productos cuando no hay resultados y agregar registros de búsqueda de forma segura.","description":null},"id":{"alt":"Peta pencarian belanja AI dengan relasi produk, rekomendasi alternatif, dan penyimpanan data aman","caption":"Ilustrasi ini menunjukkan hubungan atribut dan sinonim produk, rekomendasi saat hasil kosong, serta pengelompokan log pencarian secara aman.","description":null},"pt":{"alt":"Mapa de busca comercial com conexões semânticas, recomendações alternativas e armazenamento seguro de dados","caption":"A ilustração mostra atributos e sinônimos conectados, sugestões para buscas sem resultado e agregação segura dos registros de pesquisa.","description":null},"zh-hant":{"alt":"結合商品語意關聯、替代推薦與安全資料儲存的AI購物搜尋架構","caption":"此圖呈現商品屬性與同義詞連結、無結果時提供替代推薦，以及安全彙整搜尋紀錄的流程。","description":null}}}],"published_at":"2026-07-21T10:05:48+09:00","updated_at":"2026-07-21T10:05:55+09:00","license":"cc_by","translation_status":"machine","available_locales":["ko","en","ja","es"],"data_locales":["ko","en","ja","es","id","pt","zh-hant"],"url":"https://injoys.com/en/articles/five-policies-before-ai-ecommerce-search-development"}