1 เริ่มต้นใช้งาน
Check Control คือแดชบอร์ดศูนย์บัญชาการวันแข่ง รวมแผนที่สด จับเวลา ผลแข่ง ความปลอดภัยนักวิ่ง มอบรางวัล และเช็กลิสต์ทีมงานไว้ในที่เดียว ใช้ได้ทั้งคอมพิวเตอร์ห้องบัญชาการและมือถือหน้างาน
เข้าสู่ระบบ
- เปิด
ops.raceup.co.th(หรือเลือกงานที่หน้าแรก) - ล็อกอินด้วยอีเมลองค์กร
@raceup.co.th(พาร์ทเนอร์ภายนอกใช้ One-time PIN ทางอีเมล) - ระบบจำสิทธิ์ของคุณอัตโนมัติ (Admin / Staff / Viewer)
เลือกงาน
ทุกหน้าผูกกับรหัสงานผ่าน ?event=<CODE> เช่น ops.raceup.co.th/race-ops?event=KTJ26 — หรือเลือกจากหน้าแรก ระบบจะพาเข้าหน้า Map ของงานนั้น
2 หน้า Map — ศูนย์บัญชาการ (Mission Control)
หน้าหลักวันแข่ง: แผนที่เต็มจอ + ไทม์ไลน์ปฏิบัติการ + แถบเวลา/อากาศด้านบน

แถบบน
- Countdown — นับถอยหลังถึงเวลาปล่อยตัวระยะแรก + เวลาปล่อยตัว
- อากาศ — อุณหภูมิ/ดัชนีความร้อน/ฝน/UV และ PM2.5 (AQI) คลิกดูพยากรณ์ 1–5 ชม.
แถบเครื่องมือบนแผนที่ (Map Tabs)
- GPS — ตำแหน่งสดของรถนำ/รถกวาด/Marshal/รถพยาบาล (จากวิทยุสื่อสาร)
- จุดน้ำ / จุดแพทย์ / Checkpoint — กดเปิดทั้ง marker บนแผนที่และแผงรายละเอียด
- Cut-off — เวลาตัดตัวแต่ละระยะ
- ตำรวจ / Shuttle — จุดจราจรและรถรับส่ง (ถ้ามีข้อมูล)
- Heatmap — ความหนาแน่นนักวิ่งตามเส้นทาง×เวลา (ประมาณการ; วันแข่งเข้าโหมด LIVE ตามนาฬิกาจริง เลื่อน scrubber ดูย้อน/ไปข้างหน้าได้)
Operation Timeline
ไทม์ไลน์ภารกิจ (Run of Show) แยก On Course / Off Course พร้อมเวลา/ผู้รับผิดชอบ ติ๊กสถานะได้ — ใช้คุมคิวงานวันแข่ง
Race Progress (แถบล่าง)
จำนวน ออกตัว / กำลังวิ่ง / เข้าเส้นชัย แยกตามระยะ (อัปเดตจากระบบจับเวลา)
3 หน้า Data — สถิติ & ผลการแข่งขัน

- ยอดลงทะเบียนรวม + แยกตามระยะ + เพศ
- จำนวนเข้าเส้นชัยสด และ Leaderboard (เรียงตามอันดับจริง) — ดึงจาก RaceResult
4 หน้า Timing — จุดจับเวลา staff+
สำหรับทีมจับเวลา — ติดตามนักวิ่งผ่านแต่ละจุด และจับกลุ่มผิดปกติ

- การ์ดจุดจับเวลา — ตัวเลขใหญ่ = จำนวน "นักวิ่งที่ผ่าน" (คนไม่ซ้ำ) แต่ละจุด + สถานะออนไลน์ของเครื่อง
- DNF (หาย) — BIB ที่ออกตัวแต่ไม่ถึงเส้นชัย จัดกลุ่มตามจุดไกลสุดที่เห็นล่าสุด
- ข้าม CP — มีอ่านก่อน+หลังจุดหนึ่ง แต่ขาดที่จุดนั้น (ชิปไม่อ่าน หรือลัดเส้นทาง)
- กล่องตั้งค่า Checkpoint ต่อระยะ — กำหนดว่าระยะไหนต้องผ่านจุดใดบ้าง (เพื่อคำนวณ DNF/ข้าม CP ให้ตรง)
5 หน้า Winner — ผล & มอบรางวัล
มี 4 แท็บ: ผลการแข่งขัน · รายงานตัวรับรางวัล · มอบรางวัล · กติกา

