149 lines
4.5 KiB
Bash
149 lines
4.5 KiB
Bash
|
|
#!/bin/bash
|
|||
|
|
|
|||
|
|
# AI 内容生成优化测试脚本
|
|||
|
|
# 测试队列系统、预生成、批量生成等功能
|
|||
|
|
|
|||
|
|
set -e
|
|||
|
|
|
|||
|
|
RED='\033[0;31m'
|
|||
|
|
GREEN='\033[0;32m'
|
|||
|
|
YELLOW='\033[1;33m'
|
|||
|
|
NC='\033[0m' # No Color
|
|||
|
|
|
|||
|
|
echo -e "${GREEN}🧪 开始测试 AI 内容生成优化功能...${NC}\n"
|
|||
|
|
|
|||
|
|
# 1. 检查 Redis 连接
|
|||
|
|
echo -e "${YELLOW}1. 检查 Redis 连接...${NC}"
|
|||
|
|
if command -v redis-cli &> /dev/null; then
|
|||
|
|
if redis-cli ping &> /dev/null; then
|
|||
|
|
echo -e "${GREEN}✅ Redis 连接正常${NC}"
|
|||
|
|
else
|
|||
|
|
echo -e "${RED}❌ Redis 未运行,请启动 Redis${NC}"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
else
|
|||
|
|
echo -e "${YELLOW}⚠️ redis-cli 未安装,跳过 Redis 检查${NC}"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 2. 检查依赖
|
|||
|
|
echo -e "\n${YELLOW}2. 检查依赖...${NC}"
|
|||
|
|
if [ -d "node_modules/bullmq" ]; then
|
|||
|
|
echo -e "${GREEN}✅ bullmq 已安装${NC}"
|
|||
|
|
else
|
|||
|
|
echo -e "${RED}❌ bullmq 未安装,运行: npm install bullmq${NC}"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 3. 检查 Prisma Client
|
|||
|
|
echo -e "\n${YELLOW}3. 检查 Prisma Client...${NC}"
|
|||
|
|
if [ -d "node_modules/@prisma/client" ]; then
|
|||
|
|
echo -e "${GREEN}✅ Prisma Client 已生成${NC}"
|
|||
|
|
else
|
|||
|
|
echo -e "${YELLOW}⚠️ Prisma Client 未生成,运行: npm run prisma:generate${NC}"
|
|||
|
|
npm run prisma:generate
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 4. 编译 TypeScript
|
|||
|
|
echo -e "\n${YELLOW}4. 编译 TypeScript...${NC}"
|
|||
|
|
if npm run build 2>&1 | grep -q "error TS"; then
|
|||
|
|
echo -e "${RED}❌ TypeScript 编译失败${NC}"
|
|||
|
|
npm run build 2>&1 | grep "error TS" | head -10
|
|||
|
|
exit 1
|
|||
|
|
else
|
|||
|
|
echo -e "${GREEN}✅ TypeScript 编译成功${NC}"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 5. 检查新增文件
|
|||
|
|
echo -e "\n${YELLOW}5. 检查新增文件...${NC}"
|
|||
|
|
files=(
|
|||
|
|
"src/services/queueService.ts"
|
|||
|
|
"src/services/templateService.ts"
|
|||
|
|
"src/workers/aiContentWorker.ts"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
all_exist=true
|
|||
|
|
for file in "${files[@]}"; do
|
|||
|
|
if [ -f "$file" ]; then
|
|||
|
|
echo -e "${GREEN}✅ $file${NC}"
|
|||
|
|
else
|
|||
|
|
echo -e "${RED}❌ $file 不存在${NC}"
|
|||
|
|
all_exist=false
|
|||
|
|
fi
|
|||
|
|
done
|
|||
|
|
|
|||
|
|
if [ "$all_exist" = false ]; then
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 6. 检查数据库 Schema
|
|||
|
|
echo -e "\n${YELLOW}6. 检查数据库 Schema...${NC}"
|
|||
|
|
if grep -q "wordCount" prisma/schema.prisma && \
|
|||
|
|
grep -q "outlineEssence" prisma/schema.prisma && \
|
|||
|
|
grep -q "outlineFull" prisma/schema.prisma; then
|
|||
|
|
echo -e "${GREEN}✅ Schema 已更新(包含新字段)${NC}"
|
|||
|
|
else
|
|||
|
|
echo -e "${RED}❌ Schema 未更新,缺少新字段${NC}"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 7. 检查代码关键功能
|
|||
|
|
echo -e "\n${YELLOW}7. 检查代码关键功能...${NC}"
|
|||
|
|
|
|||
|
|
# 检查队列服务
|
|||
|
|
if grep -q "addOutlineTask" src/services/queueService.ts; then
|
|||
|
|
echo -e "${GREEN}✅ 队列服务:大纲任务添加功能${NC}"
|
|||
|
|
else
|
|||
|
|
echo -e "${RED}❌ 队列服务缺少 addOutlineTask${NC}"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 检查降级策略
|
|||
|
|
if grep -q "templateService" src/services/aiService.ts; then
|
|||
|
|
echo -e "${GREEN}✅ AI 服务:多级降级策略${NC}"
|
|||
|
|
else
|
|||
|
|
echo -e "${RED}❌ AI 服务缺少降级策略${NC}"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 检查预生成逻辑
|
|||
|
|
if grep -q "outlineEssence\|outlineFull" src/controllers/aiContentController.ts; then
|
|||
|
|
echo -e "${GREEN}✅ 控制器:预生成逻辑${NC}"
|
|||
|
|
else
|
|||
|
|
echo -e "${RED}❌ 控制器缺少预生成逻辑${NC}"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 检查批量生成
|
|||
|
|
if grep -q "Promise.allSettled" src/controllers/aiContentController.ts | grep -q "nodeResults"; then
|
|||
|
|
echo -e "${GREEN}✅ 控制器:批量节点生成${NC}"
|
|||
|
|
else
|
|||
|
|
echo -e "${YELLOW}⚠️ 批量生成逻辑需要验证${NC}"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 8. 检查前端逻辑层
|
|||
|
|
echo -e "\n${YELLOW}8. 检查前端逻辑层...${NC}"
|
|||
|
|
if [ -f "../ios/WildGrowth/WildGrowth/CourseServiceExtension.swift" ]; then
|
|||
|
|
if grep -q "selectGenerationMode" ../ios/WildGrowth/WildGrowth/CourseServiceExtension.swift && \
|
|||
|
|
grep -q "getTaskStatus" ../ios/WildGrowth/WildGrowth/CourseServiceExtension.swift; then
|
|||
|
|
echo -e "${GREEN}✅ 前端逻辑层:新增接口方法${NC}"
|
|||
|
|
else
|
|||
|
|
echo -e "${RED}❌ 前端逻辑层缺少新方法${NC}"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
if grep -q "GenerationMode" ../ios/WildGrowth/WildGrowth/CourseModels.swift; then
|
|||
|
|
echo -e "${GREEN}✅ 前端模型:GenerationMode 枚举${NC}"
|
|||
|
|
else
|
|||
|
|
echo -e "${RED}❌ 前端模型缺少 GenerationMode${NC}"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
else
|
|||
|
|
echo -e "${YELLOW}⚠️ 前端文件路径可能不同,跳过检查${NC}"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo -e "\n${GREEN}✅ 所有检查通过!${NC}"
|
|||
|
|
echo -e "\n${YELLOW}📝 下一步:${NC}"
|
|||
|
|
echo -e "1. 运行数据库迁移: ${GREEN}npm run prisma:migrate${NC}"
|
|||
|
|
echo -e "2. 启动服务器测试: ${GREEN}npm run dev${NC}"
|
|||
|
|
echo -e "3. 实施 UI 层改造(见 FRONTEND_UI_REQUIREMENTS.md)"
|