Skip to content
goragodwiriyaPublic

About

ระบบงานสารบรรณอีเล็คทรอนิคส์ (E-Document)

Topics

Resources

Stars

24 stars

Watchers

7 watching

Forks

Repository files navigation

ระบบงานสารบรรณอิเล็กทรอนิกส์ (E-Document)

ระบบรับ–ส่งเอกสารภายในหน่วยงานผ่านเว็บ ส่งเอกสารถึงทั้งแผนกหรือเลือกผู้รับรายคน ผู้รับดาวน์โหลดเพื่อลงชื่อรับ ผู้ส่งตรวจได้ว่าใครรับแล้วบ้าง พร้อมแจ้งเตือนทางอีเมล LINE และ Telegram

รุ่น 7.0.4 · PHP 7.4+ · MySQL / MariaDB · MIT License

English — A web-based document circulation system for organisations. Send a document to whole departments or to chosen members; recipients download it to sign for receipt, and the sender sees who has received it. Notifications by e-mail, LINE and Telegram. Built on Now.js (front-end) and Kotchasan (PHP back-end). Upgrades E-Document 6.x sites in place, keeping their data. Documentation is in Thai.


ความสามารถ

งานสารบรรณ

หน้า ทำอะไรได้
ส่งเอกสาร แนบไฟล์ (ชนิดและขนาดตามที่ตั้งค่า) · เลขที่เอกสารออกให้อัตโนมัติหรือกรอกเอง (ตรวจเลขซ้ำ) · ความเร่งด่วน ด่วนมาก/ด่วน/ปกติ · เรื่อง (เว้นว่างจะใช้ชื่อไฟล์) · รายละเอียด
ผู้รับ เลือกแผนก (ทุกคนในแผนกได้รับ) และ/หรือค้นเลือกสมาชิกรายคนจากชื่อหรืออีเมล · ไม่รวมผู้ส่งและสมาชิกที่ถูกระงับ
แจ้งเตือนผู้รับ อีเมล · LINE · Telegram (ช่องทางที่ตั้งค่าไว้) เลือกได้ทุกครั้งที่ส่ง
เอกสารขาเข้า เอกสารที่ส่งถึงตัวเอง · กรองตามความเร่งด่วนและผู้ส่ง · ค้นจากเรื่องหรือเลขที่ · ป้ายเอกสารใหม่/รับแล้ว · ดูรายละเอียด
ลงชื่อรับ การดาวน์โหลดถือเป็นการลงชื่อรับ (ระบบถามยืนยันก่อน) และนับจำนวนครั้งที่ดาวน์โหลด
เอกสารขาออก เอกสารที่ตัวเองส่ง (ผู้จัดการงานสารบรรณเห็นทุกฉบับ) · ดาวน์โหลด · แก้ไข · ลบทีละหลายรายการ
ผู้รับ–ประวัติการดาวน์โหลด รายชื่อผู้รับทุกคนของเอกสาร พร้อมแผนก วันที่รับ และจำนวนครั้งที่ดาวน์โหลด
หน้าแรก การ์ดจำนวนเอกสารใหม่ที่ยังไม่ได้รับ
ตั้งค่าโมดูล คำนำหน้าและรูปแบบเลขที่ · ชนิดไฟล์ที่อัปโหลดได้ · ขนาดไฟล์สูงสุด · เมื่อคลิกดาวน์โหลดให้ดาวน์โหลดหรือเปิดไฟล์ที่รู้จัก (PDF รูปภาพ) ในเบราว์เซอร์

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

ระบบพื้นฐาน

กลุ่ม รายละเอียด
สมาชิก เข้าสู่ระบบ · สมัคร · ยืนยันอีเมล · ลืม/ตั้งรหัสผ่านใหม่ · โปรไฟล์ · ล็อกบัญชีเมื่อเดารหัสผ่านผิดซ้ำ
เข้าสู่ระบบด้วยบัญชีอื่น Google · Facebook · LINE · Telegram
องค์กร แผนก · สถานะสมาชิก · กำหนดสิทธิ์รายสถานะและรายคน
หน้าตั้งค่า ทั่วไป · ข้อมูลหน่วยงาน · ธีม · อีเมล (SMTP) · API · LINE · Telegram · SMS · AI · ภาษา · ประวัติการเข้าระบบและการใช้งาน
หลายภาษา ไทย/อังกฤษ · แก้คำแปลผ่านหน้าเว็บได้
PWA ติดตั้งเป็นแอปบนมือถือ/เดสก์ท็อปได้
ความปลอดภัย CSRF ทุกคำขอที่แก้ข้อมูล · รหัสผ่าน bcrypt · Content-Security-Policy · ไฟล์ภายในถูกกันด้วย .htaccess

