# 影子系统迁移执行脚本 # 执行阶段一和阶段二的数据库迁移 $ErrorActionPreference = "Stop" Write-Host "========================================" -ForegroundColor Cyan Write-Host "影子系统数据库迁移脚本" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan Write-Host "" # 设置环境变量(影子系统) $env:DATABASE_URL = "postgresql://gongxiangpan:gongxiangpan123@192.168.58.20:5432/lobechat_stage" Write-Host "✅ 环境变量已设置" -ForegroundColor Green Write-Host " 数据库: lobechat_stage (影子系统)" -ForegroundColor Cyan Write-Host "" # 切换到项目根目录 Set-Location $PSScriptRoot\.. $projectRoot = Get-Location Write-Host "项目目录: $projectRoot" -ForegroundColor Cyan Write-Host "" # 步骤1: 应用Schema变更 Write-Host "📋 步骤1: 应用Schema变更..." -ForegroundColor Yellow Write-Host " 执行: npx prisma db push" -ForegroundColor Gray try { npx prisma db push --accept-data-loss if ($LASTEXITCODE -ne 0) { throw "Schema更新失败" } Write-Host " ✅ Schema更新成功" -ForegroundColor Green } catch { Write-Host " ❌ Schema更新失败: $_" -ForegroundColor Red exit 1 } Write-Host "" # 步骤2: 生成Prisma Client Write-Host "📋 步骤2: 生成Prisma Client..." -ForegroundColor Yellow try { npx prisma generate if ($LASTEXITCODE -ne 0) { throw "Prisma Client生成失败" } Write-Host " ✅ Prisma Client生成成功" -ForegroundColor Green } catch { Write-Host " ❌ Prisma Client生成失败: $_" -ForegroundColor Red exit 1 } Write-Host "" # 步骤3: 阶段一迁移 - 用户状态管理 Write-Host "📋 步骤3: 阶段一迁移 - 用户状态管理..." -ForegroundColor Yellow Write-Host " 执行: npx tsx scripts/migrate-user-status-safe.ts" -ForegroundColor Gray try { npx tsx scripts/migrate-user-status-safe.ts if ($LASTEXITCODE -ne 0) { throw "阶段一迁移失败" } Write-Host " ✅ 阶段一迁移成功" -ForegroundColor Green } catch { Write-Host " ❌ 阶段一迁移失败: $_" -ForegroundColor Red exit 1 } Write-Host "" # 步骤4: 验证阶段一 Write-Host "📋 步骤4: 验证阶段一迁移结果..." -ForegroundColor Yellow Write-Host " 执行: npx tsx scripts/verify-migration.ts 1" -ForegroundColor Gray try { npx tsx scripts/verify-migration.ts 1 if ($LASTEXITCODE -ne 0) { Write-Host " ⚠️ 验证发现问题,请检查输出" -ForegroundColor Yellow } else { Write-Host " ✅ 阶段一验证通过" -ForegroundColor Green } } catch { Write-Host " ⚠️ 验证过程出错: $_" -ForegroundColor Yellow } Write-Host "" # 步骤5: 阶段二迁移 - 部门外键关联 Write-Host "📋 步骤5: 阶段二迁移 - 部门外键关联..." -ForegroundColor Yellow Write-Host " 执行: npx tsx scripts/migrate-department-to-id-safe.ts" -ForegroundColor Gray try { npx tsx scripts/migrate-department-to-id-safe.ts if ($LASTEXITCODE -ne 0) { throw "阶段二迁移失败" } Write-Host " ✅ 阶段二迁移成功" -ForegroundColor Green } catch { Write-Host " ❌ 阶段二迁移失败: $_" -ForegroundColor Red exit 1 } Write-Host "" # 步骤6: 验证阶段二 Write-Host "📋 步骤6: 验证阶段二迁移结果..." -ForegroundColor Yellow Write-Host " 执行: npx tsx scripts/verify-migration.ts 2" -ForegroundColor Gray try { npx tsx scripts/verify-migration.ts 2 if ($LASTEXITCODE -ne 0) { Write-Host " ⚠️ 验证发现问题,请检查输出" -ForegroundColor Yellow } else { Write-Host " ✅ 阶段二验证通过" -ForegroundColor Green } } catch { Write-Host " ⚠️ 验证过程出错: $_" -ForegroundColor Yellow } Write-Host "" # 步骤7: 完整验证 Write-Host "📋 步骤7: 完整验证..." -ForegroundColor Yellow Write-Host " 执行: npx tsx scripts/verify-migration.ts" -ForegroundColor Gray try { npx tsx scripts/verify-migration.ts if ($LASTEXITCODE -ne 0) { Write-Host " ⚠️ 验证发现问题,请检查输出" -ForegroundColor Yellow } else { Write-Host " ✅ 完整验证通过" -ForegroundColor Green } } catch { Write-Host " ⚠️ 验证过程出错: $_" -ForegroundColor Yellow } Write-Host "" Write-Host "========================================" -ForegroundColor Green Write-Host "✅ 迁移执行完成" -ForegroundColor Green Write-Host "========================================" -ForegroundColor Green Write-Host "" Write-Host "⚠️ 下一步:" -ForegroundColor Yellow Write-Host " 1. 检查验证输出,确认没有错误" -ForegroundColor White Write-Host " 2. 在影子系统进行功能测试" -ForegroundColor White Write-Host " 3. 访问: http://192.168.58.20:5320" -ForegroundColor Cyan Write-Host ""