diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 206ba88..0b83152 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -3,7 +3,8 @@ "allow": [ "Bash(dir \"C:\\Users\\siwat\\Nextcloud\\Documents\\SATITM-Network 2024\\Manual\\photos\")", "Bash(dir \"C:\\Users\\siwat\\Nextcloud\\Documents\\SATITM-Network 2024\\Manual\\photos\\cert_renew\")", - "Bash(python:*)" + "Bash(python:*)", + "Bash(dir:*)" ], "deny": [], "ask": [] diff --git a/SDIC.md b/SDIC.md new file mode 100644 index 0000000..84beb64 --- /dev/null +++ b/SDIC.md @@ -0,0 +1,365 @@ +# คู่มือการใช้งาน SDIC +## ระบบเชื่อมโยงข้อมูลโรงเรียน (School Data Interconnect) +### โรงเรียนสาธิตจุฬาลงกรณ์มหาวิทยาลัย ฝ่ายมัธยม +#### sdic.satitchula.app + +--- + +## สารบัญ + +1. [ภาพรวมระบบ](#ภาพรวมระบบ) +2. [การเข้าสู่ระบบ SDIC](#การเข้าสู่ระบบ-sdic) +3. [การจัดการอีเมล](#การจัดการอีเมล) +4. [การซิงค์ข้อมูล](#การซิงค์ข้อมูล) +5. [การจัดการ API Key](#การจัดการ-api-key) +6. [การตรวจสอบระบบ](#การตรวจสอบระบบ) +7. [การแก้ไขปัญหา](#การแก้ไขปัญหา) + +--- + +## ภาพรวมระบบ + +SDIC (School Data Interconnect) เป็นแอปพลิเคชันที่พัฒนาโดย Siwat System เพื่อจัดการข้อมูลโรงเรียนทั่วทั้งระบบของ Siwat System และพาร์ทเนอร์ที่เชื่อมต่อ เข้าถึงได้ที่ **sdic.satitchula.app** + +### ฟังก์ชันหลัก + +- **การควบคุม MXRelay**: จัดการการส่งอีเมลจำนวนมาก +- **การซิงค์ข้อมูล**: ควบคุมการไหลของข้อมูลจาก CUDReg ไปยัง Active Directory +- **การตรวจสอบคุณภาพอากาศ**: จัดการเครื่องตรวจวัด IQAir PM2.5 และคุณภาพอากาศ +- **การจัดการ API**: ให้บริการสร้างและจัดการ API key สำหรับการเชื่อมต่อระบบ + +--- + +## การเข้าสู่ระบบ SDIC + +### ขั้นตอนการเข้าสู่ระบบ + +1. **เปิดเว็บเบราว์เซอร์และไปที่** **sdic.satitchula.app** + +2. **กรอกข้อมูลการเข้าสู่ระบบในหน้าล็อกอิน** + + ![หน้าล็อกอิน SDIC](photos/sdic/sdic_login.png) + + **ข้อมูลที่ต้องการ:** + - **Username or Email**: ชื่อผู้ใช้ Active Directory หรืออีเมล (example@satitm.chula.ac.th) + - **Password**: รหัสผ่าน Active Directory + +3. **คลิก "Log In" เพื่อเข้าสู่ระบบ** + +4. **ระบบจะนำคุณไปยังหน้า Dashboard เมื่อเข้าสู่ระบบสำเร็จ** + + ![Dashboard SDIC](photos/sdic/sdic_dashboard.png) + +--- + +## การจัดการอีเมล + +### ภาพรวม + +SDIC ควบคุมระบบ MXRelay ที่โรงเรียนใช้สำหรับส่งอีเมลจำนวนมากผ่าน **mx.satitchula.app** + +### การตั้งค่า MXRelay + +| **พารามิเตอร์** | **ค่า** | **รายละเอียด** | +|-----------------|---------|----------------| +| **Server** | `mx.satitchula.app` | เซิร์ฟเวอร์ SMTP ของโรงเรียน | +| **Port** | `587` | พอร์ตมาตรฐานสำหรับ SMTP Submission | +| **Security** | `StartTLS` | เข้ารหัสการเชื่อมต่อ | + +### วิธีการยืนยันตัวตน + +MXRelay รองรับการยืนยันตัวตน 2 วิธี: + +| **วิธีการ** | **Username** | **Password** | **การใช้งาน** | +|-------------|--------------|--------------|---------------| +| **🔐 Active Directory** | ชื่อผู้ใช้ AD
*(เช่น `john.d`)* | รหัสผ่าน AD | ✅ ผู้ใช้ทั่วไป
✅ การส่งอีเมลแบบโต้ตอบ | +| **🔑 API Key** | `apikey` | API Key จาก SDIC | ✅ ระบบอัตโนมัติ
✅ แอปพลิเคชัน
✅ การส่งจำนวนมาก | + +### การจัดการสิทธิ์อีเมล + +#### การเข้าถึงหน้าจัดการอีเมล + +1. **จาก Dashboard คลิกที่ "Email Management"** + + ![เมนูอีเมล](photos/sdic/sdic_menu_email.png) + +2. **เลือก "Email Permissions" เพื่อจัดการสิทธิ์** + + ![หน้าจัดการสิทธิ์อีเมล](photos/sdic/sdic_page_email_permission.png) + +#### การเพิ่มสิทธิ์อีเมล + +1. **คลิกปุ่ม "+ Add Permission"** + +2. **กรอกข้อมูลในหน้าต่าง "Add Email Permission":** + + ![เพิ่มสิทธิ์อีเมล](photos/sdic/sdic_page_email_permission_add_perm_modal.png) + + - **Username (sAMAccountName)**: กรอกชื่อผู้ใช้ AD (เช่น john.doe) + - **Email Address or Domain**: กรอกอีเมลเฉพาะ (user@example.com) หรือโดเมน (example.com) + +3. **คลิก "Create" เพื่อบันทึกสิทธิ์** + +#### ข้อกำหนดเบื้องต้น + +- ผู้ใช้ต้องเข้าสู่ระบบ SDIC อย่างน้อยหนึ่งครั้งก่อนจึงจะสามารถเพิ่มสิทธิ์ได้ +- การเข้าสู่ระบบครั้งแรกจะโหลดข้อมูล AD ของผู้ใช้เข้าสู่ระบบ +- คุณต้องมีสิทธิ์ผู้ดูแลระบบเพื่อจัดการสิทธิ์อีเมล + +### ประเภทของสิทธิ์อีเมล + +SDIC รองรับสิทธิ์อีเมลสองประเภทที่กำหนดว่าผู้ใช้สามารถส่งอีเมลจากที่อยู่ใดได้บ้าง: + +#### สิทธิ์เฉพาะที่อยู่ (Address-Specific Permissions) + +ให้สิทธิ์ส่งอีเมลจากที่อยู่อีเมลเฉพาะเจาะจงหนึ่งที่อยู่ + +**ตัวอย่างที่ 1: ที่อยู่อีเมลเฉพาะ** +- **Email Address**: newsletter@satitm.chula.ac.th +- **ผลลัพธ์**: ผู้ใช้ john.doe สามารถส่งอีเมลได้เฉพาะจาก newsletter@satitm.chula.ac.th เท่านั้น + +**ตัวอย่างที่ 2: หลายที่อยู่เฉพาะ** + +เพื่อให้ผู้ใช้สามารถส่งจากหลายที่อยู่เฉพาะ ให้สร้างสิทธิ์แยกกัน: +- สิทธิ์ที่ 1: john.doe → admissions@satitm.chula.ac.th +- สิทธิ์ที่ 2: john.doe → events@satitm.chula.ac.th +- **ผลลัพธ์**: ผู้ใช้ john.doe สามารถส่งได้จากทั้ง admissions@satitm.chula.ac.th และ events@satitm.chula.ac.th + +#### สิทธิ์ทั้งโดเมน (Domain-Wide Permissions) + +ให้สิทธิ์ส่งอีเมลจากที่อยู่ใดก็ได้ภายในโดเมนที่กำหนด + +**ตัวอย่างที่ 1: โดเมนโรงเรียน** +- **Domain**: satitm.chula.ac.th +- **ผลลัพธ์**: ผู้ใช้ mary.smith สามารถส่งอีเมลจากที่อยู่ใดก็ได้ที่ลงท้ายด้วย @satitm.chula.ac.th + - ✅ ส่งได้จาก: info@satitm.chula.ac.th + - ✅ ส่งได้จาก: library@satitm.chula.ac.th + - ✅ ส่งได้จาก: sports@satitm.chula.ac.th + - ❌ ส่งไม่ได้จาก: external@gmail.com + +**ตัวอย่างที่ 2: โดเมนเพิ่มเติม** +- **Domain**: cudplus.satitm.chula.ac.th +- **ผลลัพธ์**: ผู้ใช้สามารถส่งอีเมลจากที่อยู่ใดก็ได้ที่ลงท้ายด้วย @cudplus.satitm.chula.ac.th + - ✅ ส่งได้จาก: noreply@cudplus.satitm.chula.ac.th + - ✅ ส่งได้จาก: support@cudplus.satitm.chula.ac.th + +> **หมายเหตุ**: ในปัจจุบันมีเพียงโดเมน satitm.chula.ac.th และ cudplus.satitm.chula.ac.th เท่านั้นที่ได้รับการลงทะเบียนและอนุญาตในระบบ + +#### แนวทางปฏิบัติที่ดี + +**ข้อควรพิจารณาด้านความปลอดภัย:** +- ควรให้สิทธิ์ทั้งโดเมนอย่างระมัดระวัง +- ผู้ใช้ทั่วไปควรได้รับสิทธิ์เฉพาะที่อยู่ +- ตรวจสอบสิทธิ์เป็นประจำเพื่อให้แน่ใจว่ายังจำเป็น + +### การตรวจสอบบันทึกอีเมล + +สามารถตรวจสอบบันทึกการส่งอีเมลได้ที่: + +![บันทึกอีเมล](photos/sdic/sdic_page_email_log.png) + +--- + +## การซิงค์ข้อมูล + +### ภาพรวม + +SDIC จัดการการไหลของข้อมูลซิงค์จาก CUDReg (ระบบลงทะเบียน) เข้าสู่ Active Directory + +### สถาปัตยกรรมระบบ + +การไหลของข้อมูลซิงค์ทำงานดังนี้: +- **CUDReg** (ระบบลงทะเบียน) → **Active Directory** (ระบบยืนยันตัวตน) +- Active Directory จะซิงค์อัตโนมัติกับ: + - **RADIUS (NPS)**: การยืนยันตัวตน WiFi และ .1x + - **FortiGate**: Captive Portal, Content Filtering และ VPN + - **CUDIoT**: พอร์ทัลควบคุม Internet of Things + - **CUDPlus**: ระบบ eLearning + - **ZKTeco**: ระบบควบคุมการเข้าออก (เมื่อออนไลน์) + +### การเข้าถึงการซิงค์ + +1. **จาก Dashboard คลิกที่ "Data Synchronization"** + + ![เมนูซิงค์](photos/sdic/sdic_menu_synchronization.png) + +2. **เลือก "Data Sync" เพื่อดูสถานะการซิงค์** + + ![หน้าซิงค์ข้อมูล](photos/sdic/sdic_page_datasync.png) + +### การเริ่มต้นการซิงค์ข้อมูล + +1. ไปที่ Synchronization → Data Sync +2. ระบบจะแสดงสถานะซิงค์ปัจจุบันของระบบที่เชื่อมต่อทั้งหมด +3. เพื่อเริ่มการซิงค์แบบแมนนวล: + - คลิกที่ตัวเลือกซิงค์สำหรับ CUDReg → Active Directory + - ระบบจะแสดงกระบวนการซิงค์แบบหลายขั้นตอน + +### กระบวนการซิงค์ + +#### ขั้นตอนที่ 1: เตรียมการ +ระบบเตรียมการซิงค์โดยรวบรวมการเปลี่ยนแปลงจาก CUDReg + +#### ขั้นตอนที่ 2: ตรวจสอบการเปลี่ยนแปลง + +![ตรวจสอบการเปลี่ยนแปลง](photos/sdic/sdic_page_datasync_task_cudreg_ad_review.png) + +ตรวจสอบการเปลี่ยนแปลงที่จะถูกซิงค์: +- **Create New Records**: แสดงระเบียนนักเรียน/พนักงานใหม่ที่จะเพิ่ม +- **Update Existing Records**: แสดงการแก้ไขระเบียนที่มีอยู่ +- **Deletions**: แสดงระเบียนที่จะลบ + +คุณสามารถ: +- เลือก/ยกเลิกการเปลี่ยนแปลงแต่ละรายการโดยใช้ checkbox +- ใช้ตัวเลือก "Select All Creations", "Select All Updates", หรือ "Select All" +- ค้นหาระเบียนเฉพาะโดยใช้กล่องค้นหา + +#### ขั้นตอนที่ 3: สรุป + +![สรุปการซิงค์](photos/sdic/sdic_page_datasync_task_cudreg_ad_summary.png) + +ตรวจสอบสรุปการซิงค์: +- **New Entries**: จำนวนระเบียนใหม่ที่จะสร้าง +- **Updates**: จำนวนระเบียนที่มีอยู่ที่จะแก้ไข +- **Deletions**: จำนวนระเบียนที่จะลบ + +#### ขั้นตอนที่ 4: ยืนยันและดำเนินการ + +![ยืนยันการซิงค์](photos/sdic/sdic_page_datasync_task_cudreg_ad_confirm.png) + +การยืนยันครั้งสุดท้ายก่อนนำการเปลี่ยนแปลงไปใช้: + +> **⚠️ คำเตือน**: การกระทำนี้ไม่สามารถยกเลิกได้ ให้แน่ใจว่าคุณได้ตรวจสอบการเปลี่ยนแปลงทั้งหมดอย่างรอบคอบแล้ว + +คลิก "Synchronize Now" เพื่อดำเนินการซิงค์ + +#### ขั้นตอนที่ 5: เสร็จสิ้น + +![การซิงค์เสร็จสิ้น](photos/sdic/sdic_page_datasync_task_cudreg_ad_complete.png) + +การซิงค์เสร็จสมบูรณ์เมื่อขั้นตอนทั้งหมดแสดงเครื่องหมายถูกสีเขียว + +### การตรวจสอบการซิงค์ + +#### รายงานการตรวจสอบ + +![รายงานการตรวจสอบ](photos/sdic/sdic_page_sync_audit.png) + +รายงาน Audit Log แสดงข้อมูล: +- **ID**: รหัสประจำล็อก +- **Action**: ประเภทการกระทำที่ดำเนินการ (เช่น RESET_PASSWORD) +- **User**: ผู้ที่ดำเนินการ +- **Description**: รายละเอียดของการกระทำ +- **Timestamp**: เวลาที่เกิดการกระทำ +- **Data**: ข้อมูลเพิ่มเติม (คลิกไอคอนข้อมูลเพื่อดู) + +--- + +## การจัดการ API Key + +![หน้าจัดการ API Key](photos/sdic/sdic_page_apikey.png) + +### การสร้าง API Key + +1. **ไปที่ "API Keys" จากเมนูหลัก** +2. **คลิก "Create API Key" (ปุ่ม + Create API Key)** +3. **ระบบจะสร้าง API key ใหม่สำหรับบัญชีของคุณ** +4. **API key จะแสดงพร้อมกับ:** + - **API Key**: คีย์จริง (ปิดบังบางส่วนเพื่อความปลอดภัย) + - **Created**: เวลาที่สร้าง + - **Actions**: ตัวเลือกดู คัดลอก หรือลบคีย์ + +### การจัดการ API Key + +- **ดูคีย์**: คลิกไอคอนตาเพื่อแสดง API key เต็ม +- **คัดลอกคีย์**: คลิกไอคอนคัดลอกเพื่อคัดลอกคีย์ไปยังคลิปบอร์ด +- **ลบคีย์**: คลิกไอคอนถังขยะเพื่อลบ API key + +### หมายเหตุด้านความปลอดภัย + +- API key ทำงานด้วยสิทธิ์เดียวกันกับผู้ใช้ที่สร้าง +- เก็บ API key อย่างปลอดภัยและไม่แชร์ให้ผู้อื่น +- หมุนเวียน API key เป็นประจำเพื่อความปลอดภัย + +### การใช้ API Key + +ผู้ถือ API key สามารถทำงานในฐานะผู้ใช้ด้วยสิทธิ์ของผู้ใช้นั้น การใช้ API key สำหรับการยืนยันตัวตน: + +- **Username**: apikey +- **Password**: [API key จริง] + +--- + +## การตรวจสอบระบบ + +### การตรวจสอบสถานะระบบ + +สามารถตรวจสอบสถานะการทำงานของระบบต่าง ๆ ได้จากหน้า Dashboard ที่แสดง: + +- สถานะการเชื่อมต่อ Active Directory +- สถานะ MXRelay Server +- สถานะการซิงค์ข้อมูล +- จำนวน API Key ที่ใช้งานอยู่ + +### การตรวจสอบล็อกระบบ + +1. **รายงานการตรวจสอบ**: ดูจากหน้า Audit Log +2. **บันทึกอีเมล**: ตรวจสอบการส่งอีเมลจากหน้า Email Log +3. **ประวัติการซิงค์**: ดูจากรายงานการซิงค์ข้อมูล + +--- + +## การแก้ไขปัญหา + +### ปัญหาทั่วไป + +#### ไม่สามารถเข้าสู่ระบบได้ + +**สาเหตุที่เป็นไปได้:** +- ข้อมูลผู้ใช้หรือรหัスผ่านผิด +- บัญชี AD ถูกปิดใช้งาน +- ปัญหาการเชื่อมต่อเครือข่าย + +**วิธีแก้ไข:** +1. ตรวจสอบข้อมูลการเข้าสู่ระบบ +2. ลองใช้อีเมลแทนชื่อผู้ใช้ +3. ติดต่อผู้ดูแลระบบ IT + +#### ไม่สามารถส่งอีเมลได้ + +**สาเหตุที่เป็นไปได้:** +- ไม่มีสิทธิ์ส่งจากที่อยู่ที่ระบุ +- การตั้งค่า SMTP ไม่ถูกต้อง +- API key หมดอายุ + +**วิธีแก้ไข:** +1. ตรวจสอบสิทธิ์อีเมลในระบบ SDIC +2. ยืนยันการตั้งค่า MXRelay +3. สร้าง API key ใหม่หากจำเป็น + +#### การซิงค์ข้อมูลล้มเหลว + +**สาเหตุที่เป็นไปได้:** +- ข้อมูลใน CUDReg ไม่สมบูรณ์ +- ปัญหาการเชื่อมต่อ Active Directory +- ข้อผิดพลาดในการจับคู่ข้อมูล + +**วิธีแก้ไข:** +1. ตรวจสอบล็อกการซิงค์ +2. ตรวจสอบความสมบูรณ์ของข้อมูล +3. ลองซิงค์อีกครั้งในภายหลัง + +### การติดต่อสำหรับความช่วยเหลือ + +หากพบปัญหาที่ไม่สามารถแก้ไขได้ด้วยตนเอง กรุณาติดต่อ: + +- **Siwat System Support** + - **อีเมล**: siwat@siwatinc.com + - **ผู้ติดต่อ**: ศิวัช ศิริชัย + - **โทรศัพท์**: 086-789-5193 + +--- + +*เอกสารฉบับนี้ถูกจัดทำขึ้นเพื่อใช้ภายในโรงเรียนสาธิตจุฬาลงกรณ์มหาวิทยาลัย ฝ่ายมัธยม* + +*อัปเดตล่าสุด: 31 สิงหาคม 2025* \ No newline at end of file diff --git a/photos/sdic/sdic_dashboard.png b/photos/sdic/sdic_dashboard.png new file mode 100644 index 0000000..a700e82 Binary files /dev/null and b/photos/sdic/sdic_dashboard.png differ diff --git a/photos/sdic/sdic_login.png b/photos/sdic/sdic_login.png new file mode 100644 index 0000000..2942077 Binary files /dev/null and b/photos/sdic/sdic_login.png differ diff --git a/photos/sdic/sdic_menu_email.png b/photos/sdic/sdic_menu_email.png new file mode 100644 index 0000000..8044a5f Binary files /dev/null and b/photos/sdic/sdic_menu_email.png differ diff --git a/photos/sdic/sdic_menu_synchronization.png b/photos/sdic/sdic_menu_synchronization.png new file mode 100644 index 0000000..7eb2420 Binary files /dev/null and b/photos/sdic/sdic_menu_synchronization.png differ diff --git a/photos/sdic/sdic_page_apikey.png b/photos/sdic/sdic_page_apikey.png new file mode 100644 index 0000000..46892c7 Binary files /dev/null and b/photos/sdic/sdic_page_apikey.png differ diff --git a/photos/sdic/sdic_page_datasync.png b/photos/sdic/sdic_page_datasync.png new file mode 100644 index 0000000..a247bb5 Binary files /dev/null and b/photos/sdic/sdic_page_datasync.png differ diff --git a/photos/sdic/sdic_page_datasync_task_cudreg_ad_complete.png b/photos/sdic/sdic_page_datasync_task_cudreg_ad_complete.png new file mode 100644 index 0000000..ac8e00c Binary files /dev/null and b/photos/sdic/sdic_page_datasync_task_cudreg_ad_complete.png differ diff --git a/photos/sdic/sdic_page_datasync_task_cudreg_ad_confirm.png b/photos/sdic/sdic_page_datasync_task_cudreg_ad_confirm.png new file mode 100644 index 0000000..7cbea81 Binary files /dev/null and b/photos/sdic/sdic_page_datasync_task_cudreg_ad_confirm.png differ diff --git a/photos/sdic/sdic_page_datasync_task_cudreg_ad_review.png b/photos/sdic/sdic_page_datasync_task_cudreg_ad_review.png new file mode 100644 index 0000000..848c2ef Binary files /dev/null and b/photos/sdic/sdic_page_datasync_task_cudreg_ad_review.png differ diff --git a/photos/sdic/sdic_page_datasync_task_cudreg_ad_summary.png b/photos/sdic/sdic_page_datasync_task_cudreg_ad_summary.png new file mode 100644 index 0000000..9113a58 Binary files /dev/null and b/photos/sdic/sdic_page_datasync_task_cudreg_ad_summary.png differ diff --git a/photos/sdic/sdic_page_email_log.png b/photos/sdic/sdic_page_email_log.png new file mode 100644 index 0000000..de4c8ba Binary files /dev/null and b/photos/sdic/sdic_page_email_log.png differ diff --git a/photos/sdic/sdic_page_email_permission.png b/photos/sdic/sdic_page_email_permission.png new file mode 100644 index 0000000..3eeff48 Binary files /dev/null and b/photos/sdic/sdic_page_email_permission.png differ diff --git a/photos/sdic/sdic_page_email_permission_add_perm_modal.png b/photos/sdic/sdic_page_email_permission_add_perm_modal.png new file mode 100644 index 0000000..f8e0ca9 Binary files /dev/null and b/photos/sdic/sdic_page_email_permission_add_perm_modal.png differ diff --git a/photos/sdic/sdic_page_sync_audit.png b/photos/sdic/sdic_page_sync_audit.png new file mode 100644 index 0000000..c187ae3 Binary files /dev/null and b/photos/sdic/sdic_page_sync_audit.png differ