后端重构:
- 添加统一响应格式 ResultDto<T> 和 PageResultDto<T>
- 添加分页查询 DTO 基类 PageQueryDto
- 添加响应转换拦截器 TransformInterceptor
- 添加公共工具函数(JSON 解析、分页计算)
- 配置 Swagger/OpenAPI 文档(访问路径:/api-docs)
- Tenant 模块 DTO 规范化示例(添加 @ApiProperty 装饰器)
- CourseLesson 控制器重构 - 移除类级路径参数,修复 Orval 验证错误
- 后端 DTO 规范化 - 为 Course、Lesson、TeacherCourse、SchoolCourse 控制器添加完整的 Swagger 装饰器
前端重构:
- 配置 Orval 从后端 OpenAPI 自动生成 API 客户端
- 生成 API 客户端代码(带完整参数定义)
- 创建 API 客户端统一入口 (src/api/client.ts)
- 创建 API 适配层 (src/api/teacher.adapter.ts)
- 配置文件路由 (unplugin-vue-router)
- 课程模块迁移到新 API 客户端
- 修复 PrepareModeView.vue API 调用错误
- 教师模块迁移到新 API 客户端
- 修复 school-course.ts 类型错误
- 清理 teacher.adapter.ts 未使用导入
- 修复 client.ts API 客户端结构
- 创建文件路由目录结构
Bug 修复:
- 修复路由配置问题 - 移除 top-level await,改用手动路由配置
- 修复响应拦截器 - 正确解包 { code, message, data } 格式的响应
- 清理 teacher.adapter.ts 未使用导入
- 修复 client.ts API 客户端结构
- 创建文件路由目录结构
系统测试:
- 后端 API 测试通过 (7/7)
- 前端路由测试通过 (4/4)
- 数据库完整性验证通过
- Orval API 客户端验证通过
- 超管端功能测试通过 (97.8% 通过率)
新增文件:
- reading-platform-backend/src/common/dto/result.dto.ts
- reading-platform-backend/src/common/dto/page-query.dto.ts
- reading-platform-backend/src/common/interceptors/transform.interceptor.ts
- reading-platform-backend/src/common/utils/json.util.ts
- reading-platform-backend/src/common/utils/pagination.util.ts
- reading-platform-frontend/orval.config.ts
- reading-platform-frontend/src/api/generated/mutator.ts
- reading-platform-frontend/src/api/client.ts
- reading-platform-frontend/src/api/teacher.adapter.ts
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
126 lines
3.3 KiB
Bash
Executable File
126 lines
3.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# 统一启动脚本 - 启动前后端服务
|
|
|
|
# 获取脚本所在目录
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
BACKEND_DIR="$SCRIPT_DIR/reading-platform-backend"
|
|
FRONTEND_DIR="$SCRIPT_DIR/reading-platform-frontend"
|
|
|
|
echo "======================================"
|
|
echo " 幼儿阅读教学服务平台"
|
|
echo " 统一启动脚本"
|
|
echo "======================================"
|
|
echo ""
|
|
|
|
# 函数:检查端口是否被占用
|
|
check_port() {
|
|
local port=$1
|
|
local name=$2
|
|
if lsof -ti:$port > /dev/null 2>&1; then
|
|
echo "⚠️ 端口 $port 已被占用 ($name)"
|
|
read -p "是否停止并重启? (y/n) " -n 1 -r
|
|
echo
|
|
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
lsof -ti:$port | xargs kill -9 2>/dev/null
|
|
echo "✅ 已停止占用端口 $port 的进程"
|
|
return 0
|
|
else
|
|
return 1
|
|
fi
|
|
fi
|
|
return 0
|
|
}
|
|
|
|
# 检查并停止占用端口的进程
|
|
check_port 3000 "后端"
|
|
if [ $? -eq 1 ]; then
|
|
echo "❌ 后端启动取消"
|
|
exit 1
|
|
fi
|
|
|
|
check_port 5173 "前端"
|
|
if [ $? -eq 1 ]; then
|
|
echo "❌ 前端启动取消"
|
|
exit 1
|
|
fi
|
|
|
|
# 启动后端
|
|
echo ""
|
|
echo "📦 [1/2] 启动后端服务..."
|
|
cd "$BACKEND_DIR" || exit 1
|
|
echo "📂 后端目录: $(pwd)"
|
|
|
|
if [ ! -d "node_modules" ]; then
|
|
echo "📦 正在安装后端依赖..."
|
|
npm install
|
|
fi
|
|
|
|
# 后台启动后端
|
|
nohup npm run start:dev > /tmp/reading-platform-backend.log 2>&1 &
|
|
BACKEND_PID=$!
|
|
echo "✅ 后端启动成功 (PID: $BACKEND_PID)"
|
|
echo "📄 日志文件: /tmp/reading-platform-backend.log"
|
|
|
|
# 等待后端启动
|
|
echo "⏳ 等待后端服务启动..."
|
|
for i in {1..30}; do
|
|
if curl -s http://localhost:3000/api/v1/courses > /dev/null 2>&1; then
|
|
echo "✅ 后端服务就绪"
|
|
break
|
|
fi
|
|
if [ $i -eq 30 ]; then
|
|
echo "❌ 后端服务启动超时"
|
|
echo "📄 请查看日志: tail -f /tmp/reading-platform-backend.log"
|
|
exit 1
|
|
fi
|
|
sleep 1
|
|
done
|
|
|
|
# 启动前端
|
|
echo ""
|
|
echo "📦 [2/2] 启动前端服务..."
|
|
cd "$FRONTEND_DIR" || exit 1
|
|
echo "📂 前端目录: $(pwd)"
|
|
|
|
if [ ! -d "node_modules" ]; then
|
|
echo "📦 正在安装前端依赖..."
|
|
npm install
|
|
fi
|
|
|
|
# 后台启动前端
|
|
nohup npm run dev > /tmp/reading-platform-frontend.log 2>&1 &
|
|
FRONTEND_PID=$!
|
|
echo "✅ 前端启动成功 (PID: $FRONTEND_PID)"
|
|
echo "📄 日志文件: /tmp/reading-platform-frontend.log"
|
|
|
|
# 等待前端启动
|
|
echo "⏳ 等待前端服务启动..."
|
|
for i in {1..30}; do
|
|
if curl -s http://localhost:5173 > /dev/null 2>&1; then
|
|
echo "✅ 前端服务就绪"
|
|
break
|
|
fi
|
|
if [ $i -eq 30 ]; then
|
|
echo "⚠️ 前端服务可能需要更多时间启动"
|
|
echo "📄 请查看日志: tail -f /tmp/reading-platform-frontend.log"
|
|
break
|
|
fi
|
|
sleep 1
|
|
done
|
|
|
|
echo ""
|
|
echo "======================================"
|
|
echo " ✅ 所有服务启动成功!"
|
|
echo "======================================"
|
|
echo ""
|
|
echo "📍 后端 API: http://localhost:3000"
|
|
echo "📍 前端页面: http://localhost:5173"
|
|
echo "📍 API 文档: http://localhost:3000/api/v1"
|
|
echo ""
|
|
echo "📊 查看后端日志: tail -f /tmp/reading-platform-backend.log"
|
|
echo "📊 查看前端日志: tail -f /tmp/reading-platform-frontend.log"
|
|
echo ""
|
|
echo "🛑 停止所有服务: pkill -f 'npm run start:dev' && pkill -f 'vite'"
|
|
echo ""
|