Pemeriksaan kualitas konten produk

Updated 2026-09-05

Pisahkan validitas struktur dari makna produk. Dalam kasus lokal 40 baris Jepang dan Jerman, pemeriksaan kolom lulus sementara tinjauan AI masih menemukan redaksi Jepang yang perlu diperbaiki.

Definisikan kontrak kualitas sebelum generasi

Tulis aturan penerimaan untuk setiap kolom. Kolom identitas dan revisi harus cocok dengan sumber. Teks yang dapat diedit harus menggunakan locale yang diminta, memuat informasi wajib, dan menghormati format tujuan. Klaim memerlukan bukti pendukung. Satu label lulus atau gagal terlalu kasar untuk menjelaskan kondisi yang memblokir produk.

Pisahkan cacat yang dapat diperiksa mesin dari penilaian editorial. Teks hilang dan pergeseran pengenal dapat dilokalkan secara deterministik. Apakah terjemahan melebih-lebihkan manfaat memerlukan konteks dan tinjauan yang memenuhi syarat. Arahkan setiap masalah kepada orang atau sistem yang dapat menyelesaikannya, dan lampirkan hasilnya pada revisi kandidat.

PemeriksaanBukti yang bergunaTinjauan lanjutan
Identitas dan revisi sumberPerbandingan kolom persisTerjemahan alami
Nilai terlindungiKesetaraan scalar bertipeSpesifikasi sumber yang benar
Markup dan placeholderParser dan jumlah tokenKlaim produk yang akurat
Tinjauan klaimPemetaan pernyataan ke sumberKeberhasilan impor toko
Baca ulang tujuanPerbandingan disetujui dengan tersimpanKinerja komersial

Bandingkan nilai terlindungi setelah perakitan

Hasilkan hanya kolom teks yang diizinkan, lalu rakit catatan kandidat dengan nilai terlindungi yang disalin dari sumber. Jalankan perbandingan kedua pada catatan yang telah dirakit. Ini menangkap kesalahan mapper serta edit yang tidak sengaja dibuat saat peninjauan.

Contoh JavaScript ilustratif mengharapkan objek yang divalidasi schema dengan nilai terlindungi scalar. Contoh mendeteksi key terlindungi yang hilang, ekstra, atau berubah serta revisi sumber yang usang, dan mengembalikan kode masalah stabil. Letakkan validasi schema dan nilai sebelum helper ini, lalu arahkan kandidat terstruktur valid ke peninjauan editorial.

function checkProtected(source, candidate) {
  const issues = [];
  if (candidate.sourceRevision !== source.sourceRevision) {
    issues.push({ code: "STALE_SOURCE", field: "sourceRevision" });
  }
  const keys = new Set([
    ...Object.keys(source.protected),
    ...Object.keys(candidate.protected),
  ]);
  for (const field of keys) {
    const hasSource = Object.prototype.hasOwnProperty.call(source.protected, field);
    const hasCandidate = Object.prototype.hasOwnProperty.call(candidate.protected, field);
    if (!hasSource || !hasCandidate ||
        !Object.is(source.protected[field], candidate.protected[field])) {
      issues.push({ code: "PROTECTED_FIELD_CHANGED", field });
    }
  }
  return issues;
}

Pisahkan pemformatan angka dari nilainya

Angka lokal dapat terlihat berbeda tetapi mewakili kuantitas tersimpan yang sama. MDN mendokumentasikan Intl.NumberFormat untuk presentasi sesuai locale. Terapkan format setelah nilai berwenang dipilih; jangan meminta model bahasa membuat ulang harga dari string mata uang yang telah dirender.

Definisikan satuan bersama nilai numerik, termasuk satuan untuk setiap dimensi. Jika konversi diizinkan, gunakan aturan deterministik dan pertahankan representasi asli. Jangan hanya membandingkan digit dalam kalimat: dua angka identik dengan satuan berbeda dapat menggambarkan produk berbeda. Satuan yang hilang harus memblokir persetujuan sampai sumber diselesaikan.

Validasi jumlah placeholder dan markup

Gunakan parser template aplikasi untuk mengumpulkan token placeholder dari sumber dan kandidat. Bandingkan jumlahnya, bukan hanya set nama; token duplikat dapat merusak kalimat atau aplikasi meski setiap token asli masih muncul. Pertahankan aturan escaping khusus format di batas tujuan.

Pemeriksaan kecil berikut menerima token yang sudah diekstrak. Pemeriksaan ini tidak mencoba membuat regex placeholder universal. Untuk HTML, parse fragment dokumen lalu bandingkan struktur dan tautan yang diizinkan secara terpisah. Panduan escaping WordPress relevan untuk rendering khusus, tetapi escaping saja tidak membuktikan konten mempertahankan makna yang dimaksud.

function samePlaceholderCounts(sourceTokens, candidateTokens) {
  const counts = new Map();
  for (const token of sourceTokens) {
    counts.set(token, (counts.get(token) ?? 0) + 1);
  }
  for (const token of candidateTokens) {
    if (!counts.has(token)) return false;
    counts.set(token, counts.get(token) - 1);
  }
  return [...counts.values()].every((count) => count === 0);
}

Kasus: kolom valid, redaksi tetap perlu diperbaiki

Agen terjemahan yang secara eksplisit dikonfigurasi untuk gpt-5.6-luna dengan reasoning xhigh menghasilkan 20 patch Jepang dan 20 patch Jerman dari 20 produk sintetis. Pemeriksaan schema, identitas, dan kolom terlindungi deterministik lulus untuk semua 40 baris yang dirakit. Harga, mata uang, bahan, dan dimensi disalin dari sumber; patch yang dibuat hanya boleh mengubah title dan description untuk SKU serta locale yang ditentukan.

