Tab 6

# Products

Products คือศูนย์กลาง Product Map ที่ bot ใช้จับคู่ CSV ID กับ SKU ชื่อสินค้า รูป สถานะ และข้อมูลสำรองสำหรับ Queue

## Source of truth

### Product Map

ข้อมูลที่ bot ใช้จริง เก็บใน `products_map_custom` หรือ bundled `data/products_map.json`

### Shop Catalog

snapshot จาก TikTok Shop Showcase ใช้ตรวจว่าตะกร้ายัง live, มีรูป, มี stock และ match กับ Product Map ได้หรือไม่

## Step by step - ตรวจ Product Map ก่อน run

1. เปิดแถบ `Products`
2. ดู stat ด้านบน: Total, Active และ Fav
3. ใช้ช่อง search ค้นหา CSV ID, SKU หรือชื่อสินค้า
4. ใช้ filter `Fav`, `Active`, ร้าน, tag หรือ catalog status เพื่อหา row ที่ต้องแก้
5. กด `Check List` เพื่อเทียบ Product Map กับ Shop Catalog ล่าสุดและเติมรูปเท่าที่หาได้
6. ดู badge สถานะ broken, missing, not live, out of stock หรือ price changed
7. แก้ row ที่ผิดก่อนกลับไป Build Queue

## Step by step - เพิ่มสินค้าเอง

1. กด `+ เพิ่ม`
2. กรอก `CSV ID` ให้ตรงกับเลขในชื่อไฟล์วิดีโอ
3. กรอก `SKU / Product Code` ให้ตรงกับสินค้าใน TikTok Shop
4. กรอก `Custom Name` ถ้าต้องการใช้ชื่อสั้นสำหรับ caption
5. ตั้ง `Active` ถ้าต้องการให้ bot ใช้ row นี้
6. กด Save แล้วตรวจว่ารายการใหม่ขึ้นในตาราง

## Best CSV / Best+ ใช้เมื่อไร

Products มีปุ่ม copy สองแบบเพื่อแยกงานให้ชัด: `Best CSV` ใช้ copy row แบบตรงตัว ส่วน `Best+` ใช้ copy แล้วติดธง best seller/favorite ให้ row ใหม่

1. เลือกหรือเปิด row สินค้าที่ต้องการ copy
2. กด `Best CSV` ถ้าต้องการ copy exact: ชื่อ, SKU, ราคา, รูป, active/favorite และ metadata จะเหมือนต้นฉบับ ยกเว้น CSV ID ใหม่
3. กด `Best+` ถ้าต้องการ copy เป็นตะกร้า best seller โดยระบบจะตั้ง `csv_group=best_seller`, `is_bestseller=true`, `is_favorite=true`
4. ใส่ CSV ID ใหม่
5. ระบบจะบันทึกลง Product Map และ filter ตารางไปที่ CSV ID ใหม่เพื่อให้ตรวจทันที

อย่าใช้แทน Bulk Add ปกติ: duplicate SKU ปกติจะถูกกันไว้เพื่อป้องกันข้อมูลซ้ำ ใช้ Best CSV หรือ Best+ เฉพาะกรณีตั้งใจให้ SKU เดิมอยู่หลาย CSV ID เท่านั้น

## Row tools ล่าสุดใน Products

เครื่องมือ | ใช้ทำอะไร | ข้อควรจำ
--- | --- | ---
`Best CSV` | copy row ที่คลิกแบบ exact ไป CSV ID ใหม่ | ไม่เปลี่ยน best seller/favorite flag เอง เหมาะกับการทำ mapping ซ้ำที่ต้องเหมือนต้นฉบับ
`Best+` | copy row ที่คลิกแล้ว mark เป็น best seller/favorite | เหมาะกับตะกร้าที่ตั้งใจให้เป็น best seller workflow
`Drag row` | ลากสลับลำดับสินค้าใน CSV ID เดียวกัน | ถ้าลากข้าม CSV ID ระบบจะไม่ reorder เพื่อกันข้อมูลผิดกลุ่ม
`Auto URL` | ดึงเลข 5 หลักขึ้นไปจาก TikTok Shop URL | อ่านได้ทั้ง path เช่น `/product/12345678` และ query เช่น `?product_id=87654321`

Undo/History: การ reorder และ copy ที่บันทึกผ่าน storage จะถูกครอบด้วย Change History เมื่อ Undo Center พร้อมใช้งาน

## Import / Export / Backup

ปุ่ม | ใช้ทำอะไร | คำแนะนำ
--- | --- | ---
`Import` | นำเข้า JSON หรือ CSV product map | ใช้ Merge เพื่อรวมข้อมูล ใช้ Replace เฉพาะตอนต้องการแทนทั้งหมด
`Export` | export product map เป็น JSON/CSV | ทำก่อนแก้จำนวนมาก
`Backup Export` | export chrome.storage ที่เกี่ยวข้องทั้งชุด | ใช้ย้ายเครื่องหรือเก็บ snapshot ก่อนทำงานใหญ่
`Backup Import` | restore backup JSON เข้า chrome.storage | ตรวจไฟล์ก่อน import เพราะจะเปลี่ยน state ใน extension
`Clear Products` | ล้าง product/catalog storage สำหรับ channel ใหม่ | อันตราย ต้อง backup ก่อน

## Shop Catalog panel ใน Products

1. ตั้ง `Auto` เป็นจำนวนสินค้าที่ต้องการสแกน เช่น 2000
2. ตั้ง `Delay` เพื่อหน่วงเวลาระหว่างหน้า ถ้าเว็บโหลดช้าให้เพิ่มค่า
3. เลือก `Img` mode: Matched สำหรับเก็บรูปเฉพาะที่ match, IDs สำหรับ metadata, All สำหรับทั้งหมด
4. กด `Auto Scan` เพื่อสแกนหลายหน้าตามจำนวน หรือ `Open + Scan` เพื่อเปิดหน้า Showcase และสแกน
5. หลังสแกนเสร็จ กด `Check List` เพื่ออัปเดตสถานะ product rows

ก่อน Clear Products: ใช้ Backup Export ก่อนทุกครั้ง เพราะการล้าง storage มีผลกับ Product Map และ Catalog state ที่ใช้ในหลายแถบ