---
name: slip-summarizer
description: >
  สกัดข้อมูลและสรุปรายการจากสลิปโอนเงิน ใบสำคัญจ่าย และใบเสร็จ/Invoice
  จาก Google Drive โดยอัตโนมัติ แล้วสร้างรายงาน Excel รายเดือน
  ใช้ skill นี้ทุกครั้งที่อาจารย์พูดถึง: "สรุป slip", "ดึงข้อมูลสลิป",
  "สรุปใบสำคัญจ่าย", "ทำรายงานการเงินรายเดือน", "สรุปค่าใช้จ่าย",
  "ดึง invoice จาก drive", "export รายการจ่าย", "สรุปการโอนเงิน",
  หรือเมื่อต้องการสร้างรายงาน Excel จากไฟล์ทางการเงินใน Google Drive
  ทั้งไฟล์ PNG, JPG, และ PDF
---

# Slip Summarizer Skill

Skill นี้ช่วย **ดึงข้อมูลอัตโนมัติ** จากเอกสารทางการเงินใน Google Drive
แล้วสร้างไฟล์ Excel สรุปรายเดือนที่พร้อมใช้งาน

---

## เอกสารที่รองรับ

| ประเภท | ตัวอย่าง | รูปแบบไฟล์ |
|--------|---------|-----------|
| Slip โอนเงิน | SCB, Krungthai, PromptPay, Bangkok Bank | PNG, JPG, PDF |
| ใบสำคัญจ่าย | Payment Voucher ภายในองค์กร | PNG, JPG, PDF |
| ใบเสร็จ / Invoice | ใบเสร็จรับเงินจาก Supplier | PNG, JPG, PDF |

---

## ขั้นตอนการทำงาน (Workflow)

### ขั้นตอนที่ 1 — รับข้อมูลเบื้องต้นจากผู้ใช้

ถามผู้ใช้ก่อนเริ่มทำงานเสมอ:

```
1. ชื่อโฟลเดอร์ใน Google Drive ที่เก็บไฟล์ (เช่น "Slips2025" หรือ "สลิปเดือนมกรา")
2. เดือน/ปี ที่ต้องการสรุป (เช่น "มิถุนายน 2025" หรือ "06/2025")
3. ชื่อไฟล์ Excel ผลลัพธ์ (ถ้าไม่ระบุ ให้ตั้งเป็น "รายงาน_YYYY_MM.xlsx" อัตโนมัติ)
```

### ขั้นตอนที่ 2 — เชื่อมต่อและดึงไฟล์จาก Google Drive

ใช้ Google Drive MCP tools ตามลำดับนี้:

```
1. ค้นหาโฟลเดอร์ด้วย search_files (query = ชื่อโฟลเดอร์)
2. ดึงรายการไฟล์ทั้งหมดในโฟลเดอร์
3. กรองเฉพาะไฟล์ PNG, JPG, JPEG, PDF
4. แจ้งให้ผู้ใช้ทราบว่าพบไฟล์กี่ไฟล์ก่อนดำเนินการต่อ
```

### ขั้นตอนที่ 3 — อ่านและสกัดข้อมูลจากแต่ละไฟล์

สำหรับแต่ละไฟล์:

**สำหรับ PNG/JPG:**
- ใช้ `download_file_content` เพื่อดึงไฟล์
- อ่านด้วย Vision (มองภาพโดยตรง)

**สำหรับ PDF:**
- ใช้ `download_file_content` เพื่อดึงไฟล์
- อ่านด้วย PDF reading tools

**ข้อมูลที่ต้องสกัดจากทุกเอกสาร:**