สิทธิ์การใช้งาน

สิทธิ์ ได้อะไร
สมาชิกทุกคน เอกสารขาเข้า · ลงชื่อรับเอกสาร
สามารถอัปโหลดไฟล์เอกสารได้ (งานสารบรรณ) · can_upload_edocument ส่งเอกสาร · เอกสารขาออกของตัวเอง · แก้ไข/ลบ/ดูผู้รับของเอกสารที่ตัวเองส่ง
สามารถจัดการ งานสารบรรณ · can_handle_all_edocument เห็น แก้ไข ลบ และดูผู้รับของเอกสารทุกฉบับ
สามารถตั้งค่า ระบบ · can_config หน้าตั้งค่าโมดูลงานสารบรรณและหน้าการตั้งค่าอื่น ๆ

ผู้ดูแลระบบได้ทุกสิทธิ์ · กำหนดสิทธิ์ที่เมนู การตั้งค่า › สิทธิ์การใช้งาน หรือแก้ไขผู้ใช้รายคนที่เมนู ผู้ใช้ ชื่อสิทธิ์เป็นชื่อเดียวกับรุ่น 6.x สมาชิกเดิมไม่ต้องตั้งสิทธิ์ใหม่หลังปรับรุ่น


ความต้องการของระบบ

ขั้นต่ำ
PHP 7.4 ขึ้นไป · ส่วนขยาย mbstring zlib xml gd และ PDO MySQL
ฐานข้อมูล MySQL 5.5.3+ หรือ MariaDB 5.5+ (รองรับ utf8mb4)
เว็บเซิร์ฟเวอร์ Apache + mod_rewrite (มี .htaccess มาให้) หรือ Nginx ที่เขียนกฎ rewrite เทียบเท่า

รัน PHP ผ่าน php-fpm ต้องเปิด CGIPassAuth On (Apache 2.4.13+) ไม่งั้นหัว Authorization ถูกตัดทิ้งก่อนถึง PHP แล้วทุก API ตอบ 401 — .htaccess ที่ให้มา มีทั้ง CGIPassAuth และกฎสำรองไว้แล้ว


ติดตั้ง

  1. ดาวน์โหลดหรือ clone แล้วอัปโหลดไฟล์ทั้งหมดขึ้นเซิร์ฟเวอร์

    git clone https://github.com/goragodwiriya/edocument.git
  2. ให้เว็บเซิร์ฟเวอร์เขียนโฟลเดอร์ของโปรเจ็คได้ ตัวติดตั้งจะสร้าง settings/ และ datas/ ให้เอง (สองโฟลเดอร์นี้ไม่อยู่ใน repo) หรือสร้างไว้เองแล้วตั้งให้เขียนได้

  3. สร้างฐานข้อมูลเปล่า (แนะนำ charset utf8mb4)

  4. เปิด https://โดเมนของคุณ/install/ แล้วทำตามขั้นตอน

    ขั้น ทำอะไร
    0 ตรวจความพร้อมของเซิร์ฟเวอร์
    1 ตรวจโฟลเดอร์ที่ต้องเขียนได้
    2 ตั้งบัญชีผู้ดูแลระบบ
    3 ใส่ค่าเชื่อมต่อฐานข้อมูล
    4 สร้างตาราง นำเข้าคำแปล เสร็จ
  5. ลบโฟลเดอร์ install/ ออกเมื่อติดตั้งเสร็จ

  6. เข้าสู่ระบบด้วยบัญชีผู้ดูแลที่ตั้งไว้ในขั้นที่ 2

ระบบที่ติดตั้งใหม่มีแผนกตัวอย่าง 3 แผนก และเอกสารตัวอย่าง 5 ฉบับ (เลขที่ SAMPLE-0001–0005) ส่งถึงผู้ดูแลระบบ ให้ลองเปิดดูเอกสารขาเข้า ขาออก และหน้าผู้รับได้ทันที เอกสารตัวอย่างไม่มีไฟล์แนบ กดดาวน์โหลดจะแจ้งว่าไม่พบไฟล์ ลบทิ้งได้จากหน้าเอกสารขาออก

