Files
template/scripts/create-template.sh
Claude AIandClaude 98b2d8a53c feat: Add MVP-Sprint-01 milestone documentation and automation scripts
- Create comprehensive milestone documentation with sprint goals and timeline
- Add 10 detailed GitHub Issues covering infrastructure, backend, frontend, and DevOps
- Create automation scripts for milestone and issue creation
- Include risk management, acceptance criteria, and project structure

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
2025-10-11 23:24:40 +08:00

860 lines
23 KiB
Bash
Executable File

#!/bin/bash
# Claude Enterprise Framework - Template Creation Script
# 模板创建脚本
set -e
# 脚本版本
VERSION="1.0.0"
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
PURPLE='\033[0;35m'
CYAN='\033[0;36m'
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_step() {
echo -e "${PURPLE}[STEP]${NC} $1"
}
# 显示帮助信息
show_help() {
cat << EOF
Claude Enterprise Framework - Template Creation Script v${VERSION}
Usage: $0 [OPTIONS]
Options:
-t, --type TEMPLATE_TYPE 模板类型 (必填)
-n, --name PROJECT_NAME 项目名称 (必填)
-p, --package PACKAGE_NAME 包名 (Java项目必填)
-b, --backend BACKEND_TEMPLATE 后端模板 (全栈项目必填)
-f, --frontend FRONTEND_TEMPLATE 前端模板 (全栈项目必填)
-s, --bigscreen BIGSCREEN_TEMPLATE 大屏模板 (可选)
-i, --industry INDUSTRY 行业领域 (默认: general)
-m, --modules MODULES 业务模块列表 (逗号分隔)
-d, --directory TARGET_DIR 目标目录 (默认: ./PROJECT_NAME)
--backend-url BACKEND_URL 后端API地址 (默认: http://localhost:8080)
--database-url DATABASE_URL 数据库连接地址
--redis-url REDIS_URL Redis连接地址
--force 强制覆盖已存在的目录
-v, --version 显示版本信息
-h, --help 显示帮助信息
Template Types:
backend-only 仅后端项目
frontend-only 仅前端项目
fullstack 全栈项目 (后端+前端)
bigscreen-only 仅大屏项目
complete-suite 完整套件 (后端+前端+大屏)
Backend Templates:
ruoyi-plus-claude RuoYi-Vue-Plus企业级后端
jeecg-boot-claude Jeecg-Boot低代码后端
sa-token-simple Sa-Token轻量级后端
spring-cloud-claude Spring Cloud微服务
Frontend Templates:
vben-admin-claude Vue-Vben-Admin管理后台
naive-admin-claude Naive Admin现代后台
arco-pro-claude Arco Design Pro企业后台
Bigscreen Templates:
datav-vue3-claude DataV Vue3大屏组件
echarts-bigscreen ECharts专业大屏
d2admin-bigscreen D2Admin综合大屏
Industries:
general 通用项目
healthcare 医疗健康
finance 金融服务
government 政府公共服务
education 教育培训
manufacturing 制造业
logistics 物流运输
energy 能源电力
retail 零售电商
real-estate 房地产
Examples:
# 创建企业级全栈项目
$0 --type fullstack \\
--name "hospital-management" \\
--backend ruoyi-plus-claude \\
--frontend vben-admin-claude \\
--package "com.hospital.management" \\
--industry healthcare \\
--modules "patient,doctor,appointment,medical-record"
# 创建微服务后端项目
$0 --type backend-only \\
--name "payment-service" \\
--backend spring-cloud-claude \\
--package "com.payment.service" \\
--industry finance
# 创建大屏可视化项目
$0 --type bigscreen-only \\
--name "iot-dashboard" \\
--bigscreen datav-vue3-claude \\
--industry manufacturing \\
--backend-url "http://api.iot.com"
# 创建完整项目套件
$0 --type complete-suite \\
--name "smart-city-platform" \\
--backend jeecg-boot-claude \\
--frontend arco-pro-claude \\
--bigscreen echarts-bigscreen \\
--package "com.smartcity.platform" \\
--industry government \\
--modules "citizen,service,monitoring,alert"
EOF
}
# 默认值
TEMPLATE_TYPE=""
PROJECT_NAME=""
PACKAGE_NAME=""
BACKEND_TEMPLATE=""
FRONTEND_TEMPLATE=""
BIGSCREEN_TEMPLATE=""
INDUSTRY="general"
MODULES=""
TARGET_DIR=""
BACKEND_URL="http://localhost:8080"
DATABASE_URL=""
REDIS_URL=""
FORCE_OVERWRITE=false
# 获取框架根目录
FRAMEWORK_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
# 解析命令行参数
while [[ $# -gt 0 ]]; do
case $1 in
-t|--type)
TEMPLATE_TYPE="$2"
shift 2
;;
-n|--name)
PROJECT_NAME="$2"
shift 2
;;
-p|--package)
PACKAGE_NAME="$2"
shift 2
;;
-b|--backend)
BACKEND_TEMPLATE="$2"
shift 2
;;
-f|--frontend)
FRONTEND_TEMPLATE="$2"
shift 2
;;
-s|--bigscreen)
BIGSCREEN_TEMPLATE="$2"
shift 2
;;
-i|--industry)
INDUSTRY="$2"
shift 2
;;
-m|--modules)
MODULES="$2"
shift 2
;;
-d|--directory)
TARGET_DIR="$2"
shift 2
;;
--backend-url)
BACKEND_URL="$2"
shift 2
;;
--database-url)
DATABASE_URL="$2"
shift 2
;;
--redis-url)
REDIS_URL="$2"
shift 2
;;
--force)
FORCE_OVERWRITE=true
shift
;;
-v|--version)
echo "Claude Enterprise Framework Template Creation Script v${VERSION}"
exit 0
;;
-h|--help)
show_help
exit 0
;;
*)
print_error "未知参数: $1"
show_help
exit 1
;;
esac
done
# 验证必填参数
if [[ -z "$TEMPLATE_TYPE" ]]; then
print_error "模板类型不能为空,请使用 -t 或 --type 指定"
show_help
exit 1
fi
if [[ -z "$PROJECT_NAME" ]]; then
print_error "项目名称不能为空,请使用 -n 或 --name 指定"
show_help
exit 1
fi
# 验证模板类型
case "$TEMPLATE_TYPE" in
backend-only)
if [[ -z "$BACKEND_TEMPLATE" ]]; then
print_error "后端模板不能为空,请使用 -b 或 --backend 指定"
exit 1
fi
;;
frontend-only)
if [[ -z "$FRONTEND_TEMPLATE" ]]; then
print_error "前端模板不能为空,请使用 -f 或 --frontend 指定"
exit 1
fi
;;
fullstack)
if [[ -z "$BACKEND_TEMPLATE" || -z "$FRONTEND_TEMPLATE" ]]; then
print_error "全栈项目需要指定后端和前端模板"
exit 1
fi
;;
bigscreen-only)
if [[ -z "$BIGSCREEN_TEMPLATE" ]]; then
print_error "大屏模板不能为空,请使用 -s 或 --bigscreen 指定"
exit 1
fi
;;
complete-suite)
if [[ -z "$BACKEND_TEMPLATE" || -z "$FRONTEND_TEMPLATE" || -z "$BIGSCREEN_TEMPLATE" ]]; then
print_error "完整套件需要指定后端、前端和大屏模板"
exit 1
fi
;;
*)
print_error "不支持的模板类型: $TEMPLATE_TYPE"
show_help
exit 1
;;
esac
# 设置默认值
if [[ -z "$TARGET_DIR" ]]; then
TARGET_DIR="./$PROJECT_NAME"
fi
if [[ -z "$PACKAGE_NAME" && ! -z "$BACKEND_TEMPLATE" ]]; then
# 将项目名转换为包名格式
PACKAGE_NAME="com.example.$(echo "$PROJECT_NAME" | tr '[:upper:]' '[:lower:]' | tr '-' '.')"
fi
# 验证目标目录
if [[ -d "$TARGET_DIR" ]]; then
if [[ "$FORCE_OVERWRITE" == false ]]; then
print_error "目标目录 '$TARGET_DIR' 已存在,使用 --force 参数强制覆盖"
exit 1
else
print_warning "正在删除已存在的目录 '$TARGET_DIR'"
rm -rf "$TARGET_DIR"
fi
fi
# 显示创建信息
print_step "开始创建项目模板..."
echo ""
print_info "项目配置信息:"
echo " 📁 项目名称: $PROJECT_NAME"
echo " 🏗️ 模板类型: $TEMPLATE_TYPE"
echo " 🔧 目标目录: $TARGET_DIR"
echo " 🏢 行业领域: $INDUSTRY"
if [[ ! -z "$BACKEND_TEMPLATE" ]]; then
echo " 🔙 后端模板: $BACKEND_TEMPLATE"
echo " 📦 包名: $PACKAGE_NAME"
fi
if [[ ! -z "$FRONTEND_TEMPLATE" ]]; then
echo " 🎨 前端模板: $FRONTEND_TEMPLATE"
echo " 🌐 后端地址: $BACKEND_URL"
fi
if [[ ! -z "$BIGSCREEN_TEMPLATE" ]]; then
echo " 📊 大屏模板: $BIGSCREEN_TEMPLATE"
fi
if [[ ! -z "$MODULES" ]]; then
echo " 📋 业务模块: $MODULES"
fi
echo ""
# 函数定义区域
# 模板变量替换函数
replace_template_variables() {
local target_path="$1"
print_info "替换模板变量..."
# 生成包路径 (com.example.demo -> com/example/demo)
local package_path="${PACKAGE_NAME//\./\/}"
local project_name_underscore=$(echo "$PROJECT_NAME" | tr '-' '_')
local project_name_short=$(echo "$PROJECT_NAME" | cut -c1-8)
# 查找所有需要替换的文件
find "$target_path" -type f \( -name "*.java" -o -name "*.ts" -o -name "*.vue" -o -name "*.yml" -o -name "*.yaml" -o -name "*.json" -o -name "*.xml" -o -name "*.html" \) | while read -r file; do
if [[ -f "$file" ]]; then
# 替换模板变量 (使用 | 作为分隔符避免URL中的/字符冲突)
sed -i.bak \
-e "s|{{PROJECT_NAME}}|$PROJECT_NAME|g" \
-e "s|{{PROJECT_NAME_UNDERSCORE}}|$project_name_underscore|g" \
-e "s|{{PROJECT_NAME_SHORT}}|$project_name_short|g" \
-e "s|{{PACKAGE_NAME}}|$PACKAGE_NAME|g" \
-e "s|{{PACKAGE_PATH}}|$package_path|g" \
-e "s|{{BACKEND_URL}}|$BACKEND_URL|g" \
-e "s|{{INDUSTRY}}|$INDUSTRY|g" \
"$file"
# 删除备份文件
rm -f "$file.bak"
fi
done
# 重命名包路径目录
if [[ -d "$target_path/src/main/java" ]]; then
local java_base="$target_path/src/main/java"
# 查找包含 {{PACKAGE_PATH}} 模板的目录
find "$java_base" -type d -name "*{{PACKAGE_PATH}}*" 2>/dev/null | while read -r template_dir; do
if [[ -d "$template_dir" ]]; then
# 创建正确的包路径目录
mkdir -p "$java_base/$package_path"
# 移动文件到正确的目录
if [[ -n "$(ls -A "$template_dir" 2>/dev/null)" ]]; then
cp -r "$template_dir"/* "$java_base/$package_path/" 2>/dev/null || true
fi
# 删除模板目录
rm -rf "$template_dir"
fi
done
# 清理可能存在的转义字符目录
find "$java_base" -type d -name "*\\*" -exec rm -rf {} + 2>/dev/null || true
fi
if [[ -d "$target_path/src/test/java" ]]; then
local test_base="$target_path/src/test/java"
find "$test_base" -type d -name "*{{PACKAGE_PATH}}*" 2>/dev/null | while read -r template_dir; do
if [[ -d "$template_dir" ]]; then
mkdir -p "$test_base/$package_path"
if [[ -n "$(ls -A "$template_dir" 2>/dev/null)" ]]; then
cp -r "$template_dir"/* "$test_base/$package_path/" 2>/dev/null || true
fi
rm -rf "$template_dir"
fi
done
find "$test_base" -type d -name "*\\*" -exec rm -rf {} + 2>/dev/null || true
fi
}
# 创建后端项目
create_backend_project() {
local target_path="${1:-$TARGET_DIR}"
print_info "创建后端项目: $BACKEND_TEMPLATE"
# 复制后端模板
local template_path="$FRAMEWORK_ROOT/project-templates/enterprise-backend/$BACKEND_TEMPLATE"
if [[ ! -d "$template_path" ]]; then
print_error "后端模板 '$BACKEND_TEMPLATE' 不存在"
exit 1
fi
cp -r "$template_path"/* "$target_path/"
# 复制Claude框架
mkdir -p "$target_path/claude-framework"
cp -r "$FRAMEWORK_ROOT/framework"/* "$target_path/claude-framework/"
# 替换模板变量
replace_template_variables "$target_path"
# 生成后端配置
generate_backend_config "$target_path"
}
# 创建前端项目
create_frontend_project() {
local target_path="${1:-$TARGET_DIR}"
print_info "创建前端项目: $FRONTEND_TEMPLATE"
# 复制前端模板
local template_path="$FRAMEWORK_ROOT/project-templates/admin-frontend/$FRONTEND_TEMPLATE"
if [[ ! -d "$template_path" ]]; then
print_error "前端模板 '$FRONTEND_TEMPLATE' 不存在"
exit 1
fi
cp -r "$template_path"/* "$target_path/"
# 复制Claude框架
mkdir -p "$target_path/claude-framework"
cp -r "$FRAMEWORK_ROOT/framework"/* "$target_path/claude-framework/"
# 替换模板变量
replace_template_variables "$target_path"
# 生成前端配置
generate_frontend_config "$target_path"
}
# 创建大屏项目
create_bigscreen_project() {
local target_path="${1:-$TARGET_DIR}"
print_info "创建大屏项目: $BIGSCREEN_TEMPLATE"
# 复制大屏模板
local template_path="$FRAMEWORK_ROOT/project-templates/bigscreen-datav/$BIGSCREEN_TEMPLATE"
if [[ ! -d "$template_path" ]]; then
print_error "大屏模板 '$BIGSCREEN_TEMPLATE' 不存在"
exit 1
fi
cp -r "$template_path"/* "$target_path/"
# 复制Claude框架
mkdir -p "$target_path/claude-framework"
cp -r "$FRAMEWORK_ROOT/framework"/* "$target_path/claude-framework/"
# 替换模板变量
replace_template_variables "$target_path"
# 生成大屏配置
generate_bigscreen_config "$target_path"
}
# 生成后端配置
generate_backend_config() {
local target_path="$1"
cat > "$target_path/claude-project.yml" << EOF
# Claude Enterprise Framework 项目配置 - 后端
version: "1.0"
project:
name: "$PROJECT_NAME"
type: "backend"
package: "$PACKAGE_NAME"
directory: "$target_path"
industry: "$INDUSTRY"
backend:
template: "$BACKEND_TEMPLATE"
framework: "Spring Boot"
language: "Java"
version: "21"
database:
type: "MySQL"
url: "${DATABASE_URL:-jdbc:mysql://localhost:3306/$PROJECT_NAME}"
cache:
type: "Redis"
url: "${REDIS_URL:-redis://localhost:6379}"
modules:$(if [[ ! -z "$MODULES" ]]; then
IFS=',' read -ra MODULE_ARRAY <<< "$MODULES"
for module in "\${MODULE_ARRAY[@]}"; do
echo " - name: \"$module\""
echo " enabled: true"
done
fi)
claude:
template_version: "1.0"
bluebook_version: "1.0"
prompt_templates: "claude-framework/prompt-templates"
created:
date: "$(date '+%Y-%m-%d %H:%M:%S')"
by: "Claude Enterprise Framework Template Creation Script v${VERSION}"
EOF
}
# 生成前端配置
generate_frontend_config() {
local target_path="$1"
cat > "$target_path/claude-project.yml" << EOF
# Claude Enterprise Framework 项目配置 - 前端
version: "1.0"
project:
name: "$PROJECT_NAME"
type: "frontend"
directory: "$target_path"
industry: "$INDUSTRY"
frontend:
template: "$FRONTEND_TEMPLATE"
framework: "Vue 3"
language: "TypeScript"
ui_library: "Ant Design Vue"
backend:
api_url: "$BACKEND_URL"
api_prefix: "/api"
modules:$(if [[ ! -z "$MODULES" ]]; then
IFS=',' read -ra MODULE_ARRAY <<< "$MODULES"
for module in "\${MODULE_ARRAY[@]}"; do
echo " - name: \"$module\""
echo " enabled: true"
done
fi)
claude:
template_version: "1.0"
bluebook_version: "1.0"
prompt_templates: "claude-framework/prompt-templates"
created:
date: "$(date '+%Y-%m-%d %H:%M:%S')"
by: "Claude Enterprise Framework Template Creation Script v${VERSION}"
EOF
}
# 生成大屏配置
generate_bigscreen_config() {
local target_path="$1"
cat > "$target_path/claude-project.yml" << EOF
# Claude Enterprise Framework 项目配置 - 大屏
version: "1.0"
project:
name: "$PROJECT_NAME"
type: "bigscreen"
directory: "$target_path"
industry: "$INDUSTRY"
bigscreen:
template: "$BIGSCREEN_TEMPLATE"
framework: "Vue 3"
chart_library: "ECharts"
backend:
api_url: "$BACKEND_URL"
api_prefix: "/api"
websocket_url: "${BACKEND_URL/http/ws}/ws"
modules:$(if [[ ! -z "$MODULES" ]]; then
IFS=',' read -ra MODULE_ARRAY <<< "$MODULES"
for module in "\${MODULE_ARRAY[@]}"; do
echo " - name: \"$module\""
echo " enabled: true"
done
fi)
claude:
template_version: "1.0"
bluebook_version: "1.0"
prompt_templates: "claude-framework/prompt-templates"
created:
date: "$(date '+%Y-%m-%d %H:%M:%S')"
by: "Claude Enterprise Framework Template Creation Script v${VERSION}"
EOF
}
# 创建全栈集成
create_fullstack_integration() {
print_info "创建全栈项目集成配置..."
# 创建根目录配置
cat > "$TARGET_DIR/claude-project.yml" << EOF
# Claude Enterprise Framework 项目配置 - 全栈
version: "1.0"
project:
name: "$PROJECT_NAME"
type: "fullstack"
directory: "$TARGET_DIR"
industry: "$INDUSTRY"
architecture:
backend:
path: "./backend"
template: "$BACKEND_TEMPLATE"
url: "$BACKEND_URL"
frontend:
path: "./frontend"
template: "$FRONTEND_TEMPLATE"
url: "http://localhost:3000"
modules:$(if [[ ! -z "$MODULES" ]]; then
IFS=',' read -ra MODULE_ARRAY <<< "$MODULES"
for module in "\${MODULE_ARRAY[@]}"; do
echo " - name: \"$module\""
echo " enabled: true"
done
fi)
claude:
template_version: "1.0"
bluebook_version: "1.0"
created:
date: "$(date '+%Y-%m-%d %H:%M:%S')"
by: "Claude Enterprise Framework Template Creation Script v${VERSION}"
EOF
# 创建启动脚本
cat > "$TARGET_DIR/start-dev.sh" << 'EOF'
#!/bin/bash
echo "🚀 启动全栈开发环境..."
# 启动后端服务
echo "📦 启动后端服务..."
cd backend && mvn spring-boot:run &
BACKEND_PID=$!
# 等待后端启动
sleep 10
# 启动前端服务
echo "🎨 启动前端服务..."
cd ../frontend && npm run dev &
FRONTEND_PID=$!
echo "✅ 开发环境启动完成!"
echo " 🔙 后端地址: http://localhost:8080"
echo " 🎨 前端地址: http://localhost:3000"
echo ""
echo "按 Ctrl+C 停止所有服务"
# 等待中断信号
trap "kill $BACKEND_PID $FRONTEND_PID" EXIT
wait
EOF
chmod +x "$TARGET_DIR/start-dev.sh"
}
# 创建完整套件集成
create_complete_integration() {
print_info "创建完整套件集成配置..."
# 创建根目录配置
cat > "$TARGET_DIR/claude-project.yml" << EOF
# Claude Enterprise Framework 项目配置 - 完整套件
version: "1.0"
project:
name: "$PROJECT_NAME"
type: "complete-suite"
directory: "$TARGET_DIR"
industry: "$INDUSTRY"
architecture:
backend:
path: "./backend"
template: "$BACKEND_TEMPLATE"
url: "$BACKEND_URL"
frontend:
path: "./frontend"
template: "$FRONTEND_TEMPLATE"
url: "http://localhost:3000"
bigscreen:
path: "./bigscreen"
template: "$BIGSCREEN_TEMPLATE"
url: "http://localhost:3001"
modules:$(if [[ ! -z "$MODULES" ]]; then
IFS=',' read -ra MODULE_ARRAY <<< "$MODULES"
for module in "\${MODULE_ARRAY[@]}"; do
echo " - name: \"$module\""
echo " enabled: true"
done
fi)
claude:
template_version: "1.0"
bluebook_version: "1.0"
created:
date: "$(date '+%Y-%m-%d %H:%M:%S')"
by: "Claude Enterprise Framework Template Creation Script v${VERSION}"
EOF
# 创建启动脚本
cat > "$TARGET_DIR/start-dev.sh" << 'EOF'
#!/bin/bash
echo "🚀 启动完整套件开发环境..."
# 启动后端服务
echo "📦 启动后端服务..."
cd backend && mvn spring-boot:run &
BACKEND_PID=$!
# 等待后端启动
sleep 10
# 启动前端服务
echo "🎨 启动前端管理后台..."
cd ../frontend && npm run dev &
FRONTEND_PID=$!
# 启动大屏服务
echo "📊 启动大屏可视化..."
cd ../bigscreen && npm run dev -- --port 3001 &
BIGSCREEN_PID=$!
echo "✅ 完整套件启动完成!"
echo " 🔙 后端服务: http://localhost:8080"
echo " 🎨 管理后台: http://localhost:3000"
echo " 📊 可视化大屏: http://localhost:3001"
echo ""
echo "按 Ctrl+C 停止所有服务"
# 等待中断信号
trap "kill $BACKEND_PID $FRONTEND_PID $BIGSCREEN_PID" EXIT
wait
EOF
chmod +x "$TARGET_DIR/start-dev.sh"
}
# 执行项目创建逻辑
print_step "创建项目目录结构..."
case "$TEMPLATE_TYPE" in
backend-only)
mkdir -p "$TARGET_DIR"
create_backend_project
;;
frontend-only)
mkdir -p "$TARGET_DIR"
create_frontend_project
;;
fullstack)
mkdir -p "$TARGET_DIR"/{backend,frontend}
create_backend_project "$TARGET_DIR/backend"
create_frontend_project "$TARGET_DIR/frontend"
create_fullstack_integration
;;
bigscreen-only)
mkdir -p "$TARGET_DIR"
create_bigscreen_project
;;
complete-suite)
mkdir -p "$TARGET_DIR"/{backend,frontend,bigscreen}
create_backend_project "$TARGET_DIR/backend"
create_frontend_project "$TARGET_DIR/frontend"
create_bigscreen_project "$TARGET_DIR/bigscreen"
create_complete_integration
;;
esac
# 初始化Git仓库
print_step "初始化Git仓库..."
cd "$TARGET_DIR"
git init
git add .
git commit -m "Initial commit - Generated by Claude Enterprise Framework v${VERSION}
Project: $PROJECT_NAME
Type: $TEMPLATE_TYPE
Industry: $INDUSTRY
Generated with:
$(if [[ ! -z "$BACKEND_TEMPLATE" ]]; then echo "- Backend: $BACKEND_TEMPLATE"; fi)
$(if [[ ! -z "$FRONTEND_TEMPLATE" ]]; then echo "- Frontend: $FRONTEND_TEMPLATE"; fi)
$(if [[ ! -z "$BIGSCREEN_TEMPLATE" ]]; then echo "- Bigscreen: $BIGSCREEN_TEMPLATE"; fi)
$(if [[ ! -z "$MODULES" ]]; then echo "- Modules: $MODULES"; fi)"
cd - > /dev/null
# 完成消息
print_success "项目模板创建完成!"
echo ""
print_info "项目信息:"
echo " 📁 项目目录: $TARGET_DIR"
echo " 🏷️ 项目名称: $PROJECT_NAME"
echo " 🏗️ 模板类型: $TEMPLATE_TYPE"
echo " 🏢 行业领域: $INDUSTRY"
if [[ ! -z "$BACKEND_TEMPLATE" ]]; then
echo " 🔙 后端模板: $BACKEND_TEMPLATE"
fi
if [[ ! -z "$FRONTEND_TEMPLATE" ]]; then
echo " 🎨 前端模板: $FRONTEND_TEMPLATE"
fi
if [[ ! -z "$BIGSCREEN_TEMPLATE" ]]; then
echo " 📊 大屏模板: $BIGSCREEN_TEMPLATE"
fi
echo ""
print_info "下一步操作:"
echo " 1. cd $TARGET_DIR"
echo " 2. 阅读 README.md 了解项目结构"
echo " 3. 查看 claude-project.yml 了解配置"
case "$TEMPLATE_TYPE" in
fullstack|complete-suite)
echo " 4. 运行 ./start-dev.sh 启动开发环境"
;;
backend-only)
echo " 4. 运行 mvn spring-boot:run 启动后端服务"
;;
frontend-only|bigscreen-only)
echo " 4. 运行 npm install && npm run dev 启动服务"
;;
esac
echo ""
print_success "享受Claude驱动的高效开发体验!🚀"