ผู้ดูแลระบบ
จัดการผู้ใช้ ข้อมูลหมู่บ้าน บทบาทและสิทธิ์ บริการระบบย่อย ประเภทกิจกรรม ตั้งค่าระบบ Audit log/PDPA การอัปเดต และ API Keys
ผู้ที่มีบทบาท ผู้ดูแลระบบ เท่านั้น (เมนู ผู้ดูแลระบบ ท้ายเมนูซ้าย) ยกเว้นหน้าจัดการผู้ใช้ที่ผู้ใหญ่บ้านเข้าได้ในขอบเขตหมู่บ้านของตน และ Audit log ที่ผู้ตรวจสอบบัญชีดูได้

จัดการผู้ใช้
ผู้ดูแลระบบ → จัดการผู้ใช้ แสดงผู้ใช้ทั้งหมด (หน้าละ 25 คน) ค้นหาด้วยชื่อ นามสกุล เบอร์ หรือชื่อผู้ใช้

สร้างผู้ใช้ใหม่
- กด "สร้างใหม่"
- กรอก
| ช่อง | ตัวอย่าง | กฎ |
|---|---|---|
| ชื่อ * / นามสกุล * | กนกพร / ใจงาม | |
| เลขบัตรประชาชน * | 13 หลัก | ตรวจเลขตรวจสอบ และห้ามซ้ำ |
| เบอร์โทรศัพท์ * | 0845556677 | 9–11 หลัก |
| อีเมล | kanokporn@example.com | ไม่บังคับ |
| รหัสผ่าน * / ยืนยันรหัสผ่าน * | •••••••• | อย่างน้อย 8 ตัว |
| ระดับสิทธิ์ | ชาวบ้าน / เจ้าหน้าที่ / กรรมการ / ผู้ใหญ่บ้าน | ระบบมอบบทบาทที่ตรงกันให้อัตโนมัติ |
| สถานะ | ใช้งาน / รออนุมัติ | "รออนุมัติ" จะยังเข้าระบบไม่ได้ |
- กด "บันทึก"

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

กด "แก้ไข" แท็บ "ข้อมูลผู้ใช้" แก้ ชื่อผู้ใช้ (3–100 ตัว ภาษาอังกฤษ เว้นว่าง = ไม่มีบัญชีเข้าระบบ) ชื่อ นามสกุล เบอร์ อีเมล วันเกิด เพศ ระดับสิทธิ์ และ สถานะ (ใช้งาน / รออนุมัติ / ปิดใช้งาน)

ระดับ "ผู้ดูแลระบบ" ในหน้าแก้ไขจะมอบสิทธิ์ผู้ดูแลระบบเต็มรูปแบบ (ทั้งระบบ) อย่าเลือกให้ผู้ใหญ่บ้าน ให้ใช้ระดับ "ผู้ใหญ่บ้าน" แทน
ตั้งรหัสผ่านใหม่ให้ผู้ใช้
ใช้เมื่อผู้ใช้ลืมรหัสผ่าน
- เปิดหน้าผู้ใช้ กด "ตั้งรหัสผ่านใหม่" (หรือแท็บ "ตั้งรหัสผ่านใหม่" ในหน้าต่างแก้ไข)
- กรอก รหัสผ่านใหม่ และ ยืนยันรหัสผ่านใหม่ (อย่างน้อย 8 ตัว) แล้วกดบันทึก
- แจ้งรหัสใหม่ให้ผู้ใช้ — ผู้ใช้จะถูกบังคับให้เปลี่ยนรหัสเองเมื่อเข้าระบบครั้งถัดไป

ผู้ที่ไม่ใช่ผู้ดูแลระบบตั้งรหัสให้คนที่มีสิทธิ์เท่ากันหรือสูงกว่าไม่ได้
คำขอตั้งรหัสผ่านใหม่ (ลืมรหัสผ่าน)
เมื่อชาวบ้านกด "ลืมรหัสผ่าน?" ที่หน้าเข้าสู่ระบบ คำขอจะมาอยู่ที่กระดิ่งแจ้งเตือนของเจ้าหน้าที่ ("คำขอตั้งรหัสผ่านใหม่ N รายการ") และหน้า คำขอตั้งรหัสผ่านใหม่ (/password-requests) — เห็นได้เฉพาะผู้ดูแลระบบและผู้มีสิทธิ์จัดการผู้ใช้ของหมู่บ้าน
- ให้เจ้าของบัญชีมาแสดง บัตรประชาชนตัวจริง ตรวจว่าตรงกับชื่อในคำขอ
- กด "ยืนยันตัวตนแล้ว · ออกรหัสใหม่" ระบบสุ่มรหัส 8 ตัว แสดงให้เห็น ครั้งเดียว — แจ้งเจ้าของบัญชี
- เจ้าของบัญชีต้องเปลี่ยนรหัสเองเมื่อเข้าระบบครั้งถัดไป และทุกเครื่องที่เคยเข้าระบบไว้จะถูกออกจากระบบ

