feat: 初始化考培练系统项目

- 从服务器拉取完整代码
- 按框架规范整理项目结构
- 配置 Drone CI 测试环境部署
- 包含后端(FastAPI)、前端(Vue3)、管理端

技术栈: Vue3 + TypeScript + FastAPI + MySQL
This commit is contained in:
111
2026-01-24 19:33:28 +08:00
commit 998211c483
1197 changed files with 228429 additions and 0 deletions

186
deploy/scripts/start-kpl.sh Executable file
View File

@@ -0,0 +1,186 @@
#!/bin/bash
# 瑞小美团队开发环境启动脚本
# 域名kpl.ireborn.com.cn
# 使用方法:
# ./start-kpl.sh # 启动基础服务
# ./start-kpl.sh --with-admin # 启动服务 + phpMyAdmin
set -e
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# 日志函数
log_info() {
echo -e "${BLUE}[INFO]${NC} $1"
}
log_success() {
echo -e "${GREEN}[SUCCESS]${NC} $1"
}
log_warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# 检查Docker是否运行
check_docker() {
if ! docker info >/dev/null 2>&1; then
log_error "Docker 未运行,请先启动 Docker"
exit 1
fi
}
# 构建镜像
build_images() {
log_info "构建KPL开发环境镜像..."
docker compose -f docker-compose.kpl.yml build --no-cache
}
# 启动服务
start_services() {
local profiles=""
# 解析命令行参数
case "${1:-}" in
--with-admin)
profiles="--profile admin"
log_info "启动KPL服务包含 phpMyAdmin..."
;;
*)
log_info "启动KPL基础服务前后端+数据库)..."
;;
esac
# 启动所有服务
docker compose -f docker-compose.kpl.yml up -d $profiles
}
# 等待服务就绪
wait_for_services() {
log_info "等待服务启动..."
# 等待数据库
log_info "等待 MySQL 数据库启动..."
timeout=60
while ! docker exec kpl-mysql-dev mysqladmin ping -h"localhost" --silent 2>/dev/null; do
timeout=$((timeout - 1))
if [ $timeout -eq 0 ]; then
log_error "MySQL 启动超时"
return 1
fi
sleep 1
done
log_success "MySQL 数据库已就绪"
# 等待 Redis
log_info "等待 Redis 缓存启动..."
timeout=30
while ! docker exec kpl-redis-dev redis-cli ping 2>/dev/null | grep -q PONG; do
timeout=$((timeout - 1))
if [ $timeout -eq 0 ]; then
log_error "Redis 启动超时"
return 1
fi
sleep 1
done
log_success "Redis 缓存已就绪"
# 等待后端服务
log_info "等待后端服务启动..."
timeout=60
while ! curl -s http://localhost:8001/health >/dev/null 2>&1; do
timeout=$((timeout - 1))
if [ $timeout -eq 0 ]; then
log_error "后端服务启动超时"
return 1
fi
sleep 1
done
log_success "后端服务已就绪"
# 等待前端服务
log_info "等待前端服务启动..."
timeout=60
while ! curl -s http://localhost:3002/ >/dev/null 2>&1; do
timeout=$((timeout - 1))
if [ $timeout -eq 0 ]; then
log_error "前端服务启动超时"
return 1
fi
sleep 1
done
log_success "前端服务已就绪"
}
# 显示服务状态
show_status() {
echo ""
log_success "🎉 瑞小美团队开发环境启动成功!"
echo ""
echo "📋 服务访问地址:"
echo " 🌐 正式域名访问: https://kpl.ireborn.com.cn"
echo " 🖥️ 本地前端服务: http://localhost:3002"
echo " 🔧 本地后端API: http://localhost:8001"
echo " 📚 API文档: http://localhost:8001/docs"
echo " 🗄️ MySQL数据库: localhost:3308"
echo " 🔄 Redis缓存: localhost:6380"
if docker ps --filter "name=kpl-phpmyadmin-dev" --format "{{.Names}}" | grep -q phpmyadmin; then
echo " 🛠️ phpMyAdmin: http://localhost:8081"
fi
echo ""
echo "🔧 常用命令:"
echo " 查看日志: docker compose -f docker-compose.kpl.yml logs -f [service_name]"
echo " 停止服务: ./stop-kpl.sh 或 docker compose -f docker-compose.kpl.yml down"
echo " 重启服务: docker compose -f docker-compose.kpl.yml restart [service_name]"
echo ""
echo "💡 开发提示:"
echo " - 🔥 代码修改会自动重载(热重载已启用)"
echo " - 🎨 前端: 修改 kaopeilian-frontend/src/ 目录下的文件"
echo " - ⚙️ 后端: 修改 kaopeilian-backend/app/ 目录下的文件"
echo " - 🔒 已配置HTTPS访问使用域名访问更安全"
echo ""
echo "📌 注意:"
echo " - 此环境与演示系统aiedu.ireborn.com.cn完全隔离"
echo " - 拥有独立的数据库和Redis实例"
echo ""
}
# 主函数
main() {
echo "🚀 瑞小美团队开发环境启动器"
echo "================================"
# 检查 Docker
check_docker
# 启动服务(不重新构建)
start_services "$@"
# 等待服务就绪
if wait_for_services; then
show_status
exit 0
else
log_error "服务启动失败,请检查日志"
docker compose -f docker-compose.kpl.yml logs --tail=50
exit 1
fi
}
# 如果直接运行此脚本
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
main "$@"
fi