Files
gaoandClaude 9c7dc6250b Initial commit: Robot project setup
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
2025-10-21 07:24:45 +08:00

232 lines
5.0 KiB
Bash

#!/bin/bash
# 康养机器人项目环境初始化脚本
# Usage: ./setup.sh [dev|staging|prod]
set -e
ENVIRONMENT=${1:-dev}
PROJECT_ROOT=$(pwd)
echo "=========================================="
echo "康养机器人项目环境初始化"
echo "环境: $ENVIRONMENT"
echo "项目根目录: $PROJECT_ROOT"
echo "=========================================="
# 检查必要工具
check_requirements() {
echo "检查必要工具..."
commands=("docker" "kubectl" "python3" "npm" "git")
for cmd in "${commands[@]}"; do
if ! command -v $cmd &> /dev/null; then
echo "❌ $cmd 未安装"
exit 1
else
echo "✅ $cmd 已安装"
fi
done
}
# 创建项目目录结构
create_project_structure() {
echo "创建项目目录结构..."
directories=(
"services/health-monitoring"
"services/companion-service"
"services/rehabilitation-service"
"services/api-gateway"
"frontend/web-admin"
"frontend/mobile-app"
"infrastructure/docker"
"infrastructure/k8s"
"infrastructure/terraform"
"tests/unit"
"tests/integration"
"tests/e2e"
"tests/performance"
"monitoring/prometheus"
"monitoring/grafana"
"scripts"
"docs"
)
for dir in "${directories[@]}"; do
mkdir -p "$PROJECT_ROOT/$dir"
echo " 创建目录: $dir"
done
}
# 初始化Python虚拟环境
setup_python_env() {
echo "设置Python环境..."
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
pip install -r requirements-dev.txt
echo "✅ Python环境设置完成"
}
# 安装Node.js依赖
setup_node_env() {
echo "设置Node.js环境..."
cd "$PROJECT_ROOT/frontend/web-admin"
npm install
cd "$PROJECT_ROOT/frontend/mobile-app"
npm install
cd "$PROJECT_ROOT"
echo "✅ Node.js环境设置完成"
}
# 配置Docker
setup_docker() {
echo "配置Docker环境..."
# 创建Docker网络
docker network create kangyang-network 2>/dev/null || true
# 启动基础服务
docker-compose -f infrastructure/docker/docker-compose.yml up -d
echo "✅ Docker环境配置完成"
}
# 配置Kubernetes
setup_kubernetes() {
echo "配置Kubernetes环境..."
# 创建命名空间
kubectl create namespace kangyang-robot --dry-run=client -o yaml | kubectl apply -f -
kubectl create namespace monitoring --dry-run=client -o yaml | kubectl apply -f -
kubectl create namespace logging --dry-run=client -o yaml | kubectl apply -f -
# 应用配置
kubectl apply -f infrastructure/k8s/configmaps/
kubectl apply -f infrastructure/k8s/secrets/
echo "✅ Kubernetes环境配置完成"
}
# 初始化Git hooks
setup_git_hooks() {
echo "设置Git hooks..."
cat > .git/hooks/pre-commit << 'EOF'
#!/bin/bash
# 运行代码检查
python -m black --check .
python -m flake8 .
python -m mypy .
# 运行单元测试
pytest tests/unit --tb=short
# 检查敏感信息
git diff --cached --name-only | xargs -I {} python scripts/check_secrets.py {}
EOF
chmod +x .git/hooks/pre-commit
echo "✅ Git hooks设置完成"
}
# 生成环境配置文件
generate_env_files() {
echo "生成环境配置文件..."
cat > .env.$ENVIRONMENT << EOF
# 环境配置
ENVIRONMENT=$ENVIRONMENT
DEBUG=$([ "$ENVIRONMENT" = "dev" ] && echo "true" || echo "false")
# 数据库配置
DB_HOST=localhost
DB_PORT=3306
DB_NAME=kangyang_$ENVIRONMENT
DB_USER=kangyang
DB_PASSWORD=changeme
# Redis配置
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=
# Kafka配置
KAFKA_BROKERS=localhost:9092
# API配置
API_HOST=0.0.0.0
API_PORT=8000
# JWT配置
JWT_SECRET=your-secret-key-here
JWT_ALGORITHM=HS256
JWT_EXPIRATION=3600
# 监控配置
PROMETHEUS_PORT=9090
GRAFANA_PORT=3000
# 日志配置
LOG_LEVEL=$([ "$ENVIRONMENT" = "dev" ] && echo "DEBUG" || echo "INFO")
LOG_FORMAT=json
EOF
echo "✅ 环境配置文件生成完成"
}
# 初始化数据库
setup_database() {
echo "初始化数据库..."
# 等待数据库启动
sleep 5
# 运行数据库迁移
python scripts/migrate_database.py
# 导入初始数据
python scripts/seed_database.py
echo "✅ 数据库初始化完成"
}
# 主函数
main() {
check_requirements
create_project_structure
setup_python_env
setup_node_env
setup_docker
if [ "$ENVIRONMENT" != "dev" ]; then
setup_kubernetes
fi
setup_git_hooks
generate_env_files
setup_database
echo ""
echo "=========================================="
echo "✅ 环境初始化完成!"
echo "=========================================="
echo ""
echo "下一步:"
echo "1. 启动开发服务器: make run-dev"
echo "2. 运行测试: make test"
echo "3. 查看文档: make docs"
echo ""
}
# 执行主函数
main