| ฟิลด์ | คำอธิบาย | ตัวอย่าง |
|-------|---------|---------|
| `วันที่` | วันที่ทำรายการ (DD/MM/YYYY) | 15/06/2025 |
| `เวลา` | เวลาทำรายการ (ถ้ามี) | 14:32:15 |
| `จำนวนเงิน` | ยอดเงิน (ตัวเลขเท่านั้น ไม่มีสัญลักษณ์) | 5000.00 |
| `สกุลเงิน` | THB เป็นค่าเริ่มต้น | THB |
| `ผู้โอน/ผู้จ่าย` | ชื่อผู้ส่งหรือผู้จ่าย | บริษัท ABC จำกัด |
| `ผู้รับ` | ชื่อผู้รับเงินหรือปลายทาง | นาย สมชาย ใจดี |
| `ประเภทเอกสาร` | Slip / ใบสำคัญจ่าย / Invoice | Slip |
| `หมวดหมู่` | หมวดรายจ่ายอัตโนมัติ (ดูด้านล่าง) | ค่าสาธารณูปโภค |
| `เลขอ้างอิง` | Transaction ID หรือเลข Invoice | TH202506150001 |
| `ธนาคาร/ช่องทาง` | ธนาคารหรือช่องทางการชำระ | SCB / PromptPay |
| `หมายเหตุ` | ข้อมูลเพิ่มเติมที่พบในเอกสาร | - |
| `ชื่อไฟล์` | ชื่อไฟล์ต้นฉบับ | slip_june_001.jpg |
| `สถานะการอ่าน` | อ่านสำเร็จ / อ่านไม่ออก | อ่านสำเร็จ |

### ขั้นตอนที่ 4 — จัดหมวดหมู่อัตโนมัติ

ใช้กฎต่อไปนี้ในการจัดหมวดหมู่รายการ (ดูคำสำคัญ ชื่อผู้รับ หรือหมายเหตุ):

```
ค่าสาธารณูปโภค   → ไฟฟ้า, น้ำ, PEA, MEA, PWA, ประปา
ค่าเช่า           → เช่า, ค่าเช่า, rent, ค่าที่พัก
ค่าโทรศัพท์/IT   → AIS, DTAC, TRUE, TOT, NT, internet, hosting, domain
เงินเดือน/ค่าจ้าง → เงินเดือน, salary, ค่าจ้าง, ค่าแรง
ค่าวัสดุ/อุปกรณ์ → วัสดุ, อุปกรณ์, supplies, stationery
ค่าเดินทาง        → น้ำมัน, ปตท, บขส, taxi, Grab, ค่าเดินทาง
ค่าอาหาร          → อาหาร, ร้านอาหาร, food, ข้าว, กาแฟ
ภาษี/ประกัน       → ภาษี, VAT, ประกัน, insurance
อื่นๆ             → รายการที่ไม่ตรงกับหมวดใดข้างต้น
```

ถ้าจัดหมวดไม่แน่ใจ ให้ใส่ว่า `"อื่นๆ"` และแจ้งไว้ในสรุปผล

### ขั้นตอนที่ 5 — จัดการเอกสารที่อ่านไม่ออก

ถ้าไฟล์ใดอ่านข้อมูลไม่ออก หรือได้ข้อมูลไม่ครบ:
- บันทึก `สถานะการอ่าน = "อ่านไม่ออก"` หรือ `"ข้อมูลไม่ครบ"`
- ระบุ `ชื่อไฟล์` ที่มีปัญหาไว้
- **อย่าข้ามไฟล์นั้น** — ให้ใส่แถวไว้ในตารางพร้อมสถานะ
- สรุปรายชื่อไฟล์ที่มีปัญหาทั้งหมดในตอนท้าย

### ขั้นตอนที่ 6 — สร้างไฟล์ Excel

ใช้ script `scripts/create_excel.py` เพื่อสร้างไฟล์ Excel ดูคำสั่งด้านล่าง

ไฟล์ Excel ต้องมี **2 Sheets**:

#### Sheet 1: "รายการทั้งหมด"
ตารางรายละเอียดทุกรายการที่สกัดได้ มีคอลัมน์ตามฟิลด์ทั้งหมดในขั้นตอนที่ 3