- ผลการแข่งขัน — ผู้ชนะแต่ละประเภท (Overall / รุ่นอายุ / TOP100) ดึงอัตโนมัติจาก RaceResult + เงินรางวัลต่ออันดับ
- มอบรางวัล — จัด "คิวมอบรางวัล" เรียงตามเวลาที่ผู้ชนะเข้าครบ (โหมดขึ้นเวที: ทอง/เงิน/ทองแดง + ชื่อ + ธง + เวลา + เงินรางวัล)
- รายงานตัว / มอบแล้ว — ติ๊กสถานะแต่ละรางวัล (🟡 รายงานตัวครบ → ✅ มอบแล้ว) มี dashboard "คิวถัดไป"
- กติกา — เกณฑ์ตัดสิน (Gun/Chip time), รุ่นอายุ, การรายงานตัว
6 หน้า Runner — ค้นหา & เฝ้าระวังกลุ่มเสี่ยง staff+
- ค้นหานักวิ่ง — ด้วย BIB / ชื่อ / เบอร์ → การ์ดแสดงข้อมูล + ผู้ติดต่อฉุกเฉิน + ข้อมูลการแพทย์
- แดชบอร์ดเฝ้าระวัง — จำแนกผู้แจ้งโรคประจำตัวตามระดับความเสี่ยง (สูง/กลาง/เฝ้าระวัง) แยกตามระยะ คลิกกรองได้
7 หน้า Incident — บันทึกเหตุการณ์
บันทึกเหตุการณ์ในงาน (เจ็บป่วย/อุปกรณ์/จราจร) พร้อมเวลา ระดับความรุนแรง และสถานะ ใช้ประสานทีมและทำรายงานสรุปหลังงาน
8 Pre Event & Service Area — เช็กลิสต์
Pre Event (เตรียมงาน)
เช็กลิสต์ก่อนวันแข่ง แยกตามวัน (D-4 ถึง D-1) และโซน On/Off Course พร้อม progress bar
Service Area (จุดบริการ)
จัดการจุดบริการ (รับอุปกรณ์/ฝากของ/เหรียญ/น้ำ/อาหาร/รายงานตัว/เสื้อ/ห้องน้ำ) พร้อม "ผู้รับผิดชอบ" รายจุด