Patch Jepang yang belum disentuh juga lulus validator struktural. Namun tinjauan AI menemukan dua masalah redaksi di bawah dan merevisi deskripsinya. Inilah sebabnya pemeriksaan kolom bahan yang terlindungi tidak membuktikan bahwa prosa menjelaskan bahan secara akurat. Bandingkan setiap klaim penting dengan sumber meskipun semua pemeriksaan schema berwarna hijau.

Screenshot laporan tinjauan produk sintetis lokal tanpa pelanggaran schema atau identitas, menunggu tinjauan penutur asli dan merchant; draf DEMO-003 yang dikoreksi terlihat.
Laporan tinjauan katalog sintetis lokal dari kasus Luna xhigh. Semua 40 baris lulus pemeriksaan schema dan identitas yang dicatat; persetujuan semantik masih menunggu setelah koreksi AI Jepang.
Penjelasan bahasa Inggris tentang perubahan pada draf Jepang aktual; raw-ja.json mempertahankan output asli.
Produk sintetisMakna sumberKoreksi tinjauan AI Jepang
DEMO-003: buku sketsaPenyangga kardusMenghapus implikasi karton bergelombang yang tidak didukung
DEMO-010: keranjang penyimpananDua pegangan samping seluruhnyaMemperjelas jumlah total pegangan untuk menghilangkan ambiguitas

Uji ekspor tinjauan sekaligus impor

OWASP menjelaskan spreadsheet formula injection dan mencatat bahwa transformasi keamanan berbeda antarconsumer. Perlakukan sel pemasok dan sel buatan sebagai input tak tepercaya. Gunakan kebijakan serialisasi yang ditinjau untuk alat spreadsheet aktual dan periksa artefak tersimpan, bukan hanya tabel di memori.

Pisahkan impor mesin dari file tinjauan. Prefiks yang ditambahkan untuk tampilan manusia yang aman tidak boleh diam-diam mengubah pengenal atau deskripsi publik saat impor. Validasi encoding, penanganan quote, dan identitas baris yang diharapkan dengan parser. Simpan sumber yang belum disentuh agar perubahan dari editor spreadsheet dapat diidentifikasi dan diperbaiki.

Ikat persetujuan ke kandidat persis

Simpan revisi atau hash kandidat bersama persetujuan faktual dan bahasa. Edit apa pun setelahnya harus membatalkan persetujuan terkait sampai ditinjau. Publisher final juga harus membandingkan revisi sumber saat ini karena terjemahan yang tidak berubah dapat menjadi usang setelah spesifikasi produk berubah.

Dalam artefak kasus, patch Jepang yang dikoreksi dan patch Jerman dirakit menjadi baris dengan review_status: unreviewed. Kedua laporan mempertahankan translation_semantic_review: pending. Koreksi berbantuan AI adalah tahap revisi, bukan persetujuan penutur asli atau merchant. Simpan kandidat mentah dan revisi, kemudian minta peninjau yang tepat menyetujui teks persis yang akan masuk paket impor.

Reproduksi pemeriksaan dan tegaskan cakupannya

Pengujian kasus lokal memeriksa pelestarian kolom sumber, SKU duplikat, SKU hilang, dan override harga terlarang. Perakitan ulang read-only dari patch Jepang dan Jerman yang tersimpan mereproduksi kedua output tervalidasi. Untuk katalog yang lebih luas, tambahkan pemeriksaan grammar placeholder, markup, dan kebijakan revisi Anda sendiri; helper ilustratif di atas adalah contoh terpisah, bukan validator yang digunakan untuk 40 baris ini.

Ini adalah kasus terjemahan lokal yang dikonfigurasi Luna, tanpa panggilan Astra atau gateway dan tanpa impor toko nyata. Tool tidak mengekspos penggunaan API, request ID, atau billing; kedua output mempertahankan usage dan cost null. Gunakan hasil struktural untuk maju ke tinjauan semantik, lalu uji adapter toko berotorisasi secara terpisah.

node --test examples/commerce-localization-case/case.test.mjs

Pertanyaan umum

Bisakah response JSON valid tetap tidak aman diimpor?

Ya. Sintaks valid tidak menetapkan pengenal yang benar, kesegaran sumber, kolom yang didukung, klaim akurat, atau persetujuan. Validasi kontrak tersebut secara independen.

Mengapa membandingkan kolom terlindungi jika model tidak dapat mengeditnya?

Tahap perakitan, pemetaan, dan peninjauan masih dapat menambahkan kesalahan. Perbandingan pascaperakitan memeriksa catatan aktual yang disiapkan untuk delivery.

Bisakah saya memvalidasi klaim dengan daftar kata yang diizinkan?

Daftar kata dapat menandai beberapa masalah, tetapi tidak menetapkan makna atau kekuatan pernyataan. Tinjau kalimat terhadap bukti produknya.

Apakah mencocokkan nama placeholder cukup?

Bandingkan juga multiplicity menggunakan parser template nyata. Token yang berulang atau hilang dapat menjadi cacat meski set namanya tampak sama.

Apa yang ditetapkan kasus 40 baris?

Patch tersimpan dirakit tanpa kegagalan struktural tercatat dan mempertahankan kolom produk yang dikendalikan sumber. Redaksi Jepang masih memerlukan dua koreksi tinjauan AI, dan persetujuan semantik tetap tertunda untuk kedua bahasa.