import pandas as pd
import glob
import os

# ============================================================
# วิธีใช้งานสคริปต์นี้ (สำหรับผู้ที่ไม่เคยรัน Python มาก่อน)
# ============================================================
#
# 1) ติดตั้ง Python (ข้ามได้ถ้ามีอยู่แล้ว)
#    - ดาวน์โหลดที่ https://www.python.org/downloads/ (เลือกเวอร์ชันล่าสุด)
#    - ตอนติดตั้ง อย่าลืมติ๊ก "Add Python to PATH" ก่อนกด Install
#
# 2) ติดตั้งไลบรารี pandas ที่สคริปต์นี้ต้องใช้
#    - เปิด Command Prompt / Terminal แล้วพิมพ์:
#          pip install pandas
#
# 3) เตรียมไฟล์ CSV จาก LINE OA
#    - เข้า LINE Official Account Manager (manager.line.biz) > เมนู Chat
#    - Export ประวัติแชทออกมาเป็นไฟล์ .csv (จะได้ไฟล์แยกทีละคู่สนทนา)
#    - สร้างโฟลเดอร์ชื่อ "all" แล้วเอาไฟล์ .csv ทั้งหมดมาวางรวมกันไว้ในนั้น
#      (แยกโฟลเดอร์ต่างหากจากตัวสคริปต์ กันไฟล์แชทลูกค้าปนกับโค้ด)
#
# 4) วางไฟล์ merge_line_chat.py และไฟล์ run.bat นี้ไว้ใน "โฟลเดอร์แม่" ที่มีโฟลเดอร์ "all" อยู่ข้างใน เช่น:
#          C:\Users\ชื่อคุณ\Desktop\LINE Chat\merge_line_chat.py
#          C:\Users\ชื่อคุณ\Desktop\LINE Chat\run.bat
#          C:\Users\ชื่อคุณ\Desktop\LINE Chat\all\ไฟล์1.csv, ไฟล์2.csv, ...
#
# 5) รันสคริปต์
#    - ดับเบิลคลิกไฟล์ "run.bat" ได้เลย (ไม่ต้องเปิด Command Prompt/cd เอง)
#    - หน้าต่างสีดำจะขึ้นมา แสดงผลลัพธ์ แล้วรอให้กด Enter ก่อนปิด (เผื่อมี error จะได้อ่านทัน)
#
# 6) ผลลัพธ์
#    - จะได้ไฟล์ "line_chat_merged.csv" ออกมาในโฟลเดอร์แม่ (ข้างนอกโฟลเดอร์ "all") รวมทุกไฟล์ CSV เป็นไฟล์เดียว
#    - เอาไฟล์นี้ไปอัปโหลดเข้า AI (เช่น claude.ai) เพื่อวิเคราะห์/ทำ Dashboard ต่อได้เลย
#
# หมายเหตุ: สคริปต์นี้แค่ "รวมไฟล์" เท่านั้น ไม่ได้ลบข้อมูลส่วนตัว (PII) ของลูกค้าออก
# ถ้าจะแชร์ไฟล์ผลลัพธ์ต่อให้คนอื่นดู ควรตรวจสอบและปิดบังข้อมูลลูกค้าก่อนทุกครั้ง
# ============================================================

base_path = os.path.dirname(os.path.abspath(__file__))
input_path = os.path.join(base_path, "all")
output_path = base_path
pattern = os.path.join(input_path, "*.csv")

if not os.path.isdir(input_path):
    print(f"ไม่พบโฟลเดอร์ 'all' ที่ {input_path}")
    print("สร้างโฟลเดอร์ชื่อ 'all' แล้วเอาไฟล์ .csv จาก LINE OA มาวางไว้ในนั้นก่อนนะครับ")
    exit(1)

all_files = glob.glob(pattern)

if not all_files:
    print(f"ไม่พบไฟล์ .csv ในโฟลเดอร์ {input_path}")
    print("ตรวจสอบว่าเอาไฟล์ export จาก LINE OA Manager มาวางไว้ในโฟลเดอร์ 'all' แล้วหรือยัง")
    exit(1)

merged_list = []

for f in all_files:
    try:
        # ข้าม 3 บรรทัดแรก (metadata)
        df = pd.read_csv(f, skiprows=3, encoding="utf-8")

        # กำหนด header ให้เหมือนกันทุกไฟล์
        df.columns = ["ประเภทผู้ส่ง", "ชื่อผู้ส่ง", "วันส่ง", "เวลาส่ง", "ข้อความ"]

        # เพิ่มชื่อไฟล์ต้นทาง
        df["source_file"] = os.path.basename(f)

        merged_list.append(df)
    except Exception as e:
        print(f"Error reading {f}: {e}")

if not merged_list:
    print("อ่านไฟล์ .csv ไม่สำเร็จเลยสักไฟล์ ตรวจสอบว่าเป็นไฟล์ export จาก LINE OA Manager จริง")
    exit(1)

# รวมทุกไฟล์
merged = pd.concat(merged_list, ignore_index=True)

# clean ข้อความ (ลบ \r\n)
merged["ข้อความ"] = merged["ข้อความ"].astype(str).str.replace(r"[\r\n]+", " ", regex=True)

# แปลงวันส่งเป็น yyyy-MM-dd
merged["วันส่ง"] = pd.to_datetime(merged["วันส่ง"], errors="coerce").dt.strftime("%Y-%m-%d")

# สร้าง timestamp รวมวัน+เวลา
merged["timestamp"] = pd.to_datetime(merged["วันส่ง"] + " " + merged["เวลาส่ง"], errors="coerce")

# บันทึกเป็นไฟล์รวม
output_file = os.path.join(output_path, "line_chat_merged.csv")
merged.to_csv(output_file, index=False, encoding="utf-8-sig")

print("รวมไฟล์เสร็จแล้ว ->", output_file)
