feat(merge): 以官方 main 为基底融合 PR#530 多维表格与本地定制
- 多维表格(canvas-batch-table-node/use-canvas-batch-table/canvas-batch-table 等)以 PR#530 实现为主 - 保留官方 main 全部新功能:banner/画布版本历史/提示词编辑/方舟 Agent Plan/支付导出 - 移植本地定制:ddcat 多参考图校验、万有引力 lxmone 连接错误提示、Description v20(v24)、自建插件(a6api/metaso-h3/antigravity-proxy/lxmone)、seccomp、Windows 脚本 - 迁移版本升至 v24(官方 v20-23 banner/版本历史 + 我们的 Description 列) - 修复官方缺失的 markdownPlainText import
This commit is contained in:
56
scripts/start-canvas.ps1
Normal file
56
scripts/start-canvas.ps1
Normal file
@@ -0,0 +1,56 @@
|
||||
[CmdletBinding()]
|
||||
param()
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
$repoRoot = (Resolve-Path (Join-Path $PSScriptRoot "..")).Path
|
||||
$localStarter = Join-Path $PSScriptRoot "start-local.ps1"
|
||||
$healthUrl = "http://127.0.0.1:3000/api/health"
|
||||
$canvasUrl = "http://localhost:3000/canvas"
|
||||
|
||||
function Test-CanvasHttp([string]$Url) {
|
||||
try {
|
||||
$response = Invoke-WebRequest -Uri $Url -UseBasicParsing -TimeoutSec 3
|
||||
return $response.StatusCode -ge 200 -and $response.StatusCode -lt 400
|
||||
} catch {
|
||||
return $false
|
||||
}
|
||||
}
|
||||
|
||||
function Test-ListeningPort([int]$Port) {
|
||||
try {
|
||||
return $null -ne (Get-NetTCPConnection -LocalPort $Port -State Listen -ErrorAction Stop | Select-Object -First 1)
|
||||
} catch {
|
||||
return $false
|
||||
}
|
||||
}
|
||||
|
||||
if (Test-CanvasHttp $healthUrl) {
|
||||
Write-Host "影策画布已经在运行,正在打开..." -ForegroundColor Green
|
||||
Start-Process $canvasUrl
|
||||
exit 0
|
||||
}
|
||||
|
||||
$occupiedPorts = @(3000, 8080) | Where-Object { Test-ListeningPort $_ }
|
||||
if ($occupiedPorts.Count -gt 0) {
|
||||
throw "端口 $($occupiedPorts -join ', ') 已被其他程序占用,无法安全启动影策。"
|
||||
}
|
||||
|
||||
if (-not (Test-Path -LiteralPath $localStarter)) {
|
||||
throw "未找到项目启动脚本:$localStarter"
|
||||
}
|
||||
|
||||
Write-Host "正在启动影策前端和后端,请稍候..." -ForegroundColor Cyan
|
||||
& $localStarter
|
||||
|
||||
$deadline = (Get-Date).AddMinutes(3)
|
||||
do {
|
||||
Start-Sleep -Seconds 2
|
||||
if (Test-CanvasHttp $healthUrl) {
|
||||
Write-Host "影策画布已启动,正在打开浏览器..." -ForegroundColor Green
|
||||
Start-Process $canvasUrl
|
||||
exit 0
|
||||
}
|
||||
} while ((Get-Date) -lt $deadline)
|
||||
|
||||
throw "影策服务已拉起,但 3 分钟内未通过健康检查。请查看打开的前端、后端窗口。"
|
||||
Reference in New Issue
Block a user