เริ่มใช้งาน

  1. การตั้งค่า › แผนก — ตั้งชื่อแผนกของหน่วยงาน
  2. ผู้ใช้ — เพิ่มสมาชิกและกำหนดแผนกให้แต่ละคน (การส่งตามแผนกจะถึงเฉพาะคนที่มีแผนกนั้น)
  3. การตั้งค่า › สิทธิ์การใช้งาน — ให้ผู้ที่ส่งเอกสารได้มีสิทธิ์ "สามารถอัปโหลดไฟล์เอกสารได้" และผู้จัดการงานสารบรรณมีสิทธิ์ "สามารถจัดการ งานสารบรรณ"
  4. การตั้งค่า › งานสารบรรณ › การตั้งค่าโมดูล — รูปแบบเลขที่ ชนิดและขนาดไฟล์ การดาวน์โหลด
  5. ช่องทางแจ้งเตือน (ไม่บังคับ)
    • อีเมล — การตั้งค่า › การตั้งค่าอีเมล ใส่อีเมลผู้ส่ง (No-Reply) และ SMTP ตัวเลือก "ส่งอีเมลแจ้งไปยังผู้รับ" ในหน้าส่งเอกสารจะแสดงเมื่อตั้งอีเมลผู้ส่งแล้ว และจะแจ้งทาง LINE/Telegram ที่ตั้งค่าไว้ไปพร้อมกัน
    • LINE — การตั้งค่า › ตั้งค่า LINE ใส่ Channel access token · ส่งถึงสมาชิกที่เข้าระบบด้วย LINE
    • Telegram — การตั้งค่า › ตั้งค่า Telegram ใส่ Bot token · ส่งถึงสมาชิกที่เข้าระบบด้วย Telegram และส่งเข้ากลุ่มตาม Chat ID ที่ตั้งไว้

ปรับรุ่นจาก E-Document 6.x

ใช้ฐานข้อมูลและไฟล์เอกสารเดิมได้ทั้งหมด ไม่ต้องย้ายข้อมูลเอง

  1. สำรองฐานข้อมูลและโฟลเดอร์ datas/ ก่อนเสมอ
  2. วางรุ่นใหม่ในโฟลเดอร์ใหม่ (แนะนำ ไม่อัปโหลดทับของเดิม เพราะไฟล์ PHP รุ่นเก่าจะค้างอยู่) แล้วคัดลอกจากระบบเดิมมาวาง
    • settings/config.php และ settings/database.php — ต้องใช้ไฟล์เดิม ค่า password_key ในไฟล์นี้ผสมอยู่ในรหัสผ่านของทุกคน
    • datas/edocument/ — ไฟล์ของเอกสารทั้งหมด (ชื่อไฟล์เดิม)
  3. เปิด https://โดเมนของคุณ/install/ ตัวติดตั้งจะเข้าโหมด ปรับรุ่น เอง (เพราะ settings/config.php เป็นรุ่นที่ต่ำกว่า)
  4. เข้าสู่ระบบด้วยบัญชี ผู้ดูแลระบบสูงสุด (สมาชิกลำดับที่ 1) ของระบบเดิม ติ๊กยืนยันว่าสำรองฐานข้อมูลแล้ว แล้วเริ่มปรับรุ่น
  5. ตรวจตารางเปรียบเทียบจำนวนแถวก่อน/หลังที่ตัวปรับรุ่นแสดง แล้ว ลบโฟลเดอร์ install/

ตัวปรับรุ่นทำให้

  • แปลงตารางเป็น InnoDB/utf8mb4 และปรับโครงสร้างให้ตรงกับการติดตั้งใหม่ โดยไม่ลบข้อมูล
  • เอกสาร รายชื่อผู้รับ จำนวนการดาวน์โหลด สมาชิก แผนก สิทธิ์ และประวัติการใช้งานอยู่ครบ
  • เลขที่เอกสารอัตโนมัตินับต่อจากเลขเดิม
  • ค่าตั้งค่าของงานสารบรรณ (คำนำหน้า รูปแบบเลขที่ ชนิด/ขนาดไฟล์ การดาวน์โหลด) ใช้ค่าเดิม
  • รันซ้ำได้ ถ้าหยุดกลางทางให้เปิดตัวปรับรุ่นอีกครั้ง

รหัสผ่านของสมาชิกเดิม — รุ่นใหม่เก็บรหัสผ่านแบบ bcrypt และไม่รับรหัสผ่านรูปแบบเก่า (sha1) ผู้ดูแลระบบสูงสุดถูกแปลงให้ตอนปรับรุ่น สมาชิกคนอื่นต้องตั้งรหัสผ่านใหม่ด้วย ลืมรหัสผ่าน (ต้องตั้งค่าอีเมลก่อน) หรือให้ผู้ดูแลแก้รหัสผ่านให้ที่เมนู ผู้ใช้ (แก้ไขรายคน หรือส่งคำขอตั้งรหัสผ่านใหม่ทางอีเมล) แจ้งสมาชิกล่วงหน้าก่อนเปิดใช้งาน

รุ่นใหม่ต้องใช้ PHP 7.4 ขึ้นไป (รุ่น 6.x ใช้ PHP 5.6 ได้) ตรวจเวอร์ชันของเซิร์ฟเวอร์ก่อนปรับรุ่น


โครงสร้างโฟลเดอร์

