set -euo pipefail
printf "host="; hostname; printf " user="; whoami; printf " date="; date -Is
printf "\n== services ==\n"
systemctl list-units --type=service --all | grep -E "sub2api|sublb" || true
printf "\n== listening 48090 ==\n"
ss -ltnp | grep ":48090" || true
printf "\n== systemctl cats ==\n"
for s in sub2api-103.service sub2api.service sub2api-angels.service; do
  if systemctl status "$s" >/dev/null 2>&1; then echo "--- $s"; systemctl cat "$s" | sed -n "1,140p"; fi
done
printf "\n== srv dirs ==\n"
ls -ld /srv/sub2api* 2>/dev/null || true
for d in /srv/sub2api-103 /srv/sub2api /srv/sub2api-ny; do
  [ -d "$d" ] && { echo "--- $d"; find "$d" -maxdepth 3 \( -type f -name "*.env" -o -type l \) 2>/dev/null | sed -n "1,120p"; }
done
pid=$(ss -ltnp | awk '/:48090/ {match($0,/pid=([0-9]+)/,m); if(m[1]) print m[1]}' | head -1 || true)
if [ -n "$pid" ]; then
  echo "\n== env presence pid=$pid =="
  tr "\0" "\n" < /proc/$pid/environ | awk -F= '/^(ALIPAY_|JWT_SECRET|DATABASE_URL|REDIS_URL)/{ if($1=="JWT_SECRET") print $1"=<present len=" length($2) ">"; else if($1 ~ /KEY|SECRET|PRIVATE|APP_ID/) print $1"=<present len=" length($2) ">"; else print $1"="$2 }'
fi
printf "\n== recent pay logs ==\n"
for s in sub2api-103.service sub2api.service; do
  journalctl -u "$s" --since "2026-05-16 12:00:00" --no-pager 2>/dev/null | grep -Ei "handler.pay.create|payment.alipay|precreate|service_failed|config_failed|INVALID_TOKEN|invalid token" | tail -100 || true
done
