703 lines
9.4 KiB
Markdown
703 lines
9.4 KiB
Markdown
# Prompt: Enhance Training Policy Management Module (Production Ready)
|
|
|
|
## Objective
|
|
|
|
ปรับปรุง (Enhance) โมดูล **Training Policy Management** ของระบบ Training Management System (TMS)
|
|
|
|
**งานนี้ไม่ใช่การสร้างระบบใหม่ (Rewrite)**
|
|
|
|
ให้ตรวจสอบโครงสร้างเดิมของระบบก่อน และขยาย (Extend) หรือปรับปรุง (Refactor) ตามความเหมาะสม โดยคง Architecture, Coding Standard และ Business Logic ของระบบเดิมไว้ให้มากที่สุด
|
|
|
|
เป้าหมายคือยกระดับ Policy Management ให้เป็นศูนย์กลางในการกำหนดนโยบายการอบรมขององค์กร (Policy Engine) ที่สามารถรองรับการเติบโตของระบบในอนาคต
|
|
|
|
---
|
|
|
|
# IMPORTANT
|
|
|
|
ก่อนเริ่มพัฒนา
|
|
|
|
ต้องตรวจสอบโครงสร้างเดิมทั้งหมดของระบบ เช่น
|
|
|
|
- Database
|
|
- Prisma Schema
|
|
- Models
|
|
- Services
|
|
- Repository
|
|
- API
|
|
- Server Actions
|
|
- Validation
|
|
- Shared Components
|
|
- UI Components
|
|
- Permissions
|
|
- Audit Log
|
|
- Status
|
|
- Existing Policy Module
|
|
|
|
หากพบว่าโมดูลหรือโครงสร้างเดิมสามารถรองรับ Requirement ได้
|
|
|
|
ให้
|
|
|
|
- Reuse
|
|
- Extend
|
|
- Refactor
|
|
|
|
แทนการสร้างใหม่
|
|
|
|
ห้าม Rewrite ทั้ง Module
|
|
|
|
---
|
|
|
|
# Existing Implementation Compatibility
|
|
|
|
ให้ใช้หลัก
|
|
|
|
> Reuse > Extend > Refactor > Create New
|
|
|
|
ห้าม
|
|
|
|
- Duplicate Component
|
|
- Duplicate API
|
|
- Duplicate Business Logic
|
|
- Duplicate Validation
|
|
|
|
ห้ามสร้าง
|
|
|
|
- Table ใหม่
|
|
- API ใหม่
|
|
- Component ใหม่
|
|
|
|
หากของเดิมสามารถใช้งานต่อได้
|
|
|
|
หากจำเป็นต้องสร้าง
|
|
|
|
ต้องอธิบายเหตุผล
|
|
|
|
และกระทบระบบเดิมให้น้อยที่สุด
|
|
|
|
(Minimal Impact)
|
|
|
|
---
|
|
|
|
# Scope
|
|
|
|
พัฒนาและปรับปรุง
|
|
|
|
- Policy List
|
|
- View Policy
|
|
- Create Policy
|
|
- Edit Policy
|
|
- Clone Policy
|
|
- Archive
|
|
- Restore
|
|
- Activate
|
|
- Deactivate
|
|
- Version History
|
|
- Audit Log
|
|
|
|
---
|
|
|
|
# Policy Concept
|
|
|
|
Policy คือชุดกฎที่ใช้กำหนดการทำงานของระบบ
|
|
|
|
เช่น
|
|
|
|
- ชั่วโมงอบรมขั้นต่ำ
|
|
- ชั่วโมง K/S/A
|
|
- Mandatory Course
|
|
- Certificate Policy
|
|
- Approval Rule
|
|
- Effective Date
|
|
- Expiration Date
|
|
|
|
ทุก Feature ในระบบควรอ้างอิง Policy
|
|
|
|
ไม่ Hardcode ค่า
|
|
|
|
---
|
|
|
|
# Policy Fields
|
|
|
|
## General
|
|
|
|
- Policy Name \*
|
|
- Description
|
|
- Company
|
|
- Organization (ถ้ามี)
|
|
- Status
|
|
- Version
|
|
- Created By
|
|
- Updated By
|
|
- Created At
|
|
- Updated At
|
|
|
|
---
|
|
|
|
## Status
|
|
|
|
รองรับ
|
|
|
|
- Draft
|
|
- Active
|
|
- Inactive
|
|
- Archived
|
|
|
|
---
|
|
|
|
## Effective Date
|
|
|
|
- Effective From \*
|
|
- Effective To
|
|
|
|
รองรับ
|
|
|
|
"No Expiration"
|
|
|
|
---
|
|
|
|
## Training Hours
|
|
|
|
- Required Total Hours \*
|
|
- Required K Hours \*
|
|
- Required S Hours \*
|
|
- Required A Hours \*
|
|
|
|
Validation
|
|
|
|
```
|
|
K + S + A
|
|
|
|
ต้องเท่ากับ
|
|
|
|
Required Total
|
|
```
|
|
|
|
---
|
|
|
|
## Mandatory Courses
|
|
|
|
Multi Select
|
|
|
|
ค้นหาได้
|
|
|
|
แสดง
|
|
|
|
- Course Code
|
|
- Course Name
|
|
- Category
|
|
|
|
---
|
|
|
|
## Certificate Policy
|
|
|
|
- Certificate Required
|
|
- Validity
|
|
- Renewal Required
|
|
|
|
---
|
|
|
|
## Advanced Settings
|
|
|
|
รองรับในอนาคต
|
|
|
|
- Auto Approve
|
|
- Allow External Training
|
|
- Allow Self Submission
|
|
- Notification Rule
|
|
|
|
---
|
|
|
|
# Policy List
|
|
|
|
Columns
|
|
|
|
- Name
|
|
- Version
|
|
- Status
|
|
- Effective Date
|
|
- Updated By
|
|
- Updated At
|
|
- Action
|
|
|
|
Search
|
|
|
|
- Name
|
|
- Description
|
|
|
|
Filter
|
|
|
|
- Status
|
|
- Company
|
|
- Year
|
|
|
|
Sorting
|
|
|
|
- Name
|
|
- Updated
|
|
- Effective Date
|
|
- Status
|
|
|
|
Pagination
|
|
|
|
ใช้มาตรฐานเดียวกับระบบ
|
|
|
|
---
|
|
|
|
# View Policy
|
|
|
|
Read Only
|
|
|
|
แบ่ง Section
|
|
|
|
- General
|
|
- Hours
|
|
- Mandatory Courses
|
|
- Certificate
|
|
- Advanced
|
|
- History
|
|
|
|
---
|
|
|
|
# Create Policy
|
|
|
|
สร้างเป็น
|
|
|
|
Draft
|
|
|
|
Validation ครบ
|
|
|
|
ใช้ Required Style เดิมของระบบ
|
|
|
|
---
|
|
|
|
# Edit Policy
|
|
|
|
แก้ไขได้
|
|
|
|
Draft
|
|
|
|
Active
|
|
|
|
Inactive
|
|
|
|
Archived
|
|
|
|
ห้ามแก้ไข
|
|
|
|
- Version
|
|
- Created By
|
|
- Created At
|
|
|
|
ทุกครั้งที่ Save
|
|
|
|
- Updated At
|
|
- Updated By
|
|
|
|
ต้องอัปเดต
|
|
|
|
และสร้าง Audit Log
|
|
|
|
---
|
|
|
|
# Activate
|
|
|
|
Policy Active
|
|
|
|
ได้เพียง
|
|
|
|
1 Policy
|
|
|
|
ต่อ Scope
|
|
|
|
หากมี Active อยู่แล้ว
|
|
|
|
แสดง Confirm Dialog
|
|
|
|
ให้ Deactivate ของเดิม
|
|
|
|
ก่อน Activate ตัวใหม่
|
|
|
|
---
|
|
|
|
# Deactivate
|
|
|
|
รองรับ
|
|
|
|
Deactivate
|
|
|
|
หากไม่มี Active Policy เหลือ
|
|
|
|
แสดง Warning
|
|
|
|
---
|
|
|
|
# Clone
|
|
|
|
Clone Policy
|
|
|
|
Copy
|
|
|
|
- Hours
|
|
- Mandatory
|
|
- Certificate
|
|
- Settings
|
|
|
|
ไม่ Copy
|
|
|
|
- Audit
|
|
- Version
|
|
- History
|
|
|
|
Default
|
|
|
|
Status
|
|
|
|
Draft
|
|
|
|
Version
|
|
|
|
1
|
|
|
|
---
|
|
|
|
# Archive
|
|
|
|
ใช้
|
|
|
|
Soft Delete
|
|
|
|
เท่านั้น
|
|
|
|
ห้าม Hard Delete
|
|
|
|
Database
|
|
|
|
ใช้
|
|
|
|
deleted_at
|
|
|
|
deleted_by
|
|
|
|
หรือ
|
|
|
|
Status = Archived
|
|
|
|
ตามมาตรฐานของระบบ
|
|
|
|
---
|
|
|
|
# Restore
|
|
|
|
Archived
|
|
|
|
สามารถ Restore
|
|
|
|
กลับมาเป็น
|
|
|
|
Inactive
|
|
|
|
ได้
|
|
|
|
---
|
|
|
|
# Version History
|
|
|
|
ทุกครั้งที่ Save
|
|
|
|
สร้าง Version ใหม่
|
|
|
|
สามารถดูได้ว่า
|
|
|
|
Field ไหน
|
|
|
|
เปลี่ยนอะไร
|
|
|
|
เช่น
|
|
|
|
30 → 40
|
|
|
|
---
|
|
|
|
# Audit Log
|
|
|
|
รองรับ
|
|
|
|
- Create
|
|
- Edit
|
|
- Clone
|
|
- Activate
|
|
- Deactivate
|
|
- Archive
|
|
- Restore
|
|
|
|
Audit Log
|
|
|
|
ต้องเก็บ
|
|
|
|
- User
|
|
- Role
|
|
- Action
|
|
- Date
|
|
- Old Value
|
|
- New Value
|
|
- IP
|
|
- Browser
|
|
|
|
---
|
|
|
|
# Permission
|
|
|
|
ใช้ Permission-first เท่านั้น
|
|
|
|
ห้ามใช้ Business Role
|
|
|
|
Permission
|
|
|
|
- policy:view
|
|
- policy:create
|
|
- policy:update
|
|
- policy:delete
|
|
- policy:restore
|
|
- policy:clone
|
|
- policy:activate
|
|
- policy:audit
|
|
|
|
ทุก API
|
|
|
|
ต้องตรวจสอบ Permission
|
|
|
|
Server Side
|
|
|
|
---
|
|
|
|
# UI
|
|
|
|
ใช้
|
|
|
|
- shadcn/ui
|
|
- TailwindCSS
|
|
|
|
Design System เดิม
|
|
|
|
ห้ามสร้าง Design ใหม่
|
|
|
|
Layout
|
|
|
|
```
|
|
Policy Management
|
|
|
|
[+ New Policy]
|
|
|
|
Search
|
|
|
|
Filter
|
|
|
|
Table
|
|
```
|
|
|
|
Action Menu
|
|
|
|
- View
|
|
- Edit
|
|
- Clone
|
|
- Activate
|
|
- Deactivate
|
|
- Archive
|
|
- Restore
|
|
- Version History
|
|
- Audit Log
|
|
|
|
แสดงตาม Permission
|
|
|
|
---
|
|
|
|
# Validation
|
|
|
|
ตรวจสอบ
|
|
|
|
- Required Field
|
|
- Duplicate Name
|
|
- Hours Validation
|
|
- Effective Date
|
|
- Mandatory Course
|
|
|
|
---
|
|
|
|
# Responsive
|
|
|
|
Desktop
|
|
|
|
Tablet
|
|
|
|
Mobile
|
|
|
|
ต้องใช้งานได้
|
|
|
|
---
|
|
|
|
# Performance
|
|
|
|
- Memoization
|
|
- Server Pagination
|
|
- Lazy Rendering
|
|
- ห้าม Fetch ซ้ำ
|
|
|
|
---
|
|
|
|
# Security
|
|
|
|
ทุก API
|
|
|
|
ต้องตรวจสอบ Permission
|
|
|
|
Server Side
|
|
|
|
ห้ามใช้ Client Permission เพียงอย่างเดียว
|
|
|
|
---
|
|
|
|
# Existing Structure Review
|
|
|
|
ก่อนเริ่ม Coding
|
|
|
|
ให้ตรวจสอบว่า
|
|
|
|
- Database เดิมมีอะไร
|
|
- API เดิมมีอะไร
|
|
- Component เดิมมีอะไร
|
|
- Validation เดิมมีอะไร
|
|
|
|
จากนั้น
|
|
|
|
Reuse
|
|
|
|
Refactor
|
|
|
|
Extend
|
|
|
|
ตามความเหมาะสม
|
|
|
|
หากจำเป็นต้องสร้างใหม่
|
|
|
|
ให้ระบุเหตุผล
|
|
|
|
---
|
|
|
|
# Deliverables
|
|
|
|
เมื่อดำเนินการเสร็จ
|
|
|
|
สร้างเอกสาร
|
|
|
|
docs/policy-management-enhancement-report.md
|
|
|
|
ประกอบด้วย
|
|
|
|
## 1. Existing Structure Review
|
|
|
|
- สิ่งที่พบ
|
|
- ส่วนที่ Reuse
|
|
- ส่วนที่ Refactor
|
|
- ส่วนที่ Extend
|
|
- ส่วนที่สร้างใหม่ พร้อมเหตุผล
|
|
|
|
---
|
|
|
|
## 2. Files Changed
|
|
|
|
รายการไฟล์ทั้งหมด
|
|
|
|
---
|
|
|
|
## 3. Database Changes
|
|
|
|
Migration
|
|
|
|
Column
|
|
|
|
Index
|
|
|
|
Constraint
|
|
|
|
---
|
|
|
|
## 4. Permission Matrix
|
|
|
|
Permission ที่ใช้
|
|
|
|
---
|
|
|
|
## 5. Business Rules
|
|
|
|
อธิบายทุก Rule
|
|
|
|
---
|
|
|
|
## 6. Versioning
|
|
|
|
Workflow
|
|
|
|
---
|
|
|
|
## 7. Audit Log
|
|
|
|
Action ที่รองรับ
|
|
|
|
---
|
|
|
|
## 8. UI Screens
|
|
|
|
- List
|
|
- View
|
|
- Create
|
|
- Edit
|
|
- Version
|
|
- Audit
|
|
|
|
---
|
|
|
|
## 9. Testing
|
|
|
|
- CRUD
|
|
- Permission
|
|
- Validation
|
|
- Responsive
|
|
- Regression
|
|
|
|
---
|
|
|
|
## 10. Remaining Improvements
|
|
|
|
เสนอแนวทางพัฒนาเพิ่มเติม เช่น
|
|
|
|
- Scheduled Activation
|
|
- Policy Comparison
|
|
- Rollback Version
|
|
- Policy Approval Workflow
|
|
- Notification Before Expiry
|
|
- Company / Department / Position Specific Policy
|
|
|
|
---
|
|
|
|
# Success Criteria
|
|
|
|
งานถือว่าเสร็จเมื่อ
|
|
|
|
- ปรับปรุงจากโครงสร้างเดิม ไม่ Rewrite
|
|
- Reuse Component/API ได้มากที่สุด
|
|
- CRUD สมบูรณ์
|
|
- Clone
|
|
- Soft Delete
|
|
- Restore
|
|
- Activate / Deactivate
|
|
- Version History
|
|
- Audit Log
|
|
- Permission-first ครบทุก Action
|
|
- Validation ครบ
|
|
- Responsive สมบูรณ์
|
|
- TypeScript ไม่มี Error
|
|
- ESLint ผ่าน
|
|
- Build ผ่าน
|
|
- ไม่มี Regression
|
|
- รายงาน `docs/policy-management-enhancement-report.md` ถูกสร้างเรียบร้อย
|