# คู่มือการใช้งาน 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<br/>*(เช่น `john.d`)* | รหัสผ่าน AD | ✅ ผู้ใช้ทั่วไป<br/>✅ การส่งอีเมลแบบโต้ตอบ |
| **🔑 API Key** | `apikey` | API Key จาก SDIC | ✅ ระบบอัตโนมัติ<br/>✅ แอปพลิเคชัน<br/>✅ การส่งจำนวนมาก |

### การจัดการสิทธิ์อีเมล

#### การเข้าถึงหน้าจัดการอีเมล

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*