🎯 Features: - Complete enterprise-level development framework - AI-driven code generation with Claude integration - Multi-layer template system (backend, frontend, bigscreen) - Industry-specific solutions (healthcare, finance, government) - One-click project creation scripts 🏗️ Templates Included: - Backend: RuoYi-Vue-Plus, Jeecg-Boot, Sa-Token, Spring Cloud - Frontend: Vue-Vben-Admin, Naive Admin, Arco Pro - Bigscreen: DataV Vue3, ECharts, D2Admin 🧠 Claude AI Integration: - Intelligent module generation - Code quality assurance - Automated testing - Performance optimization 🚀 Generated by Claude Enterprise Framework Version: 1.0.0 Created: 2024-10-11
435 lines
12 KiB
Bash
Executable File
435 lines
12 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Claude Enterprise Framework - Project Initialization Script
|
|
# 项目快速初始化脚本
|
|
|
|
set -e
|
|
|
|
# 脚本版本
|
|
VERSION="1.0.0"
|
|
|
|
# 颜色定义
|
|
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"
|
|
}
|
|
|
|
# 显示帮助信息
|
|
show_help() {
|
|
cat << EOF
|
|
Claude Enterprise Framework - Project Initialization Script v${VERSION}
|
|
|
|
Usage: $0 [OPTIONS]
|
|
|
|
Options:
|
|
-n, --name PROJECT_NAME 项目名称 (必填)
|
|
-t, --template TEMPLATE_NAME 项目模板 (默认: java-spring-boot)
|
|
-p, --package PACKAGE_NAME Java包名 (默认: com.example.PROJECT_NAME)
|
|
-d, --directory TARGET_DIR 目标目录 (默认: ./PROJECT_NAME)
|
|
-s, --stack TECH_STACK 技术栈配置 (默认: java21-springboot3-mysql)
|
|
-i, --industry INDUSTRY 行业领域 (默认: general)
|
|
--force 强制覆盖已存在的目录
|
|
-v, --version 显示版本信息
|
|
-h, --help 显示帮助信息
|
|
|
|
Templates:
|
|
java-spring-boot Java Spring Boot 单体应用
|
|
java-microservice Java Spring Boot 微服务
|
|
nodejs-nestjs Node.js NestJS 应用
|
|
python-fastapi Python FastAPI 应用
|
|
|
|
Tech Stacks:
|
|
java21-springboot3-mysql Java 21 + Spring Boot 3 + MySQL
|
|
java17-springboot2-postgresql Java 17 + Spring Boot 2 + PostgreSQL
|
|
nodejs20-nestjs-postgresql Node.js 20 + NestJS + PostgreSQL
|
|
python311-fastapi-postgresql Python 3.11 + FastAPI + PostgreSQL
|
|
|
|
Industries:
|
|
general 通用项目
|
|
healthcare 医疗健康
|
|
finance 金融服务
|
|
government 政府公共服务
|
|
ecommerce 电子商务
|
|
education 教育培训
|
|
|
|
Examples:
|
|
# 创建一个医疗健康领域的Java项目
|
|
$0 --name "health-management-system" \\
|
|
--template java-spring-boot \\
|
|
--package "com.hospital.health" \\
|
|
--stack java21-springboot3-mysql \\
|
|
--industry healthcare
|
|
|
|
# 创建一个电商微服务项目
|
|
$0 -n "ecommerce-platform" \\
|
|
-t java-microservice \\
|
|
-p "com.ecommerce.platform" \\
|
|
-s java21-springboot3-mysql \\
|
|
-i ecommerce
|
|
|
|
EOF
|
|
}
|
|
|
|
# 默认值
|
|
PROJECT_NAME=""
|
|
TEMPLATE_NAME="java-spring-boot"
|
|
PACKAGE_NAME=""
|
|
TARGET_DIR=""
|
|
TECH_STACK="java21-springboot3-mysql"
|
|
INDUSTRY="general"
|
|
FORCE_OVERWRITE=false
|
|
|
|
# 获取框架根目录
|
|
FRAMEWORK_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
|
|
# 解析命令行参数
|
|
while [[ $# -gt 0 ]]; do
|
|
case $1 in
|
|
-n|--name)
|
|
PROJECT_NAME="$2"
|
|
shift 2
|
|
;;
|
|
-t|--template)
|
|
TEMPLATE_NAME="$2"
|
|
shift 2
|
|
;;
|
|
-p|--package)
|
|
PACKAGE_NAME="$2"
|
|
shift 2
|
|
;;
|
|
-d|--directory)
|
|
TARGET_DIR="$2"
|
|
shift 2
|
|
;;
|
|
-s|--stack)
|
|
TECH_STACK="$2"
|
|
shift 2
|
|
;;
|
|
-i|--industry)
|
|
INDUSTRY="$2"
|
|
shift 2
|
|
;;
|
|
--force)
|
|
FORCE_OVERWRITE=true
|
|
shift
|
|
;;
|
|
-v|--version)
|
|
echo "Claude Enterprise Framework Init Script v${VERSION}"
|
|
exit 0
|
|
;;
|
|
-h|--help)
|
|
show_help
|
|
exit 0
|
|
;;
|
|
*)
|
|
print_error "未知参数: $1"
|
|
show_help
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# 验证必填参数
|
|
if [[ -z "$PROJECT_NAME" ]]; then
|
|
print_error "项目名称不能为空,请使用 -n 或 --name 指定"
|
|
show_help
|
|
exit 1
|
|
fi
|
|
|
|
# 设置默认值
|
|
if [[ -z "$PACKAGE_NAME" ]]; then
|
|
# 将项目名转换为包名格式
|
|
PACKAGE_NAME="com.example.$(echo "$PROJECT_NAME" | tr '[:upper:]' '[:lower:]' | tr '-' '.')"
|
|
fi
|
|
|
|
if [[ -z "$TARGET_DIR" ]]; then
|
|
TARGET_DIR="./$PROJECT_NAME"
|
|
fi
|
|
|
|
# 验证模板存在
|
|
TEMPLATE_PATH="$FRAMEWORK_ROOT/project-templates/$TEMPLATE_NAME"
|
|
if [[ ! -d "$TEMPLATE_PATH" ]]; then
|
|
print_error "模板 '$TEMPLATE_NAME' 不存在"
|
|
print_info "可用模板:"
|
|
ls -1 "$FRAMEWORK_ROOT/project-templates/" | sed 's/^/ /'
|
|
exit 1
|
|
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_info "开始初始化项目..."
|
|
print_info "项目名称: $PROJECT_NAME"
|
|
print_info "项目模板: $TEMPLATE_NAME"
|
|
print_info "包名: $PACKAGE_NAME"
|
|
print_info "目标目录: $TARGET_DIR"
|
|
print_info "技术栈: $TECH_STACK"
|
|
print_info "行业领域: $INDUSTRY"
|
|
|
|
# 创建项目目录
|
|
mkdir -p "$TARGET_DIR"
|
|
|
|
# 复制模板文件
|
|
print_info "复制项目模板文件..."
|
|
cp -r "$TEMPLATE_PATH"/* "$TARGET_DIR/"
|
|
|
|
# 复制框架核心文件
|
|
print_info "复制Claude开发框架..."
|
|
mkdir -p "$TARGET_DIR/claude-framework"
|
|
cp -r "$FRAMEWORK_ROOT/framework"/* "$TARGET_DIR/claude-framework/"
|
|
|
|
# 解析技术栈配置
|
|
case "$TECH_STACK" in
|
|
java21-springboot3-mysql)
|
|
BACKEND_LANGUAGE="Java"
|
|
LANGUAGE_VERSION="21"
|
|
FRAMEWORK="Spring Boot"
|
|
FRAMEWORK_VERSION="3.x"
|
|
DATABASE="MySQL"
|
|
DATABASE_VERSION="8.0"
|
|
;;
|
|
java17-springboot2-postgresql)
|
|
BACKEND_LANGUAGE="Java"
|
|
LANGUAGE_VERSION="17"
|
|
FRAMEWORK="Spring Boot"
|
|
FRAMEWORK_VERSION="2.7.x"
|
|
DATABASE="PostgreSQL"
|
|
DATABASE_VERSION="15"
|
|
;;
|
|
nodejs20-nestjs-postgresql)
|
|
BACKEND_LANGUAGE="Node.js"
|
|
LANGUAGE_VERSION="20.x"
|
|
FRAMEWORK="NestJS"
|
|
FRAMEWORK_VERSION="10.x"
|
|
DATABASE="PostgreSQL"
|
|
DATABASE_VERSION="15"
|
|
;;
|
|
python311-fastapi-postgresql)
|
|
BACKEND_LANGUAGE="Python"
|
|
LANGUAGE_VERSION="3.11"
|
|
FRAMEWORK="FastAPI"
|
|
FRAMEWORK_VERSION="0.104.x"
|
|
DATABASE="PostgreSQL"
|
|
DATABASE_VERSION="15"
|
|
;;
|
|
*)
|
|
print_error "不支持的技术栈: $TECH_STACK"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# 生成项目配置文件
|
|
print_info "生成项目配置文件..."
|
|
cat > "$TARGET_DIR/claude-project.yml" << EOF
|
|
# Claude Enterprise Framework 项目配置
|
|
version: "1.0"
|
|
|
|
project:
|
|
name: "$PROJECT_NAME"
|
|
package: "$PACKAGE_NAME"
|
|
directory: "$TARGET_DIR"
|
|
industry: "$INDUSTRY"
|
|
|
|
technology:
|
|
language: "$BACKEND_LANGUAGE"
|
|
language_version: "$LANGUAGE_VERSION"
|
|
framework: "$FRAMEWORK"
|
|
framework_version: "$FRAMEWORK_VERSION"
|
|
database: "$DATABASE"
|
|
database_version: "$DATABASE_VERSION"
|
|
stack_id: "$TECH_STACK"
|
|
|
|
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 Init Script v${VERSION}"
|
|
EOF
|
|
|
|
# 替换模板中的占位符
|
|
print_info "配置项目模板..."
|
|
|
|
# 定义替换函数
|
|
replace_placeholder() {
|
|
local file="$1"
|
|
local pattern="$2"
|
|
local replacement="$3"
|
|
|
|
if [[ -f "$file" ]]; then
|
|
sed -i.bak "s|$pattern|$replacement|g" "$file" && rm "$file.bak"
|
|
fi
|
|
}
|
|
|
|
# 递归替换所有文件中的占位符
|
|
find "$TARGET_DIR" -type f \( -name "*.java" -o -name "*.yml" -o -name "*.yaml" -o -name "*.xml" -o -name "*.md" -o -name "*.properties" \) | while read -r file; do
|
|
replace_placeholder "$file" "{{PROJECT_NAME}}" "$PROJECT_NAME"
|
|
replace_placeholder "$file" "{{PACKAGE_NAME}}" "$PACKAGE_NAME"
|
|
replace_placeholder "$file" "{{BACKEND_LANGUAGE}}" "$BACKEND_LANGUAGE"
|
|
replace_placeholder "$file" "{{LANGUAGE_VERSION}}" "$LANGUAGE_VERSION"
|
|
replace_placeholder "$file" "{{FRAMEWORK}}" "$FRAMEWORK"
|
|
replace_placeholder "$file" "{{FRAMEWORK_VERSION}}" "$FRAMEWORK_VERSION"
|
|
replace_placeholder "$file" "{{DATABASE}}" "$DATABASE"
|
|
replace_placeholder "$file" "{{DATABASE_VERSION}}" "$DATABASE_VERSION"
|
|
replace_placeholder "$file" "{{TECH_STACK}}" "$TECH_STACK"
|
|
replace_placeholder "$file" "{{INDUSTRY}}" "$INDUSTRY"
|
|
done
|
|
|
|
# 重命名包目录结构(针对Java项目)
|
|
if [[ "$BACKEND_LANGUAGE" == "Java" ]]; then
|
|
print_info "配置Java包结构..."
|
|
|
|
# 创建包目录结构
|
|
PACKAGE_PATH=$(echo "$PACKAGE_NAME" | tr '.' '/')
|
|
|
|
# 在src/main/java和src/test/java下创建包结构
|
|
for source_root in "src/main/java" "src/test/java"; do
|
|
if [[ -d "$TARGET_DIR/$source_root" ]]; then
|
|
mkdir -p "$TARGET_DIR/$source_root/$PACKAGE_PATH"
|
|
|
|
# 移动现有的Java文件到新的包结构中
|
|
find "$TARGET_DIR/$source_root" -maxdepth 1 -name "*.java" -exec mv {} "$TARGET_DIR/$source_root/$PACKAGE_PATH/" \;
|
|
fi
|
|
done
|
|
fi
|
|
|
|
# 生成CLAUDE.md配置文件
|
|
print_info "生成Claude开发配置文件..."
|
|
cat > "$TARGET_DIR/CLAUDE.md" << EOF
|
|
# Claude AI 开发配置
|
|
|
|
## 项目信息
|
|
- **项目名称**: $PROJECT_NAME
|
|
- **技术栈**: $BACKEND_LANGUAGE $LANGUAGE_VERSION + $FRAMEWORK $FRAMEWORK_VERSION + $DATABASE $DATABASE_VERSION
|
|
- **行业领域**: $INDUSTRY
|
|
- **包名**: $PACKAGE_NAME
|
|
|
|
## Claude Enterprise Framework 集成
|
|
|
|
本项目使用 Claude Enterprise Framework v1.0,提供完整的AI驱动开发体系。
|
|
|
|
### 🚀 快速开始
|
|
|
|
1. **需求分析**
|
|
\`\`\`bash
|
|
claude --template analysis --input requirements.md
|
|
\`\`\`
|
|
|
|
2. **架构设计**
|
|
\`\`\`bash
|
|
claude --template design --input analysis-output.md
|
|
\`\`\`
|
|
|
|
3. **代码实现**
|
|
\`\`\`bash
|
|
claude --template implementation --input design-output.md
|
|
\`\`\`
|
|
|
|
4. **质量检查**
|
|
\`\`\`bash
|
|
./scripts/quality-check.sh
|
|
\`\`\`
|
|
|
|
### 📚 框架文档
|
|
|
|
- [完整蓝皮书](./claude-framework/claude-bluebook/)
|
|
- [Prompt模板库](./claude-framework/prompt-templates/)
|
|
- [质量门禁配置](./claude-framework/quality-gates/)
|
|
|
|
### 🎯 质量目标
|
|
|
|
- Claude输出一致性 ≥90%
|
|
- 人工修正率 ≤10%
|
|
- 质量门禁通过率 ≥95%
|
|
- 开发效率提升 ≥3倍
|
|
|
|
### 📊 技术栈约束
|
|
|
|
#### 后端技术
|
|
- **编程语言**: $BACKEND_LANGUAGE $LANGUAGE_VERSION
|
|
- **框架**: $FRAMEWORK $FRAMEWORK_VERSION
|
|
- **数据库**: $DATABASE $DATABASE_VERSION
|
|
- **构建工具**: $([ "$BACKEND_LANGUAGE" == "Java" ] && echo "Maven/Gradle" || echo "NPM/Yarn")
|
|
|
|
#### 架构模式
|
|
- **分层架构**: Controller → Service → Repository → Entity
|
|
- **领域驱动设计**: 聚合、实体、值对象、领域服务
|
|
- **REST API**: OpenAPI 3.0规范
|
|
|
|
#### 质量要求
|
|
- **测试覆盖**: 单元测试70%+,集成测试50%+
|
|
- **代码规范**: $([ "$BACKEND_LANGUAGE" == "Java" ] && echo "Google Java Style" || echo "Prettier + ESLint")
|
|
- **文档标准**: $([ "$BACKEND_LANGUAGE" == "Java" ] && echo "JavaDoc" || echo "TSDoc")
|
|
|
|
---
|
|
**框架版本**: v1.0
|
|
**生成时间**: $(date '+%Y-%m-%d %H:%M:%S')
|
|
**生成工具**: Claude Enterprise Framework Init Script v${VERSION}
|
|
EOF
|
|
|
|
# 设置执行权限
|
|
if [[ -d "$TARGET_DIR/scripts" ]]; then
|
|
print_info "设置脚本执行权限..."
|
|
chmod +x "$TARGET_DIR/scripts"/*.sh
|
|
fi
|
|
|
|
# 初始化Git仓库(如果不存在)
|
|
if [[ ! -d "$TARGET_DIR/.git" ]]; then
|
|
print_info "初始化Git仓库..."
|
|
cd "$TARGET_DIR"
|
|
git init
|
|
git add .
|
|
git commit -m "Initial commit - Generated by Claude Enterprise Framework v${VERSION}
|
|
|
|
Project: $PROJECT_NAME
|
|
Template: $TEMPLATE_NAME
|
|
Tech Stack: $TECH_STACK
|
|
Industry: $INDUSTRY"
|
|
cd - > /dev/null
|
|
fi
|
|
|
|
# 完成消息
|
|
print_success "项目初始化完成!"
|
|
echo
|
|
print_info "项目信息:"
|
|
echo " 📁 项目目录: $TARGET_DIR"
|
|
echo " 🏷️ 项目名称: $PROJECT_NAME"
|
|
echo " 📦 包名: $PACKAGE_NAME"
|
|
echo " 🔧 技术栈: $TECH_STACK"
|
|
echo " 🏢 行业领域: $INDUSTRY"
|
|
echo
|
|
print_info "下一步操作:"
|
|
echo " 1. cd $TARGET_DIR"
|
|
echo " 2. 阅读 README.md 了解项目结构"
|
|
echo " 3. 查看 CLAUDE.md 学习Claude开发流程"
|
|
echo " 4. 运行 ./scripts/quality-check.sh 验证环境配置"
|
|
echo
|
|
print_success "享受Claude驱动的高效开发体验!" |