Tokens
Claude, Cursor 등 AI 코딩 도우미 토큰 사용량을 추적·시각화·경쟁
경영진 대시보드로 ACCU-Chek Inform II의 %CV와 IQC L1/L2 품질 관리 지표를 병원별로 추적
แดชบอร์ดผู้บริหาร ติดตามค่า %CV การควบคุมคุณภาพ (IQC L1/L2) เครื่อง ACCU-Chek Inform II แยกตามหอผู้ป่วย โรงพยาบาลศรีนครินทร์
데이터JavaScript · HTMLGitHub @ms-mook온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
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)