ไอเดีย #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 บ้างครับ แก้ด้วยไลบรารีไหน แล้วคิดว่าระบบแบบนี้ควรมีลายเซ็นดิจิทัลตั้งแต่เวอร์ชันแรกเลยไหม มาแลกเปลี่ยนหรือโพสต์ผลงานไว้ในบอร์ดนี้ได้เลย