11 KiB
Prompt: Organizers Module Enhancement (CRUD + Soft Delete + Permission + Audit)
Objective
ดำเนินการตรวจสอบ วิเคราะห์ ออกแบบ และพัฒนา Module Organizers ให้รองรับการจัดการข้อมูลแบบสมบูรณ์ (CRUD) โดยใช้หลักการ Soft Delete และสอดคล้องกับ Architecture ของระบบปัจจุบัน
การดำเนินการต้องครอบคลุม
- Create Organizer
- View Organizer
- Edit Organizer
- Soft Delete Organizer
- Permission Control
- Validation
- Audit Log
- UI/UX Improvement
- Regression Testing
- Documentation
Background
ระบบนี้เป็น Training Management System (TMS)
Architecture หลัก
- Next.js App Router
- TypeScript
- Prisma ORM
- TanStack Query
- TanStack Form
- shadcn/ui
- Permission Template First
- RBAC + Permission
- Audit Log
- Multi Organization
ปัจจุบันหน้า Organizers สามารถสร้าง Organizer ได้เพียงบางส่วน และยังไม่มีความสามารถในการ
- แก้ไข
- ลบ
- Soft Delete
- Validation ครบถ้วน
- Audit
- Permission ครบ
IMPORTANT
ก่อนแก้ไข
AI ต้องตรวจสอบ Architecture เดิมก่อนทุกครั้ง
ห้ามสร้าง Pattern ใหม่ หากระบบมี Pattern เดิมอยู่แล้ว
ต้อง Reuse
- Shared Components
- Shared Dialog
- Shared Form
- Shared Validation
- Shared Permission
- Shared Toast
- Shared Table/Card Pattern
- Shared API Pattern
- Shared Service Layer
Phase 0 — Architecture Audit
ก่อนแก้ไข
ตรวจสอบ
Frontend
- Organizer Page
- Organizer List
- Organizer Card
- Create Form
- Existing Components
- Dialog Pattern
- Sheet Pattern
- Toast Pattern
Backend
ตรวจสอบ
- API Routes
- Route Handlers
- Server Actions
- Service Layer
- Repository
- Prisma Queries
Database
ตรวจสอบ
Organizer Model
เช่น
- id
- name
- slug
- createdAt
- updatedAt
ตรวจสอบว่ามี
- status
- isActive
- deletedAt
- deletedBy
อยู่แล้วหรือไม่
ห้ามเดา
ต้องอ้างอิงจาก Schema จริง
Permission
ตรวจสอบ
ระบบใช้
Permission
หรือ
Business Role
หรือ
ทั้งสอง
ให้ใช้ Pattern เดิมของระบบ
Phase 1 — Feature Analysis
วิเคราะห์ Feature ปัจจุบัน
ระบุว่า
สิ่งใดทำได้แล้ว
สิ่งใดยังไม่มี
เช่น
✅ View
✅ Create
❌ Edit
❌ Delete
❌ Soft Delete
❌ Validation
❌ Audit
Phase 2 — UI Enhancement
ปรับปรุงหน้า Organizers
Organizer List
แต่ละ Organizer Card
ให้มี
- Name
- Slug
- Status
- Created Date
และ Action
Edit
Delete
ใช้ Component Pattern เดิมของระบบ
Empty State
หากไม่มี Organizer
แสดง
ยังไม่มี Organizer
พร้อมปุ่ม
สร้าง Organizer
Loading
รองรับ
Loading
Skeleton
Spinner
ตามมาตรฐานของระบบ
Error State
รองรับ
Error
Retry
Phase 3 — Create Organizer
ตรวจสอบ Flow เดิม
ปรับปรุง Validation
Required
- Organizer Name
Validation
- Required
- Trim
- Duplicate
- Max Length
- Invalid Character
Slug
สร้างตาม Pattern เดิมของระบบ
ห้าม Hardcode
Phase 4 — Edit Organizer
เพิ่มความสามารถ
Edit Organizer
สามารถแก้ไข
- Organizer Name
หากระบบรองรับ
สามารถแก้ไข
- Description
- Status
ห้ามแก้ไข
- Organizer ID
ห้ามเปลี่ยนข้อมูลที่กระทบ Foreign Key
ใช้
Dialog
หรือ
Sheet
ตาม Pattern เดิมของระบบ
Phase 5 — Soft Delete
ระบบต้องใช้
Soft Delete เท่านั้น
ห้ามใช้
delete()
เด็ดขาด
ต้องใช้
update();
พร้อมเปลี่ยนสถานะ
เช่น
isActive = false
หรือ
status = INACTIVE
หรือ Pattern เดิมของระบบ
หากไม่มี Field รองรับ
ให้เพิ่มตามมาตรฐานเดิมของ Project
เช่น
isActive Boolean @default(true)
deletedAt DateTime?
deletedBy String?
Soft Delete Rule
เมื่อ Delete
ข้อมูล
Users
Training
Permission
Audit
History
ต้องยังอยู่ครบ
Frontend
ต้องไม่แสดง Organizer
แต่ Database
ต้องยังมีข้อมูล
Confirmation Dialog
ก่อน Delete
แสดง Dialog
ยืนยันการปิดใช้งาน Organizer
Organizer นี้จะไม่ถูกลบออกจากฐานข้อมูล
ข้อมูลทั้งหมดจะยังคงอยู่
แต่จะไม่สามารถใช้งานได้
ต้องการดำเนินการต่อหรือไม่
Buttons
Cancel
Delete
Delete
ใช้
Destructive Variant
Phase 6 — Query Update
ทุก Query
ที่ดึง Organizer
ต้องกรองเฉพาะ
Active
เช่น
where;
status = ACTIVE;
หรือ
isActive = true
ตาม Pattern เดิม
รวมถึง
- Organizer Switcher
- Dropdown
- Select
- Search
- API
- Dashboard
Phase 7 — Validation
ตรวจสอบ
Frontend
Backend
API
Validation
ทั้งหมด
เช่น
Required
Duplicate
Slug
Name Length
Invalid Character
Inactive Record
Not Found
Phase 8 — Permission
ใช้
Permission First
หากระบบรองรับแล้ว
ห้ามใช้
isHRD()
businessRole
หาก Architecture ใหม่รองรับ Permission แล้ว
ใช้ Permission เดิมของระบบ
เช่น
organization:view
organization:create
organization:update
organization:delete
organization:manage
หรือ Permission ที่มีอยู่จริง
เฉพาะ
IT Admin
Super Admin
เท่านั้น
ที่สามารถ
Create
Edit
Delete
ได้
Role อื่น
ต้อง
- ไม่เห็นปุ่ม
- เรียก API ไม่ได้
- ได้ 403
Phase 9 — Audit Log
หากระบบรองรับ Audit
ให้บันทึก
ORGANIZATION_CREATED
ORGANIZATION_UPDATED
ORGANIZATION_SOFT_DELETED
ข้อมูลที่ควรบันทึก
- Organization ID
- Name
- User
- Time
- Old Value
- New Value
ตาม Pattern เดิม
Phase 10 — Regression Testing
ตรวจสอบ
Create
- Success
- Validation
- Duplicate
Edit
- Success
- Validation
Delete
- Confirmation
- Soft Delete
- ไม่ลบจริง
Query
Inactive
ต้องไม่แสดง
Switcher
Inactive
ต้องไม่แสดง
Permission
Employee
ห้ามเห็น
Staff
ห้ามเห็น
Manager
ห้ามเห็น
IT
ใช้งานได้
Super Admin
ใช้งานได้
Database
ตรวจสอบ
Record
ยังอยู่
แต่
Inactive
TypeScript
ไม่มี
Type Error
ESLint
ไม่มี Error
Console
ไม่มี
console.log
Phase 11 — Code Quality
ตรวจสอบ
- Reuse Existing Components
- Reuse Existing Dialog
- Reuse Existing Form
- Reuse Existing Mutation
- Reuse Existing Query
- ไม่มี Duplicate Logic
- ไม่มี Dead Code
- ไม่มี Unused Import
- ไม่มี any ใหม่
- ไม่มี Hardcode
Deliverables
แก้ไข
Source Code
เฉพาะส่วนที่จำเป็น
สร้างรายงาน
docs/organizers-module-enhancement-report.md
Report Structure
# Organizers Module Enhancement Report
## Executive Summary
## Current Architecture
## Current Limitation
## Root Cause Analysis
## Feature Comparison
Before
After
## Files Modified
## Database Changes
## API Changes
## UI Changes
## Permission Changes
## Validation Changes
## Soft Delete Design
## Audit Log
## Testing Result
### Create
### Edit
### Delete
### Permission
### Regression
## Risks
## Recommendations
## Future Improvements
Constraints
ห้าม
- Physical Delete
- Hardcode Permission
- Hardcode Role
- Hardcode Organization ID
- เปลี่ยน Business Logic
- เปลี่ยน Database Schema โดยไม่จำเป็น
- เพิ่ม Library ใหม่
- ใช้ any
- ลบข้อมูลจริง
- Refactor Module อื่นที่ไม่เกี่ยวข้อง
ต้อง
- ใช้ Shared Components
- ใช้ Shared Permission
- ใช้ Shared Validation
- ใช้ Shared API Pattern
- ใช้ Shared Service Pattern
- รักษา Type Safety
- รักษา Coding Standard
- รักษา Backward Compatibility
Final Response
เมื่อดำเนินการเสร็จ ให้สรุปผลเป็นภาษาไทย โดยประกอบด้วย
- Executive Summary
- Root Cause ที่พบ
- รายการ Feature ที่เพิ่ม
- รายชื่อไฟล์ที่แก้ไข
- การออกแบบ Soft Delete
- Permission ที่ใช้
- Validation ที่เพิ่ม
- ผลการทดสอบ (Create / Edit / Delete / Permission / Regression)
- ความเสี่ยงที่เหลือ (ถ้ามี)
- Path ของรายงาน
docs/organizers-module-enhancement-report.md
พร้อมระบุหากพบ Technical Debt หรือข้อเสนอแนะในการพัฒนาต่อในอนาคต