feat: add migration scripts

This commit is contained in:
AI Clinical Dev Team
2025-10-12 09:51:11 +08:00
parent 348af7fee9
commit f09c79d7d0
2 changed files with 91 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
-- 添加通用对话表
-- 执行日期: 2025-10-11
-- 用途: 支持无项目/无智能体的纯AI对话功能
-- 1. 创建通用对话表
CREATE TABLE IF NOT EXISTS general_conversations (
id VARCHAR(36) PRIMARY KEY,
user_id VARCHAR(36) NOT NULL,
title VARCHAR(255) NOT NULL,
model_name VARCHAR(50),
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
deleted_at TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
-- 2. 创建通用消息表
CREATE TABLE IF NOT EXISTS general_messages (
id VARCHAR(36) PRIMARY KEY,
conversation_id VARCHAR(36) NOT NULL,
role VARCHAR(20) NOT NULL,
content TEXT NOT NULL,
model VARCHAR(50),
metadata JSONB,
tokens INTEGER,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (conversation_id) REFERENCES general_conversations(id) ON DELETE CASCADE
);
-- 3. 创建索引
CREATE INDEX IF NOT EXISTS idx_general_conversations_user_id ON general_conversations(user_id);
CREATE INDEX IF NOT EXISTS idx_general_conversations_created_at ON general_conversations(created_at);
CREATE INDEX IF NOT EXISTS idx_general_conversations_updated_at ON general_conversations(updated_at);
CREATE INDEX IF NOT EXISTS idx_general_messages_conversation_id ON general_messages(conversation_id);
CREATE INDEX IF NOT EXISTS idx_general_messages_created_at ON general_messages(created_at);
-- 4. 验证表已创建
SELECT 'general_conversations表已创建' AS status
WHERE EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'general_conversations');
SELECT 'general_messages表已创建' AS status
WHERE EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'general_messages');

45
backend/run-migration.ps1 Normal file
View File

@@ -0,0 +1,45 @@
# 运行数据库迁移
# 用途: 添加general_conversations和general_messages表
Write-Host "========================================" -ForegroundColor Cyan
Write-Host " 执行数据库迁移: 添加通用对话表" -ForegroundColor Cyan
Write-Host "========================================" -ForegroundColor Cyan
Write-Host ""
# 读取.env获取数据库连接信息
$envFile = Get-Content .env
$dbUrl = ($envFile | Select-String "DATABASE_URL").ToString().Split('=')[1].Trim()
Write-Host "📦 数据库URL: $($dbUrl.Substring(0, 30))..." -ForegroundColor Yellow
Write-Host ""
# 使用Prisma db push开发环境最快
Write-Host "[1/2] 同步数据库Schema..." -ForegroundColor Green
npx prisma db push --skip-generate
if ($LASTEXITCODE -eq 0) {
Write-Host "✅ Schema同步成功" -ForegroundColor Green
Write-Host ""
Write-Host "[2/2] 生成Prisma Client..." -ForegroundColor Green
npx prisma generate
if ($LASTEXITCODE -eq 0) {
Write-Host "✅ Prisma Client生成成功" -ForegroundColor Green
Write-Host ""
Write-Host "========================================" -ForegroundColor Cyan
Write-Host " ✅ 迁移完成!请重启后端服务" -ForegroundColor Cyan
Write-Host "========================================" -ForegroundColor Cyan
} else {
Write-Host "❌ Prisma Client生成失败" -ForegroundColor Red
}
} else {
Write-Host "❌ Schema同步失败请检查数据库连接" -ForegroundColor Red
Write-Host ""
Write-Host "💡 提示请确保PostgreSQL服务正在运行" -ForegroundColor Yellow
}
Write-Host ""
Write-Host "按任意键退出..."
$null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")