commit
This commit is contained in:
231
plans/training-attachment.md
Normal file
231
plans/training-attachment.md
Normal file
@@ -0,0 +1,231 @@
|
||||
# Prompt: ปรับปรุงหน้า Create/Edit Training Record สำหรับ Public Training Attachment Requirement
|
||||
|
||||
## Objective
|
||||
|
||||
ปรับปรุงหน้าที่เกี่ยวข้องกับการสร้าง/แก้ไขประวัติการอบรม เพื่อให้กรณีเลือกประเภทการอบรมเป็น **อบรมภายนอก (Public Training)** ระบบต้องแสดงหมายเหตุสีแดงในส่วน Upload และบังคับให้ผู้ใช้งานแนบไฟล์ประกอบก่อนบันทึก
|
||||
|
||||
## Scope
|
||||
|
||||
ให้ตรวจสอบและปรับปรุงทุกหน้าที่เกี่ยวข้อง เช่น
|
||||
|
||||
- `training-records/new`
|
||||
- หน้าแก้ไขประวัติการอบรม
|
||||
- หน้า HRD/Admin ที่สามารถสร้างหรือแก้ไข Training Record ได้
|
||||
- Component/Form ที่ใช้ร่วมกันกับ Training Record Form
|
||||
|
||||
## Requirement
|
||||
|
||||
### 1. เงื่อนไขการแสดงหมายเหตุ
|
||||
|
||||
เมื่อผู้ใช้เลือกประเภทการอบรมเป็น
|
||||
|
||||
- **อบรมภายนอก (Public Training)**
|
||||
|
||||
ให้แสดงข้อความหมายเหตุสีแดงแบบ Dynamic ทันที โดยไม่ต้อง Refresh หน้า
|
||||
|
||||
หากเลือกประเภทอื่น ให้ซ่อนข้อความดังกล่าว
|
||||
|
||||
### 2. ตำแหน่งการแสดงผล
|
||||
|
||||
ให้แสดงในส่วน Upload ตามลำดับนี้
|
||||
|
||||
```text
|
||||
หัวข้อ Upload
|
||||
|
||||
หมายเหตุสีแดง
|
||||
|
||||
ช่อง Upload Attachment
|
||||
```
|
||||
|
||||
### 3. ข้อความหมายเหตุ
|
||||
|
||||
ให้ใช้ข้อความนี้
|
||||
|
||||
```text
|
||||
หมายเหตุ: สำหรับการอบรมภายนอก ผู้ใช้งานจำเป็นต้องแนบใบรับรองการอบรมและแบบรายงานผลการฝึกอบรม/ดูงานภายนอก เพื่อใช้ประกอบการพิจารณา หากไม่แนบเอกสาร HRD อาจตีกลับรายการเพื่อให้ดำเนินการแก้ไข
|
||||
```
|
||||
|
||||
### 4. Validation
|
||||
|
||||
กรณีเลือกประเภทการอบรมเป็น **อบรมภายนอก (Public Training)**
|
||||
|
||||
ระบบต้องบังคับให้แนบไฟล์ก่อนบันทึก
|
||||
|
||||
หากไม่ได้แนบไฟล์ ให้แสดง Validation Error และไม่อนุญาตให้ Submit
|
||||
|
||||
### 5. Attachment Rule
|
||||
|
||||
ช่อง Attachment ปัจจุบันรองรับไฟล์:
|
||||
|
||||
- PDF
|
||||
- JPG
|
||||
- JPEG
|
||||
- PNG
|
||||
|
||||
ให้คงเงื่อนไขเดิมไว้ และปรับให้รองรับการแนบไฟล์ได้หลายไฟล์ ไม่จำกัดจำนวนไฟล์ แต่ขนาดรวม/หรือขนาดไฟล์ต้องไม่เกิน **10 MB** ตาม Pattern เดิมของระบบ
|
||||
|
||||
ห้ามแก้ไขชนิดไฟล์ที่รองรับโดยไม่จำเป็น
|
||||
|
||||
### 6. UX/UI Requirement
|
||||
|
||||
- ข้อความหมายเหตุต้องเป็นสีแดง
|
||||
- ใช้ Component / Style เดิมของโปรเจกต์ก่อน เช่น `FormDescription`, `Alert`, `FormMessage`, `Label`, `Text`, หรือ class ที่มีอยู่
|
||||
- ต้องรองรับ Responsive
|
||||
- ต้องรองรับ Dark Mode ถ้าระบบเดิมรองรับ
|
||||
- ไม่ทำให้ Layout เดิมเสีย
|
||||
- ข้อความต้องอ่านง่ายและอยู่ใกล้กับช่อง Upload
|
||||
|
||||
### 7. Technical Requirement
|
||||
|
||||
ก่อนแก้ไขให้ตรวจสอบก่อนว่าโปรเจกต์ใช้ Form Pattern แบบใด เช่น
|
||||
|
||||
- React Hook Form
|
||||
- TanStack Form
|
||||
- Zod Validation
|
||||
- Server Action
|
||||
- API Route
|
||||
- Shared Form Component
|
||||
|
||||
ให้แก้ไขตาม Pattern เดิมของโปรเจกต์เท่านั้น
|
||||
|
||||
ห้ามสร้าง Logic ซ้ำ หากมี Component หรือ Validation Schema ใช้ร่วมกันอยู่แล้ว
|
||||
|
||||
### 8. สิ่งที่ต้องตรวจสอบก่อนแก้ไข
|
||||
|
||||
ให้ตรวจสอบไฟล์/ส่วนที่เกี่ยวข้อง เช่น
|
||||
|
||||
- Training Record Form Component
|
||||
- Create Training Record Page
|
||||
- Edit Training Record Page
|
||||
- HRD/Admin Training Record Page
|
||||
- Attachment Upload Component
|
||||
- Validation Schema
|
||||
- API/Mutation ที่เกี่ยวข้องกับการบันทึก Training Record
|
||||
- Type ของ Training Record
|
||||
- ค่า enum หรือ master data ของ Training Type
|
||||
|
||||
ต้องยืนยันให้ได้ว่าค่า **Public Training** ในระบบถูกเก็บเป็นค่าใด เช่น
|
||||
|
||||
```ts
|
||||
PUBLIC_TRAINING
|
||||
public_training
|
||||
Public Training
|
||||
อบรมภายนอก
|
||||
```
|
||||
|
||||
ห้ามเดาค่าเอง ให้ตรวจสอบจาก Source Code หรือ Database Seed/Master Data ก่อน
|
||||
|
||||
## Implementation Steps
|
||||
|
||||
1. อ่านโครงสร้างเดิมของ Training Record Form
|
||||
2. ตรวจสอบว่าประเภทการอบรมถูกเก็บและใช้งานอย่างไร
|
||||
3. ตรวจสอบ Attachment Upload Component เดิม
|
||||
4. เพิ่ม Dynamic Warning สำหรับ Public Training
|
||||
5. เพิ่ม Validation บังคับแนบไฟล์เมื่อเลือก Public Training
|
||||
6. ตรวจสอบการแนบหลายไฟล์และขนาดไม่เกิน 10 MB
|
||||
7. ทดสอบทุกหน้าที่เกี่ยวข้อง
|
||||
8. ตรวจสอบ TypeScript, ESLint และ Build
|
||||
9. สร้างเอกสารรายงานผลการทำงานไว้ในโฟลเดอร์ `docs/`
|
||||
|
||||
## Expected Behavior
|
||||
|
||||
### Case 1: เลือกประเภทอื่นที่ไม่ใช่ Public Training
|
||||
|
||||
- ไม่แสดงหมายเหตุสีแดง
|
||||
- ไม่บังคับแนบ Attachment เพิ่มเติม
|
||||
- บันทึกได้ตามเงื่อนไขเดิม
|
||||
|
||||
### Case 2: เลือก Public Training แต่ไม่แนบไฟล์
|
||||
|
||||
- แสดงหมายเหตุสีแดง
|
||||
- Submit ไม่สำเร็จ
|
||||
- แสดงข้อความแจ้งเตือนว่าจำเป็นต้องแนบไฟล์ประกอบ
|
||||
|
||||
### Case 3: เลือก Public Training และแนบไฟล์ถูกต้อง
|
||||
|
||||
- แสดงหมายเหตุสีแดง
|
||||
- Submit สำเร็จ
|
||||
- ไฟล์ Attachment ถูกบันทึกตาม Flow เดิม
|
||||
|
||||
### Case 4: เลือก Public Training แล้วเปลี่ยนกลับเป็นประเภทอื่น
|
||||
|
||||
- ซ่อนหมายเหตุสีแดงทันที
|
||||
- Validation เรื่อง Attachment ต้องกลับไปใช้เงื่อนไขเดิม
|
||||
|
||||
## Testing Checklist
|
||||
|
||||
ให้ทดสอบอย่างน้อยดังนี้
|
||||
|
||||
- [ ] หน้า `training-records/new`
|
||||
- [ ] หน้า Edit Training Record
|
||||
- [ ] หน้า HRD/Admin ที่เกี่ยวข้อง
|
||||
- [ ] เลือก Public Training แล้วข้อความแสดงทันที
|
||||
- [ ] เปลี่ยนจาก Public Training เป็นประเภทอื่นแล้วข้อความหาย
|
||||
- [ ] Public Training ไม่แนบไฟล์แล้ว Submit ไม่ได้
|
||||
- [ ] Public Training แนบไฟล์แล้ว Submit ได้
|
||||
- [ ] แนบไฟล์ PDF ได้
|
||||
- [ ] แนบไฟล์ JPG/JPEG/PNG ได้
|
||||
- [ ] ไฟล์เกิน 10 MB ต้องถูกปฏิเสธ
|
||||
- [ ] Layout ไม่เสียบน Desktop
|
||||
- [ ] Layout ไม่เสียบน Mobile
|
||||
- [ ] ไม่มี TypeScript Error
|
||||
- [ ] ไม่มี ESLint Error
|
||||
- [ ] Build ผ่าน
|
||||
|
||||
## Report Requirement
|
||||
|
||||
หลังดำเนินการเสร็จ ให้สร้างไฟล์เอกสารรายงานผลไว้ในโฟลเดอร์ `docs/`
|
||||
|
||||
ตั้งชื่อไฟล์ประมาณนี้
|
||||
|
||||
```text
|
||||
docs/public-training-attachment-requirement-report.md
|
||||
```
|
||||
|
||||
ในรายงานต้องมีหัวข้อดังนี้
|
||||
|
||||
```md
|
||||
# Public Training Attachment Requirement Report
|
||||
|
||||
## Summary
|
||||
|
||||
สรุปสิ่งที่ดำเนินการ
|
||||
|
||||
## Files Changed
|
||||
|
||||
รายการไฟล์ที่แก้ไข
|
||||
|
||||
## Requirement Mapping
|
||||
|
||||
Mapping ระหว่าง Requirement กับสิ่งที่แก้ไข
|
||||
|
||||
## Implementation Details
|
||||
|
||||
รายละเอียดการปรับปรุง Logic/UI/Validation
|
||||
|
||||
## Validation Rules
|
||||
|
||||
สรุปเงื่อนไข Validation ที่เพิ่ม
|
||||
|
||||
## Testing Result
|
||||
|
||||
ผลการทดสอบตาม Checklist
|
||||
|
||||
## Impact Analysis
|
||||
|
||||
ผลกระทบต่อระบบเดิม
|
||||
|
||||
## Notes / Limitations
|
||||
|
||||
ข้อจำกัดหรือสิ่งที่ควรตรวจสอบเพิ่มเติม
|
||||
```
|
||||
|
||||
## Important Rules
|
||||
|
||||
- ห้ามแก้ไขส่วนที่ไม่เกี่ยวข้อง
|
||||
- ห้ามเปลี่ยน Database Schema หากไม่จำเป็น
|
||||
- ห้ามเปลี่ยน API Contract เดิมโดยไม่จำเป็น
|
||||
- ห้ามเปลี่ยน Role Permission เดิม
|
||||
- ต้องใช้ Pattern เดิมของโปรเจกต์
|
||||
- ต้องสร้างรายงานไว้ใน `docs/` หลังแก้ไขเสร็จ
|
||||
- หากพบว่า Requirement กระทบหลายจุด ให้สรุปก่อนแก้ไขใน `plan.md`
|
||||
Reference in New Issue
Block a user