#### Sheet 2: "สรุปรายเดือน"
สรุปยอดรวมแยกตามหมวดหมู่:
```
| หมวดหมู่ | จำนวนรายการ | ยอดรวม (บาท) | % ของยอดรวม |
```
และมีแถวสรุปรวมทั้งหมดด้านล่าง

---

## การใช้งาน Script

รัน script ดังนี้:

```bash
pip install openpyxl --break-system-packages
python /path/to/slip-summarizer/scripts/create_excel.py \
  --data '<JSON string>' \
  --output '/path/to/output.xlsx' \
  --month '06/2025'
```

โดย `--data` คือ JSON array ของรายการทั้งหมดที่สกัดได้ รูปแบบดังนี้:

```json
[
  {
    "วันที่": "15/06/2025",
    "เวลา": "14:32",
    "จำนวนเงิน": 5000.00,
    "สกุลเงิน": "THB",
    "ผู้โอน/ผู้จ่าย": "บริษัท ABC จำกัด",
    "ผู้รับ": "นาย สมชาย ใจดี",
    "ประเภทเอกสาร": "Slip",
    "หมวดหมู่": "ค่าสาธารณูปโภค",
    "เลขอ้างอิง": "TH202506150001",
    "ธนาคาร/ช่องทาง": "SCB",
    "หมายเหตุ": "",
    "ชื่อไฟล์": "slip_001.jpg",
    "สถานะการอ่าน": "อ่านสำเร็จ"
  }
]
```

---

## รูปแบบการแจ้งผลลัพธ์ใน Chat

หลังจากสร้างไฟล์เสร็จแล้ว ให้แสดงสรุปในรูปแบบนี้:

```
✅ สรุปผลการดำเนินงาน — รายงานเดือน [เดือน/ปี]

📁 ไฟล์ที่ประมวลผล: XX ไฟล์
✅ อ่านสำเร็จ: XX ไฟล์
⚠️ อ่านไม่ออก: XX ไฟล์ (ระบุชื่อ)

💰 ยอดรวมทั้งหมด: XX,XXX.XX บาท
📊 หมวดที่มียอดสูงสุด: [หมวดหมู่] (XX,XXX.XX บาท)

📋 สรุปตามหมวดหมู่:
  - ค่าสาธารณูปโภค: X,XXX.XX บาท (X รายการ)
  - ค่าเช่า: X,XXX.XX บาท (X รายการ)
  ...

⚠️ ไฟล์ที่อ่านไม่ออก (ถ้ามี):
  - slip_blur_001.jpg — ภาพไม่ชัดเจน
  - invoice_scan_003.pdf — ตัวอักษรซ้อนทับ
```

---

## ข้อควรระวัง

- **อย่าเดาข้อมูล** ถ้าอ่านตัวเลขไม่ชัด ให้ใส่ค่า `0` และทำเครื่องหมายสถานะว่า "ข้อมูลไม่ครบ"
- **ระวังหน่วยเงิน** บางสลิปแสดงหน่วยเป็น "สตางค์" ให้แปลงเป็นบาทก่อนบันทึก
- **วันที่** ให้แปลงเป็นรูปแบบ DD/MM/YYYY เสมอ แม้ในต้นฉบับจะเป็นรูปแบบอื่น
- **ภาษี VAT** ถ้า Invoice มีทั้ง ราคาก่อน VAT และราคารวม VAT ให้บันทึก **ราคารวม VAT** เป็นจำนวนเงิน
- **ไฟล์ซ้ำ** ถ้าพบไฟล์ที่ดูเหมือนซ้ำกัน (เลขอ้างอิงเดิม) ให้แจ้งเตือนผู้ใช้

---

## การบันทึกไฟล์

บันทึกไฟล์ Excel ไปยัง workspace folder ของผู้ใช้เสมอ
ตั้งชื่อไฟล์ในรูปแบบ: `รายงาน_YYYY_MM.xlsx` เช่น `รายงาน_2025_06.xlsx`
