WuYongJie ff41839238 feat: 实现Apple风格UI系统和产品上传功能
- 完整实现Apple HIG 2025设计系统
- 添加Modal弹窗组件(毛玻璃效果、流畅动画)
- 添加FileUpload文件上传组件(拖拽、批量上传、进度显示)
- 实现产品上传功能(支持DWG/GLB/GLTF文件)
- 优化产品列表展示(可折叠的产品+SKU结构)
- 实现Tab切换功能(3D模型管理、五金件、BOM、文档)
- 修复主题系统hydration错误
- 优化按钮和间距,符合Apple设计规范
- 添加分享页面的Apple风格重设计
- 创建测试数据脚本
2025-12-12 20:16:41 +08:00

211 lines
5.3 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# 3D 家具安装展示系统 - 本地部署脚本
# 适用于: Linux / NAS (群晖/威联通)
#
# 使用方法:
# chmod +x scripts/deploy.sh
# ./scripts/deploy.sh
set -e
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# 打印带颜色的消息
print_info() {
echo -e "${BLUE}[INFO]${NC} $1"
}
print_success() {
echo -e "${GREEN}[SUCCESS]${NC} $1"
}
print_warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
print_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# 打印欢迎信息
print_welcome() {
echo ""
echo "=========================================="
echo " 3D 家具安装展示系统"
echo " 自动部署脚本 v1.0"
echo "=========================================="
echo ""
}
# 检查系统要求
check_requirements() {
print_info "检查系统要求..."
# 检查 Docker
if ! command -v docker &> /dev/null; then
print_error "Docker 未安装,请先安装 Docker"
exit 1
fi
print_success "Docker 已安装: $(docker --version)"
# 检查 Docker Compose
if ! command -v docker-compose &> /dev/null; then
print_error "Docker Compose 未安装,请先安装 Docker Compose"
exit 1
fi
print_success "Docker Compose 已安装: $(docker-compose --version)"
# 检查 Docker 是否运行
if ! docker info &> /dev/null; then
print_error "Docker 服务未运行,请启动 Docker"
exit 1
fi
print_success "Docker 服务运行正常"
}
# 检测硬件配置
detect_hardware() {
print_info "检测硬件配置..."
# 检测内存 (GB)
TOTAL_MEM=$(free -g | awk '/^Mem:/{print $2}')
print_info "总内存: ${TOTAL_MEM}GB"
# 检测 CPU 核心数
CPU_CORES=$(nproc)
print_info "CPU 核心数: ${CPU_CORES}"
# 检测磁盘空间 (GB)
DISK_AVAIL=$(df -BG / | awk 'NR==2 {print $4}' | sed 's/G//')
print_info "可用磁盘空间: ${DISK_AVAIL}GB"
# 推荐部署模式
if [ "$TOTAL_MEM" -lt 4 ]; then
print_error "内存不足 4GB,无法部署系统"
exit 1
elif [ "$TOTAL_MEM" -lt 8 ]; then
DEPLOYMENT_MODE="lightweight"
print_warning "内存为 ${TOTAL_MEM}GB,将使用轻量级模式"
else
DEPLOYMENT_MODE="standard"
print_success "内存充足,将使用标准模式"
fi
if [ "$DISK_AVAIL" -lt 50 ]; then
print_warning "磁盘可用空间不足 50GB,建议清理磁盘"
fi
}
# 生成配置文件
generate_config() {
print_info "生成配置文件..."
# 检查 .env 文件是否存在
if [ -f ".env" ]; then
print_warning ".env 文件已存在"
read -p "是否覆盖现有配置? (y/N): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
print_info "保留现有配置"
return
fi
fi
# 复制模板
cp .env.example .env
# 生成随机密码
ADMIN_PASSWORD=$(openssl rand -base64 16 | tr -d "=+/" | cut -c1-16)
DB_PASSWORD=$(openssl rand -base64 32 | tr -d "=+/" | cut -c1-32)
MINIO_PASSWORD=$(openssl rand -base64 32 | tr -d "=+/" | cut -c1-32)
# 更新 .env 文件
sed -i "s/DEPLOYMENT_MODE=.*/DEPLOYMENT_MODE=${DEPLOYMENT_MODE}/" .env
sed -i "s/ADMIN_PASSWORD=.*/ADMIN_PASSWORD=${ADMIN_PASSWORD}/" .env
sed -i "s/DB_PASSWORD=.*/DB_PASSWORD=${DB_PASSWORD}/" .env
sed -i "s/MINIO_PASSWORD=.*/MINIO_PASSWORD=${MINIO_PASSWORD}/" .env
print_success "配置文件已生成"
print_info "管理员密码: ${ADMIN_PASSWORD}"
print_warning "请妥善保存以上密码!"
}
# 启动服务
start_services() {
print_info "启动 Docker 服务..."
COMPOSE_FILE="docker-compose.${DEPLOYMENT_MODE}.yml"
if [ ! -f "$COMPOSE_FILE" ]; then
print_error "配置文件 ${COMPOSE_FILE} 不存在"
exit 1
fi
# 拉取镜像
print_info "拉取 Docker 镜像..."
docker-compose -f "$COMPOSE_FILE" pull
# 启动服务
print_info "启动服务..."
docker-compose -f "$COMPOSE_FILE" up -d
print_success "服务已启动"
}
# 等待服务就绪
wait_for_services() {
print_info "等待服务就绪..."
MAX_WAIT=120
ELAPSED=0
while [ $ELAPSED -lt $MAX_WAIT ]; do
if docker-compose ps | grep -q "healthy"; then
print_success "服务已就绪"
return 0
fi
sleep 5
ELAPSED=$((ELAPSED + 5))
echo -n "."
done
echo ""
print_warning "服务启动超时,请检查日志"
}
# 显示访问信息
show_access_info() {
echo ""
echo "=========================================="
echo " 部署完成!"
echo "=========================================="
echo ""
print_success "访问地址: http://localhost:3000"
print_success "管理员账号: admin"
print_info "管理员密码: 请查看上方输出"
echo ""
print_info "查看日志: docker-compose -f docker-compose.${DEPLOYMENT_MODE}.yml logs -f"
print_info "停止服务: docker-compose -f docker-compose.${DEPLOYMENT_MODE}.yml down"
echo ""
}
# 主函数
main() {
print_welcome
check_requirements
detect_hardware
generate_config
start_services
wait_for_services
show_access_info
}
# 运行主函数
main