# ตัวอย่างการใช้งาน Postiz Media Manager
## Scenario 1: ตรวจสอบสถานะ media ครั้งแรก
### Step 1: ดูสถิติรวม
```json
{
"tool": "postiz_get_media_stats",
"input": {}
}
```
**ผลลัพธ์:**
```json
{
"totalMedia": 1500,
"protectedMedia": 800,
"orphanMedia": 700
}
```
**ความหมาย:**
- มี media ทั้งหมด 1,500 ไฟล์
- 800 ไฟล์ถูกใช้ในโพสต์อนาคต (ห้ามลบ)
- 700 ไฟล์ไม่ถูกใช้งาน (ลบได้)
---
## Scenario 2: ดูรายละเอียด Protected Media
### Step 1: ดูรายการ media IDs ที่ถูกป้องกัน
```json
{
"tool": "postiz_list_future_protected_media_ids",
"input": {}
}
```
**ผลลัพธ์:**
```json
{
"protectedMediaIds": [
"media_abc123",
"media_def456",
"media_ghi789"
],
"count": 3
}
```
---
## Scenario 3: ทดสอบการลบด้วย Dry-Run
### Step 1: ทดสอบลบ 5 ไฟล์แรก (ไม่ลบจริง)
```json
{
"tool": "postiz_cleanup_orphan_media",
"input": {
"dryRun": true,
"limit": 5
}
}
```
**ผลลัพธ์:**
```json
{
"totalCandidates": 5,
"deletedCount": 0,
"failedCount": 0,
"deletedIds": [],
"failedIds": []
}
```
**ความหมาย:** พบ 5 ไฟล์ที่พร้อมลบ แต่ยังไม่ได้ลบเพราะเป็น dry-run
### Step 2: ดูรายละเอียดของ orphan media
```json
{
"tool": "postiz_find_orphan_media",
"input": {
"limit": 5
}
}
```
**ผลลัพธ์:**
```json
{
"items": [
{
"id": "media_old001",
"url": "https://cdn.postiz.app/media_old001.jpg",
"createdAt": "2024-06-15T10:30:00Z",
"size": 245678,
"mimeType": "image/jpeg"
},
{
"id": "media_old002",
"url": "https://cdn.postiz.app/media_old002.png",
"createdAt": "2024-07-20T14:22:00Z",
"size": 128956,
"mimeType": "image/png"
}
],
"totalCandidates": 5
}
```
---
## Scenario 4: ลบจริง (ทีละน้อย)
### Step 1: ลบ 10 ไฟล์แรก
```json
{
"tool": "postiz_cleanup_orphan_media",
"input": {
"dryRun": false,
"limit": 10
}
}
```
**ผลลัพธ์:**
```json
{
"totalCandidates": 10,
"deletedCount": 8,
"failedCount": 2,
"deletedIds": [
"media_old001",
"media_old002",
"media_old003",
"media_old004",
"media_old005",
"media_old006",
"media_old007",
"media_old008"
],
"failedIds": [
{
"id": "media_old009",
"reason": "HTTP 403: Permission denied"
},
{
"id": "media_old010",
"reason": "HTTP 404: Not found"
}
]
}
```
**ความหมาย:**
- ลบสำเร็จ 8 ไฟล์
- ล้มเหลว 2 ไฟล์ (อาจถูกลบไปแล้ว หรือไม่มีสิทธิ์)
### Step 2: ตรวจสอบสถิติใหม่
```json
{
"tool": "postiz_get_media_stats",
"input": {}
}
```
**ผลลัพธ์:**
```json
{
"totalMedia": 1492,
"protectedMedia": 800,
"orphanMedia": 692
}
```
**ความหมาย:** media ลดลง 8 ไฟล์ ตามที่ลบไป
---
## Scenario 5: ลบทั้งหมด (ระวัง!)
### Step 1: ทดสอบก่อนด้วย dry-run
```json
{
"tool": "postiz_cleanup_orphan_media",
"input": {
"dryRun": true
}
}
```
### Step 2: ถ้าแน่ใจแล้ว ลบทั้งหมด
```json
{
"tool": "postiz_cleanup_orphan_media",
"input": {
"dryRun": false
}
}
```
⚠️ **คำเตือน:** การลบโดยไม่ระบุ `limit` จะลบ orphan media ทั้งหมด!
---
## Scenario 6: ตรวจสอบเฉพาะ Draft Posts
หากต้องการดู media ที่ใช้ในโพสต์ draft เท่านั้น:
```json
{
"tool": "postiz_list_future_protected_media_ids",
"input": {
"statuses": ["draft"]
}
}
```
---
## Scenario 7: ดูรายการ Media ทั้งหมด
### ดูทั้งหมด
```json
{
"tool": "postiz_list_all_media",
"input": {}
}
```
### ดูแค่ 20 ไฟล์แรก
```json
{
"tool": "postiz_list_all_media",
"input": {
"limit": 20
}
}
```
---
## Best Practices
### ✅ ควรทำ
1. **เริ่มต้นด้วย stats**
```json
postiz_get_media_stats → ดูภาพรวม
```
2. **ทดสอบด้วย dry-run เสมอ**
```json
{ "dryRun": true, "limit": 10 }
```
3. **ลบทีละน้อยในครั้งแรก**
```json
{ "dryRun": false, "limit": 10 }
```
4. **ตรวจสอบผลลัพธ์หลังลบ**
```json
postiz_get_media_stats → ตรวจสอบว่าลดลงตามที่คาดหวัง
```
### ❌ ไม่ควรทำ
1. **ลบทั้งหมดทันทีโดยไม่ทดสอบ**
```json
// อันตราย!
{ "dryRun": false }
```
2. **ลบโดยไม่ดู failed logs**
- ควรตรวจสอบ `failedIds` เสมอเพื่อหาสาเหตุ
3. **ลบโดยไม่มี backup**
- สำรองข้อมูล Postiz ก่อนรัน cleanup ครั้งแรก
---
## Workflow แนะนำ
```
1. postiz_get_media_stats
↓
2. postiz_find_orphan_media (limit: 5)
↓ ตรวจสอบว่าเป็น media ที่ควรลบจริง
↓
3. postiz_cleanup_orphan_media (dryRun: true, limit: 5)
↓
4. postiz_cleanup_orphan_media (dryRun: false, limit: 5)
↓
5. ตรวจสอบ failedIds
↓
6. postiz_get_media_stats (ยืนยันผลลัพธ์)
↓
7. เพิ่ม limit ทีละน้อยจนกว่าจะมั่นใจ
```
---
## การ Debug
### ปัญหา: ไม่พบ orphan media
**ตรวจสอบ:**
1. มี media ที่ `deleted = false` หรือไม่?
2. Protected media IDs ถูกต้องหรือไม่?
3. Field extraction ใน `mediaService.ts` ถูกต้องหรือไม่?
### ปัญหา: ลบไม่สำเร็จ (failedIds มาก)
**ตรวจสอบ:**
1. API token มีสิทธิ์ลบหรือไม่?
2. Media ถูกลบไปแล้วหรือยัง?
3. Endpoint URL ถูกต้องหรือไม่?
### ปัญหา: Protected media น้อยเกินไป
**ตรวจสอบ:**
1. `extractMediaIds()` ดึงฟิลด์ที่ถูกต้องหรือไม่?
2. Statuses filter ถูกต้องหรือไม่?
3. มีโพสต์ draft/scheduled/queued จริงหรือไม่?