chore: initialize medical consultation agent demo

This commit is contained in:
刘金宝
2026-06-01 09:25:26 +08:00
commit a7733243b2
139 changed files with 15764 additions and 0 deletions
+95
View File
@@ -0,0 +1,95 @@
param(
[string]$HostName = "127.0.0.1",
[int]$Port = 3306,
[string]$User = "root",
[string]$Password = "",
[string]$DatabaseName = "medical_consultation_agent",
[string]$MysqlExe = "mysql"
)
$ErrorActionPreference = "Stop"
function Resolve-ProjectPath {
$scriptDir = Split-Path -Parent $MyInvocation.ScriptName
return (Resolve-Path -Path (Join-Path $scriptDir "..")).Path
}
function Convert-ToMysqlSourcePath {
param([string]$Path)
return $Path.Replace("\", "/")
}
function Invoke-MysqlCommand {
param([string]$Sql)
& $MysqlExe -h $HostName -P $Port -u $User --default-character-set=utf8mb4 -e $Sql
if ($LASTEXITCODE -ne 0) {
throw "MySQL command failed: $Sql"
}
}
function Invoke-MysqlDatabaseCommand {
param([string]$Sql)
& $MysqlExe -h $HostName -P $Port -u $User --default-character-set=utf8mb4 -D $DatabaseName -e $Sql
if ($LASTEXITCODE -ne 0) {
throw "MySQL database command failed: $Sql"
}
}
$projectRoot = Resolve-ProjectPath
$schemaPath = Convert-ToMysqlSourcePath((Resolve-Path -Path (Join-Path $projectRoot "docs/sql/schema.sql")).Path)
$seedPath = Convert-ToMysqlSourcePath((Resolve-Path -Path (Join-Path $projectRoot "docs/sql/seed_pediatric_pneumonia.sql")).Path)
$tempDir = Join-Path $projectRoot "storage/mysql_import"
New-Item -ItemType Directory -Force -Path $tempDir | Out-Null
$tempSchemaPath = Join-Path $tempDir "schema.$DatabaseName.sql"
$tempSeedPath = Join-Path $tempDir "seed.$DatabaseName.sql"
(Get-Content -Path $schemaPath -Raw -Encoding UTF8).Replace("medical_consultation_agent", $DatabaseName) |
Set-Content -Path $tempSchemaPath -Encoding UTF8
(Get-Content -Path $seedPath -Raw -Encoding UTF8).Replace("medical_consultation_agent", $DatabaseName) |
Set-Content -Path $tempSeedPath -Encoding UTF8
$tempSchemaSource = Convert-ToMysqlSourcePath((Resolve-Path -Path $tempSchemaPath).Path)
$tempSeedSource = Convert-ToMysqlSourcePath((Resolve-Path -Path $tempSeedPath).Path)
if ([string]::IsNullOrWhiteSpace($Password)) {
$securePassword = Read-Host "MySQL password for $User@$HostName" -AsSecureString
$bstr = [Runtime.InteropServices.Marshal]::SecureStringToBSTR($securePassword)
try {
$Password = [Runtime.InteropServices.Marshal]::PtrToStringBSTR($bstr)
}
finally {
[Runtime.InteropServices.Marshal]::ZeroFreeBSTR($bstr)
}
}
$env:MYSQL_PWD = $Password
try {
Write-Host "Checking MySQL connection..."
Invoke-MysqlCommand "SELECT VERSION() AS mysql_version;"
Write-Host "Creating schema in database $DatabaseName from docs/sql/schema.sql..."
Invoke-MysqlCommand "source $tempSchemaSource"
Write-Host "Seeding demo data into database $DatabaseName..."
Invoke-MysqlCommand "source $tempSeedSource"
Write-Host "Verifying tables and seed data..."
$verifySql = @"
SELECT COUNT(*) AS table_count
FROM information_schema.tables
WHERE table_schema = 'medical_consultation_agent';
SELECT id, case_code, title, difficulty
FROM cases;
SELECT item_code, item_name, item_type, is_key
FROM case_exam_items
ORDER BY display_order;
"@
$verifySql = $verifySql.Replace("medical_consultation_agent", $DatabaseName)
Invoke-MysqlDatabaseCommand $verifySql
Write-Host "MySQL demo schema initialized successfully."
}
finally {
Remove-Item Env:\MYSQL_PWD -ErrorAction SilentlyContinue
}