#!/usr/bin/env python3
"""Update caption jadwal EveryBe Threads: arahkan ke produk (Co Bloong / Feminine V Spray)."""
import sys, json, urllib.request
sys.path.insert(0, "/home/mantapman/.hermes/profiles/atun/workspace")
from repliz_client import HEADERS, BASE

EB = '6a44ed1920e4f4f195d8ecf7'

# Produk per kategori (FIXED 1 Sep 2026 — instruksi Bos)
PRODUK = {
    "cobloong": {
        "nama": "Co Bloong",
        "cta": "Buat kamu yang sering pegal setelah kerja atau olahraga, Co Bloong dari EveryBe bisa jadi solusi praktis — krim pijat dengan sensasi hangat yang bantu meredakan pegal linu dan otot kaku. 💆\n\nCo Bloong cocok banget buat nemenin recovery otot setelah aktivitas padat. Info lengkapnya di everybeofficial.com ya!",
    },
    "feminine": {
        "nama": "Feminine V Spray",
        "cta": "Buat kamu yang pengen tetap fresh dan percaya diri seharian, Feminine V Spray dari EveryBe bisa jadi pilihan praktis — menjaga kesegaran area kewanitaan dengan bahan yang lembut. 🌸\n\nInfo lengkapnya di everybeofficial.com ya!",
    },
}

def get(sid):
    req = urllib.request.Request(f"{BASE}/public/schedule/{sid}", headers=HEADERS)
    with urllib.request.urlopen(req, timeout=30) as r:
        return json.load(r)

def put(sid, payload):
    req = urllib.request.Request(f"{BASE}/public/schedule/{sid}",
                                 data=json.dumps(payload).encode(),
                                 headers={**HEADERS, "Content-Type": "application/json"},
                                 method="PUT")
    with urllib.request.urlopen(req, timeout=30) as r:
        return r.status

# Ambil semua pending EveryBe
pend = []
for p in range(1, 80):
    raw = urllib.request.Request(f"{BASE}/public/schedule?page={p}&limit=100", headers=HEADERS)
    with urllib.request.urlopen(raw, timeout=30) as r:
        docs = json.load(r)["docs"]
    for d in docs:
        if d.get("accountId") == EB and (d.get("status") or "").lower() == "pending":
            at = d.get("scheduleAt") or ""
            if at[:10] >= "2026-09-02":
                pend.append(d)

print(f"jadwal pending: {len(pend)}")

# Klasifikasi: kata kunci kebugaran → Co Bloong; kewanitaan → Feminine V Spray
KW_COBLOONG = ["pegal", "otot", "sendi", "stretch", "pijat", "olahraga", "duduk", "keseleo", "cedera", "linu", "syaraf", "recovery", "kebugaran", "aktivitas", "padel", "traveling", "gaya hidup sehat"]
KW_FEMININE = ["kewanitaan", "bau tidak sedap", "keputihan", "menopause", "feminine", "sabun", "organ intim", "vagina", "area kewanitaan"]

def classify(desc):
    tl = desc.lower()
    if any(k in tl for k in KW_FEMININE):
        return "feminine"
    if any(k in tl for k in KW_COBLOONG):
        return "cobloong"
    return None

updated = skipped = 0
for d in sorted(pend, key=lambda x: x.get("scheduleAt") or ""):
    desc = d.get("description") or ""
    kat = classify(desc)
    if kat is None:
        print(f"  ⏭️  {d.get('scheduleAt')[:10]} | (skincare/umum, tidak diubah) | {desc[:40].replace(chr(10),' ')}")
        skipped += 1
        continue
    # Ambil bagian awal caption (sampai 'Yuk simak') lalu sisipkan CTA produk sebelum link
    produk = PRODUK[kat]["nama"]
    # Buat caption baru: teks asli dibersihkan dari CTA lama, tambah CTA produk
    # Potong: ambil 2 paragraf awal (judul edukasi), lalu link, lalu CTA produk + diskusi
    lines = desc.split("\n\n")
    intro = lines[0] if lines else desc  # kalimat pembuka
    # cari link
    import re
    m = re.search(r"https?://\S+", desc)
    link = m.group(0) if m else "https://www.everybeofficial.com"
    new_caption = (
        f"{intro}\n\n"
        f"{PRODUK[kat]['cta']}\n\n"
        f"Simak artikel lengkapnya di sini 👇\n{link}\n\n"
        f"Menurut kamu, kebiasaan sehat apa yang paling susah dijaga? Share di komentar! 👇\n\n"
        f"#EveryBe #{produk.replace(' ', '')} #EdukasiKesehatan #SelfCare"
    )
    payload = {
        "accountId": d.get("accountId"),
        "title": d.get("title", ""),
        "description": new_caption,
        "topic": d.get("topic", ""),
        "type": d.get("type", ""),
        "medias": d.get("medias") or [],
        "scheduleAt": d.get("scheduleAt"),
        "replies": d.get("replies") or [],
    }
    try:
        st = put(d["id"], payload)
        updated += 1
        print(f"  ✅ {d.get('scheduleAt')[:10]} | → {produk:20s} | {desc[:45].replace(chr(10),' ')}")
    except Exception as e:
        print(f"  ❌ {d.get('scheduleAt')[:10]} | {e}")

print(f"\n📊 Updated: {updated} | Skipped (skincare/umum): {skipped}")
