ข้ามไปยังเนื้อหาหลัก
ProgrammerThailand

ไอเดีย (Idea) idea certificate education

ไอเดีย #43: ระบบออกเกียรติบัตรออนไลน์พร้อมตรวจสอบได้

"ขอเกียรติบัตรใหม่อีกใบได้ไหมคะ ชื่อสะกดผิด" ประโยคนี้คนจัดอบรมหรือสัมมนาออนไลน์คงได้ยินบ่อยจนชิน บางงานมีผู้เข้าร่วมหลักพันคน ต้องนั่งพิมพ์ชื่อใส่ไฟล์ทีละใบแล้วส่งอีเมลเอง พอเวลาผ่านไปมีคนเอาเกียรติบัตรไปยื่นสมัครงานหรือประกอบการประเมิน ฝั่งผู้รับเอกสารก็ไม่มีทางตรวจได้ว่าใบนั้นของจริงหรือแต่งขึ้นมา ระบบออกเกียรติบัตรที่สร้างไฟล์อัตโนมัติและตรวจสอบย้อนกลับได้ จึงช่วยได้ทั้งคนจัดงานและคนรับ

ใครจะใช้

  • ผู้จัดกิจกรรม — โรงเรียน มหาวิทยาลัย หน่วยงาน หรือชมรม ที่ต้องออกเกียรติบัตรจำนวนมาก
  • ผู้เข้าร่วม — ดาวน์โหลดเกียรติบัตรของตัวเอง และแจ้งแก้ไขชื่อ
  • ผู้ตรวจสอบ — ฝ่ายบุคคลหรือกรรมการที่สแกน QR เพื่อยืนยันความถูกต้อง

ฟีเจอร์ขั้นต่ำ (MVP)

  • สร้างกิจกรรม ระบุชื่องาน วันที่แบบ พ.ศ. และผู้ลงนาม
  • อัปโหลดแม่แบบเกียรติบัตร แล้วกำหนดตำแหน่งชื่อ ข้อความ และ QR บนภาพ
  • นำเข้ารายชื่อจาก CSV หรือเชื่อมกับระบบลงทะเบียน แล้วสร้าง PDF ทีละหลายร้อยใบผ่าน queue
  • แต่ละใบมีเลขที่เกียรติบัตรและรหัสสุ่มที่เดายาก ฝังเป็น QR สำหรับเปิดหน้าตรวจสอบ
  • หน้าตรวจสอบสาธารณะแสดงชื่อ กิจกรรม วันที่ และสถานะ ใช้ได้ / ถูกเพิกถอน
  • ผู้เข้าร่วมค้นหาและดาวน์โหลดใบของตัวเองด้วยอีเมลหรือเลขบัตรบางส่วน พร้อมยืนยันด้วย OTP
  • แก้ไขชื่อแล้วออกใบใหม่ โดยใบเก่าถูกเพิกถอนและเก็บประวัติไว้

ต่อยอดได้อีก

  • ลงลายมือชื่ออิเล็กทรอนิกส์บน PDF เพื่อตรวจได้ว่าไฟล์ไม่ถูกแก้
  • ทำแบบสอบถามหลังกิจกรรม ตอบครบแล้วจึงดาวน์โหลดได้
  • รองรับฟอนต์ไทยหลายแบบ และแม่แบบหลายภาษา
  • หน้าโปรไฟล์รวมเกียรติบัตรทั้งหมดของแต่ละคน

โครงข้อมูลตั้งต้น

CREATE TABLE events (
  id serial PRIMARY KEY,
  title varchar(255),
  event_date date,
  template_path varchar(255),
  layout jsonb
);
CREATE TABLE certificates (
  id serial PRIMARY KEY,
  event_id int REFERENCES events(id),
  cert_no varchar(30) UNIQUE,
  verify_code char(16) UNIQUE,
  recipient_name varchar(255),
  recipient_email varchar(255),
  status varchar(20) DEFAULT 'valid',
  replaced_by int,
  issued_at timestamp
);

เพิ่มตาราง signers สำหรับผู้ลงนาม และ verify_logs เก็บการสแกนตรวจสอบ

ระดับความยาก และสิ่งที่จะได้เรียนรู้

ระดับ ปานกลาง ทำด้วย Yii2 หรือ Laravel + PostgreSQL/MySQL ร่วมกับไลบรารีสร้าง PDF ที่รองรับฟอนต์ไทย สิ่งที่จะได้เรียนรู้:

  • วาง text บนภาพแม่แบบตามพิกัด และแก้ปัญหาสระลอย วรรณยุกต์ซ้อนในฟอนต์ไทย
  • ทำงานเบื้องหลังด้วย queue worker สำหรับงานสร้างไฟล์จำนวนมาก
  • สร้าง QR และออกแบบรหัสตรวจสอบที่เดาไม่ได้
  • ออกแบบ audit trail สำหรับการแก้ไขและเพิกถอน

ข้อควรระวัง

  • อย่าใช้ id ต่อเนื่องเป็นรหัสตรวจสอบ ไม่งั้นใครก็ไล่เปิดดูรายชื่อทั้งหมดได้ ควรใช้รหัสสุ่มและจำกัด rate
  • หน้าตรวจสอบควรแสดงข้อมูลเท่าที่จำเป็น ไม่ควรเปิดอีเมลหรือเบอร์โทรตาม PDPA
  • การสร้าง PDF หลายพันใบกินทรัพยากร ควรแบ่ง batch และมี retry เมื่อ worker ล่ม

ใครเคยเจอปัญหาฟอนต์ไทยเพี้ยนตอนสร้าง PDF บ้างครับ แก้ด้วยไลบรารีไหน แล้วคิดว่าระบบแบบนี้ควรมีลายเซ็นดิจิทัลตั้งแต่เวอร์ชันแรกเลยไหม มาแลกเปลี่ยนหรือโพสต์ผลงานไว้ในบอร์ดนี้ได้เลย

0 คะแนน

0 คำตอบ

ยังไม่มีคำตอบ

รู้คำตอบ? ช่วยแบ่งปันได้เลย

ตอบคำถามนี้

เข้าสู่ระบบเพื่อตอบคำถามและโหวต

เข้าสู่ระบบ สมัครสมาชิก