客户转接系统
This commit is contained in:
+100
-8
@@ -10,17 +10,92 @@ BACKEND_PID=""
|
||||
FRONTEND_PID=""
|
||||
CLEANED_UP=0
|
||||
|
||||
# 颜色定义
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[1;34m'
|
||||
NC='\033[0m'
|
||||
|
||||
log() {
|
||||
printf "\033[1;34m[dev]\033[0m %s\n" "$*"
|
||||
printf "${BLUE}[dev]${NC} %s\n" "$*"
|
||||
}
|
||||
|
||||
log_success() {
|
||||
printf "${GREEN}[dev]${NC} %s\n" "$*"
|
||||
}
|
||||
|
||||
log_warn() {
|
||||
printf "${YELLOW}[dev]${NC} %s\n" "$*"
|
||||
}
|
||||
|
||||
log_error() {
|
||||
printf "${RED}[dev]${NC} %s\n" "$*" >&2
|
||||
}
|
||||
|
||||
need_cmd() {
|
||||
if ! command -v "$1" >/dev/null 2>&1; then
|
||||
printf "缺少命令:%s\n" "$1" >&2
|
||||
log_error "缺少命令:$1"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
show_help() {
|
||||
cat << EOF
|
||||
用法: ./scripts/dev.sh [选项]
|
||||
|
||||
选项:
|
||||
--reset-db 重置数据库(删除并重建)
|
||||
--seed-only 仅重新加载种子数据
|
||||
--no-frontend 不启动前端
|
||||
--no-backend 不启动后端
|
||||
-h, --help 显示帮助信息
|
||||
|
||||
环境变量:
|
||||
DEV_RESET_DB=1 等同于 --reset-db
|
||||
|
||||
示例:
|
||||
./scripts/dev.sh # 正常启动
|
||||
./scripts/dev.sh --reset-db # 重置数据库后启动
|
||||
./scripts/dev.sh --seed-only # 重新加载种子数据
|
||||
EOF
|
||||
exit 0
|
||||
}
|
||||
|
||||
# 参数解析
|
||||
RESET_DB="${DEV_RESET_DB:-0}"
|
||||
SEED_ONLY=0
|
||||
NO_FRONTEND=0
|
||||
NO_BACKEND=0
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--reset-db)
|
||||
RESET_DB=1
|
||||
shift
|
||||
;;
|
||||
--seed-only)
|
||||
SEED_ONLY=1
|
||||
shift
|
||||
;;
|
||||
--no-frontend)
|
||||
NO_FRONTEND=1
|
||||
shift
|
||||
;;
|
||||
--no-backend)
|
||||
NO_BACKEND=1
|
||||
shift
|
||||
;;
|
||||
-h|--help)
|
||||
show_help
|
||||
;;
|
||||
*)
|
||||
log_error "未知选项: $1"
|
||||
show_help
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
cleanup() {
|
||||
if [[ "${CLEANED_UP}" == "1" ]]; then
|
||||
return
|
||||
@@ -57,8 +132,8 @@ wait_container_healthy() {
|
||||
}
|
||||
|
||||
init_database() {
|
||||
if [[ "${DEV_RESET_DB:-0}" == "1" ]]; then
|
||||
log "DEV_RESET_DB=1,重建开发数据库..."
|
||||
if [[ "${RESET_DB}" == "1" ]]; then
|
||||
log_warn "重置数据库..."
|
||||
docker exec hfb-mysql mysql -uroot -prootsecret -e \
|
||||
"DROP DATABASE IF EXISTS hfb_sys; CREATE DATABASE hfb_sys CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
|
||||
fi
|
||||
@@ -76,8 +151,13 @@ init_database() {
|
||||
log "执行迁移:$(basename "${migration}")"
|
||||
docker exec -i hfb-mysql mysql -uhfb -psecret --default-character-set=utf8mb4 hfb_sys < "${migration}"
|
||||
done
|
||||
log_success "数据库初始化完成"
|
||||
elif [[ "${SEED_ONLY}" == "1" ]]; then
|
||||
log "重新加载种子数据..."
|
||||
docker exec -i hfb-mysql mysql -uhfb -psecret --default-character-set=utf8mb4 hfb_sys < "${ROOT_DIR}/backend/migrations/000002_seed.sql"
|
||||
log_success "种子数据加载完成"
|
||||
else
|
||||
log "数据库已存在,跳过迁移(使用 DEV_RESET_DB=1 重建)"
|
||||
log "数据库已存在,跳过迁移(使用 --reset-db 重建)"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -156,10 +236,22 @@ main() {
|
||||
wait_container_healthy hfb-minio "MinIO"
|
||||
|
||||
init_database
|
||||
start_backend
|
||||
start_frontend
|
||||
|
||||
log "开发环境已启动"
|
||||
# 仅加载种子数据模式
|
||||
if [[ "${SEED_ONLY}" == "1" ]]; then
|
||||
log_success "种子数据加载完成,退出"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [[ "${NO_BACKEND}" == "0" ]]; then
|
||||
start_backend
|
||||
fi
|
||||
|
||||
if [[ "${NO_FRONTEND}" == "0" ]]; then
|
||||
start_frontend
|
||||
fi
|
||||
|
||||
log_success "开发环境已启动"
|
||||
log "前台:http://localhost:5173"
|
||||
log "后台:http://localhost:5173/admin/login(admin / admin123456)"
|
||||
log "按 Ctrl+C 停止前后端;Docker 依赖会保留运行"
|
||||
|
||||
Reference in New Issue
Block a user