#!/usr/bin/env bash # ============================================================================= # OmniShopAgent - 服务健康检查脚本 # 检查 Streamlit、Search API 等依赖 # ============================================================================= set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' echo "==========================================" echo "OmniShopAgent 服务健康检查" echo "==========================================" # 1. Python 环境 echo -n "[Python] " if command -v python3 &>/dev/null; then VER=$(python3 -c 'import sys; v=sys.version_info; print(f"{v.major}.{v.minor}.{v.micro}")' 2>/dev/null) if [[ "$VER" == "3.1"* ]] || [[ "$VER" == "3.12"* ]]; then echo -e "${GREEN}OK${NC} $VER" else echo -e "${YELLOW}WARN${NC} $VER (建议 3.12+)" fi else echo -e "${RED}FAIL${NC} 未找到" fi # 2. 虚拟环境 echo -n "[Virtualenv] " if [ -d "$PROJECT_ROOT/venv" ]; then echo -e "${GREEN}OK${NC} $PROJECT_ROOT/venv" else echo -e "${YELLOW}WARN${NC} 未找到 venv" fi # 3. .env 配置 echo -n "[.env] " if [ -f "$PROJECT_ROOT/.env" ]; then if grep -q "OPENAI_API_KEY=sk-" "$PROJECT_ROOT/.env" 2>/dev/null; then echo -e "${GREEN}OK${NC} 已配置" else echo -e "${YELLOW}WARN${NC} 请配置 OPENAI_API_KEY" fi else echo -e "${RED}FAIL${NC} 未找到" fi # 4. 数据目录(可选,用于图片上传) echo -n "[数据] " if [ -d "$PROJECT_ROOT/data/images" ] && [ -f "$PROJECT_ROOT/data/styles.csv" ]; then IMG_COUNT=$(find "$PROJECT_ROOT/data/images" -name "*.jpg" 2>/dev/null | wc -l) echo -e "${GREEN}OK${NC} $IMG_COUNT 张图片" else echo -e "${YELLOW}WARN${NC} 未找到 data/images 或 data/styles.csv (可选,用于图片风格分析)" fi # 5. Streamlit echo -n "[Streamlit] " if pgrep -f "streamlit run app.py" >/dev/null 2>&1; then echo -e "${GREEN}OK${NC} 运行中" else echo -e "${YELLOW}WARN${NC} 未运行 (./scripts/start.sh)" fi echo "=========================================="