{{ toast.text }}
NS
Scrap Production
กำลังโหลดข้อมูล...
NS
📊 ภาพรวมวันนี้
{{ dateLabel }} · {{ dateShort }}
{{ jobsOfSelectedDate.filter(j=>j.status==='in_progress').length }} กำลังทำ
{{ jobsOfSelectedDate.length }}
งานทั้งหมด
{{ jobsOfSelectedDate.filter(j=>j.status==='completed').length }}
เสร็จแล้ว
{{ uniquePartnersOfDay }}
ลูกค้า
งานวันนี้ตามประเภท
{{ dailySummaryVisible.length }} ประเภท
📭
ยังไม่มีงานในวันนี้
กด ➕ ด้านล่างเพื่อเปิดงานใหม่
{{ ptype(row.type).icon }}
{{ row.jobs }} งาน
{{ ptype(row.type).name }}
{{ row.partnerCount }} ลูกค้า
รับ {{ fmtShort(row.output) }} กก.
{{ row.jobs }} งานออก
ส่ง {{ fmtShort(row.output) }} กก. · {{ row.partnerCount }} ตู้/เจ้า
{{ row.bales }} ก้อน
{{ fmtShort(row.output) }} กก.
{{ fmtShort(row.output) }} กก.
{{ row.jobs }} รอบ
{{ Math.round(row.totalMinutes) }}' / {{ row.targetMinutes }}' {{ row.timePct <= 100 ? '✅' : row.timePct <= 130 ? '⚠️' : '🔴' }}
⏱ ใช้เวลารวม {{ Math.round(row.totalMinutes) }}'
📋
รายงานสรุป
{{ dateShort }}
🏢 รวมทั้งโรง

วันนี้มีงาน {{ jobsOfSelectedDate.length }} งาน ใน {{ activeWhCount }} โกดัง กับลูกค้า {{ uniquePartnersOfDay }} เจ้า

  • 📥 รับเข้าจาก {{ receivePartnersCount }} ลูกค้า · {{ fmtShort(receiveTotalKg) }} กก.
  • 🚛 ขึ้นออก {{ loadCount }} งาน · {{ loadPartnersCount }} ลูกค้า · {{ fmtShort(loadTotalKg) }} กก.
  • 📦 อัดก้อน {{ baleTotalCount }} ก้อน · {{ fmtShort(baleTotalKg) }} กก.
  • 🔀 คัดแยก {{ fmtShort(sortTotalKg) }} กก. · {{ sortCount }} รอบ
🏗 แยกรายโกดัง
— ไม่มีโกดังทำงาน —
🏗
{{ w.name }}
{{ w.code }} · {{ w.in_charge || '—' }}
{{ w.jobCount }} งาน
  • 📥 รับ {{ w.receivePartnerCount }} ลูกค้า · {{ fmtShort(w.receiveKg) }} กก.
  • 🚛 ขึ้น {{ w.loadJobs }} งาน · {{ w.loadPartnerCount }} ลูกค้า · {{ fmtShort(w.loadKg) }} กก.
  • 📦 อัดได้ {{ w.baleCount }} ก้อน · {{ fmtShort(w.baleKg) }} กก.
  • 🔀 คัดแยก {{ fmtShort(w.sortKg) }} กก.
