ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
ระบบประเมิน Resident ของภาควิชาศัลยศาสตร์ มหาวิทยาลัยเชียงใหม่ ใช้ EPA และ PBA จากโฟลเดอร์ EPA/ และ PBA/ เท่านั้น ไม่มีการแสดงหรือย้ายข้อมูล Student logbook เดิมในส่วนติดต่อผู้ใช้ใหม่查看完整 README ↗
ระบบประเมิน Resident ของภาควิชาศัลยศาสตร์ มหาวิทยาลัยเชียงใหม่ ใช้ EPA และ PBA จากโฟลเดอร์ EPA/ และ PBA/ เท่านั้น ไม่มีการแสดงหรือย้ายข้อมูล Student logbook เดิมในส่วนติดต่อผู้ใช้ใหม่
สร้าง catalog ที่ commit ไว้ด้วยคำสั่งนี้เมื่อเอกสารต้นทางมีการแก้ไข:
pnpm generate:templates
ตัวสร้างอ่านเฉพาะ EPA/ และ PBA/ และบันทึก source hash, criterion order และ score options ใน src/generated/residentTemplates.js เพื่อให้ตรวจสอบความเปลี่ยนแปลงของต้นทางได้
pnpm install
cp .env.example .env.local
pnpm test
pnpm build
pnpm dev
ตั้งค่า .env.local ด้วย publishable key ของ Supabase project dyiiivcyoatgmkmvgcnt เท่านั้น:
VITE_SUPABASE_URL=https://dyiiivcyoatgmkmvgcnt.supabase.co
VITE_SUPABASE_PUBLISHABLE_KEY=your-publishable-key
VITE_APP_URL=https://resident-surgery-logbook.vercel.app
ห้ามใส่ service_role key, Gmail App Password หรือ OAuth secret ในตัวแปร VITE_ หรือ source code ฝั่ง browser
migration เป็น additive และไม่ลบ Auth users หรือ legacy Student tables/data:
supabase/migrations/202609070001_resident_assessment_platform.sql
supabase/migrations/20260908090000_add_resident_staff_directory_and_password_reset.sql
ให้ apply migrations ตามลำดับใน project ref dyiiivcyoatgmkmvgcnt แล้ว deploy Edge Function resident-admin พร้อมตั้ง SUPABASE_URL, SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY และ APP_URL=https://resident-surgery-logbook.vercel.app เป็น secret ของ Supabase Edge Function เท่านั้น
Migration ใหม่เปลี่ยนชื่อ role evaluator เดิมเป็น staff โดยคงข้อมูลบัญชีและ assignment เดิมไว้ และนำเข้า 35 แถวจาก รายชื่ออาจารย์ ปี 4.xlsx ลงใน Staff directory แบบไม่ส่งคำเชิญอัตโนมัติ. แถวที่ระบุหน่วย test ถูกเก็บไว้เพื่อให้ตรวจสอบแหล่งข้อมูลได้ แต่ตั้งเป็น inactive จึงเชิญหรือใช้เป็น Staff ไม่ได้.
หลัง migration ผู้ใช้ [email protected] จะเป็น Admin ก็ต่อเมื่อมี Auth user เดิมอยู่แล้ว หากยังไม่มี ให้สร้างบัญชี Auth นั้นก่อน แล้วรันส่วน bootstrap ของ migration อีกครั้งโดยผู้ดูแลระบบ
ใน Supabase Auth ให้เปิด Email provider และตั้งค่าดังนี้:
https://resident-surgery-logbook.vercel.apphttps://resident-surgery-logbook.vercel.app/reset-password[email protected] โดยเก็บ Gmail App Password ใน Supabase SMTP settings เท่านั้นห้ามใส่ service role, SMTP password หรือ secret ใดใน Vercel browser environment variables หรือ source code ฝั่ง client.
| Function | หน้าที่ | Secrets ที่ต้องตั้ง |
|---|---|---|
resident-admin | Admin สร้าง/เชิญบัญชี (ถ้าอีเมลมีบัญชี Auth อยู่แล้วจะผูกบัญชีเดิมและส่งลิงก์ตั้งรหัสผ่าน), ลบการประเมิน | SUPABASE_URL, SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY, APP_URL |
resident-assessment-notifier | ส่งอีเมลแจ้ง Staff เมื่อมีคำขอประเมิน (deliver_initial) และอีเมลเตือน/ส่งซ้ำ (deliver_due) ผ่าน Gmail SMTP (App Password เดียวกับ Supabase Auth) | SMTP_HOST=smtp.gmail.com, SMTP_PORT=465, SMTP_USER, SMTP_PASS, (SMTP_FROM ไม่บังคับ) — deploy ด้วย --no-verify-jwt |
auth-send-email-gmail | Supabase Auth Send Email Hook (เชิญ, รีเซ็ตรหัสผ่าน ฯลฯ) ส่งผ่าน Gmail API | GOOGLE_GMAIL_* ชุดเดียวกัน, SEND_EMAIL_HOOK_SECRET |
GOOGLE_GMAIL_FROM_EMAIL ให้ตรงกับบัญชี Gmail เจ้าของ refresh token เสมอ (สอง function มีค่า default ต่างกัน)deliver_due ถูกเรียกทุก 15 นาทีโดย cron job resident-assessment-email-delivery (migration 20260928130000) secret ของ cron เก็บใน Supabase Vault (resident_reminder_cron_secret) และ function ตรวจกับ Vault เอง ไม่ต้องตั้ง secret เพิ่ม20260928110000_retire_legacy_year4_breast.sql (ถอนสิทธิ์ client, ข้อมูลยังอยู่)สร้าง project ใหม่ชื่อ resident-surgery-logbook ภายใต้บัญชี [email protected] และตั้ง environment variables สำหรับ Production/Preview:
VITE_SUPABASE_URLVITE_SUPABASE_PUBLISHABLE_KEYVITE_APP_URL=https://resident-surgery-logbook.vercel.appอย่าเชื่อม project นี้กับ deployment URL เดิมของ Student logbook และอย่าตั้งค่า Google Drive backup เก่าใน project ใหม่
pnpm generate:templates
pnpm test
pnpm build
Admin เป็นผู้กำหนดตารางประชุมเองและเปิด session ในเมนู “MM & Grand Round” เฉพาะวันที่มีประชุม โดยเปิดได้ก่อน 11:00 น. ตามเวลา Asia/Bangkok จากนั้นระบบแสดง QR บนจอประชุม Resident และ Staff ที่ลงชื่อเข้าใช้สแกน QR เพื่อบันทึกเวลาเข้า ระบบเปลี่ยน QR ทุก 1 นาที และปิดรับเวลา 11:00:00 น. โดยใช้เวลาเซิร์ฟเวอร์ สแกนซ้ำใน session เดียวกันจะแสดงเวลาครั้งแรก Admin ดูรายชื่อแยกตามวันและดาวน์โหลด CSV/Excel ได้
Backend migrations คือ supabase/migrations/20260920102939_mm_grand_round_attendance.sql และ supabase/migrations/20260921033316_allow_admin_scheduled_round_any_day.sql ตรวจโครงสร้าง/ขอบเวลาด้วย supabase db query --linked --project-ref dyiiivcyoatgmkmvgcnt --file tests/round-attendance-db.sql (รันจากโฟลเดอร์ repo) หลัง apply migration
ทดสอบบน Chrome ที่ desktop และ mobile: login ของ Resident/Staff/Admin, ลืมรหัสผ่านและการตั้งรหัสผ่านจาก recovery link, ประวัติของ Resident, การจำกัด Staff ตาม assignment, การบันทึก assessment ที่คะแนนครบทุกข้อ, และ Admin provision/Staff invitation/assignment/sync catalog. ทดสอบ RLS โดยใช้ผู้ใช้ต่าง role อย่างน้อยสองบัญชี และยืนยันว่า Resident/Staff อ่าน Staff directory หรือส่งคำเชิญไม่ได้
กรอกเฉพาะบริบททางคลินิกแบบไม่ระบุตัวตน ห้ามบันทึกชื่อผู้ป่วย, HN, เลขบัตรประชาชน หรือข้อมูลที่ระบุตัวบุคคลได้โดยตรง