Lewati ke konten

Kamus field

Field draft Tipe Wajib Katalog (catalog_products) Validasi
name teks Ya name tidak boleh kosong
brand teks Tidak brand
variant teks Tidak variant
gtin14 teks (8/12/13/14 digit) Tidak gtin14 (14 digit) panjang + check digit; unik di katalog
netContent { value, unit } Tidak net_content_value, net_content_unit value > 0; unit ∈ GRM, KGM, MLT, LTR, H87; berpasangan
packageFamily enum Tidak package_family bottle, jar, can, carton, case, pouch, sachet, tray, cup, other, unknown
tradeItemLevel enum Ya (bawaan each) trade_item_level each, multipack, case, other
categoryId id kategori Tidak category_id (tabel product_categories) harus kategori yang ada; dua tingkat
aliases daftar teks Tidak tabel product_aliases (scope shared) maks 30; huruf besar-kecil sama; minimal 2 huruf
notes teks Tidak tidak disalin hanya dalam draft

Field detail (tabel catalog_product_details)

Section titled “Field detail (tabel catalog_product_details)”

Disimpan sebagai JSON bersih (dipotong, dibatasi panjangnya) di details_json. Semua bagian opsional.

Bagian Isi
productNames official, line, language
weight netValue, netUnit, printedText, grossValue, grossUnit, drainedValue
serving sizeValue, sizeUnit, servingsPerPack, householdMeasure
ingredients text, contains[], mayContain[], allergenStatement, components[]
nutrition basis, energyTotalKcal, energyFromFatKcal, rows[] (label, amount, unit, akgPercent), vitaminsMinerals[], akgNote, source
manufacturer producedBy, address, country, packedBy, distributedBy, importedBy
contact serviceName, phone, email, website
permits bpomNumber, bpomVerified, halalStatus, halalNumber, halalBody, halalVerified, sni, sniNumber, pirtNumber
packaging type, material, recyclingCode, lengthMm, widthMm, heightMm, casePackQty, symbols[]
usage preparation, storage, shelfLife, dateCodeInfo
barcode text, type
claims daftar teks
Isian Nilai yang diterima
Satuan berat (netUnit, grossUnit, sizeUnit) GRM, KGM, MLT, LTR, H87
Satuan gizi g, mg, mcg, kkal, kJ, mL, %, IU
Acuan gizi (basis) per_serving, per_100g, per_100ml, per_pack
Status halal bersertifikat, tidak_halal, tidak_ada_logo, tidak_diketahui

Satuan tidak dikenal ditolak dengan pesan berbahasa Indonesia. Angka boleh memakai koma desimal.

Field Batas Keterangan
misc 60 pasangan { key, value } kunci maks 60, nilai maks 600 huruf
miscNote 5000 huruf catatan bebas
total detail + misc 60 KB

Jumlah foto bebas dan satu label boleh dipakai berkali-kali (tidak ada batas satu foto per sisi).

Kolom Keterangan
side depan, belakang, kiri, kanan, atas, bawah; unik per draft
r2_key catalog-photos/<draftId>/<sisi>-<sha12>.<ekstensi>
mime, bytes, sha256 JPEG/PNG/WebP, maks 8 MB, hash untuk deteksi duplikat dan embedding
product_id diisi saat Publish; sebelumnya hanya terhubung ke draft
Field Nilai
id UUID baru
locale id-ID
identity_status checksum_valid bila ada GTIN, selain itu candidate
revision 1
status published
detail, misc, foto disalin / dihubungkan ke produk baru

Yang ada di database tetapi belum bisa diisi dari form

Section titled “Yang ada di database tetapi belum bisa diisi dari form”
Field Keterangan
contained_product_id, contained_qty Hubungan karton → botol
Sumber dan bukti per atribut Belum ada tabel/UI; gunakan nutrition.source atau Data tambahan

Bagian physical, components, hierarchy, handling, structure, provenance, market, dan observation di details dijelaskan di Data Packaging Intelligence. Berkas tambahan disimpan di tabel product_media (kind foto/dokumen, media_type, r2_key, mime, bytes, sha256, draft_id, product_id).

Tabel Keterangan
product_categories id (slug), parent_id (null = utama), name, sort_order, external_refs (JSON { bpom, openFoodFacts, other }). Dua tingkat
catalog_product_revisions Satu baris per suntingan produk terbit: product_id, revision (revisi sebelum disunting), snapshot_json (produk, detail, alias), edited_by, created_at
Perubahan Keterangan
product_photos.side Label bebas (bukan lagi satu per sisi); note opsional. Kolom unik (draft_id, side) dihapus
catalog_products.pack_label Jenis varian jumlah: renceng, pak, inner, dus, karton, bundle, paket, lainnya (kosong untuk produk satuan)
contained_product_id + contained_qty Varian menunjuk produk satuan dan jumlah isinya
trade_item_level Varian: multipack (renceng/pak/inner/bundle/paket), case (dus/karton), other
Draft variants[] { packLabel, containedQty, gtin14?, name? }; menjadi produk katalog saat Publish