9 Contact & Staff
- Contact — เบอร์ฉุกเฉิน (1669/191/199) + เบอร์ติดต่อเฉพาะงาน (รพ./ตำรวจ/เทศบาล) แตะโทรได้
- Staff — ทีมงานทั้งงานแยกตามทีม (ดึงจากผู้รับผิดชอบในเช็กลิสต์ + ไดเรกทอรีกลาง)
10 ผู้ช่วย AI — "เรซซี่" 🏁
ทีมงาน AI ประจำห้องบัญชาการ อยู่ที่ปุ่มลอยมุมขวาล่างทุกหน้า — อ่านข้อมูลสดของงานและช่วยตัดสินใจได้
- ถาม สถานะปัจจุบัน / CP ที่น่ามีปัญหา / cut-off / เบอร์ฉุกเฉิน / checklist ที่เหลือ
- สอน ให้จำได้ — พิมพ์ "จำไว้ว่า…" (เช่น เบอร์ รพ. ประจำงาน, มาตรฐานทีม) เรซซี่จะจำข้ามครั้ง
- ให้คะแนน 👍/👎/✏️ ใต้คำตอบ เพื่อให้เรซซี่เรียนรู้และตอบดีขึ้น
- 🧠 ความจำของทีม — ดูสิ่งที่ทีมเคยสอนไว้
11 ตั้งค่างานใหม่ — หน้า Setup admin
เปิดจากเมนู (Admin → Setup) เพื่อเตรียมงานถัดไป — มี 3 ส่วน:
- ความพร้อม (Readiness) — ระบบตรวจอัตโนมัติว่า RaceResult ID ใช้ได้, secret จับเวลา/รายชื่อ, นักวิ่งในระบบ, ผู้ช่วย AI, ผลรางวัล พร้อมหรือยัง
- ตั้งค่างาน — RaceResult EventID / เวลาปล่อยตัว / ระยะ / cut-off / เบอร์ติดต่อ → บันทึกแล้ว ใช้ได้ทันทีไม่ต้อง deploy (มีปุ่มดึง EventID จาก RaceResult อัตโนมัติ)
- Requirement — เช็กลิสต์สิ่งที่ทีมต้องเตรียมสำหรับงานใหม่
| ต้องเตรียม | ทำที่ไหน |
|---|---|
| ข้อมูลงาน (ชื่อ/วัน/ระยะ/พิกัด/สี) | master events |
| RaceResult EventID | หน้า Setup (ค้น/ดึงอัตโนมัติได้) |
| Secret จับเวลา + รายชื่อผู้สมัคร + AI key | Cloudflare (ทีมพัฒนา) |
| รายชื่อนักวิ่ง (สำหรับหน้า Runner) | หน้า "นำเข้า" (อัปโหลด FINAL DATA — admin) |
| เส้นทาง/จุดน้ำ/แพทย์/รางวัล | ไฟล์ข้อมูลงาน + หน้า Setup |
12 สิทธิ์ & ความปลอดภัย
| ระดับ | ทำอะไรได้ |
|---|---|
| admin | จัดการผู้ใช้ + ตั้งค่างาน (Setup) + นำเข้านักวิ่ง + เปิด/ปิดอีเวนต์ + ทุกหน้า |
| staff | ใช้งานเต็ม รวมหน้า Runner/Timing (เห็นข้อมูลส่วนตัว) |
| viewer | ดูแดชบอร์ดทั่วไป — ไม่เห็นข้อมูลส่วนตัวนักวิ่ง |
- ทั้งระบบอยู่หลังการล็อกอินองค์กร (Cloudflare Access) —
@raceup.co.thเข้าได้อัตโนมัติ - คนนอกองค์กร: เพิ่มสิทธิ์ในหน้า Users (Admin) + เปิดให้ล็อกอินที่ระบบ Access (ทีม IT)
- ข้อมูลส่วนตัวนักวิ่ง (เลขบัตร/เบอร์/สุขภาพ) ถูกแยกเก็บและบล็อกจากผู้ไม่มีสิทธิ์
13 เปิดจาก LINE / Facebook — ใช้ /go
ลิงก์ที่เปิดในแอป LINE/FB (in-app browser) อาจล็อกอิน Google ไม่ได้ — ให้เปิดผ่าน ops.raceup.co.th/go ระบบจะเด้งไปเปิดใน Chrome/Safari จริงให้อัตโนมัติ แล้วล็อกอินได้ปกติ
14 แก้ปัญหาที่พบบ่อย
ล็อกอินไม่ได้ / กดแล้วไม่เข้า
เปิดด้วย Chrome/Safari (ไม่ใช่ in-app browser ของ LINE/FB) หรือใช้ /go · คนนอกองค์กรต้องถูกเพิ่มสิทธิ์ + เปิดล็อกอินที่ Access ก่อน
ผลแข่ง/ผู้ชนะไม่ขึ้น
ผลจะขึ้นเมื่อทีมจับเวลาเผยแพร่ผลของงานแล้ว · ตรวจว่าตั้ง RaceResult EventID ถูกต้องในหน้า Setup
หน้า Timing ว่าง
ต้องตั้ง secret rawdata + รายชื่อผู้สมัครของงานนั้น (ทีมพัฒนา) แล้ว deploy 1 ครั้ง
มือถือเห็นข้อมูลเก่า
รีเฟรชหน้า (ระบบตั้ง no-cache แล้ว แต่บางครั้งต้องรีโหลด)