fix: create mock user to resolve FK constraint issue

Issues fixed:
1. Frontend port is 3000 (not 5173)
2. Projects API returns 500 due to missing user
3. Foreign key constraint violation on projects_user_id_fkey

Solutions:
- Created create-mock-user.ts script
- Added user-mock-001 to database
- Created startup guide (娴嬭瘯鍜屽惎鍔?md)
- Created one-click launcher (涓€閿惎鍔?bat)
- Created diagnostic tool (璇婃柇闂.bat)

New files:
- backend/src/scripts/create-mock-user.ts
- 娴嬭瘯鍜屽惎鍔?md
- 涓€閿惎鍔?bat
- 璇婃柇闂.bat
This commit is contained in:
AI Clinical Dev Team
2025-10-10 21:15:04 +08:00
parent e11bb3fb5e
commit 96d9783242
4 changed files with 412 additions and 0 deletions

View File

@@ -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();

55
一键启动.bat Normal file
View File

@@ -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

199
测试和启动.md Normal file
View File

@@ -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`的终端中查看错误日志
- 通常会显示具体的错误原因
---
### 问题3API请求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打开开发者工具查看
- ConsoleJavaScript错误
- NetworkAPI请求状态
### 查看数据库
```powershell
cd d:\MyCursor\AIclinicalresearch\backend
npx prisma studio
# 在浏览器中查看和编辑数据库内容
```
---
## 🆘 获取帮助
如果以上方法都无法解决问题,请提供:
1. 后端终端的完整日志
2. 前端浏览器控制台的错误信息
3. 访问 http://localhost:3001/health 的响应
4. `docker ps` 的输出

115
诊断问题.bat Normal file
View File

@@ -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