# Prompt.md — Role & Permission Management (Coding Phase 1)

## Objective

เริ่มพัฒนาระบบ **Role & Permission Management** ตามแผนใน

`docs/role-permission-management-plan.md`

โดยยึดตามเอกสารนี้เป็นหลัก และ **ห้ามเพิ่ม Requirement ใหม่เอง**

---

# Required Reading

ก่อนเริ่ม Coding ต้องอ่านเอกสารต่อไปนี้

- `docs/PROJECT_ARCHITECTURE.md`
- `docs/AI_DEVELOPMENT_GUIDE.md`
- `AGENTS.md`
- `docs/role-permission-management-plan.md`

จากนั้นตรวจสอบโครงสร้างของโปรเจกต์จริงก่อนลงมือแก้ไข

ห้ามเดาโครงสร้าง

ต้อง Reuse Shared Components และ Shared Patterns ที่มีอยู่

---

# Coding Scope

ใน Phase นี้

ให้เริ่มสร้างโครงสร้างของ Feature Role & Permission Management

โดย **ยังไม่ต้องย้าย Feature อื่นมาใช้ Permission-first**

ยังไม่ต้องแก้ไขระบบ Authorization ของระบบเดิม

ยังไม่ต้องลบ Compatibility Mode

---

# Features to Implement

## 1. Permission Management Feature Module

สร้าง Feature ใหม่

```text
src/features/permission-management/
```

โดยจัดโครงสร้างให้สอดคล้องกับ Feature อื่นของโปรเจกต์

ตัวอย่าง

```text
api/

components/

schemas/

server/

hooks/

types/
```

ต้อง Reuse pattern เดิมของโปรเจกต์

---

## 2. Permission Template Management

สร้างหน้าจอ

```text
/dashboard/permissions/templates
```

รองรับ

- แสดงรายการ Permission Template
- Search
- Pagination
- Sorting
- Status Badge
- Assigned User Count
- Create
- Edit
- Clone
- Activate
- Deactivate
- Soft Delete

ใช้

- DataTable
- Sheet
- Dialog
- AlertDialog

จาก Shared Components

---

## 3. Permission Matrix

สร้างหน้า

```text
/dashboard/permissions/matrix
```

รองรับ

Grouped Permission

เช่น

Dashboard

Training Records

Announcements

Online Lessons

Employees

Reports

Settings

Permission Management

แต่ละ Module

มี Action

- View
- Create
- Edit
- Delete
- Approve
- Publish
- Export
- Manage

ใช้รูปแบบ Checklist

---

## 4. User Permission Assignment

สร้างหน้า

```text
/dashboard/permissions/users
```

รองรับ

- Search User
- แสดงข้อมูลพนักงาน
- Assign Template (1 Template ต่อ User)
- Extra Permission
- Deny Permission
- Effective Permission Preview
- Save Assignment

ต้องใช้ Transaction ฝั่ง Server

---

## 5. Permission Audit Logs

สร้างหน้า

```text
/dashboard/permissions/audit-logs
```

Reuse

Audit Log Listing เดิม

เพิ่มเฉพาะ Data Source

และ Filter

---

# API

สร้าง Route Handlers ตามแผน

Permission Templates

```text
GET

POST

PATCH

DELETE

Clone

Activate

Deactivate
```

Permission Assignment

```text
GET

PUT

POST Override

PATCH Override

DELETE Override
```

Permission Catalog

```text
GET
```

Permission Audit Logs

```text
GET
```

---

# Validation

ใช้

Zod

ทุก Request

ทุก Mutation

ทุก Form

ห้ามใช้ Manual Validation

---

# UI

ใช้ Shared UI เดิมทั้งหมด

เช่น

- Button
- Badge
- Dialog
- Sheet
- AlertDialog
- TanStack Table
- TanStack Query
- TanStack Form

ห้ามสร้าง UI Component ซ้ำ

---

# Authorization

หน้าทั้งหมด

API ทุกตัว

ต้องใช้

Super Admin เท่านั้น

ห้ามใช้

HRD

IT

Manager

Employee

เข้าถึงได้

---

# Database

ใช้ Schema ปัจจุบัน

ห้ามแก้ Migration

ห้ามสร้าง Migration ใหม่

หากพบจุดที่ Schema ยังไม่รองรับ

ให้เขียน

TODO

พร้อม Comment

และสรุปไว้ใน Report

---

# Compatibility

ต้องไม่ทำให้

Business Role

เสียหาย

ต้องไม่ลบ

- isHRD()
- isIT()
- businessRole

ต้องไม่เปลี่ยน

Navigation

ของระบบเดิม

ยกเว้นเพิ่มเมนูใหม่ของ Permission Management

---

# Navigation

เพิ่มเมนูใหม่

```text
Permission Management
```

ภายในมี

- Permission Templates
- Permission Matrix
- User Permissions
- Permission Audit Logs

เมนูนี้

Super Admin เท่านั้นที่มองเห็น

---

# Coding Rules

- Reuse Existing Pattern
- TypeScript Strict
- No Any
- No Dead Code
- No Duplicate Logic
- Reuse Query Pattern
- Reuse Mutation Pattern
- Reuse DataTable Pattern
- Reuse Sheet Pattern
- Reuse Form Pattern

---

# Files Expected

สร้างตามโครงสร้างที่ระบุใน

`docs/role-permission-management-plan.md`

หากมีไฟล์ใดต้องเปลี่ยน

ให้แก้เฉพาะเท่าที่จำเป็น

---

# Deliverables

เมื่อ Coding เสร็จแล้ว

ให้สร้าง Report

```text
docs/role-permission-management-implementation-report.md
```

ภายในประกอบด้วย

## 1. Summary

สิ่งที่พัฒนาแล้ว

---

## 2. Files Created

ไฟล์ใหม่ทั้งหมด

---

## 3. Files Modified

ไฟล์ที่แก้ไข

---

## 4. API Implemented

Route ทั้งหมด

---

## 5. UI Pages

หน้าที่สร้าง

---

## 6. Remaining TODO

สิ่งที่ยังไม่ได้ทำ

---

## 7. Known Limitations

ข้อจำกัด

---

## 8. Compatibility Status

สิ่งที่ยังใช้ Compatibility Mode

---

## Important Rules

- ห้ามแก้ Requirement
- ห้ามเพิ่ม Feature ใหม่
- ห้าม Refactor ส่วนอื่นของระบบ
- ห้ามลบระบบเดิม
- ต้องทำเฉพาะตามขอบเขตของ `docs/role-permission-management-plan.md`
- หากพบปัญหา ให้ใช้ TODO และบันทึกไว้ใน Report แทนการเปลี่ยน Architecture เอง
