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:
43
backend/src/scripts/create-mock-user.ts
Normal file
43
backend/src/scripts/create-mock-user.ts
Normal 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
55
一键启动.bat
Normal 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
199
测试和启动.md
Normal 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`的终端中查看错误日志
|
||||
- 通常会显示具体的错误原因
|
||||
|
||||
---
|
||||
|
||||
### 问题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` 的输出
|
||||
|
||||
115
诊断问题.bat
Normal file
115
诊断问题.bat
Normal 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
|
||||
|
||||
Reference in New Issue
Block a user