466 lines
6.8 KiB
Markdown
466 lines
6.8 KiB
Markdown
# 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 เอง
|