├── modules/
│   ├── edocument/        งานสารบรรณ — API (controllers/) โมเดล (models/) สคริปต์หน้าเว็บ (admin.js)
│   │   ├── install/      ตารางของโมดูล + ข้อมูลตัวอย่าง (database.sql) และตัวปรับรุ่น (upgrade.php)
│   │   └── tests/        ชุดทดสอบ end-to-end
│   ├── index/            แกนระบบ: สมาชิก สิทธิ์ ตั้งค่า ภาษา หน้าแรก
│   ├── download/         อัปโหลด/ดาวน์โหลดไฟล์ของแกน
│   ├── export/           พิมพ์และส่งออกเอกสาร
│   └── timeline/         โปรโตคอลไทม์ไลน์ข้ามระบบ
├── templates/            หน้าเว็บ (HTML + data-*) · templates/edocument/ คือหน้าของงานสารบรรณ
├── language/             คำแปลไทย/อังกฤษ (.php และ .json ต้องมีคีย์ตรงกัน)
├── Gcms/                 ส่วนกลางของแอป: API base ตาราง อีเมล LINE Telegram SMS AI
├── Kotchasan/            เฟรมเวิร์กฝั่ง PHP
├── Now/                  เฟรมเวิร์กฝั่งเบราว์เซอร์ (ซอร์ส js/ และบันเดิล dist/)
├── install/              ตัวติดตั้ง ตัวปรับรุ่น และเครื่องมือบรรทัดคำสั่ง
├── settings/             ค่ากำหนดที่ตัวติดตั้งเขียนให้ (ไม่อยู่ใน repo)
├── datas/                ไฟล์ที่ระบบสร้าง: datas/edocument/ เก็บไฟล์เอกสาร (ไม่อยู่ใน repo)
├── index.php             หน้าเดียวของแอป (SPA)
└── api.php               ทางเข้าของ API ทั้งหมด (api/<โมดูล>/<controller>/<เมธอด>)

สำหรับนักพัฒนา

ชุดทดสอบ

# งานสารบรรณ: สร้างฐานทดสอบจากสคีมาและข้อมูลของรุ่น 6.x → รันตัวปรับรุ่นจริงสองรอบ
# → เทียบโครงสร้างกับการติดตั้งใหม่ → เรียก API ทุกตัว แล้วลบฐานทดสอบทิ้ง
php modules/edocument/tests/run.php

# ตัวติดตั้งและตัวปรับรุ่น: ฐานหลายสภาพ (รุ่นปัจจุบัน รุ่นเก่า ข้อมูลเยอะ ปรับรุ่นค้าง ฯลฯ)
php install/cli-testdb.php

# แฟ้มภาษา: หาคีย์ที่โค้ดเรียกแต่ยังไม่มีคำแปล
php install/cli-language.php

ชุดทดสอบสร้างและลบฐานข้อมูลของตัวเอง ใช้สิทธิ์ MySQL จาก settings/database.php แต่ไม่แตะฐานข้อมูลและไฟล์ตั้งค่าของไซต์

เครื่องมืออื่น

php install/cli-fresh.php <dbname> [prefix] --admin=<user> --password=<pass>   # ติดตั้งลงฐานเปล่า
php install/cli-upgrade.php <username> <password> --confirm-backup             # รันตัวปรับรุ่นกับฐานใน settings/
php install/cli-verify.php <dbname> [prefix]                                   # ตรวจว่าฐานผ่านเกณฑ์ของรุ่นนี้

เฟรมเวิร์ก

Now/ และ Kotchasan/ เป็นเฟรมเวิร์กกลางที่ใช้ร่วมกับโปรเจ็คอื่น แก้ที่ต้นทางแล้วนำมาวางทับ ไม่แก้ในโปรเจ็คนี้โดยตรง เอกสารอยู่ที่ nowjs.net · docs.nowjs.net และ kotchasan.com · docs.kotchasan.com


สัญญาอนุญาต

MIT — Copyright (c) 2026 Goragod Wiriya

ผู้พัฒนา

Goragod Wiriya · goragod.com · github.com/goragodwiriya

มีคำถามหรือพบปัญหา แจ้งได้ที่ Issues หรือบอร์ดของ คชสาร

สนับสนุนผู้พัฒนา

บริจาคช่วยค่าเซิร์ฟเวอร์ได้ที่

ธนาคารกสิกรไทย สาขากาญจนบุรี
เลขที่บัญชี 221-2-78341-5
ชื่อบัญชี กรกฎ วิริยะ

About

ระบบงานสารบรรณอีเล็คทรอนิคส์ (E-Document)

Topics

Resources

Stars

24 stars

Watchers

7 watching

Forks

Releases

Packages

Used by

Contributors

Languages