docs: complete documentation system (250+ files)

- System architecture and design documentation
- Business module docs (ASL/AIA/PKB/RVW/DC/SSA/ST)
- ASL module complete design (quality assurance, tech selection)
- Platform layer and common capabilities docs
- Development standards and API specifications
- Deployment and operations guides
- Project management and milestone tracking
- Architecture implementation reports
- Documentation templates and guides
This commit is contained in:
2025-11-16 15:43:55 +08:00
parent 0fe6821a89
commit e52020409c
173 changed files with 46227 additions and 11964 deletions

View File

@@ -0,0 +1,268 @@
# ========================================
# execute-migration.ps1
# Schema迁移执行脚本Windows PowerShell
# ========================================
# 功能:
# 1. 备份当前数据库
# 2. 依次执行5个迁移脚本
# 3. 验证迁移结果
#
# 使用方法:
# .\execute-migration.ps1
# ========================================
# 设置错误时停止
$ErrorActionPreference = "Stop"
# 数据库连接信息
$DB_HOST = "localhost"
$DB_PORT = "5432"
$DB_NAME = "ai_clinical_research"
$DB_USER = "postgres"
$DB_PASS = "postgres"
# 设置PostgreSQL密码环境变量
$env:PGPASSWORD = $DB_PASS
# 脚本目录
$SCRIPT_DIR = Split-Path -Parent $MyInvocation.MyCommand.Path
Write-Host "========================================" -ForegroundColor Cyan
Write-Host "Schema迁移执行脚本 - V1.0" -ForegroundColor Cyan
Write-Host "========================================" -ForegroundColor Cyan
Write-Host ""
# ========================================
# 第一步检查PostgreSQL连接
# ========================================
Write-Host "[1/6] 检查PostgreSQL连接..." -ForegroundColor Yellow
try {
$testConnection = psql -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DB_NAME -c "SELECT version();" 2>&1
if ($LASTEXITCODE -eq 0) {
Write-Host "✅ PostgreSQL连接成功" -ForegroundColor Green
} else {
throw "PostgreSQL连接失败"
}
} catch {
Write-Host "❌ 无法连接到PostgreSQL数据库" -ForegroundColor Red
Write-Host "错误信息: $_" -ForegroundColor Red
Write-Host ""
Write-Host "请检查:" -ForegroundColor Yellow
Write-Host "1. PostgreSQL服务是否正在运行" -ForegroundColor Yellow
Write-Host "2. 数据库连接信息是否正确" -ForegroundColor Yellow
Write-Host "3. psql命令是否在PATH中" -ForegroundColor Yellow
exit 1
}
Write-Host ""
# ========================================
# 第二步:备份当前数据库
# ========================================
Write-Host "[2/6] 备份当前数据库..." -ForegroundColor Yellow
$timestamp = Get-Date -Format "yyyyMMdd_HHmmss"
$backupFile = Join-Path $SCRIPT_DIR "backup_before_migration_$timestamp.sql"
Write-Host "备份文件: $backupFile" -ForegroundColor Gray
try {
$output = pg_dump -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DB_NAME -f $backupFile 2>&1
if (Test-Path $backupFile) {
$fileSize = (Get-Item $backupFile).Length / 1KB
Write-Host "✅ 数据库备份成功 (大小: $([math]::Round($fileSize, 2)) KB)" -ForegroundColor Green
} else {
throw "备份文件未生成"
}
} catch {
Write-Host "❌ 数据库备份失败" -ForegroundColor Red
Write-Host "错误信息: $_" -ForegroundColor Red
exit 1
}
Write-Host ""
# ========================================
# 第三步:确认执行迁移
# ========================================
Write-Host "[3/6] 迁移确认" -ForegroundColor Yellow
Write-Host ""
Write-Host "即将执行以下操作:" -ForegroundColor White
Write-Host " 1. 创建10个Schema" -ForegroundColor Gray
Write-Host " 2. 迁移platform_schema1个表" -ForegroundColor Gray
Write-Host " 3. 迁移aia_schema5个表" -ForegroundColor Gray
Write-Host " 4. 迁移pkb_schema5个表" -ForegroundColor Gray
Write-Host " 5. 全局验证" -ForegroundColor Gray
Write-Host ""
Write-Host "⚠️ 这将修改数据库结构!" -ForegroundColor Red
Write-Host "✅ 数据库已备份到: $backupFile" -ForegroundColor Green
Write-Host ""
$confirmation = Read-Host "确认执行迁移?(输入 YES 继续,其他键取消)"
if ($confirmation -ne "YES") {
Write-Host "❌ 迁移已取消" -ForegroundColor Yellow
exit 0
}
Write-Host ""
# ========================================
# 第四步:执行迁移脚本
# ========================================
Write-Host "[4/6] 执行迁移脚本..." -ForegroundColor Yellow
Write-Host ""
# 迁移脚本列表
$migrationScripts = @(
@{Name="001-create-all-10-schemas.sql"; Description="创建10个Schema"},
@{Name="002-migrate-platform.sql"; Description="迁移platform_schema"},
@{Name="003-migrate-aia.sql"; Description="迁移aia_schema"},
@{Name="004-migrate-pkb.sql"; Description="迁移pkb_schema"},
@{Name="005-validate-all.sql"; Description="全局验证"}
)
$successCount = 0
$failedScripts = @()
foreach ($script in $migrationScripts) {
$scriptPath = Join-Path $SCRIPT_DIR $script.Name
Write-Host " 执行: $($script.Name) - $($script.Description)..." -ForegroundColor Cyan
if (-not (Test-Path $scriptPath)) {
Write-Host " ❌ 脚本文件不存在: $scriptPath" -ForegroundColor Red
$failedScripts += $script.Name
continue
}
try {
# 执行SQL脚本
$output = psql -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DB_NAME -f $scriptPath 2>&1
if ($LASTEXITCODE -eq 0) {
Write-Host " ✅ 成功" -ForegroundColor Green
$successCount++
} else {
throw "脚本执行返回错误代码: $LASTEXITCODE"
}
} catch {
Write-Host " ❌ 失败" -ForegroundColor Red
Write-Host " 错误: $_" -ForegroundColor Red
$failedScripts += $script.Name
}
Write-Host ""
}
# ========================================
# 第五步:迁移结果总结
# ========================================
Write-Host "[5/6] 迁移结果总结" -ForegroundColor Yellow
Write-Host ""
Write-Host "总计: $($migrationScripts.Count) 个脚本" -ForegroundColor White
Write-Host "成功: $successCount" -ForegroundColor Green
Write-Host "失败: $($failedScripts.Count)" -ForegroundColor $(if ($failedScripts.Count -gt 0) {"Red"} else {"Green"})
if ($failedScripts.Count -gt 0) {
Write-Host ""
Write-Host "失败的脚本:" -ForegroundColor Red
foreach ($failed in $failedScripts) {
Write-Host " - $failed" -ForegroundColor Red
}
Write-Host ""
Write-Host "⚠️ 迁移未完全成功!" -ForegroundColor Red
Write-Host "建议:检查错误日志,修复问题后重新执行" -ForegroundColor Yellow
Write-Host "回滚:可使用备份文件恢复 -> $backupFile" -ForegroundColor Yellow
} else {
Write-Host ""
Write-Host "✅ 所有迁移脚本执行成功!" -ForegroundColor Green
}
Write-Host ""
# ========================================
# 第六步:验证迁移结果
# ========================================
if ($successCount -eq $migrationScripts.Count) {
Write-Host "[6/6] 验证迁移结果..." -ForegroundColor Yellow
Write-Host ""
# 验证Schema数量
Write-Host "验证Schema创建..." -ForegroundColor Cyan
$schemaQuery = @"
SELECT COUNT(*) FROM information_schema.schemata
WHERE schema_name IN (
'platform_schema', 'aia_schema', 'pkb_schema',
'asl_schema', 'common_schema', 'dc_schema',
'rvw_schema', 'admin_schema', 'ssa_schema', 'st_schema'
);
"@
try {
$schemaCount = psql -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DB_NAME -t -c $schemaQuery 2>&1
$schemaCount = $schemaCount.Trim()
if ($schemaCount -eq "10") {
Write-Host "✅ 10个Schema全部创建成功" -ForegroundColor Green
} else {
Write-Host "⚠️ Schema数量异常: 预期10个实际${schemaCount}" -ForegroundColor Yellow
}
} catch {
Write-Host "⚠️ 无法验证Schema数量" -ForegroundColor Yellow
}
Write-Host ""
# 验证数据迁移
Write-Host "验证数据迁移..." -ForegroundColor Cyan
$tables = @(
@{Schema="platform_schema"; Table="users"},
@{Schema="aia_schema"; Table="projects"},
@{Schema="aia_schema"; Table="conversations"},
@{Schema="pkb_schema"; Table="knowledge_bases"},
@{Schema="pkb_schema"; Table="documents"}
)
foreach ($tbl in $tables) {
try {
$countQuery = "SELECT COUNT(*) FROM $($tbl.Schema).$($tbl.Table);"
$count = psql -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DB_NAME -t -c $countQuery 2>&1
$count = $count.Trim()
Write-Host " $($tbl.Schema).$($tbl.Table): $count 条记录" -ForegroundColor Gray
} catch {
Write-Host " ⚠️ 无法查询 $($tbl.Schema).$($tbl.Table)" -ForegroundColor Yellow
}
}
Write-Host ""
Write-Host "========================================" -ForegroundColor Cyan
Write-Host "✅ Schema迁移执行完成" -ForegroundColor Green
Write-Host "========================================" -ForegroundColor Cyan
Write-Host ""
Write-Host "下一步操作:" -ForegroundColor Yellow
Write-Host "1. 更新Prisma配置 (backend/prisma/schema.prisma)" -ForegroundColor Gray
Write-Host "2. 生成Prisma Client (npx prisma generate)" -ForegroundColor Gray
Write-Host "3. 更新代码以使用新Schema" -ForegroundColor Gray
Write-Host "4. 测试现有功能" -ForegroundColor Gray
Write-Host ""
Write-Host "备份文件保存在: $backupFile" -ForegroundColor Cyan
Write-Host ""
} else {
Write-Host "[6/6] 跳过验证(因为迁移未完全成功)" -ForegroundColor Yellow
Write-Host ""
}
# 清理环境变量
Remove-Item Env:\PGPASSWORD
Write-Host "脚本执行完成!" -ForegroundColor Green