Master Data ไม่ใช่แค่ทะเบียน: มันคือภาษากลางของโรงงาน
อ่าน QS-TOI-109 → 101 → 104 → 102 เพื่อเห็นว่าประเภทสินค้า ลายสี และ BOM ประกอบเป็น product identity อย่างไร
ลำดับที่ต้องสอน
109
ประเภทและคุณลักษณะวัสดุ
→ประเภทและคุณลักษณะวัสดุ
101
ทะเบียนสินค้า/วัตถุดิบ
→ทะเบียนสินค้า/วัตถุดิบ
104
ลาย สี งานชุบ และเจ้าของ
→ลาย สี งานชุบ และเจ้าของ
102
BOM version และ component
BOM version และ component
ถ้าสอน BOM ก่อน master data ผู้เรียนจะเข้าใจ BOM เป็นเพียง tree แต่จะไม่เห็นว่าแต่ละ node มีหน่วย นโยบายจัดหา ลายสี เวอร์ชัน วันมีผล และเจ้าของข้อมูลกำกับอยู่
Case 1: ชื่อ field ไม่เท่ากับความหมาย
| Legacy concept | ความหมายจากการ reverse | ชื่อใหม่ที่เสนอ |
|---|---|---|
| Version | BOM/product version แบบรุ่นรถ ไม่ใช่ revision workflow ซับซ้อน | bom_version |
| StatusWeight A/B/C | priority จากราคา/ระยะเวลา และสัมพันธ์ระยะขนส่งในคลัง | handling_priority_class + mapping note |
| ProcessTime | ค่าเฉลี่ยเวลาต่อหน่วยสำหรับ backward/forward planning | process_time_seconds |
| ProcessSetupTime | เวลาตั้งเครื่องต่อ batch แต่บางหน้าเก่าเคยใช้ผิดเป็น Lead Time | setup_time_seconds |
| Source | BUY/MADE/SUBCONTRACT policy | supply_method |
Case 2: BOM ที่ปลอดภัย
สิ่งที่ระบบเดิมทำได้ดี
- เห็นโครงสร้างยาวทั้งต้น
- รองรับ BOM หลายชั้นและสถานะอะไหล่
- เชื่อม quantity, unit conversion และ stock
- ใช้ tree เดียวกันในต้นทุนและวางแผน
สิ่งที่ต้องเสริม
- cycle detection ตอนบันทึกและตอน query
- effective date และ soft delete
- เลือก BOM active version อย่าง deterministic
- เก็บ reason/audit เมื่อเปลี่ยน component
Lab: สร้าง BOM migration oracle
- เลือกสินค้า 3 แบบ: BOM ปกติ, หลายชั้น, และมี cycle จำลอง
- สร้าง expected flattened rows: depth, path, cumulative quantity และ unit
- เปรียบเทียบ recursive SQL กับ array preload เพื่อตรวจ N+1
- ทดสอบ quantity rounding policy ของ PCS/KG/หน่วยแปลง
- เปรียบเทียบผลก่อนและหลัง soft delete component
- ยืนยันว่า legacy key ทุก node trace กลับได้
ประเด็นอภิปราย
Normalization ที่ดีไม่ได้หมายถึงเอาความซับซ้อนออกทั้งหมด แต่ทำให้ความซับซ้อนมีชื่อ มีขอบเขต และตรวจย้อนหลังได้ โดย UI ยังต้องง่ายสำหรับพนักงานหน้างานคำถามประเมินความเข้าใจ
- ทำไมลาย/สีควรเป็น variant ไม่ใช่ข้อความใน item master?
- เมื่อ BOM มีสอง version ที่วันมีผลทับกัน ระบบควรทำอย่างไร?
- การปัดจำนวน component ควรเกิดก่อนหรือหลังหัก stock?
- orphan component ควรถูกซ่อน ลบ หรือแสดงพร้อมสถานะ?