กำลังเชื่อมต่อฐานข้อมูล...
1️⃣ เลือกข้อมูลนำเข้า
ยังไม่ได้เลือกไฟล์ — เลือกไฟล์แล้วระบบจะยังไม่ประมวลผลจนกว่าจะกดปุ่มขั้นที่ 3
2️⃣ ตรวจความพร้อมของข้อมูล
3️⃣ สั่งประมวลผล / บันทึก
📂 หรือเรียกดูรายงานเก่า
💡 ลำดับที่แนะนำ: เลือกวันที่ + ไฟล์ → กด "ตรวจสอบข้อมูล" → กด "ประมวลผลรายงาน" → ตรวจตัวเลขบนหน้าจอ → ถ้าถูกต้องจึงกด "บันทึกผลลงฐานข้อมูล"
0% ของพอร์ต
ค้างชำระ 1-10 วัน
0.00 บาท
ค้างชำระ 11-30 วัน
0.00 บาท
ค้างชำระ 31-60 วัน
0.00 บาท
ค้างชำระ 61-90 วัน
0.00 บาท
NPL (> 90 วัน)
0.00 บาท
| ร้านค้า | 1-10 | 11-30 | 31-60 | 61-90 | NPL | ส่งงาน | % 1-30 | % 31-90 | % NPL | % รวมค้าง |
|---|---|---|---|---|---|---|---|---|---|---|
| ยังไม่มีข้อมูล | ||||||||||
| เลขที่สัญญา | ชื่อ-นามสกุล | ร้านค้า | เบอร์โทร | รุ่นสินค้า | ค้าง (วัน) | ยอดผ่อนงวดละ |
|---|---|---|---|---|---|---|
| ยังไม่มีข้อมูล | ||||||
K1 · สัดส่วนลูกค้าผิดนัดแล้วกลับมาชำระ (รายวัน)
-
ลูกค้าที่ผิดนัดชำระ 1 วันก่อนหน้า มาชำระในวันนี้
K2 · ลูกค้าชำระรายวัน (ครบกำหนดวันนี้)
-
ครบกำหนดวันนี้ตาม "ชำระทุกวันที่" · ชำระแล้ว ÷ ที่ต้องชำระ
K3 · สัดส่วนลูกค้าผิดนัดชำระรายเดือน (คงค้าง)
-
ผิดนัดต้นเดือนที่ยังไม่ชำระ ÷ ผิดนัดต้นเดือน
K7 · สัดส่วนการเลื่อนระดับ 4→NPL ต่อสัญญาใหม่
-
เมื่อวานระดับ 4 วันนี้เป็น NPL ÷ สัญญาใหม่ที่เพิ่มวันนี้
K11 · สัดส่วนหายจากผิดนัด (30 วัน rolling)
-
ผิดนัด ณ 30 วันก่อน แล้ววันนี้ไม่ค้างแล้ว ÷ ผิดนัด ณ 30 วันก่อน
K13 · สัญญาผิดนัดที่หายไปจากระบบ (คาดว่าปิดสัญญา)
-
ผิดนัดเมื่อวาน แต่ไม่พบในไฟล์วันนี้ ÷ ผิดนัดเมื่อวานทั้งหมด
เงินดาวน์ ÷ ราคาสินค้า · เฉพาะสัญญาที่ยังไม่เคยชำระงวดใดเลย และผิดนัดระดับ 1-10 หรือ 11-30 วัน
คอลัมน์สุดท้าย = จำนวนผิดนัดของช่วงดาวน์นั้น ÷ สัญญาทั้งพอร์ต (ไม่ใช่เฉพาะที่มีข้อมูลเงินดาวน์)
| ช่วง % ดาวน์ | ทั้งหมด | ผิดนัด 1-2 | % ในช่วงดาวน์นี้ | % เทียบผิดนัด 1-2 ทั้งหมด | % ต่อสัญญาทั้งพอร์ต |
|---|---|---|---|---|---|
| - | |||||
เงินดาวน์ ÷ ราคาสินค้า · เฉพาะสัญญาที่ยังไม่เคยชำระงวดใดเลย และผิดนัดระดับ 31-60, 61-90 หรือ NPL
คอลัมน์สุดท้าย = จำนวนผิดนัดของช่วงดาวน์นั้น ÷ สัญญาทั้งพอร์ต (ไม่ใช่เฉพาะที่มีข้อมูลเงินดาวน์)
| ช่วง % ดาวน์ | ทั้งหมด | ผิดนัด 3-5 | % ในช่วงดาวน์นี้ | % เทียบผิดนัด 3-5 ทั้งหมด | % ต่อสัญญาทั้งพอร์ต |
|---|---|---|---|---|---|
| - | |||||
อ้างอิงจากคอลัมน์ "สินทรัพย์" ของแต่ละสัญญา
| รุ่น | จำนวนเครื่องผิดนัด | % ของเครื่องที่ส่งทั้งหมด | % ของเครื่องที่ผิดนัดทั้งหมด |
|---|---|---|---|
| - | |||
ตัวเลขบน = จำนวนสัญญาที่อยู่ระดับนั้น ณ ช่วงเวลานั้น · % ล่าง = เปลี่ยนแปลงเทียบกับช่องถัดไปทางขวา (ช่วงก่อนหน้า) ไม่ใช่เทียบกับวันนี้ทุกช่อง จะได้เห็นว่าแต่ละเดือนขยับเท่าไหร่
สีแดง = เพิ่มขึ้น · สีเขียว = ลดลง · ช่อง "1 ปีก่อน" ไม่มี % เพราะไม่มีช่วงที่เก่ากว่าให้เทียบ · ช่อง "6 เดือนก่อน" เทียบกับ 1 ปีก่อน จึงเป็นระยะ 6 เดือน ไม่ใช่ 1 เดือน · ช่วงที่ยังไม่มี snapshot จะขึ้น "ไม่พบข้อมูล"
| - |
คลิกที่หัวตารางเพื่อเรียงลำดับ (คลิกซ้ำเพื่อสลับ มาก↔น้อย)
| ต้องมีข้อมูลอย่างน้อย 2 วันจึงจะคำนวณได้ |
ผิดนัด ณ เมื่อวาน
-
กลับมาชำระวันนี้
-
คงเหลือ (ยังผิดนัด)
-
คิดเป็น
-
*นับเป็นจำนวนสัญญา คำนวณจากจำนวนวันค้างชำระ (DPD) นับถอยหลังสู่เส้นแบ่งวันที่ 11, 31, 61, 91
| ระดับที่จะเปลี่ยนไป | อีก 1 วัน | อีก 2 วัน | อีก 3 วัน | อีก 4 วัน | อีก 5 วัน | อีก 6 วัน | อีก 7 วัน |
|---|---|---|---|---|---|---|---|
| รอดำเนินการ... | |||||||
ยอดคงค้างเป็นสัญญาทั้งหมดในระดับนั้น ณ วันที่ของรายงาน (ไม่ตัดด้วยช่วงเวลา) · ช่องพยากรณ์นับสะสม (ภายใน 14 วัน = รวม 7 วันแรกด้วย) สมมติว่าไม่มีใครจ่ายเลย
| ระดับที่จะเปลี่ยนไป | สัญญาค้างใน ระดับนี้ทั้งหมด |
สะสม — จะข้ามเส้นแบ่งภายใน | เฉลี่ย ต่อวัน |
คาดทั้งเดือน (30 วัน) |
|||
|---|---|---|---|---|---|---|---|
| 7 วัน | 14 วัน | 21 วัน | 30 วัน | ||||
| รอดำเนินการ... | |||||||
ใช้ความน่าจะเป็นที่จะ "ไปถึงเส้นแบ่งจริง" จากสถิติในอดีต (แท็บ Cure Curve) คูณกับสัญญาแต่ละ DPD — ตัวเลขนี้สมจริงกว่าตารางบน
| ระดับที่จะเปลี่ยนไป | สัญญาค้างใน ระดับนี้ทั้งหมด |
สะสม (ปรับแล้ว) — ภายใน | เฉลี่ย ต่อวัน |
คาดทั้งเดือน (30 วัน) |
|||
|---|---|---|---|---|---|---|---|
| 7 วัน | 14 วัน | 21 วัน | 30 วัน | ||||
ยอดรวม "ผ่อนงวดละ" ที่ "วันที่งวดถัดไป" ตรงกับวันนั้นๆ
| วันที่ (Day) | วันที่ครบกำหนด | ยอดรับชำระคาดการณ์ (บาท) |
|---|---|---|
| รอดำเนินการ... | ||
อัปไฟล์รวมทั้งหมดทับของเดิมได้เสมอ ระบบจะ label ใหม่ทุกครั้งที่คำนวณ · เก็บไว้ในฐานข้อมูลแล้วไม่ต้องอัปซ้ำทุกวัน
สัญญาที่หายไปแล้วไม่พบในสองไฟล์นี้ ถือเป็น เปลี่ยนสัญญา (ปิดสัญญาเก่า เปิดสัญญาใหม่)
🔧 Stock คืนเครื่อง (StockMaster_All_*.xlsx)
-
✅ สัญญาที่ปิดแล้ว (contract export ของสัญญาปิด)
-
ทำครั้งเดียวก่อนใช้งานครั้งแรก · ไม่ต้องอัปไฟล์ contract ใหม่ เพราะ snapshot ที่อยู่ในฐานข้อมูลแล้วมีข้อมูลครบพอ
· อ่าน snapshot ทีละ 2 วันติดกัน (~350 KB/วัน) แล้วเขียนเอกสารเล็กๆ ลง dpd_trans
⚠️ 250 วันจะดาวน์โหลดราว 90 MB ใช้เวลาหลายนาที · ห้ามปิดหน้าเว็บระหว่างทำงาน · กดหยุดได้ตลอด แล้วรันต่อทีหลังโดยติ๊ก "ข้ามวันที่มีข้อมูลแล้ว"
อ่านเฉพาะ dpd_trans ซึ่งเป็นเอกสารเล็ก (~8 KB/วัน) ไม่ต้องโหลด snapshot · วันที่บันทึกก่อนเวอร์ชันนี้จะไม่มีข้อมูล ต้องรัน "นำเข้าย้อนหลัง" ซ้ำ
นับเฉพาะที่ DPD กลับเป็น 0 · "จ่ายบางส่วน" แยกไว้เพราะยังค้างอยู่
| ช่วง DPD ตอนจ่าย | หายผิดนัดสนิท | % ของ cure ทั้งหมด | จ่ายบางส่วน | คืนเครื่อง | ปิดครบ | เปลี่ยนสัญญา |
|---|
competing risks — 5 ทางออกรวมกันได้ 100% เสมอ
| อยู่ที่ DPD | n | กลับมาจ่าย | คืนเครื่อง | ปิดครบ | เปลี่ยนสัญญา | ยังค้างต่อ | โอกาสถึงเส้นถัดไป |
|---|
-
| ระดับปัจจุบัน | จำนวนสัญญา | คาดว่าจะเลื่อนระดับ | % | คาดว่าจะกลับมาจ่าย | % |
|---|
เลือกวันที่แล้วกด "ดึงข้อมูลจากฐานข้อมูล" หรืออัปโหลดไฟล์ contract แล้วกด "ประมวลผลรายงาน" ก่อน
-
-
เก็บได้ + ตัดหนี้ + ขายพอร์ต · ตั้งต้น 0 = สมมติว่า NPL ไม่มีทางออก
สัญญา > 90 วัน
สัญญา active ทั้งหมด
ให้ NPL คงที่ที่ระดับเดิม
-
ให้ลดลง 1 จุด% ต่อเดือน
-
ให้ลงถึง 5% ใน 12 เดือน
-
r(t) = ( N₀ + (a − w)·t ) ÷ ( T₀ + g·t ) · เส้นประคือเป้าหมาย 5%
| เป้าหมาย | สัญญาใหม่/วัน | ต่อเดือน | เทียบแผนปัจจุบัน | NPL / สัดส่วน ณ วันเป้าหมาย |
|---|---|---|---|---|
| รอข้อมูล... | ||||
"ลด 1 จุด%" คิดแบบจุดเปอร์เซ็นต์ (เช่น 9.64% → 8.64%) · ถ้าหมายถึงลดเชิงสัมพัทธ์ 1% ดูแถวสุดท้าย
-
-
-
-
*นับจำนวนสัญญา (ไม่ใช่ยอดเงินแบบแท็บ Customer Aging) จาก DPD ที่นับถอยหลังสู่วันที่ 11, 31, 61, 91
| ระดับที่จะเปลี่ยนไป | อีก 1 วัน | 2 | 3 | 4 | 5 | 6 | 7 | รวม | เฉลี่ย/วัน |
|---|---|---|---|---|---|---|---|---|---|
| รอข้อมูล... | |||||||||
ข้อจำกัด: ใช้ค่าเฉลี่ย 7 วันแทนอัตราไหลเข้าระยะยาว · ตัวหารเป็นพอร์ตสะสมยังไม่หักสัญญาที่ปิด (ถ้ามีสัญญาปิดวันละ c ให้ลด g ที่กรอกลงเท่ากับ c) · สัญญาใหม่ถูกนับว่ายังไม่เป็น NPL ในช่วงที่พิจารณา
Local AI ส่วนใหญ่เว้นว่างได้
ชื่อโมเดลเปลี่ยนตามเวลา — ดึงจาก API จริงดีที่สุด
ทำครั้งเดียวก่อนใช้งานครั้งแรก · สรุปตัวเลขรายวันเป็นเอกสารเล็กๆ ใบเดียว เพื่อให้ AI ถามแนวโน้มได้เร็วโดยไม่ต้องดึงรายงานทั้งก้อน
⚠️ เปิดการส่งข้อมูลส่วนบุคคลอยู่ — ชื่อและเบอร์โทรลูกค้าจะถูกส่งไปยังเซิร์ฟเวอร์ของผู้ให้บริการ AI มีความเสี่ยงด้าน PDPA ถ้าไม่ใช่ Local AI
Enter = ขึ้นบรรทัดใหม่ · Ctrl/Cmd + Enter = ส่ง
เลือกวันที่ (ตั้งแต่ 1 ม.ค. 2026 ถึงวันปัจจุบัน) → เลือกไฟล์ของวันนั้น → กดปุ่ม · ถ้าวันนั้นมีข้อมูลอยู่แล้ว ระบบจะเขียนทับด้วยไฟล์ใหม่
ยังไม่ได้เลือกไฟล์
ประมวลผลและบันทึกลงฐานข้อมูลในขั้นตอนเดียว (จะถามยืนยันถ้ามีข้อมูลเดิม)
เลือกไฟล์หลายไฟล์พร้อมกันได้เลย ระบบจะอ่านวันที่จากชื่อไฟล์ (เช่น contract_1_9_2569 01_22_49.xlsx → 01/09/2026)
แล้วทยอยประมวลผลเรียงจากวันเก่าไปวันใหม่ เพื่อให้ K Factor ของแต่ละวันเทียบกับวันก่อนหน้าได้ถูกต้อง
| # | ชื่อไฟล์ | วันที่ตรวจพบ | สถานะใน DB | สถานะ |
|---|---|---|---|---|
| ยังไม่ได้เลือกไฟล์ | ||||
⚠️ ไฟล์ละประมาณ 20–40 วินาที · ห้ามปิดหน้าเว็บระหว่างประมวลผล · ถ้าชื่อไฟล์ไม่มีวันที่ ระบบจะข้ามและให้แก้ชื่อไฟล์เป็นรูปแบบ contract_วัน_เดือน_ปี
มีข้อมูล · ยังไม่มี · อนาคต · คลิกวันที่มีข้อมูลเพื่อเปิดรายงานของวันนั้น
ทุกครั้งที่อัปโหลดไฟล์ ระบบจะบันทึก 2 อย่างลง Firebase Firestore: (1) สรุปรายงาน (daily_reports) และ (2) Snapshot สัญญาทั้งพอร์ตแบบบีบอัด (daily_snapshots) เพื่อใช้เทียบวันต่อวันสำหรับ K Factor
| วันที่ข้อมูล | สัญญาทั้งหมด | ค้างชำระ | ยอดค้าง (บาท) | Snapshot | บันทึกเมื่อ | เปิดดู |
|---|---|---|---|---|---|---|
| กดปุ่มด้านบนเพื่อโหลด | ||||||
artifacts/{appId}/public/data/
├── daily_reports/{YYYY-MM-DD} ← สรุปรายงาน + K Factor (ใช้แสดง Dashboard ย้อนหลัง)
├── daily_snapshots/{YYYY-MM-DD} ← Snapshot ทั้งพอร์ต (gzip + base64) ~350 KB/วัน
├── dpd_trans/{YYYY-MM-DD} ← ฐานของ Cure Curve: การเปลี่ยนแปลงราย DPD + รายการสัญญาที่หาย (~8 KB/วัน)
└── reference/stock_master ← ไฟล์ Stock คืนเครื่อง (อัปทับทั้งไฟล์)
reference/closed_contracts ← ไฟล์สัญญาที่ปิดแล้ว (อัปทับทั้งไฟล์)
[contractNo, storeIdx, ค่างวด, วันครบกำหนด, งวดล่าสุด, วันชำระล่าสุด, ชำระทุกวันที่, typeIdx]