Tokens
Track, visualize, and compete on AI coding assistant token usage across Claude Code, Cursor, OpenCode, Codex, Gemini, Kimi, and Qwen. The Kardashev Scale for AI Devs.
แดชบอร์ดผู้บริหาร ติดตามค่า %CV การควบคุมคุณภาพ (IQC L1/L2) เครื่อง ACCU-Chek Inform II แยกตามหอผู้ป่วย โรงพยาบาลศรีนครินทร์
Translation pending
DataJavaScript · HTMLGitHub @ms-mookOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗เว็บ dashboard ติดตามค่า %CV ของการทำ IQC (L1 / L2) เครื่อง ACCU-Chek Inform II แยกตามหอผู้ป่วย
เกณฑ์ผ่าน: %CV < 6.7 (แก้ได้ที่ชีต Config → cv_threshold)
Google Sheet (ฐานข้อมูล) ←→ Apps Script (ตัวอ่าน/เขียนชีต) ←→ Vercel Functions /api (เก็บรหัสผ่าน) ←→ เว็บ static (Dashboard / Admin)
| ไฟล์ | หน้าที่ |
|---|---|
index.html + js/dashboard.js | Dashboard: (1) แท่งร้อยละที่ผ่านต่อเดือน (2) กราฟเส้น %CV รายหอ (3) ตารางรายละเอียด + กดดูรายหอ, ตัวกรอง L1 / L2 / รวม |
admin.html + js/admin.js | หน้า admin: ฟอร์มบันทึก/แก้ไข %CV รายเดือน (วางจาก Excel ได้), เพิ่ม/แก้ไขหอและเครื่อง |
apps-script/Code.gs | Backend ที่ผูกกับ Google Sheet |
api/data.js, api/admin.js | Vercel Functions: อ่านข้อมูล และรับคำสั่งบันทึก (ตรวจ ADMIN_PASSWORD ที่นี่) |
config.js | ตั้งค่าฝั่งเว็บ (API_BASE: "/api") – ไม่มีความลับ |
data/seed.json | ข้อมูลสำรอง (Excel ปี 2568–2569) ใช้แสดงผลเมื่อยังไม่ได้ตั้งค่า API |
tools/convert.py | สคริปต์แปลง Excel รายปี → ข้อมูลแบบ long (ใช้ซ้ำได้) |
ใช้ชีต "POCT Glucose %CV – รพ.ศรีนครินทร์ (ฐานข้อมูล)" ที่สร้างไว้แล้ว มี 3 ชีต
Data – 1 แถว = 1 เครื่อง × 1 เดือน: month (YYYY-MM ค.ศ.), device, L1, L2, note, updated_atWards – no, ward, device, activeConfig – cv_threshold = 6.7apps-script/Code.gs (ทับของเดิมทั้งหมด) → บันทึกsetup → Run (อนุญาตสิทธิ์ครั้งแรก)createApiKey → Run → คัดลอกค่าที่ขึ้นใน "บันทึกการดำเนินการ" (คือ API_KEY ที่ถูกสร้างใน Script properties แล้ว; จะตั้งเองที่ Project Settings > Script properties ก็ได้)/execทุกครั้งที่แก้ Code.gs ต้อง Deploy เป็น New version URL เดิมจึงจะใช้โค้ดใหม่
Vercel → Project → Settings > Environment Variables (เลือก Production และ Preview) เพิ่ม 3 ตัว:
| Name | ค่า |
|---|---|
ADMIN_PASSWORD | รหัสผ่านเข้าหน้า admin |
APPS_SCRIPT_URL | URL /exec ของ Apps Script |
APPS_SCRIPT_KEY | ค่าเดียวกับ API_KEY ใน Script properties |
จากนั้น Deployments > ⋯ > Redeploy เพื่อให้ค่าใหม่มีผล
https://<project>.vercel.app/https://<project>.vercel.app/adminเหตุผลที่ต้องมี API_KEY: URL ของ Apps Script เปิดแบบ Anyone จึงต้องมีคีย์ลับที่รู้กันเฉพาะ Vercel กับ Apps Script ไม่ให้คนนอกเรียกอ่าน/เขียนชีตตรงๆ ได้ ส่วนรหัสผ่านแอดมินอยู่ที่ Vercel ที่เดียว
/admin ใส่รหัสผ่านปีงบประมาณใหม่ไม่ต้องตั้งค่า: ระบบคำนวณจากเดือน (ต.ค.–ก.ย., พ.ศ. = ค.ศ. ของเดือนที่ ≥ ต.ค. + 1 + 543) หอ/เครื่องใหม่: แท็บ "หอผู้ป่วย / เครื่อง" → เพิ่มแล้วจะปรากฏในฟอร์มรายเดือนทันที
note: 6..64 → 6.64 (PICU มี.ค. 68, L1) และ 1..17 → 1.17 (สว.9A(2) มิ.ย. 69, L2) โปรดตรวจกับใบรายงานจริงADMIN_PASSWORD, APPS_SCRIPT_URL, APPS_SCRIPT_KEY อยู่ใน Vercel Environment Variables เท่านั้น ไม่อยู่ในโค้ด/GitHub/ชีต; เบราว์เซอร์ไม่เห็น URL หรือคีย์ของ Apps ScriptAPI_KEY ที่ถูกต้อง (ทั้งอ่านและเขียน) · /api/admin ตรวจรหัสผ่านแบบ timing-safe และหน่วง 0.8 วินาทีเมื่อรหัสผิดAPI_BASE: "" จะแสดงข้อมูลสำรองจาก data/seed.json (บันทึกข้อมูลไม่ได้)ช่องที่ไม่ได้ทำ QC ให้ใส่ ND ในคอลัมน์ note ของชีต Data (หรือติ๊ก ND ในหน้า Admin) – ND ไม่นำมาคำนวณ ร้อยละที่ผ่านเกณฑ์/ตัวหาร แต่นับว่า “บันทึกแล้ว” และแสดงเป็น ND ใน heatmap
ไฟล์ที่ build แล้ว (css/tw.css, img/icons.svg) ถูก commit ไว้ Vercel ไม่ต้อง build. แก้สไตล์/ไอคอนแล้วรัน cd tools/ui && npm install && npm run build
apps-script/Code.gs ใหม่ → รัน setup() อีกครั้ง (สร้างคอลัมน์ group ใน Wards, แถว target_pass_pct ใน Config, ชีต Log)target_pass_pct, ค่าเริ่มต้น 95)/api/admin ล็อก IP 15 นาที หากใส่รหัสผ่านผิด 5 ครั้งถ้าเชื่อม Google Sheet ไม่ได้ หน้า Dashboard จะแจ้งข้อผิดพลาดและไม่แสดงข้อมูลเก่าแทน (ป้องกันการเข้าใจผิด) · ต้องการดูข้อมูลตัวอย่างจากไฟล์ Excel ให้เปิด /?demo=1
ตั้งที่ Vercel > Settings > Environment Variables:
ADMIN_USERS = ชื่อ1:รหัสผ่าน1,ชื่อ2:รหัสผ่าน2 เช่น mook:xxxxxxxx,somchai:yyyyyyyy (ชื่อใช้ภาษาอังกฤษ ไม่สนตัวพิมพ์ใหญ่เล็ก · รหัสผ่านห้ามมีเครื่องหมาย ,)ADMIN_USERS แล้ว ADMIN_PASSWORD เดิมจะไม่ถูกใช้ (ลบทิ้งได้) · แก้ env แล้วต้อง Redeployuser) บันทึกชื่อผู้แก้ไขทุกครั้ง (ต้องวาง Code.gs ใหม่ + Deploy New version)