10 KiB
Prompt: Standardize Online Lesson Category (K/S/A) & Required Field Indicators
Objective
ดำเนินการตรวจสอบ วิเคราะห์ และปรับปรุง Module Online Lessons ให้เป็นมาตรฐานเดียวกันทั้งระบบ โดยมีวัตถุประสงค์หลักดังนี้
- เปลี่ยนฟิลด์ หมวดหมู่ (Category) ให้เป็น Select ที่ใช้ค่าคงที่ของระบบ (Knowledge / Skill / Attitude)
- ตรวจสอบ Required Fields ทั้งหมดให้สอดคล้องกับ Validation
- แสดงเครื่องหมาย (*) สีแดง เฉพาะฟิลด์ที่ Required เท่านั้น
- ลบเครื่องหมาย (*) ออกจากฟิลด์ที่ไม่ Required
- ปรับ UI, Validation, API และ Database Mapping ให้สอดคล้องกัน
- ตรวจสอบทุกหน้าที่เกี่ยวข้องกับ Online Lessons
Background
ปัจจุบันหน้า Online Lesson มีความไม่สอดคล้องระหว่าง
- UI
- Validation
- Business Rules
เช่น
- บาง Field ถูกบังคับกรอก แต่ไม่มีเครื่องหมาย *
- บาง Field มี * แต่จริง ๆ ไม่ได้ Required
- Category ยังไม่ใช้มาตรฐาน K/S/A ของระบบ Training
ต้องปรับให้ทั้งระบบมีมาตรฐานเดียวกัน
IMPORTANT
ก่อนแก้ไข
AI ต้องตรวจสอบ Architecture ของ Project ก่อน
ห้ามสร้าง Pattern ใหม่ หากระบบมี Pattern เดิมอยู่แล้ว
ต้อง Reuse
- Shared Form Components
- Shared Select Components
- Shared Validation
- Shared Zod Schema
- Shared API Pattern
- Shared Constants
- Shared Badge
- Shared Label Components
Scope
ตรวจสอบทุกหน้าที่เกี่ยวข้องกับ Online Lessons เช่น
- Create Online Lesson
- Edit Online Lesson
- View Online Lesson
- Detail Page
- List Page
- Filters
- Search
- API
- Validation
- DTO
- Type Definitions
รวมถึงทุก Component ที่ใช้ร่วมกัน
Phase 0 — Architecture Audit
ก่อนแก้ไข
ตรวจสอบ
Frontend
- Create Form
- Edit Form
- Shared Form
- Shared Label
- Shared Select
- Validation Display
Backend
ตรวจสอบ
- Route Handler
- Server Action
- Service
- Repository
- DTO
Database
ตรวจสอบว่า Category ปัจจุบันเก็บเป็นอะไร
เช่น
string
enum
lookup table
ห้ามเดา
อ้างอิงจาก Prisma Schema จริง
Phase 1 — Category Redesign
Business Rule
Category ของ Online Lesson
ให้เป็นค่าคงที่ของระบบ
ประกอบด้วย
Knowledge
Skill
Attitude
Database
เก็บเป็น Enum หรือ Constant
KNOWLEDGE
SKILL
ATTITUDE
UI
แสดง
K - Knowledge
S - Skill
A - Attitude
หรือ Label ตาม Design System ของระบบ
ห้ามใช้ Text Input
Select
เปลี่ยน Category
เป็น
Select
Placeholder
เลือกหมวดหมู่
Options
K - Knowledge
S - Skill
A - Attitude
ห้ามให้ผู้ใช้กรอกเอง
Validation
Category
Required
ต้องเลือก 1 ค่า
ข้อความ Error
กรุณาเลือกหมวดหมู่
Phase 2 — Required Field Audit
ตรวจสอบทุก Field
ใน
Create
Edit
และ Shared Form
Rule
ตรวจสอบ
Validation Schema
เป็นหลัก
หาก
Validation
กำหนดว่า
Required
UI
ต้องมี
*
สีแดง
หาก
Validation
ไม่ได้ Required
UI
ต้องไม่มี
*
ห้ามมีความไม่ตรงกัน
Phase 3 — Required Label Standard
ใช้ Pattern เดิมของ shadcn/ui
ตัวอย่าง
ชื่อบทเรียน *
โดย
*
ใช้สีแดง
เหมือนฟอร์มอื่นในระบบ
ห้ามสร้าง Component ใหม่ หากมี Shared Label อยู่แล้ว
Phase 4 — Validation Review
ตรวจสอบ Validation ทุก Field
เช่น
- Title
- Description
- Category
- Cover
- Video
- Duration
- Visibility
- Provider
- Tags
หรือ Field ที่มีอยู่จริง
ห้ามเดา
ใช้ Schema จริง
หากพบว่า
UI
กับ
Validation
ไม่ตรงกัน
ให้ปรับ
UI
ตาม Validation
Phase 5 — Database Mapping
ตรวจสอบ Mapping
UI
↓
DTO
↓
API
↓
Service
↓
Repository
↓
Database
Category
ต้อง Mapping
K
↓
KNOWLEDGE
S
↓
SKILL
A
↓
ATTITUDE
หรือใช้ Enum จริงของระบบ
ห้าม Hardcode
หากระบบมี Shared Enum
ต้อง Reuse
Phase 6 — API Review
ตรวจสอบ
Create API
Edit API
Validation
ต้องรองรับ Category ใหม่
ห้ามรับค่าอื่น
เช่น
TEST
AAA
OTHER
หากไม่อยู่ใน Enum
ต้อง Reject
Phase 7 — Edit Page
หน้า Edit
ต้องใช้
Category Select
แบบเดียวกับ
Create
และ
แสดงค่าเดิมได้ถูกต้อง
Phase 8 — Filters
หากหน้า List
มี Filter
Category
ให้เปลี่ยนเป็น
Select
K/S/A
ด้วย
ห้ามใช้ Text Search
สำหรับ Category
Phase 9 — Type Safety
ตรวจสอบ
TypeScript
ให้ใช้
Enum
หรือ
Literal Type
ของระบบ
ห้ามใช้
string
แบบกว้าง
ตัวอย่าง
type Category
=
"KNOWLEDGE"
|
"SKILL"
|
"ATTITUDE"
หรือ Enum เดิมของระบบ
Phase 10 — Regression Testing
ตรวจสอบ
Create
- Category เป็น Select
- Placeholder ถูกต้อง
- Required แสดง *
- Validation ทำงาน
Edit
- Category แสดงค่าเดิม
- เปลี่ยนค่าได้
- Save สำเร็จ
View
- แสดง Category ถูกต้อง
List
- Filter ใช้งานได้
Validation
ทุก Field
ที่ Required
มี *
ทุก Field
ที่ Optional
ไม่มี *
API
Reject
Invalid Category
Database
Category
ถูกบันทึกถูกต้อง
TypeScript
ไม่มี
Type Error
ESLint
ไม่มี Error
Code Quality
ตรวจสอบ
- ไม่มี Duplicate Logic
- ไม่มี Hardcode Category
- ไม่มี any ใหม่
- ไม่มี Dead Code
- ไม่มี console.log
- Reuse Existing Components
- Reuse Existing Enum
- Reuse Existing Validation
Documentation
สร้างรายงาน
docs/online-lessons-category-standardization-report.md
รายงานต้องมี
# Online Lessons Category Standardization Report
## Executive Summary
## Current Architecture
## Current Issues
## Category Design
## Required Field Audit
## Validation Audit
## Database Mapping
## API Changes
## UI Changes
## Files Modified
## Testing Result
## Regression Result
## Risks
## Recommendations
Future Improvements
เสนอแนวทางเพิ่มเติม เช่น
- Category Color Badge
- Category Statistics Dashboard
- Category Permission
- Dynamic Category (หาก Business เปลี่ยนในอนาคต)
- Category Report
Constraints
ห้าม
- เปลี่ยน Business Logic อื่น
- Hardcode Category
- Hardcode Enum
- เพิ่ม Library ใหม่
- ใช้ any
- เปลี่ยน Design System
- สร้าง Component ซ้ำ
ต้อง
- ใช้ Shared Enum
- ใช้ Shared Validation
- ใช้ Shared Label
- ใช้ Shared Select
- รักษา Type Safety
- รักษา Coding Standard
- รองรับการขยายไปยัง Module อื่น
Deliverables
ดำเนินการดังนี้
- Audit ระบบก่อนแก้ไข
- แก้ไข Source Code
- ตรวจสอบ Regression
- สร้างรายงาน
docs/online-lessons-category-standardization-report.md
Final Response
เมื่อดำเนินการเสร็จ ให้ตอบกลับเป็นภาษาไทย พร้อมสรุป
- Architecture ที่ตรวจพบ
- Category Design ที่ใช้
- รายการ Required Fields ที่ตรวจพบ
- การปรับ Required Indicator (*)
- Validation ที่แก้ไข
- Database Mapping
- API ที่แก้ไข
- รายชื่อไฟล์ที่แก้ไข
- ผลการทดสอบ
- Regression Result
- ความเสี่ยงที่เหลือ (ถ้ามี)
- Path ของรายงาน
docs/online-lessons-category-standardization-report.md