#!/usr/bin/env python3
import subprocess, json

def run(cmd):
    return subprocess.run(cmd, capture_output=True, text=True)

C = run(['bash','-c','docker ps --format "{{.Names}}" | grep friend-deploy | head -1']).stdout.strip()
FT = run(['bash','-c',"docker exec postgres_db psql -U knowledge -d yunwoai -t -A -c \"SELECT friend_token FROM user_friend_agents WHERE instance_id='friend-abc1d454';\""]).stdout.strip()

# probe 模型 3/4/5
for mid in [3,4,5]:
    inner = "wget -qO /tmp/p.out --header=\"Authorization: Bearer %s\" --method=POST --timeout=30 http://127.0.0.1:8000/api/llm/models/%d/probe 2>/dev/null; cat /tmp/p.out" % (FT, mid)
    r = run(["docker","exec",C,"sh","-c",inner])
    print("probe model", mid, "->", r.stdout.strip()[:200])

# 健康总览
inner = "wget -qO /tmp/h.out --header=\"Authorization: Bearer %s\" http://127.0.0.1:8000/api/llm/health 2>/dev/null; cat /tmp/h.out" % FT
r = run(["docker","exec",C,"sh","-c",inner])
try:
    d = json.loads(r.stdout)
    items = d if isinstance(d, list) else d.get("models") or []
    for m in items:
        print(m.get("model_key"), "| channel:", m.get("channel_name"), "| state:", m.get("model_state") or m.get("state"))
except Exception as e:
    print("health parse err:", e, r.stdout[:300])
