#!/usr/bin/env python3
"""Repliz: cari jalur API yang benar untuk mengubah jadwal (PATCH /public/schedule/<id> menghasilkan 404)."""
import json, sys

WS = "/home/mantapman/.hermes/profiles/atun/workspace"
sys.path.insert(0, WS)
from repliz_client import get_client, ACC          # noqa: E402

NAMA = {getattr(ACC, n): n for n in dir(ACC) if not n.startswith("_")}
client = get_client()

# ambil satu draf parkir sebagai bahan uji
d = client.get_schedules(page=1, limit=100)
kandidat = None
page = 1
while not kandidat:
    d = client.get_schedules(page=page, limit=100)
    for s in d.get("docs", []):
        if s.get("status") == "pending" and str(s.get("scheduleAt") or "") >= "2090":
            kandidat = s
            break
    if not kandidat:
        page += 1
        if page > 25:
            break

if not kandidat:
    print("tidak ada draf parkir untuk diuji"); sys.exit(1)

sid = kandidat["_id"]
akun = NAMA.get(kandidat.get("accountId"), kandidat.get("accountId"))
print(f"uji dengan #{sid} | akun {akun} | jadwal {kandidat.get('scheduleAt')}")

uji = [
    ("GET  /public/schedule/<id>", "GET", f"/public/schedule/{sid}", None),
    ("PATCH /public/schedule/<id>", "PATCH", f"/public/schedule/{sid}", {"scheduleAt": "2026-10-05T02:00:00.000Z"}),
    ("PUT  /public/schedule/<id>", "PUT", f"/public/schedule/{sid}", {"scheduleAt": "2026-10-05T02:00:00.000Z"}),
    ("POST /public/schedule/<id>", "POST", f"/public/schedule/{sid}", {"scheduleAt": "2026-10-05T02:00:00.000Z"}),
    ("PATCH /public/schedule/update/<id>", "PATCH", f"/public/schedule/update/{sid}", {"scheduleAt": "2026-10-05T02:00:00.000Z"}),
    ("PATCH /public/schedule (id di body)", "PATCH", "/public/schedule", {"id": sid, "scheduleAt": "2026-10-05T02:00:00.000Z"}),
    ("PATCH /public/schedule/reschedule/<id>", "PATCH", f"/public/schedule/reschedule/{sid}", {"scheduleAt": "2026-10-05T02:00:00.000Z"}),
]

for nama, metode, jalur, data in uji:
    try:
        hasil = client._request(metode, jalur, data)
        cuplik = json.dumps(hasil)[:180] if isinstance(hasil, (dict, list)) else str(hasil)[:180]
        print(f"   ✅ {nama:<42} → {cuplik}")
    except Exception as e:
        print(f"   ❌ {nama:<42} → {str(e)[:150]}")

print("\n=== keadaan setelah uji (pastikan tidak ada yang berubah tak sengaja) ===")
try:
    cek = client.get_schedule(sid)
    print("   scheduleAt sekarang:", cek.get("scheduleAt"), "| status:", cek.get("status"))
except Exception as e:
    print("   gagal membaca ulang:", str(e)[:120])
