commit
This commit is contained in:
465
plans/permission-management-implementation.md
Normal file
465
plans/permission-management-implementation.md
Normal file
@@ -0,0 +1,465 @@
|
||||
# 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 เอง
|
||||
Reference in New Issue
Block a user