Production Run
🧠 แนวคิด SCW (Stop → Call → Wait)
Phase | คำอธิบาย | เหตุการณ์สำคัญที่ต้องบันทึก |
---|---|---|
Stop | เครื่องหยุดเพราะปัญหา | เวลาเริ่มหยุด, เหตุผล, ผู้แจ้ง |
Call | Operator กดเรียกช่าง | เวลาเรียก, คนที่ถูกเรียก |
Wait | ระยะเวลารอช่าง, จนช่างมาถึงและแก้ปัญหาเสร็จ | เวลามาถึง, เวลาซ่อมเสร็จ, หมายเหตุ |
📦 สิ่งที่ต้องบันทึก
✅ ตาราง: scw_logs (ตัวอย่างการออกแบบ)
CREATE TABLE scw_logs ( id SERIAL PRIMARY KEY, machine_code VARCHAR(50), -- เครื่องที่เกิด SCW operator_id VARCHAR(50), -- คนที่กด Call stop_reason TEXT, -- เหตุผลหยุด เช่น 'sensor error' stop_time TIMESTAMP, -- เวลาเครื่องหยุด call_time TIMESTAMP, -- เวลากด Call response_person_id VARCHAR(50), -- คนที่มาซ่อม arrive_time TIMESTAMP, -- เวลามาถึง resolve_time TIMESTAMP, -- เวลาซ่อมเสร็จ remark TEXT, -- หมายเหตุเพิ่มเติม created_at TIMESTAMP DEFAULT NOW() );
🧩 รูปแบบการเก็บข้อมูล
⏱️ ตัวอย่าง Flow:
เครื่องหยุด (Stop) → เก็บ stop_time + reason
Operator กด Call → บันทึก call_time, operator_id
Technician รับเคสและมาถึง → บันทึก arrive_time, response_person_id
แก้ไขเสร็จ → บันทึก resolve_time, remark
🖥️ ฝั่ง UI ควรมีปุ่ม:
ปุ่ม | เก็บอะไร |
---|---|
📍 "แจ้งซ่อม (Call)" | ส่งข้อมูล machine_id, stop_reason, operator_id, เวลา call_time |
✅ "ถึงที่แล้ว (Arrive)" | response_person_id, เวลา arrive_time |
🛠️ "แก้ไขเสร็จ (Resolve)" | เวลา resolve_time, หมายเหตุ |
🔌 การเชื่อมต่อ Ignition (UI → Database)
✅ 1. ใช้ Perspective Button + script:
# Button: "แจ้งซ่อม" machine = self.view.params.machine_code operator = self.session.props.auth.user.username reason = self.getSibling("TextArea").props.text call_time = system.date.now() system.db.runPrepUpdate( "INSERT INTO scw_logs (machine_code, operator_id, stop_reason, stop_time, call_time) VALUES (?, ?, ?, ?, ?)", [machine, operator, reason, call_time, call_time], database="mssql_db" )
✅ 2. ปรับข้อมูลเมื่อมีการ "มาถึง" หรือ "แก้ไขเสร็จ":
# Button: "ถึงที่แล้ว" system.db.runPrepUpdate( "UPDATE scw_logs SET arrive_time = ? WHERE id = ?", [system.date.now(), selected_scw_id], database="mssql_db" ) # Button: "แก้ไขเสร็จ" system.db.runPrepUpdate( "UPDATE scw_logs SET resolve_time = ?, remark = ? WHERE id = ?", [system.date.now(), self.getSibling("Remark").props.text, selected_scw_id], database="mssql_db" )
📊 วิเคราะห์ข้อมูล SCW ได้อย่างไร?
ตัวชี้วัด (KPI) | สูตรการคำนวณ |
---|---|
🔴 MTTR (Mean Time to Repair) | resolve_time - stop_time |
🕒 Response Time | arrive_time - call_time |
🟡 Wait Time | resolve_time - call_time |
📈 Pareto Stop Reason | GROUP BY stop_reason ORDER BY COUNT DESC |