commit
This commit is contained in:
736
plans/category-and-required-field.md
Normal file
736
plans/category-and-required-field.md
Normal file
@@ -0,0 +1,736 @@
|
||||
# Prompt: Standardize Online Lesson Category (K/S/A) & Required Field Indicators
|
||||
|
||||
## Objective
|
||||
|
||||
ดำเนินการตรวจสอบ วิเคราะห์ และปรับปรุง Module **Online Lessons** ให้เป็นมาตรฐานเดียวกันทั้งระบบ โดยมีวัตถุประสงค์หลักดังนี้
|
||||
|
||||
1. เปลี่ยนฟิลด์ **หมวดหมู่ (Category)** ให้เป็น Select ที่ใช้ค่าคงที่ของระบบ (Knowledge / Skill / Attitude)
|
||||
2. ตรวจสอบ Required Fields ทั้งหมดให้สอดคล้องกับ Validation
|
||||
3. แสดงเครื่องหมาย **(\*) สีแดง** เฉพาะฟิลด์ที่ Required เท่านั้น
|
||||
4. ลบเครื่องหมาย (\*) ออกจากฟิลด์ที่ไม่ Required
|
||||
5. ปรับ UI, Validation, API และ Database Mapping ให้สอดคล้องกัน
|
||||
6. ตรวจสอบทุกหน้าที่เกี่ยวข้องกับ 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
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
รายงานต้องมี
|
||||
|
||||
```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
|
||||
|
||||
ดำเนินการดังนี้
|
||||
|
||||
1. Audit ระบบก่อนแก้ไข
|
||||
2. แก้ไข Source Code
|
||||
3. ตรวจสอบ Regression
|
||||
4. สร้างรายงาน
|
||||
|
||||
```
|
||||
docs/online-lessons-category-standardization-report.md
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Final Response
|
||||
|
||||
เมื่อดำเนินการเสร็จ ให้ตอบกลับเป็นภาษาไทย พร้อมสรุป
|
||||
|
||||
1. Architecture ที่ตรวจพบ
|
||||
2. Category Design ที่ใช้
|
||||
3. รายการ Required Fields ที่ตรวจพบ
|
||||
4. การปรับ Required Indicator (\*)
|
||||
5. Validation ที่แก้ไข
|
||||
6. Database Mapping
|
||||
7. API ที่แก้ไข
|
||||
8. รายชื่อไฟล์ที่แก้ไข
|
||||
9. ผลการทดสอบ
|
||||
10. Regression Result
|
||||
11. ความเสี่ยงที่เหลือ (ถ้ามี)
|
||||
12. Path ของรายงาน
|
||||
|
||||
```
|
||||
docs/online-lessons-category-standardization-report.md
|
||||
```
|
||||
Reference in New Issue
Block a user