diff --git a/backend/src/scripts/create-mock-user.ts b/backend/src/scripts/create-mock-user.ts new file mode 100644 index 00000000..6b9eea34 --- /dev/null +++ b/backend/src/scripts/create-mock-user.ts @@ -0,0 +1,43 @@ +import { PrismaClient } from '@prisma/client'; + +const prisma = new PrismaClient(); + +async function createMockUser() { + try { + console.log('🔄 正在创建模拟用户...'); + + // 检查用户是否已存在 + const existingUser = await prisma.user.findUnique({ + where: { id: 'user-mock-001' }, + }); + + if (existingUser) { + console.log('✅ 模拟用户已存在'); + console.log('用户信息:', existingUser); + return; + } + + // 创建模拟用户 + const user = await prisma.user.create({ + data: { + id: 'user-mock-001', + email: 'demo@example.com', + password: 'mock-password-hash', // 模拟密码(实际应用需要加密) + name: '演示用户', + role: 'user', + status: 'active', + }, + }); + + console.log('✅ 模拟用户创建成功!'); + console.log('用户信息:', user); + } catch (error) { + console.error('❌ 创建模拟用户失败:', error); + process.exit(1); + } finally { + await prisma.$disconnect(); + } +} + +createMockUser(); + diff --git a/一键启动.bat b/一键启动.bat new file mode 100644 index 00000000..3d63211f --- /dev/null +++ b/一键启动.bat @@ -0,0 +1,55 @@ +@echo off +chcp 65001 >nul +echo ======================================== +echo AI临床研究平台 - 一键启动脚本 +echo ======================================== +echo. + +echo [1/5] 检查Docker容器状态... +docker ps >nul 2>&1 +if errorlevel 1 ( + echo ❌ Docker未运行,请先启动Docker Desktop + pause + exit /b 1 +) + +echo [2/5] 启动PostgreSQL和Redis容器... +cd /d "%~dp0" +docker-compose up -d +if errorlevel 1 ( + echo ❌ Docker容器启动失败 + pause + exit /b 1 +) +echo ✅ 数据库容器启动成功 + +echo [3/5] 等待数据库就绪... +timeout /t 5 /nobreak >nul + +echo [4/5] 启动后端服务(新窗口)... +start "AI临床研究平台-后端" cmd /k "cd /d %~dp0backend && npm run dev" +echo ✅ 后端服务启动中... + +echo [5/5] 等待后端启动... +timeout /t 3 /nobreak >nul + +echo [6/6] 启动前端服务(新窗口)... +start "AI临床研究平台-前端" cmd /k "cd /d %~dp0frontend && npm run dev" +echo ✅ 前端服务启动中... + +echo. +echo ======================================== +echo 启动完成! +echo ======================================== +echo. +echo 后端地址: http://localhost:3001 +echo 前端地址: http://localhost:3000 +echo. +echo 请等待10秒后访问前端地址 +echo. +timeout /t 10 /nobreak +start http://localhost:3000 +echo. +echo 按任意键关闭此窗口... +pause >nul + diff --git a/测试和启动.md b/测试和启动.md new file mode 100644 index 00000000..ca332494 --- /dev/null +++ b/测试和启动.md @@ -0,0 +1,199 @@ +# 系统启动和测试指南 + +## 🚀 快速启动 + +### 1. 启动后端服务 + +**打开第一个终端:** +```powershell +cd d:\MyCursor\AIclinicalresearch\backend +npm run dev +``` + +**预期输出:** +``` +🚀 AI临床研究平台 - 后端服务器启动成功! +📍 服务地址: http://localhost:3001 +🔍 健康检查: http://localhost:3001/health +``` + +**如果报错,检查:** +- ✅ PostgreSQL是否运行?(Docker: `docker ps`) +- ✅ Redis是否运行?(Docker: `docker ps`) +- ✅ `.env`文件是否配置了API Keys? + +--- + +### 2. 启动前端服务 + +**打开第二个终端:** +```powershell +cd d:\MyCursor\AIclinicalresearch\frontend +npm run dev +``` + +**预期输出:** +``` + VITE v6.x.x ready in xxx ms + + ➜ Local: http://localhost:3000/ + ➜ Network: use --host to expose +``` + +--- + +### 3. 访问系统 + +打开浏览器访问:**http://localhost:3000/** + +--- + +## 🔧 常见问题排查 + +### 问题1:获取项目列表失败 + +**原因:** 后端服务未启动或数据库连接失败 + +**解决方案:** +1. 检查后端是否启动:访问 http://localhost:3001/health +2. 检查数据库是否运行: + ```powershell + docker ps + # 应该看到postgres和redis容器在运行 + ``` +3. 如果数据库未启动: + ```powershell + cd d:\MyCursor\AIclinicalresearch + docker-compose up -d + ``` + +--- + +### 问题2:创建项目失败(500错误) + +**原因:** 数据库表未创建或后端代码错误 + +**解决方案:** + +**步骤1:检查数据库表是否存在** +```powershell +cd d:\MyCursor\AIclinicalresearch\backend +npx prisma studio +# 打开Prisma Studio,检查是否有Project表 +``` + +**步骤2:如果表不存在,运行迁移** +```powershell +cd d:\MyCursor\AIclinicalresearch\backend +npx prisma migrate dev +``` + +**步骤3:查看后端日志** +- 在运行`npm run dev`的终端中查看错误日志 +- 通常会显示具体的错误原因 + +--- + +### 问题3:API请求404 + +**原因:** 代理配置或路由问题 + +**检查清单:** +1. ✅ 后端启动在3001端口 +2. ✅ 前端启动在3000端口 +3. ✅ `vite.config.ts`中配置了代理 +4. ✅ API路由正确注册 + +--- + +## 📋 完整启动检查清单 + +### 前置条件 +- [ ] Docker Desktop已安装并运行 +- [ ] Node.js已安装(v18+) +- [ ] PostgreSQL容器已启动 +- [ ] Redis容器已启动 +- [ ] 后端依赖已安装(`npm install`) +- [ ] 前端依赖已安装(`npm install`) +- [ ] 后端`.env`文件已配置API Keys +- [ ] 数据库迁移已完成(`prisma migrate dev`) + +### 启动顺序 +1. [ ] 启动Docker容器(PostgreSQL + Redis) +2. [ ] 启动后端服务(3001端口) +3. [ ] 启动前端服务(3000端口) +4. [ ] 访问浏览器测试 + +--- + +## 🧪 测试流程 + +### 1. 测试后端健康检查 +```powershell +# 在浏览器或使用curl +curl http://localhost:3001/health +``` + +**预期响应:** +```json +{ + "status": "ok", + "database": "connected", + "timestamp": "2025-10-10T..." +} +``` + +### 2. 测试获取智能体列表 +```powershell +curl http://localhost:3001/api/v1/agents +``` + +**预期响应:** +```json +{ + "success": true, + "data": [ + { + "id": "topic-evaluation", + "name": "选题评价智能体", + ... + } + ] +} +``` + +### 3. 测试前端页面 +1. 访问 http://localhost:3000/ +2. 应该看到首页和12个智能体卡片 +3. 创建新项目 +4. 选择"选题评价智能体"进入对话 + +--- + +## 💡 调试技巧 + +### 查看后端日志 +后端使用Pino日志,启动时会显示所有请求和错误 + +### 查看前端控制台 +按F12打开开发者工具,查看: +- Console:JavaScript错误 +- Network:API请求状态 + +### 查看数据库 +```powershell +cd d:\MyCursor\AIclinicalresearch\backend +npx prisma studio +# 在浏览器中查看和编辑数据库内容 +``` + +--- + +## 🆘 获取帮助 + +如果以上方法都无法解决问题,请提供: +1. 后端终端的完整日志 +2. 前端浏览器控制台的错误信息 +3. 访问 http://localhost:3001/health 的响应 +4. `docker ps` 的输出 + diff --git a/诊断问题.bat b/诊断问题.bat new file mode 100644 index 00000000..89184a67 --- /dev/null +++ b/诊断问题.bat @@ -0,0 +1,115 @@ +@echo off +chcp 65001 >nul +echo ======================================== +echo 系统诊断工具 +echo ======================================== +echo. + +echo [检查1] Docker运行状态... +docker ps >nul 2>&1 +if errorlevel 1 ( + echo ❌ Docker未运行 + echo 解决方案: 启动Docker Desktop +) else ( + echo ✅ Docker正在运行 + echo. + echo 运行中的容器: + docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" +) +echo. + +echo [检查2] PostgreSQL容器... +docker ps | findstr postgres >nul +if errorlevel 1 ( + echo ❌ PostgreSQL容器未运行 + echo 解决方案: docker-compose up -d +) else ( + echo ✅ PostgreSQL容器正在运行 +) +echo. + +echo [检查3] Redis容器... +docker ps | findstr redis >nul +if errorlevel 1 ( + echo ❌ Redis容器未运行 + echo 解决方案: docker-compose up -d +) else ( + echo ✅ Redis容器正在运行 +) +echo. + +echo [检查4] 后端服务... +curl -s http://localhost:3001/health >nul 2>&1 +if errorlevel 1 ( + echo ❌ 后端服务未响应 + echo 解决方案: + echo 1. cd backend + echo 2. npm run dev +) else ( + echo ✅ 后端服务正常 + echo. + echo 健康检查响应: + curl -s http://localhost:3001/health +) +echo. + +echo [检查5] 前端服务... +curl -s http://localhost:3000 >nul 2>&1 +if errorlevel 1 ( + echo ❌ 前端服务未响应 + echo 解决方案: + echo 1. cd frontend + echo 2. npm run dev +) else ( + echo ✅ 前端服务正常 +) +echo. + +echo [检查6] 后端环境配置... +if exist "backend\.env" ( + echo ✅ backend\.env 文件存在 + echo. + echo 检查API Keys配置: + findstr /C:"DEEPSEEK_API_KEY" backend\.env | findstr /V "your_" >nul + if errorlevel 1 ( + echo ⚠️ DEEPSEEK_API_KEY 可能未配置 + ) else ( + echo ✅ DEEPSEEK_API_KEY 已配置 + ) + findstr /C:"DASHSCOPE_API_KEY" backend\.env | findstr /V "your_" >nul + if errorlevel 1 ( + echo ⚠️ DASHSCOPE_API_KEY 可能未配置 + ) else ( + echo ✅ DASHSCOPE_API_KEY 已配置 + ) +) else ( + echo ❌ backend\.env 文件不存在 + echo 解决方案: + echo 1. cd backend + echo 2. copy .env.example .env + echo 3. 编辑 .env 文件,填入API Keys +) +echo. + +echo [检查7] 数据库迁移状态... +if exist "backend\prisma\migrations" ( + echo ✅ 数据库迁移文件存在 +) else ( + echo ❌ 数据库迁移文件不存在 + echo 解决方案: + echo 1. cd backend + echo 2. npx prisma migrate dev +) +echo. + +echo ======================================== +echo 诊断完成 +echo ======================================== +echo. +echo 如果所有检查都通过但仍有问题,请: +echo 1. 查看后端终端的完整日志 +echo 2. 查看浏览器控制台的Network标签 +echo 3. 运行: cd backend ^&^& npx prisma studio 检查数据库 +echo. +pause +