ระบบ Digital Signature พิกัดแม่นยำ (Public Sector Odoo Community Series 3: Digital Transformation with E-Sign)

พลิกโฉมการอนุมัติเอกสารราชการด้วยระบบ E-Signature ที่สามารถกำหนดพิกัดลายเซ็นที่แม่นยำ พร้อมการตรวจสอบใบรับรองดิจิทัลแบบรัดกุม

· 5 min read

Problem

ระเบียบการอนุมัติเอกสารราชการมักเน้นการเซ็นลงบนที่กระดาษจริง ทำให้สิ้นเปลืองทรัพยากรและใช้เวลาในการรอแฟ้มเสนอเซ็นเป็นเวลานาน

Solution

พัฒนาโมดูล Approval Esign บน Odoo Community โดยใช้ระบบพิกัด Ratio เพื่อวางลายเซ็นแบบ Pixel-perfect และระบบตรวจสอบความถูกต้องของใบรับรองอิเล็กทรอนิกส์ (CA)

Impact

ลดการเดินทางเพื่อส่งแฟ้มอนุมัติลง 100% และสร้างความเชื่อมั่นในการอนุมัติเอกสารดิจิทัลผ่านระบบลายเซ็นที่มีความปลอดภัยสูง

ยุคทองของ Paperless ในหน่วยงานรัฐ (Series 3)

บทความสุดท้ายของซีรีส์นี้จะพาไปพบกับหัวใจสำคัญของการทำงานในยุคดิจิทัล นั่นคือการทำให้การอนุมัติ (Approval) มีผลผูกพันทางกฎหมายและถูกต้องตามระเบียบงานสารบรรณ โดยไม่ต้องใช้กระดาษแม้แต่แผ่นเดียว ผ่านเทคโนโลยี E-Signature บน Odoo Community Edition

1. ความแม่นยำในตำแหน่งลายเซ็น (Precision Mapping)

ในแบบฟอร์มรายงานราชการ ตำแหน่งลายเซ็นต้องอยู่ตรงตามช่องที่กำหนดตายตัว เราจึงใช้ระบบพิกัดแบบ Ratio (อัตราส่วน) เพื่อแก้ปัญหาลายเซ็นเคลื่อนที่เมื่อมีการเปิดในหน้าจอที่ขนาดต่างกัน หรือเมื่อมีการจัดหน้ากระดาษใหม่

flowchart LR
    A[เจ้าหน้าที่ผู้ดูแลระบบ] -- กำหนดพิกัดบน UI --> B(Ratio Mapping)
    B -- x_ratio / y_ratio --> C{ฐานข้อมูล Odoo}
    C -- ดึงพิกัดไปวางลายเซ็น --> D[PDF Report Output]

    subgraph Coordinate System
    B1[ตำแหน่งจริง / กว้าง]
    B2[ตำแหน่งจริง / สูง]
    end

    B1 --> B
    B2 --> B

2. ลำดับการอนุมัติและการตรวจสอบใบรับรองดิจิทัล (CA Flow)

เพื่อความมั่นคงปลอดภัยสูงสุด ระบบสามารถกำหนดได้ว่า ขั้นตอนการอนุมัติใดที่ต้องใช้ Digital Certificate (CA) เพื่อยืนยันตัวตนระดับสูง และขั้นตอนใดที่ใช้เพียงรูปภาพลายเซ็นปกติ

แผนผังลำดับการอนุมัติ (Sequence Diagram)

มาดูเส้นทางการเดินทางของเอกสารดิจิทัล ตั้งแต่การเสนอเซ็นไปจนถึงการตรวจสอบใบรับรอง:

sequenceDiagram
    participant Staff as เจ้าหน้าที่ผู้เสนอ
    participant Chief as หัวหน้าหน่วยงาน
    participant System as ระบบ E-Signature
    participant CA as ระบบใบรับรอง (Certificate Authority)

    Staff->>Chief: เสนออนุมัติโครงการผ่านระบบ
    Chief->>System: ทำการลงนามอิเล็กทรอนิกส์

    alt ขั้นตอนที่ต้องใช้ใบรับรองระดับสูง
        System->>CA: ร้องขอการถอดรหัสและยืนยัน Certificate
        CA-->>System: ผลการตรวจสอบ (Authentic Signature)
    end

    System->>System: บันทึกรูปภาพลายเซ็น + พิกัดความสูง/กว้าง
    System->>Staff: แจ้งเตือน: โครงการได้รับการอนุมัติแล้ว

3. ตรรกะการตรวจสอบสิทธิใช้ CA (is_ca_on_request)

เราพัฒนาระบบตรวจสอบอัตโนมัติว่าในคำขออนุมัติประเภคนั้นๆ ผู้ที่รับผิดชอบอยู่ในลำดับปัจจุบันมีใบรับรอง CA ที่ยังใช้งานได้อยู่หรือไม่ เพื่อเปิดปุ่มการเซ็นแบบดิจิทัลให้ถูกคน ถูกเวลา

# ตัวอย่างโค้ดในโมดูล request_request.py
def _compute_is_ca_on_request(self):
    # ค้นหาพนักงานที่มี Certificate สถานะ Active
    employees_is_ca = self.env["user.ca.credential"].search([("status", "=", "active")]).employee_id

    for rec in self:
        # ตรวจสอบว่า Flow นี้ถูกตั้งค่าให้ต้องถามหา CA หรือไม่
        approver_flow_cas = self.env["request.approver.flow.ca"].search([("category_id", "=", rec.category_id.id)])
        flow_ca_set = {f.employee_id.id for f in approver_flow_cas if f.employee_id and f.is_active}

        rec.is_ca_on_request = False
        # วนลูปเช็คผู้อนุมัติที่มีสิทธิในปัจจุบัน
        for approver in rec.approver_ids:
            if approver.employee_id.id in employees_is_ca and approver.employee_id.id in flow_ca_set:
                rec.is_ca_on_request = True
                break

บทสรุปของซีรีส์

ผ่านทั้ง 3 บทความในซีรีส์ Public Sector Odoo Community นี้ เราได้เห็นการเปลี่ยนผ่านจากการทำงานแบบเดิม สู่การนำเทคโนโลยีมาช่วยจัดการทั้งเรื่องยานพาหนะ (Fleet), คุรุภัณฑ์ (Asset Maintenance) และการอนุมัติที่ไร้กระดาษ (E-Sign)

กุญแจสำคัญไม่ใช่แค่การใช้ซอฟต์แวร์ระดับโลกอย่าง Odoo แต่คือการปรับปรุงและพัฒนา (Customization) ให้เข้ากับบริบทและความต้องการที่แท้จริงขององค์กรครับ