Files
alla-tms/plans/category-and-required-field.md
2026-07-16 09:53:14 +07:00

737 lines
10 KiB
Markdown

# 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
```