ถ้าตรวจแล้วไม่ใช่เจ้าของบัญชี กด "ปิดคำขอ" (รหัสเดิมยังใช้ได้) ทุกการกระทำถูกบันทึกใน Audit log
ห้ามออกรหัสใหม่โดยไม่ได้เห็นตัวเจ้าของบัญชี — ใครก็ยื่นคำขอแทนคนอื่นได้ ระบบจึงให้เจ้าหน้าที่เป็นผู้ยืนยันตัวตน
เปิดเผยเลขบัตรประชาชน (PDPA)
ในหน้าผู้ใช้ กด "เปิดเผยเลขบัตรเต็ม" ต้องระบุ เหตุผลในการเปิดเผย (อย่างน้อย 4 ตัวอักษร) การเปิดเผยทุกครั้งถูกบันทึกใน Audit log ระดับ critical พร้อมเหตุผล
ข้อมูลหมู่บ้าน
ผู้ดูแลระบบ → ข้อมูลหมู่บ้าน แก้ ชื่อหมู่บ้าน* หมู่ที่* รหัสหมู่บ้าน จังหวัด/อำเภอ/ตำบล และ โลโก้หมู่บ้าน (ไม่เกิน 2 MB ใช้บนเอกสารที่พิมพ์ เช่น หนังสือรับรอง)

ผู้ลงนามหนังสือรับรอง (ผู้ใหญ่บ้านหลัก)
ในหน้าเดียวกัน หัวข้อ "ผู้ลงนามหนังสือรับรอง" เลือกผู้ลงนาม (ผู้ที่มีบทบาทจะแสดงก่อน ตามด้วยสมาชิกทุกคน) และใส่ ตำแหน่ง (เว้นว่าง = "ผู้ใหญ่บ้าน หมู่ที่ X") ระหว่างเลือกจะเห็นตัวอย่างข้อความที่จะพิมพ์ใต้ช่องลงนาม
ถ้าไม่ได้ตั้ง หรือผู้ที่ตั้งไว้ถูกปิดบัญชี ระบบใช้ผู้มีบทบาท "ผู้ใหญ่บ้าน" ล่าสุด → ผู้ดูแลระบบของหมู่บ้าน → เว้นเป็นเส้นประให้เซ็นเอง
บทบาทและสิทธิ์
ผู้ดูแลระบบ → บทบาทและสิทธิ์ ใช้แต่งตั้งตำแหน่งและกำหนดสิทธิ์ของแต่ละตำแหน่ง

มอบหมายบทบาท
ตัวอย่าง: แต่งตั้งนายประเสริฐ มั่นคง เป็นผู้ช่วยผู้ใหญ่บ้าน
- ① ค้นหาคน — พิมพ์ชื่อ เบอร์ หรือชื่อผู้ใช้ อย่างน้อย 2 ตัวอักษร แล้วเลือกคน
- ② เลือกบทบาท — แบ่งเป็นระดับระบบ (ผู้ตรวจสอบบัญชี ผู้ดูแลระบบ) ระดับตำบล (กำนัน สารวัตรกำนัน) ระดับหมู่บ้าน (กรรมการชุมชน ผู้ช่วยผู้ใหญ่บ้าน ผู้ใหญ่บ้าน เจ้าหน้าที่หมู่บ้าน)
- ③ เลือกขอบเขต — หมู่บ้าน หรือ ตำบล (บทบาทระดับระบบไม่ต้องเลือก)
- กด "มอบหมายบทบาท" — ระบบแจ้ง "มอบหมายบทบาทเรียบร้อย"

