#!/bin/bash # Base配置演示流程脚本 # 用于演示店匠通用客户的搜索效果 set -e cd "$(dirname "$0")/.." source /home/tw/miniconda3/etc/profile.d/conda.sh conda activate searchengine GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' NC='\033[0m' echo -e "${GREEN}========================================${NC}" echo -e "${GREEN}Base配置演示流程${NC}" echo -e "${GREEN}========================================${NC}" # 加载.env配置文件 if [ -f .env ]; then set -a source .env set +a fi # 配置参数(从环境变量或默认值) TENANT_ID=${1:-"1"} DB_HOST=${DB_HOST:-"120.79.247.228"} DB_PORT=${DB_PORT:-"3316"} DB_DATABASE=${DB_DATABASE:-"saas"} DB_USERNAME=${DB_USERNAME:-"saas"} DB_PASSWORD=${DB_PASSWORD:-"P89cZHS5d7dFyc9R"} ES_HOST=${ES_HOST:-"http://localhost:9200"} API_PORT=${API_PORT:-"6002"} FRONTEND_PORT=${FRONTEND_PORT:-"6003"} echo -e "\n${YELLOW}配置参数:${NC}" echo " Tenant ID: $TENANT_ID" echo " MySQL: $DB_HOST:$DB_PORT/$DB_DATABASE" echo " Elasticsearch: $ES_HOST" echo " API Port: $API_PORT" echo " Frontend Port: $FRONTEND_PORT" # Step 1: 生成测试数据 echo -e "\n${YELLOW}Step 1/5: 生成测试数据${NC}" if [ ! -f "test_data_base.sql" ]; then echo "生成100条SPU测试数据..." python scripts/generate_test_data.py \ --num-spus 100 \ --tenant-id "$TENANT_ID" \ --start-spu-id 1 \ --start-sku-id 1 \ --output test_data_base.sql echo -e "${GREEN}✓ 测试数据已生成: test_data_base.sql${NC}" else echo -e "${YELLOW}⚠ 测试数据文件已存在,跳过生成${NC}" fi # Step 2: 导入测试数据到MySQL echo -e "\n${YELLOW}Step 2/5: 导入测试数据到MySQL${NC}" if [ -z "$DB_PASSWORD" ]; then echo -e "${RED}ERROR: DB_PASSWORD未设置,请检查.env文件或环境变量${NC}" exit 1 fi python scripts/import_test_data.py \ --db-host "$DB_HOST" \ --db-port "$DB_PORT" \ --db-database "$DB_DATABASE" \ --db-username "$DB_USERNAME" \ --db-password "$DB_PASSWORD" \ --sql-file test_data_base.sql \ --tenant-id "$TENANT_ID" echo -e "${GREEN}✓ 测试数据已导入MySQL${NC}" # Step 3: 导入数据到Elasticsearch echo -e "\n${YELLOW}Step 3/5: 导入数据到Elasticsearch${NC}" python scripts/ingest_shoplazza.py \ --db-host "$DB_HOST" \ --db-port "$DB_PORT" \ --db-database "$DB_DATABASE" \ --db-username "$DB_USERNAME" \ --db-password "$DB_PASSWORD" \ --tenant-id "$TENANT_ID" \ --config base \ --es-host "$ES_HOST" \ --recreate \ --batch-size 500 echo -e "${GREEN}✓ 数据已导入Elasticsearch${NC}" # Step 4: 启动后端服务 echo -e "\n${YELLOW}Step 4/5: 启动后端服务${NC}" echo "后端服务将在后台运行..." # 创建logs目录 mkdir -p logs # 启动后端(后台运行) nohup python api/app.py \ --host 0.0.0.0 \ --port "$API_PORT" \ --customer base \ --es-host "$ES_HOST" > logs/backend_base.log 2>&1 & BACKEND_PID=$! echo $BACKEND_PID > logs/backend_base.pid echo -e "${GREEN}后端服务已启动 (PID: $BACKEND_PID)${NC}" echo -e "${GREEN}日志文件: logs/backend_base.log${NC}" # 等待后端启动 echo -e "${YELLOW}等待后端服务启动...${NC}" MAX_RETRIES=15 RETRY_COUNT=0 BACKEND_READY=false while [ $RETRY_COUNT -lt $MAX_RETRIES ]; do sleep 2 if curl -s "http://localhost:$API_PORT/health" > /dev/null 2>&1; then BACKEND_READY=true break fi RETRY_COUNT=$((RETRY_COUNT + 1)) echo -e "${YELLOW} 等待中... ($RETRY_COUNT/$MAX_RETRIES)${NC}" done if [ "$BACKEND_READY" = true ]; then echo -e "${GREEN}✓ 后端服务运行正常${NC}" else echo -e "${YELLOW}⚠ 后端服务可能还在启动中,请稍后访问${NC}" fi # Step 5: 启动前端服务 echo -e "\n${YELLOW}Step 5/5: 启动前端服务${NC}" echo "前端服务将在后台运行..." # 创建base配置的前端JS文件 echo "创建base配置前端文件..." python scripts/create_base_frontend.py --tenant-id "$TENANT_ID" --api-port "$API_PORT" echo -e "${GREEN}✓ 前端文件已创建${NC}" # 启动前端(后台运行) export PORT="$FRONTEND_PORT" nohup python scripts/frontend_server.py > logs/frontend_base.log 2>&1 & FRONTEND_PID=$! echo $FRONTEND_PID > logs/frontend_base.pid echo -e "${GREEN}前端服务已启动 (PID: $FRONTEND_PID)${NC}" echo -e "${GREEN}日志文件: logs/frontend_base.log${NC}" # 等待前端启动 echo -e "${YELLOW}等待前端服务启动...${NC}" MAX_RETRIES=10 RETRY_COUNT=0 FRONTEND_READY=false while [ $RETRY_COUNT -lt $MAX_RETRIES ]; do sleep 2 if curl -s "http://localhost:$FRONTEND_PORT/" > /dev/null 2>&1; then FRONTEND_READY=true break fi RETRY_COUNT=$((RETRY_COUNT + 1)) echo -e "${YELLOW} 等待中... ($RETRY_COUNT/$MAX_RETRIES)${NC}" done if [ "$FRONTEND_READY" = true ]; then echo -e "${GREEN}✓ 前端服务运行正常${NC}" else echo -e "${YELLOW}⚠ 前端服务可能还在启动中,请稍后访问${NC}" fi echo -e "\n${GREEN}========================================${NC}" echo -e "${GREEN}演示环境启动完成!${NC}" echo -e "${GREEN}========================================${NC}" echo "" echo -e "访问地址:" echo -e " ${GREEN}前端界面: http://localhost:$FRONTEND_PORT/base${NC} (或 http://localhost:$FRONTEND_PORT/base.html)" echo -e " ${GREEN}后端API: http://localhost:$API_PORT${NC}" echo -e " ${GREEN}API文档: http://localhost:$API_PORT/docs${NC}" echo "" echo -e "配置信息:" echo -e " Tenant ID: $TENANT_ID" echo -e " Customer Config: base" echo "" echo -e "日志文件:" echo -e " 后端: logs/backend_base.log" echo -e " 前端: logs/frontend_base.log" echo "" echo -e "停止服务:" echo -e " 所有服务: ./scripts/stop_base.sh" echo -e " 单独停止后端: kill \$(cat logs/backend_base.pid)" echo -e " 单独停止前端: kill \$(cat logs/frontend_base.pid)" echo ""