รายโกดัง
{{ warehouses.length }} แห่ง · {{ activeWhCount }} ทำงาน
📭
ไม่มีงานในวันที่เลือก
กด ➕ เพื่อเปิดงานใหม่
{{ detailWh.code }}
{{ detailWh.name }}
หัวหน้า: {{ detailWh.in_charge || '—' }}
ไม่มีงานในโกดังนี้สำหรับวันที่เลือก
{{ ptype(row.type).icon }}
{{ ptype(row.type).name }}
{{ row.jobs }} งาน · {{ row.partnerCount }} เจ้า
{{ Math.round(row.totalMinutes) }}' / เป้า {{ row.totalTargetMinutes }}' {{ row.totalMinutes <= row.totalTargetMinutes ? '✅ ทันเวลา' : '🔴 ช้า' }}
⏱ ใช้เวลารวม {{ Math.round(row.totalMinutes) }}'
📜 รายการงาน ({{ jobsInWh(detailWhId).length }})
— ไม่มีงาน —
เลือกวันที่ดูรายงาน
🌐 รวมทั้งหมด
รวมทุกโกดัง ทุกวัน ({{ allTimeSummary.totalDays }} วัน · {{ allTimeSummary.totalJobs }} งาน)
📥 รับสินค้า
รวมน้ำหนัก
{{ fmtShort(allTimeSummary.totalReceiveKg) }}กก.
🔀 คัดแยก
รวมน้ำหนัก
{{ fmtShort(allTimeSummary.totalSortKg) }}กก.
📦 อัดก้อน
รวมจำนวน
{{ fmt(allTimeSummary.totalBales) }}ก้อน
🚛 ขึ้นสินค้า
รวมน้ำหนัก
{{ fmtShort(allTimeSummary.totalLoadKg) }}กก.
🤝 ผู้ส่ง/ลูกค้า
ไม่ซ้ำเจ้า
{{ allTimeSummary.uniquePartners }}เจ้า
⚙️ ตั้งค่า
⏱ เป้าเวลามาตรฐาน /งาน
เฉพาะรับสินค้า + ขึ้นสินค้า (คัดแยก/อัดก้อนไม่จำกัดเวลา)
{{ pt.icon }}
{{ pt.name }}
นาที
🏗 โกดัง ({{ warehouses.length }})
⚙️ เครื่องจักร ({{ machines.length }})
🔗 การเชื่อมต่อ
{{ whEditorIsNew ? '+ โกดังใหม่' : '✏️ แก้ไขโกดัง' }}
🎯 เป้าน้ำหนัก/ก้อน /วัน
เฉพาะคัดแยก + อัดก้อน (รับ/ขึ้น เทียบเฉพาะเวลา)
{{ mcEditorIsNew ? '+ เครื่องใหม่' : '✏️ แก้ไขเครื่อง' }}
📲 LINE Notifications
เด้งเข้ากลุ่ม LINE เมื่อเปิด/ปิดงาน
⚠️ Token เก็บใน Cloudflare Worker — ไม่ใส่ใน frontend
📖 วิธีตั้งค่า
  1. สร้าง LINE Bot ที่ developers.line.biz
  2. หา Group ID ผ่าน webhook.site
  3. Deploy Cloudflare Worker (ใส่ LINE_TOKEN + LINE_GROUP_ID ใน Variables)
  4. วาง URL Worker ในช่องด้านบน
  5. กดทดสอบส่งข้อความ
📄 ดูคู่มือเต็มใน LINE_SETUP_GUIDE.md
💬 ประวัติข้อความล่าสุด {{ lineMessages.length }} ข้อความ
ยังไม่มีข้อความ — เปิด/ปิด JOB หรือกดทดสอบ
NS
{{ lineConfig.groupName }}
{{ msg.text }}
{{ msg.time }}
✓ ส่งแล้ว ⏳ กำลังส่ง ✗ ส่งไม่ได้ ⊘ ปิดอยู่
{{ msg.error }}
✅ ปิดงาน — กรอกผลผลิต
{{ ptype(finishJob_data.process_type).icon }} {{ jobLabel(finishJob_data) }}
ใช้เวลา {{ Math.round((finishJob_data._elapsed_snapshot||0)/60) }} นาที
{{ jobEditor.id ? 'แก้ไขงาน' : 'งานใหม่' }}
ประเภทงาน
default {{ ptype(jobEditor.process_type)?.default_minutes }}'
+ หมายเหตุ (เลือก)
{{ jobDetail.job_no }}
{{ ptype(jobDetail.process_type).icon }} {{ ptype(jobDetail.process_type).name }}
{{ jobLabel(jobDetail) }}
{{ getWhName(jobDetail.warehouse_id) }} · {{ jobDetail.supervisor_name }}
🤝 {{ jobDetail.partner_name }}
เวลาที่ใช้
{{ formatDuration(liveElapsed(jobDetail)) }}
เป้า {{ jobDetail.target_minutes }} นาที {{ jobTimePct(jobDetail).toFixed(0) }}%
สถานะ: {{ statusLabel(jobDetail.status) }}
ผลผลิต
{{ fmt(jobDetail.bale_count) }} ก้อน · {{ fmt(jobDetail.output_kg) }} กก.
{{ fmt(jobDetail.output_kg) }} กก. คัดแยก
{{ fmt(jobDetail.output_kg) }} กก.
รายการสินค้า
{{ item.product_name }} {{ fmt(item.weight_kg) }} กก.
รวม {{ fmt(outputItemsTotal(jobDetail)) }} กก.
หมายเหตุ
{{ jobDetail.notes }}