ด้านขวา "บทบาทที่มอบหมายอยู่" แยกแท็บ ระบบ / ระดับตำบล / ระดับหมู่บ้าน / เจ้าบ้าน กด "ถอน" เพื่อยกเลิกบทบาท (แท็บเจ้าบ้านดึงจากทะเบียนบ้านอัตโนมัติ แก้ที่หน้าบ้านเลขที่)
แก้ไขสิทธิ์ของบทบาท
- กดไอคอนดินสอบนการ์ดบทบาท
- แก้ชื่อบทบาท (ไทย/อังกฤษ) คำอธิบาย
- ติ๊กเลือก สิทธิ์การใช้งาน ตามกลุ่ม (การสื่อสาร การจัดการประจำวัน สวัสดิการ บริการประชาชน การจัดการระบบหมู่บ้าน บริการเสริม ฯลฯ) หรือพิมพ์สิทธิ์เองในช่อง "เพิ่ม permission อื่น (Advanced)"
- เลือก อนุญาตให้แต่งตั้งได้ และ เปิดใช้งานบทบาทนี้ แล้วกดบันทึก

สิทธิ์สำหรับระบบย่อยมีรูปแบบ service.<รหัสบริการ>.member / .staff เช่น service.vbank.staff · service.water.staff · service.welfare.staff · service.assets.staff (ของส่วนกลาง) · service.osm.staff (อสม.) · service.yield.staff (ผลผลิต) · service.coop.member / service.coop.staff (ร้านสหกรณ์ชุมชน — ขายหน้าร้าน รับสินค้าเข้า ตรวจนับสต๊อก) · service.wastebank.member / service.wastebank.staff (ธนาคารขยะ — รับซื้อ ชั่ง คัดแยก ขายขยะ) สองระบบหลังมีช่องติ๊กในกลุ่มบริการเสริมแล้ว
สิทธิ์อนุมัติ/จ่ายปันผลของร้านสหกรณ์และธนาคารขยะไม่ได้มาจากบทบาทในระบบหลัก ต้องตั้งระดับ ผู้ดูแลสูงสุด ในหน้าตั้งค่าของระบบนั้นแล้วเปิดล็อก SSO (ผู้ดูแลระบบได้ระดับนี้อัตโนมัติ)
ช่องติ๊ก "Inventory" ในกลุ่มบริการเสริมใช้รหัส service.inventory.* ซึ่งระบบของส่วนกลางยังไม่รู้จัก ให้พิมพ์ service.assets.staff ในช่อง Advanced แทน
บริการในระบบ
ผู้ดูแลระบบ → บริการในระบบ เปิด/ปิดบริการที่แสดงในหน้า "บริการชุมชน" และตั้งลิงก์ระบบย่อย

- สวิตช์บนการ์ด — เปิด/ปิดบริการทันที
- ไอคอนดินสอ — แก้ชื่อบริการ URL (เว้นว่าง = ระบบหาโฟลเดอร์ให้อัตโนมัติ) ไอคอน สี คำอธิบาย โลโก้ระบบย่อย (แนะนำ 512×512) และ Favicon
- "+ เพิ่มบริการ" — ลงทะเบียนระบบย่อยใหม่ ใส่รหัสบริการ (a-z 0-9 _) ชื่อ และ URL

ประเภทกิจกรรมในปฏิทิน
ผู้ดูแลระบบ → ประเภทกิจกรรมในปฏิทิน กำหนดประเภทและสีของกิจกรรม

กด "+ เพิ่มประเภท" กรอก ชื่อ (ไทย) * · ชื่อ (อังกฤษ) · รหัส (slug) * (a-z 0-9 _ แก้ไม่ได้ภายหลัง) · ลำดับ · สี · ไอคอน แล้วบันทึก ประเภท "อื่น ๆ" ลบไม่ได้
เอาติ๊ก "แสดงในตัวเลือก" ออกเพื่อซ่อนประเภทนั้นจากตัวเลือกตอนสร้างกิจกรรม กิจกรรมเดิมที่ใช้ประเภทนี้ยังแสดงสีและชื่อเหมือนเดิม (ประเภท "อื่น ๆ" ซ่อนไม่ได้)

ตั้งค่าระบบ
ผู้ดูแลระบบ → ตั้งค่าระบบ เป็นฟอร์มยาวแบ่งหัวข้อตามเมนูซ้าย กดปุ่ม "บันทึก" ที่แถบด้านล่างครั้งเดียวเพื่อบันทึกทุกหัวข้อ

