232 lines
11 KiB
Markdown
232 lines
11 KiB
Markdown
# 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`
|