update: refine documentation requirements and enhance clarity

This commit is contained in:
JakkrapartXD 2025-12-18 13:32:29 +07:00
parent 156efe8ee7
commit c3958eeba9

View file

@ -0,0 +1,272 @@
# ขอบเขตความสามารถของระบบ (User Roles & Responsibilities)
## 1. Admin (ผู้ดูแลระบบ)
**บทบาทหลัก:** ควบคุมระบบ ตรวจสอบความถูกต้อง และอนุมัติธุรกรรมทางการเงิน
---
### การจัดการผู้ใช้
* ดูรายชื่อผู้ใช้ทั้งหมด
* สร้าง / แก้ไข / ลบผู้ใช้
* กำหนดบทบาท (Admin / Instructor / Learner)
* ระงับหรือยกเลิกการใช้งานผู้ใช้
* รีเซ็ตรหัสผ่านผู้ใช้
**รองรับการออกแบบ:**
* RBAC (Role-based Access Control)
---
### การจัดการหลักสูตร (เชิงกำกับดูแล)
* ดูหลักสูตรทั้งหมดในระบบ
* อนุมัติ / ระงับการเผยแพร่หลักสูตร
* ตรวจสอบคอร์สเสียเงินว่าถูกต้องตามนโยบาย
* จัดการหมวดหมู่หลักสูตร
> ผู้สอนเป็นคนสร้าง
> **Admin มีอำนาจอนุมัติสุดท้าย**
---
### การจัดการคำสั่งซื้อและรายรับ
* ดูคำสั่งซื้อทั้งหมดของระบบ
* ตรวจสอบสถานะการชำระเงิน
* ดูรายได้แยกตามผู้สอน / คอร์ส
* ตรวจสอบประวัติการชำระเงินย้อนหลัง
---
### การอนุมัติการถอนเงิน (เสริม)
* ดูรายการคำขอถอนเงินจากผู้สอน
* ตรวจสอบยอดเงินคงเหลือของผู้สอน
* อนุมัติ / ปฏิเสธคำขอถอนเงิน
* บันทึกสถานะการถอน:
* pending
* approved
* rejected
* paid
* บันทึกผู้อนุมัติ (Admin)
> ❗ Admin ไม่สามารถแก้ไขยอดเงินตรงๆ
> ทุกการเคลื่อนไหวต้องมี record
---
### Dashboard ภาพรวม
* จำนวนผู้ใช้ทั้งหมด
* จำนวนคอร์ส (ฟรี / เสียเงิน)
* ยอดขายรวม
* ยอดเงินที่รอถอน
* ยอดเงินที่จ่ายออกแล้ว
---
## 2. Instructor (ผู้สอน)
**บทบาทหลัก:** สร้างคอร์ส สร้างรายได้ และถอนเงิน
---
### การสร้างและจัดการหลักสูตร
* สร้าง / แก้ไข / ลบหลักสูตรของตนเอง
* กำหนดรายละเอียดคอร์ส
* กำหนดสถานะคอร์ส:
* ฟรี
* เสียเงิน
* กำหนดราคาคอร์ส
* เปิด / ปิดการขาย
* ส่งคอร์สให้ Admin อนุมัติก่อนเผยแพร่
---
### การจัดการเนื้อหา
* สร้างบท (Chapter)
* สร้างบทเรียน (Lesson)
* อัปโหลดวิดีโอ / เอกสาร / ข้อความ
* จัดลำดับบทเรียน
* ตั้งเงื่อนไขการเข้าเรียน
* กำหนดบทเรียนตัวอย่าง (Preview Lesson) ที่ผู้เรียนสามารถดูได้ก่อนลงทะเบียน/ซื้อคอร์ส
---
### การจัดการแบบทดสอบ
* สร้างแบบทดสอบ
* ตั้งเวลา คะแนน เกณฑ์ผ่าน
* ดูผลการทำแบบทดสอบของผู้เรียน
---
### การติดตามผู้เรียน
* ดูรายชื่อผู้เรียนในคอร์ส
* ดูความคืบหน้าการเรียน
* ดูคะแนนและสถิติการเรียน
---
### รายได้ของผู้สอน
* ดูรายได้จากแต่ละคอร์ส
* ดูยอดเงิน:
* ยอดเงินทั้งหมด
* ยอดเงินที่ถอนแล้ว
* ยอดเงินที่ถอนได้ (Available Balance)
* ดูประวัติคำสั่งซื้อที่เกี่ยวข้องกับคอร์สตนเอง
---
### การถอนเงิน
* ยื่นคำขอถอนเงิน (Withdraw Request)
* ระบุ:
* จำนวนเงิน
* ช่องทางรับเงิน (เช่น ธนาคาร)
* ดูสถานะการถอน:
* รออนุมัติ
* อนุมัติแล้ว
* ถูกปฏิเสธ
* โอนเงินแล้ว
* ดูประวัติการถอนเงินทั้งหมด
> ถ้าเป็นคอร์สฟรี
>
> * ไม่มีรายได้
> * ไม่สามารถถอนเงินได้
---
## 3. Learner (ผู้เรียน)
**บทบาทหลัก:** ซื้อคอร์ส เรียน และติดตามผลการเรียน
---
### บัญชีผู้ใช้
* สมัครสมาชิก / เข้าสู่ระบบ
* แก้ไขข้อมูลโปรไฟล์
---
### การค้นหาและดูคอร์ส
* ดูคอร์สทั้งหมด
* เห็นสถานะคอร์ส:
* ฟรี
* เสียเงิน (แสดงราคา)
* ดูรายละเอียดคอร์สก่อนซื้อ
* ดูบทเรียนตัวอย่าง (Preview Lesson) ก่อนตัดสินใจลงทะเบียน/ซื้อคอร์ส
---
### การลงทะเบียน / ซื้อคอร์ส
* ลงทะเบียนคอร์สฟรี
* ซื้อคอร์สเสียเงิน
* ดูประวัติการลงทะเบียน
* ดูประวัติการซื้อคอร์ส
> **หลักการ:**
> เข้าเรียนได้ = ต้องมี enrollment
---
### การเรียน
* เข้าถึงบทเรียนหลังจาก:
* ลงทะเบียน (ฟรี)
* หรือชำระเงินสำเร็จ (เสียเงิน)
* ระบบบันทึกความคืบหน้าอัตโนมัติ
---
### การทำแบบทดสอบ
* ทำแบบทดสอบ
* ดูคะแนน
* ดูประวัติการทำข้อสอบ
---
### ผลการเรียน
* ดู % ความคืบหน้าคอร์ส
* ดูผลคะแนนรวม
* รับใบประกาศนียบัตร (ถ้ามี)
---
## โครงสร้างแนวคิดข้อมูล (ER Diagram)
```text
User
├─ Role
Course
├─ instructor_id
├─ price
├─ status (draft / pending / approved)
Chapter
├─ course_id
├─ order
Lesson
├─ chapter_id
├─ order
├─ is_preview (true/false)
Enrollment
├─ user_id
├─ course_id
Order
├─ user_id
├─ total_amount
├─ status
InstructorBalance
├─ instructor_id
├─ available_amount
├─ withdrawn_amount
WithdrawalRequest
├─ instructor_id
├─ amount
├─ status
├─ approved_by (admin_id)
```
<!-- ---
## หลักการออกแบบสำคัญ
* คอร์สฟรี = โครงสร้างเดียวกับคอร์สเสียเงิน (ราคา = 0)
* เงินไม่เข้าผู้สอนทันที → ต้องผ่านระบบ
* ถอนเงินได้เฉพาะยอดที่ **Admin อนุมัติ**
* ทุกการเงินต้องมี record ตรวจสอบย้อนหลังได้
* Payment Gateway เป็นแค่ส่วนเสริมในอนาคต
---
## สรุปคุณสมบัติหลักของระบบ
### คอร์สฟรี vs คอร์สเสียเงิน
* ผู้สอนกำหนดได้เองว่า **คอร์สฟรี / คอร์สเสียเงิน**
* ผู้เรียนซื้อคอร์ส → เงินเข้าระบบ
* ผู้สอนมี **ยอดเงินคงเหลือ (Balance)**
* ผู้สอนสามารถ **ขอถอนเงิน**
* **Admin เป็นผู้อนุมัติ/ปฏิเสธการถอนเงิน**
* คอร์สฟรีไม่เกี่ยวกับเงิน แต่ใช้โครงสร้างเดียวกัน
* เหมาะสำหรับเอาไปออกแบบ **Endpoint + ER Database** -->