3.8 Circulation Sheet Management (การจัดการใบเวียนเอกสาร)
title: 'Functional Requirements: Circulation Sheet Management'
version: 1.8.1
status: updated
owner: Nattanin Peancharoen
last_updated: 2026-03-24
related:
- specs/01-requirements/01-01-objectives.md
- specs/01-requirements/01-03-modules/01-03-00-index.md
- specs/01-requirements/01-03-modules/01-03-02-correspondence.md
- specs/01-requirements/01-03-modules/01-03-06-unified-workflow.md
- specs/01-requirements/01-06-edge-cases-and-rules.md (EC-CIRC-001 ถึง EC-CIRC-003, EC-CORR-001)
- specs/03-Data-and-Storage/03-01-data-dictionary.md
- specs/01-requirements/01-02-business-rules/01-02-01-rbac-matrix.md
3.8.1. วัตถุประสงค์
ใบเวียนเอกสาร (Circulation Sheet) ใช้สำหรับ มอบหมายและติดตามงานภายในองค์กร เมื่อได้รับ Correspondence จากภายนอก — มองเห็นและแก้ไขได้เฉพาะคนในองค์กรเดียวกัน เท่านั้น
3.8.2. โครงสร้างข้อมูล (Database Tables)
| Table |
บทบาท |
circulations |
ข้อมูล Master: เลขใบเวียน, subject, status, organization — ผูก 1:1 กับ correspondences |
circulation_attachments |
ไฟล์แนบเพิ่มเติม (M:N กับ attachments) |
circulation_status_codes |
Master: สถานะใบเวียน |
ข้อสำคัญ:
circulations.correspondence_id UNIQUE — 1 Correspondence มีใบเวียนได้ 1 ฉบับต่อองค์กร
- ใบเวียนผูกกับ
organization_id — มองเห็นเฉพาะคนในองค์กรนั้น
3.8.3. Fields ที่ต้องกรอกเมื่อสร้าง Circulation
| Field |
Required |
หมายเหตุ |
| Correspondence |
✅ |
UUID — เอกสารที่ต้องการเวียน |
| Organization |
✅ |
UUID — องค์กรเจ้าของใบเวียน (auto จาก current user org) |
Subject (circulation_subject) |
✅ |
VARCHAR(500) |
| Assignees |
✅ |
UUID[] — ผู้รับมอบหมาย (จัดการผ่าน Workflow context) |
| Deadline |
❌ |
สำหรับผู้รับผิดชอบประเภท Main และ Action |
| Attachments |
❌ |
ไฟล์แนบเพิ่มเติม — ผ่าน ClamAV scan |
ประเภทผู้รับมอบหมาย (Assignee Types)
| ประเภท |
ความหมาย |
Deadline |
| Main |
ผู้รับผิดชอบหลัก (มีได้หลายคน) |
✅ บังคับ |
| Action |
ผู้ร่วมปฏิบัติงาน (มีได้หลายคน) |
✅ บังคับ |
| Information |
ผู้ที่ต้องรับทราบ (มีได้หลายคน) |
❌ |
3.8.4. Status Codes (circulation_status_codes)
| status_code |
ความหมาย |
OPEN |
เปิดใบเวียนแล้ว — รอดำเนินการ |
IN_REVIEW |
กำลังพิจารณา |
COMPLETED |
ดำเนินการเสร็จสมบูรณ์ |
CANCELLED |
ยกเลิก / ถอนกลับ |
3.8.5. การสร้างและสิทธิ์ (RBAC)
| การกระทำ |
Role ที่อนุญาต |
Scope |
| สร้าง Circulation |
Document Control, Org Admin, Superadmin |
ภายในองค์กรตัวเอง |
| แก้ไข / Re-assign |
Document Control, Org Admin |
ภายในองค์กรตัวเอง |
| Force Close |
Document Control, Org Admin |
พร้อมระบุเหตุผล (EC-CIRC-002) |
| ปิด Circulation (ปกติ) |
ผู้ที่ถูก Assign (Main/Action) |
เมื่อดำเนินการเสร็จ |
| ดู Circulation |
เฉพาะคนในองค์กรเดียวกัน |
องค์กรอื่นมองไม่เห็น |
3.8.6. Workflow และ Notifications
- Circulation ใช้ Unified Workflow Engine (
entity_type = 'circulation') — ดู 01-03-06-unified-workflow.md
- แจ้งเตือน: เมื่อถูก Assign ใหม่, เมื่อใกล้ถึง Deadline, เมื่อ Overdue → Email / LINE Notify / In-App (BullMQ)
- Deadline Rule: หมดเขตเมื่อ
deadline_date 23:59:59 — Overdue Badge ขึ้นเมื่อ NOW() > deadline_date + 1 day (EC-CIRC-003)
3.8.7. Business Rules และ Edge Cases
| รหัส |
กฎ |
Severity |
| EC-CORR-001 |
Cancel Correspondence ที่มี Circulation เปิดอยู่ → Force Close Circulation ทั้งหมด + Audit Log |
🔴 Critical |
| EC-CIRC-001 |
Assignee ถูก Deactivate ก่อน Respond → Document Control สามารถ Re-assign ได้ |
🟠 High |
| EC-CIRC-002 |
Multi-Assignee — บางคนยังไม่ Respond → Document Control Force Close ได้ พร้อมระบุเหตุผล |
🟡 Medium |
| EC-CIRC-003 |
Deadline = Today → หมดเขต 23:59:59, Reminder 08:00, Overdue Badge วันถัดไป |
🟡 Medium |
ดูรายละเอียดครบที่ 01-06-edge-cases-and-rules.md หมวด "Module 8: Circulation Edge Cases"