ระบบจำลองการคำนวณค่าน้ำ — เทียบ 3 สูตร

ถอดสูตรจากระบบจริง CDS · Calculate_water_bill() + cal_water_bill() · ตั้งอัตราเอง · นำเข้าไฟล์บิลจริง (.xlsx/.csv) แล้วดูว่าต่างกันเท่าไหร่

1. อัตราขั้นต่ำ (เหมาจ่าย)

ใช้ชื่อฟิลด์เดียวกับ API จริง GET /v1/TH/water-manage/detail/{id}

2. ตารางขั้นราคา (water_rate_list)

ระบบจริงเรียงตาม water_rate_start จาก DB — เว็บนี้ .sort() ให้เองก่อนคำนวณทุกครั้ง กรอกสลับลำดับได้ผลไม่เพี้ยน

ตั้งแต่ (หน่วย)ถึง (หน่วย)ราคา/หน่วย (บาท)

บันทึกลง localStorage อัตโนมัติทุกครั้งที่แก้ — ไม่ต้องกด Save

3. ผลตรวจสอบการตั้งค่า

จำลองหน่วยเดียว — เทียบ 3 สูตรพร้อมกัน

ตารางไล่หน่วย

แถวสีแดง = หน้าผาราคา (ยอดกระโดดมากกว่าราคา 1 หน่วยของขั้นนั้น)

กราฟเปรียบเทียบ

MIN_KEPT MIN_DROPPED FLAT_TIER ● = จุดที่ยอดกระโดดผิดปกติ

แผงหน้าผาราคา (Price cliff)

รอยต่อก่อนหลังเพิ่มขึ้นราคา 1 หน่วยที่ควรเป็นสรุป

นำเข้าไฟล์บิลค่าน้ำ

รองรับ .xlsx (เช่น import_bill_water.xlsx) และ .csv — อ่านในเบราว์เซอร์ล้วน ไม่มีการอัปโหลดไปที่ไหน

ลากไฟล์มาวางที่นี่ หรือคลิกเพื่อเลือกไฟล์ คอลัมน์ที่ใช้: เลขมาตรเดือนนี้เลขมาตรเดือนก่อน = หน่วยที่ใช้ (หรือใช้คอลัมน์ หน่วยที่ใช้ โดยตรงถ้ามีค่า)

ตารางตรวจสอบความถูกต้อง (test vectors)

รันกับ อัตราตัวอย่าง เสมอ (ขั้นต่ำ 0-4 = 65.00 · 5-30 = 13.15 · 31-40 = 14.68 · 41-50 = 15.00 · 51-1000 = 15.33) ไม่เกี่ยวกับอัตราที่คุณตั้งไว้ — ใช้พิสูจน์ว่าเครื่องคิดเลขถูกต้อง

เคสช่องว่างระหว่างขั้น (ข้อ 5.2)

ตั้งแค่ 5-30 = 13.15 และ 41-50 = 15.00 (ไม่มีขั้น 31-40) แล้วใช้ 35 หน่วย

กฎ 3 ข้อที่ใช้จับผิดโค้ด (รันกับอัตราที่คุณตั้งไว้ตอนนี้)

3 สูตรต่างกันตรงไหน

MIN_KEPTMIN_DROPPEDFLAT_TIER (ปัจจุบัน)
ค่าเหมาจ่ายเมื่อใช้เกินขั้นต่ำเก็บไว้เป็นฐานทิ้งทิ้ง
เริ่มนับเงินจากหน่วยที่หน่วยถัดจากขั้นต่ำ11
สะสมทีละขั้นไหม✅ สะสม✅ สะสม❌ ขั้นเดียวคูณหมด
มีหน้าผาราคาไหม❌ ไม่มี❌ ไม่มีมี
ใช้ water_rate_start ทำอะไรเงื่อนไข breakเงื่อนไข breakไม่ใช้เลย
ช่องว่างระหว่างขั้น คิดที่ราคาขั้นก่อนหน้าขั้นก่อนหน้าขั้นถัดไป
ที่มาv3.0.2 (f578514)(61df574)2b58a58 ปัจจุบัน

MIN_KEPT

“จ่ายค่าเหมาขั้นต่ำก่อน แล้วหน่วยที่ใช้เกินมาค่อยคิดตามขั้นบันได เหมือนค่าโทรศัพท์แบบมีแพ็กเกจพื้นฐาน — แพงกว่า MIN_DROPPED เท่ากันทุกใบ”

MIN_DROPPED

“ไม่คิดค่าเหมาเลย คิดขั้นบันไดตั้งแต่หน่วยแรก เหมือนค่าน้ำประปานครหลวง — ยอดถูกที่สุดใน 3 แบบ”

FLAT_TIER

“ดูว่าใช้ทั้งหมดกี่หน่วย ตกอยู่ขั้นไหน แล้วคิดราคาขั้นนั้นกับทุกหน่วย — ใช้เพิ่มหน่วยเดียวค่าน้ำกระโดดได้หลายสิบบาท เพราะหน่วยก่อนหน้าถูกย้ายไปคิดเรทใหม่ทั้งหมด”

⚠️ หน้าผาราคาของ FLAT_TIER เป็นผลโดยตรงของกติกาที่เจ้าของงานสั่ง ไม่ใช่บั๊ก — เว็บนี้มีไว้ให้เห็นภาพก่อนตัดสินใจ ไม่ได้ตัดสินว่าสูตรไหนถูกหรือผิด

สถานะพิเศษที่ระบบจริงทำ

  • unit < 0 → คิด 0.00 บาท ทั้ง 3 สูตร
  • unit = 0 → ได้ค่าเหมาขั้นต่ำ (ไม่ใช่ 0.00) เพราะ 0 ≤ water_charge_end
  • ใช้เกินขั้นต่ำแต่ยังไม่ตั้งขั้นราคา → ระบบจริงตอบ HTTP 400 GB_SETTING_WATER_FAIL บันทึกบิลไม่ได้ ไม่ใช่บิล 0 บาท
  • เกินปลายขั้นสุดท้าย → ใช้ราคาขั้นสุดท้ายคิดส่วนที่เกิน