| หัวข้อ | ตั้งค่าอะไร |
|---|---|
| ข้อมูลระบบ | ชื่อระบบ · คำโปรย · ข้อความต้อนรับ (แสดงหน้า Login และหน้าหลัก) |
| แบรนด์ | โลโก้ · Favicon · ไอคอนแอป (512×512 PNG สำหรับติดตั้งบนมือถือ) · ภาพพื้นหลังหน้า Login (ไฟล์ละไม่เกิน 5 MB) |
| เครื่องอ่านบัตรประชาชน | เปิดปุ่ม "อ่านบัตร" · URL ของ Reader Helper (ปุ่ม "สแกนหาเครื่องอัตโนมัติ") · ลิงก์ดาวน์โหลดโปรแกรม Moobaan Card Agent · พอร์ตที่ใช้ค้นหา |
| PDPA & การเก็บ Audit | ระยะเวลาเก็บ log · ขั้นต่ำที่ห้ามลบ · เวอร์ชันและข้อความ Consent · บังคับยืนยันความยินยอมหลังเข้าสู่ระบบ (เปิดไว้เป็นค่าเริ่มต้น — ผู้ใช้ทุกคนต้องกดยินยอมก่อนใช้งาน และต้องยืนยันใหม่เมื่อเปลี่ยนเวอร์ชัน Consent) |
| นโยบายรหัสผ่านเริ่มต้น | สุ่มรหัส 8 ตัว (ค่าเริ่มต้น แนะนำ) — ระบบแสดงรหัสให้เจ้าหน้าที่ครั้งเดียวเพื่อแจ้งเจ้าของบัญชี · วันเกิด (DDMMYYYY พ.ศ.) · 4 หลักท้ายบัตร · 4 หลักท้ายเบอร์ · รหัสคงที่ — ใช้เมื่อเปิดบัญชีจากหน้าบ้านเลขที่ ตัวเลือกอื่นที่ไม่ใช่ "สุ่ม" เดาได้จากข้อมูลส่วนตัว ไม่แนะนำ |
| การพิมพ์ใบเสร็จ | ขนาดกระดาษ 80 มม./A5/A4 · ข้อความหัว/ท้ายใบเสร็จ · แสดงโลโก้ |
| การชำระเงิน QR / ตรวจสลิป | ผู้ให้บริการตรวจสลิป (SlipOK / EasySlip) · API Key · Branch ID · อายุสลิปสูงสุด (วัน) · อนุมัติอัตโนมัติ · ลิงก์ไปหน้าบัญชีรับชำระ |
| กระเป๋าเงินสมาชิก | เปิดใช้กระเป๋าเงิน (ปิด = ซ่อนเมนู หยุดเติมเงินและหักอัตโนมัติ ยอดเดิมยังอยู่และเจ้าหน้าที่ถอนคืนได้) · หักอัตโนมัติจาก ค่าธรรมเนียม / ค่าน้ำ / กองทุนสวัสดิการ · ใช้กระเป๋าเงินกับระบบย่อย — ร้านสหกรณ์ชุมชน (จ่ายค่าสินค้า · รับปันผล) / ธนาคารขยะ (รับเงินค่าขยะ · รับปันผล) ดูร้านสหกรณ์ชุมชน · ยอดเติมต่ำสุด–สูงสุดต่อครั้ง (ค่าเริ่มต้น 20–50,000 บาท) · สลิปเติมเงินที่ตรวจผ่านเข้ากระเป๋าทันที — ค่าเริ่มต้นเปิดทั้งหมด ดูกระเป๋าเงินสมาชิก |
| AI | ดูบทที่ 10 |
| ถอดเสียงประชุม | ผู้ให้บริการ: OpenAI (Whisper) · Groq (Whisper เร็ว ราคาถูก) · Whisper ในเครื่อง (เซิร์ฟเวอร์ Whisper ที่หมู่บ้านติดตั้งเอง เช่น speaches / faster-whisper-server — เสียงไม่ออกนอกเครือข่าย ไม่ต้องมี API Key) · โมเดล · Base URL · API Key (เข้ารหัส) · ปุ่ม "ทดสอบการเชื่อมต่อ" · เปิด/ปิดการถอดสดในเบราว์เซอร์ · จำนวนครั้งถอดเสียง+ร่างรายงานด้วย AI ต่อหมู่บ้านต่อวัน (ค่าเริ่มต้น 20) — ดูการถอดเสียงประชุม |







