สมาคมค้าทองคำไทย
ทุกราคา ทั้งทองคำแท่งและทองรูปพรรณ มาจากหน้าประกาศราคาอย่างเป็นทางการของ สมาคมค้าทองคำไทย (GTA) หน้าเว็บนี้อ่านค่าจากประกาศชุดเดียวกับที่สมาคมเผยแพร่ ต่อสาธารณะ แล้วนำมาแสดงแบบเรียลไทม์ ไม่ผ่านตัวกลางหรือ API ของบุคคลที่สาม
ราคาทองคำทั้งหมดบนหน้านี้อ้างอิงจากประกาศของสมาคมค้าทองคำไทยโดยตรง ไม่ได้ดึงจากแหล่งอื่นหรือตัวกลางใด
สถาปัตยกรรมการดึงข้อมูลฝั่งเซิร์ฟเวอร์ทุกราคา ทั้งทองคำแท่งและทองรูปพรรณ มาจากหน้าประกาศราคาอย่างเป็นทางการของ สมาคมค้าทองคำไทย (GTA) หน้าเว็บนี้อ่านค่าจากประกาศชุดเดียวกับที่สมาคมเผยแพร่ ต่อสาธารณะ แล้วนำมาแสดงแบบเรียลไทม์ ไม่ผ่านตัวกลางหรือ API ของบุคคลที่สาม
เซิร์ฟเวอร์เรียกหน้าต้นทางด้วย fetch พร้อม User-Agent ของเบราว์เซอร์ทั่วไปและตั้งเวลาหมด 12 วินาที เนื่องจากต้นทางอยู่หลัง Cloudflare ที่บางครั้งตอบ 403 ระบบจึงลองซ้ำได้ถึง 6 ครั้ง เว้นระยะครั้งละ 1.2 วินาที และลองทั้งตัวพิมพ์ใหญ่และพิมพ์เล็กของ URL
วิธีหลักคืออ่านแถวใหม่สุดของตารางด้วย regex ที่จับเซลล์วันที่-เวลาแบบ DD/MM/YYYY HH:mm แล้วดึงเซลล์ที่เหลือตามลำดับ: เลขครั้งที่, ราคาซื้อ-ขายทองคำแท่ง, ราคาซื้อ-ขายทองรูปพรรณ, ราคาทองโลก, อัตราบาทต่อดอลลาร์ และส่วนต่างที่เปลี่ยน แต่ละตัวเลขผ่านฟังก์ชันแปลงที่คงเครื่องหมายบวก/ลบและตัดคอมมา
ถ้าตารางอ่านไม่ได้ ระบบจะลองต่อเป็นชั้น ๆ: อ่านค่าจาก span ที่มีรหัสควบคุมคงที่ (lblBLBuy / lblBLSell / lblOMBuy / lblOMSell) ก่อน จากนั้นไล่เซลล์ตารางตามตำแหน่ง และท้ายสุดกวาดจำนวนเงินบาทตามลำดับในเอกสาร ทุกค่าถูกกรองด้วยช่วงราคาที่สมเหตุสมผล (หมื่นถึงแสนบาท) เพื่อไม่ให้หยิบปีหรือตัวเลขอื่นมาผิด
ราคาต่อกรัมคำนวณจากราคาทองคำแท่ง (ทอง 1 บาท = 15.244 กรัม) ราคารับซื้อคืนทองรูปพรรณหัก 5% คำนวณจากราคารับซื้อทองคำแท่ง ส่วนการเปลี่ยนแปลงวันนี้คือผลรวมของทุกประกาศในวันนั้นเทียบกับราคาปิดของเมื่อวาน ทิศขึ้น/ลงยึดตามสัญญาณของสมาคมเป็นหลัก
หน้าเว็บเชื่อมต่อผ่าน WebSocket และรับราคาชุดใหม่ทันทีที่ตรวจพบการเปลี่ยนแปลง เซิร์ฟเวอร์ตรวจต้นทางทุก 10 วินาทีและส่งต่อเฉพาะเมื่อข้อมูลเปลี่ยนจริง หากการเชื่อมต่อสดขาดช่วง หน้าเว็บจะสลับไปดึงข้อมูลเป็นระยะทุก 15 วินาทีโดยอัตโนมัติ
ค่าที่ดึงล่าสุดถูกเก็บไว้ในหน่วยความจำของเซิร์ฟเวอร์เพื่อให้การอ่านซ้ำ ๆ เร็วขึ้น และมีตัวกันไม่ให้ยิงไปต้นทางถี่เกินไป โดยจะไม่ดึงใหม่ถ้าเพิ่งดึงไปภายใน 8 วินาทีที่ผ่านมา
เนื่องจากการเชื่อมต่อสดถูกผูกกับอินสแตนซ์ชั่วคราวและไม่คงอยู่ข้ามการรีสตาร์ต ค่าประกาศล่าสุดจึงถูกบันทึกลงฐานข้อมูล SQLite (Turso) ในตารางเดียว แล้วอ่านกลับมาแสดงได้ทันทีเมื่อมีผู้เข้าใหม่ ก่อนที่การดึงชุดใหม่จะเสร็จ
ระบบยังบันทึกประวัติของแต่ละประกาศ (วันที่ + เลขครั้งที่ + ราคาขายทองคำแท่ง) แยกไว้ เพื่อคำนวณส่วนต่างเทียบกับประกาศก่อนหน้าได้อย่างแม่นยำ และคงค่าไว้แม้เซิร์ฟเวอร์จะรีสตาร์ตหรือดีพลอยใหม่
ถ้าโครงสร้างข้อมูลที่เก็บไว้เป็นของรุ่นเก่าที่ยังไม่มีฟิลด์ครบ ระบบจะถือว่าใช้ไม่ได้และดึงใหม่แทน เพื่อไม่ให้แสดงค่าที่ขาดหายเป็นช่องว่าง
ราคาต่อทองคำหนัก 1 บาท หน่วยเป็นเงินบาท อ้างอิงจากประกาศของสมาคมค้าทองคำไทย ราคาจริงที่ร้านทองอาจแตกต่างกันได้ตามช่วงเวลาและร้านค้า