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

10 KiB

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

รายงานต้องมี

# 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