#!/bin/bash
# M3 验证 v3：轮询主链节点 + brain/LLM 状态
BASE=http://10.168.3.36:19088
C=friend-deploy-0acc642d-5c1
INST=friend-48beca9b

ITOK=$(docker exec $C sh -c "grep api_auth_token /app/config/config.yaml" | awk '{print $2}')
TTOK=$(curl -sS --max-time 10 -X POST -H "Authorization: Bearer dev-admin-token" -H "Content-Type: application/json" -d '{}' "$BASE/api/v1/instances/$INST/tunnels" | python3 -c "
import sys,json,urllib.parse as u
print(u.parse_qs(u.urlparse(json.load(sys.stdin)['url']).query)['__friend_tunnel'][0])")

api() { curl -sS --max-time 15 -H "Cookie: friend_cluster_tunnel=$TTOK" -H "Authorization: Bearer $ITOK" "$BASE/panel/$INST$1"; }

echo "=== brain 健康 ==="
api /api/status/health; echo
echo "=== 主链信息 ==="
api /api/chains/main; echo
echo "=== 轮询主链节点 5 次（间隔15s）==="
for i in 1 2 3 4 5; do
  sleep 15
  NODES=$(api "/api/chains/c89441e6-1962-4048-807c-db4f011f9336/nodes")
  CNT=$(echo "$NODES" | python3 -c "import sys,json
try: print(len(json.load(sys.stdin)))
except Exception as e: print('parse_err')" 2>/dev/null)
  echo "[poll $i] node_count=$CNT"
  if [ "$CNT" != "0" ] && [ "$CNT" != "parse_err" ]; then
    echo "$NODES" | python3 -m json.tool | head -40
    break
  fi
done
echo "=== 实例日志尾部（brain/perception 相关）==="
docker exec $C sh -c 'tail -30 /var/lib/friend/logs/friend.log' 2>/dev/null | grep -iE "brain|perception|llm|error|chain" | tail -12
echo DONE