เมื่อเปิดการบังคับความยินยอม ผู้ใช้จะเห็นหน้ายืนยันความยินยอมก่อนเข้าใช้งาน
Audit log / PDPA
ผู้ดูแลระบบ → Audit / PDPA แสดงบันทึกการใช้งานทั้งระบบ สรุป 30 วันล่าสุด: จำนวน log · เหตุการณ์ PDPA · Login ล้มเหลว · ระดับ Critical

- กรองตามประเภท (เข้าสู่ระบบ ออกจากระบบ รหัสผ่าน เปลี่ยนข้อมูล ระบบ ยืนยันตัวตนล้มเหลว เปลี่ยนบทบาท PDPA) ระดับ (info / warn / critical) ผู้ใช้ และช่วงวันที่
- CSV — ส่งออกสูงสุด 10,000 แถว (การส่งออกก็ถูกบันทึกด้วย)
- ลบ log เก่า — ใส่อายุ log เป็นวัน ระบบจะไม่ลบ log ที่ใหม่กว่าขั้นต่ำที่ตั้งไว้ (ลบแล้วกู้คืนไม่ได้)
อัปเดตระบบ
ผู้ดูแลระบบ → อัพเดทระบบ แสดงเวอร์ชันปัจจุบัน จำนวนการอัปเดตฐานข้อมูลที่ยังไม่ได้ติดตั้ง และประวัติ

- แหล่งอัปเดต — ใส่ URL ของ Update Server (https) แล้วกด "ตรวจสอบ" เมื่อมีเวอร์ชันใหม่ จะขึ้น "มีอัปเดตใหม่ vX" กด "อัปเดตเป็น vX"
- อัปโหลดแพ็กเกจเอง — เลือกไฟล์ .zip ที่ได้รับ กด "ตรวจแพ็กเกจ" (ระบบตรวจลายเซ็นดิจิทัลก่อนติดตั้ง)
- แท็บ อัพเดท — รายการอัปเดตฐานข้อมูลที่รอ กด "Run ทั้งหมด" หรือทีละเวอร์ชัน
- แท็บ changelog และ ประวัติ
เมื่อมีอัปเดต ผู้ดูแลจะเห็นแถบ "มีอัปเดตระบบใหม่ — กดเพื่ออัปเดต" ที่ด้านบนทุกหน้า และตัวเลขสีแดงที่เมนูผู้ดูแลระบบ
ควรสำรองฐานข้อมูลทุกครั้งก่อนกดอัปเดต
เซิร์ฟเวอร์ต้องเปิดส่วนขยาย sodium ของ PHP (ใช้ตรวจลายเซ็นแพ็กเกจ) ถ้าขึ้น "เซิร์ฟเวอร์ไม่มีส่วนขยาย sodium" ให้เปิดในแผงควบคุมโฮสติ้ง (เช่น Select PHP Version) ของเวอร์ชัน PHP ที่เว็บใช้จริง — ระบบพัฒนาและทดสอบบน PHP 8.4
API Keys
ผู้ดูแลระบบ → API Keys สร้างกุญแจให้ระบบภายนอก (เช่น เว็บไซต์ อบต. หรือแอปมือถือ) ดึงข้อมูลสรุปของหมู่บ้าน

- กด "สร้าง API Key"
- กรอก ชื่อ / คำอธิบาย * (เว็บไซต์ อบต.ป่าสัก)
- เลือก สิทธิ์ (scopes) — ข้อมูลหมู่บ้าน · สรุปจำนวน · รายการบ้าน · รายชื่อผู้ใช้ (ไม่รวมข้อมูลอ่อนไหว) · ปฏิทินกิจกรรม · สรุปของแต่ละระบบย่อย · สิทธิ์เต็ม
- ตั้ง วันหมดอายุ (เว้นว่าง = ไม่หมดอายุ) แล้วกด "สร้าง Key"
- คัดลอก secret ทันที — ระบบแสดงครั้งเดียว พร้อมตัวอย่างคำสั่ง cURL

ระบบภายนอกส่ง header X-API-Key และ X-API-Secret ไปยัง /api/v1/village, /api/v1/houses, /api/v1/users ฯลฯ กด "ยกเลิก" เพื่อระงับกุญแจ หรือไอคอนถังขยะเพื่อลบ