#!/usr/bin/env bash
#
# 一键上线脚本（在服务器上执行，或本地 SSH 调它）
# 服务器目录约定（见 DEPLOY.md）：
#   /opt/fashion/test        -> 前端仓（本脚本所在）
#   /opt/fashion/admin/backend -> 后端仓
#
# 流程：拉代码 -> 起 db+backend -> 等后端健康 -> 构建前端(SSR 拉数据) -> 起前端
set -euo pipefail

DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$DIR"

echo "==> [1/5] 拉取最新代码"
git pull --ff-only
git -C ../admin/backend pull --ff-only || true

echo "==> [2/5] 启动 db + backend（供前端构建期 SSR 取数）"
docker compose up -d db backend

echo "==> [3/5] 等待 backend :8090 健康"
for i in $(seq 1 60); do
  if curl -fsS "http://localhost:8090/api/public/brands?size=1" >/dev/null 2>&1; then
    echo "    backend 已就绪"
    break
  fi
  echo "    等待中... ($i/60)"
  sleep 2
done

echo "==> [4/5] 构建前端镜像（API_SSR=http://localhost:8090，构建期网络=host）"
docker compose build frontend

echo "==> [5/5] 启动前端"
docker compose up -d frontend

echo "==> 部署完成，当前状态："
docker compose ps
