chore: 清理 scripts 目录,保留核心运维和部署脚本

## 变更内容

### 保留的核心运维脚本
-  start.sh - 启动服务
-  stop.sh - 停止服务
-  init-pgvector.sql - 数据库初始化

### 保留的部署工具
-  deploy-production.sh - 生产环境部署
-  backup-production.sh - 生产环境备份
-  set-contact-token.sh - 设置联系令牌
-  set-remote-contact-token.sh - 设置远程令牌
-  verify-contact-token.sh - 验证令牌

### 删除的临时调试脚本
-  debug-webhook.sh - 实时监控日志
-  check-conversations.sh - 检查会话
-  check-chatwoot-config.sh - 检查配置
-  verify-webhook.sh - 验证webhook
-  update-chatwoot-webhook.sh - 更新webhook

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
wangliang
2026-01-27 13:59:12 +08:00
parent 0f13102a02
commit c8f26b6f9f
12 changed files with 473 additions and 406 deletions

195
scripts/deploy-production.sh Executable file
View File

@@ -0,0 +1,195 @@
#!/bin/bash
# B2B Shopping AI Assistant - Production Deployment Script
# 生产环境部署脚本
set -e # 遇到错误立即退出
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 日志函数
log_info() {
echo -e "${GREEN}[INFO]${NC} $1"
}
log_warn() {
echo -e "${YELLOW}[WARN]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# 检查必要的命令
check_requirements() {
log_info "检查系统依赖..."
if ! command -v docker &> /dev/null; then
log_error "Docker 未安装,请先安装 Docker"
exit 1
fi
if ! command -v docker-compose &> /dev/null; then
log_error "Docker Compose 未安装,请先安装 Docker Compose"
exit 1
fi
log_info "系统依赖检查完成"
}
# 检查环境变量文件
check_env_file() {
log_info "检查环境变量文件..."
if [ ! -f .env.production ]; then
log_error ".env.production 文件不存在"
log_info "请复制 .env.production.example 并填写真实值:"
log_info " cp .env.production.example .env.production"
log_info " vim .env.production"
exit 1
fi
# 检查必要的环境变量
source .env.production
required_vars=(
"ZHIPU_API_KEY"
"CHATWOOT_API_TOKEN"
"HYPERF_API_URL"
"MALL_API_URL"
"REDIS_PASSWORD"
)
missing_vars=()
for var in "${required_vars[@]}"; do
if [ -z "${!var}" ] || [[ "${!var}" == *"your_"*"_here" ]]; then
missing_vars+=("$var")
fi
done
if [ ${#missing_vars[@]} -ne 0 ]; then
log_error "以下环境变量未设置或使用默认值:"
for var in "${missing_vars[@]}"; do
log_error " - $var"
exit 1
fi
fi
log_info "环境变量检查完成"
}
# 构建镜像
build_images() {
log_info "开始构建 Docker 镜像..."
docker-compose -f docker-compose.prod.yml build --no-cache
log_info "Docker 镜像构建完成"
}
# 停止现有服务
stop_services() {
log_info "停止现有服务..."
docker-compose -f docker-compose.prod.yml down
log_info "现有服务已停止"
}
# 启动服务
start_services() {
log_info "启动生产环境服务..."
docker-compose -f docker-compose.prod.yml up -d
log_info "服务启动完成"
}
# 健康检查
health_check() {
log_info "等待服务启动..."
sleep 10
# 检查 Agent 服务
if curl -f http://localhost:8000/health &> /dev/null; then
log_info "✅ Agent 服务健康检查通过"
else
log_error "❌ Agent 服务健康检查失败"
return 1
fi
# 检查 MCP 服务
mcp_ports=(8001 8002 8003 8004)
for port in "${mcp_ports[@]}"; do
if curl -f http://localhost:$port/health &> /dev/null; then
log_info "✅ MCP 服务 (端口 $port) 健康检查通过"
else
log_warn "⚠️ MCP 服务 (端口 $port) 健康检查失败"
fi
done
}
# 查看服务状态
show_status() {
log_info "服务状态:"
docker-compose -f docker-compose.prod.yml ps
}
# 查看日志
show_logs() {
log_info "最近的日志:"
docker-compose -f docker-compose.prod.yml logs --tail=50
}
# 主函数
main() {
log_info "========================================"
log_info "B2B Shopping AI Assistant - 生产环境部署"
log_info "========================================"
echo ""
# 检查参数
if [ "$1" == "--skip-build" ]; then
log_warn "跳过镜像构建步骤"
else
check_requirements
check_env_file
build_images
fi
stop_services
start_services
log_info "等待服务就绪..."
sleep 15
if health_check; then
log_info "========================================"
log_info "✅ 部署成功!"
log_info "========================================"
echo ""
log_info "服务地址:"
log_info " - Agent: http://localhost:8000"
log_info " - Strapi MCP: http://localhost:8001"
log_info " - Order MCP: http://localhost:8002"
log_info " - After MCP: http://localhost:8003"
log_info " - Product MCP: http://localhost:8004"
echo ""
log_info "查看日志:"
log_info " docker-compose -f docker-compose.prod.yml logs -f"
echo ""
log_info "查看状态:"
log_info " docker-compose -f docker-compose.prod.yml ps"
else
log_error "部署失败,请检查日志"
show_logs
exit 1
fi
}
# 执行主函数
main "$@"