配置后可供后续业务功能直接访问外部 SQL Server
数据库。当前仅提供配置保存与连通性测试。
>
}
expanded={isLocalAiSectionExpanded("third-party-sqlserver")}
id="local-ai-section-third-party-sqlserver"
onToggle={() => toggleLocalAiSection("third-party-sqlserver")}
summary={
}
title={
第三方 SQL Server 数据库连接
}
>
关闭后保留配置但不作为后续功能默认外部数据源。
setThirdPartySqlServerConfig((prev) => ({
...prev,
enabled: checked,
}))
}
/>
{thirdPartySqlServerConfig.enabled ? "已开启" : "已关闭"}
数据库连接信息默认隐藏
{hasThirdPartySqlServerConfiguredValue
? "已保存的主机地址、数据库、账号和密码不会默认显示,只有主动点击后才会回显并允许编辑。"
: "当前未展开连接字段。需要新增或编辑配置时,再手动显示连接信息。"}
{isThirdPartySqlServerFieldsVisible ? (
<>
setThirdPartySqlServerConfig((prev) => ({
...prev,
password: e.target.value,
}))
}
placeholder="请输入 SQL Server 密码"
type="password"
value={thirdPartySqlServerConfig.password}
/>
现代云数据库通常需要开启;传统内网 SQL Server 可关闭。
setThirdPartySqlServerConfig((prev) => ({
...prev,
encrypt: checked,
}))
}
/>
对自签名证书或传统 SQL Server 更友好。
setThirdPartySqlServerConfig((prev) => ({
...prev,
trustServerCertificate: checked,
}))
}
/>
>
) : (
{hasThirdPartySqlServerConfiguredValue
? "当前已保存的 SQL Server 连接字段处于隐藏状态。点击上方按钮后才会展示主机、数据库、账号和密码。"
: "当前未展示 SQL Server 连接字段。点击上方按钮开始填写连接信息。"}
)}
• 当前支持 SQL Server 标准 TCP 连接。
• 配置会保存到系统设置,供后续外部数据查询/同步功能复用。
• 测试连接会尝试建立连接并执行基础查询,不会修改外部数据库数据。
{/* 实时画布API配置 */}
配置实时画布功能的供应商、模型与 API Key。当前已接入 BFL / Replicate
/ FAL 供应商;FAL 的 WebSocket
真流式实时属于第二阶段,不是这次上线内容。
>
}
expanded={isLocalAiSectionExpanded("realtime-canvas")}
id="local-ai-section-realtime-canvas"
onToggle={() => toggleLocalAiSection("realtime-canvas")}
summary={
}
title={
实时画布配置
}
>
关闭后前端“实时画布”入口仍可显示,但会提示服务未启用。
setRealtimeCanvasConfig({
...realtimeCanvasConfig,
enabled: checked,
})
}
/>
{realtimeCanvasConfig.enabled ? "已开启" : "已关闭"}
{realtimeCanvasConfig.providerType === "replicate" ? (
<>
setRealtimeCanvasConfig({
...realtimeCanvasConfig,
replicateApiToken: e.target.value,
})
}
placeholder="r8_xxxxxxxxxxxxx"
type="password"
value={realtimeCanvasConfig.replicateApiToken}
/>
setRealtimeCanvasConfig({
...realtimeCanvasConfig,
replicateModel: e.target.value,
})
}
placeholder="black-forest-labs/flux-2-klein-4b"
value={realtimeCanvasConfig.replicateModel}
/>
>
) : realtimeCanvasConfig.providerType === "fal" ? (
<>
当前 FAL 接入的是“供应商能力接入阶段”,会通过现有
`/api/realtime/generate` 服务端链路调用 FAL。 前端直连 FAL
WebSocket 的“真流式实时”属于第二阶段,当前尚未启用。
setRealtimeCanvasConfig({
...realtimeCanvasConfig,
falApiKey: e.target.value,
})
}
placeholder="FAL_KEY_ID:FAL_KEY_SECRET 或 token"
type="password"
value={realtimeCanvasConfig.falApiKey}
/>
setRealtimeCanvasConfig({
...realtimeCanvasConfig,
falModel: e.target.value,
})
}
placeholder="fal-ai/your-image-edit-model"
value={realtimeCanvasConfig.falModel}
/>
setRealtimeCanvasConfig({
...realtimeCanvasConfig,
falBaseUrl: e.target.value,
})
}
placeholder="https://fal.run"
value={realtimeCanvasConfig.falBaseUrl}
/>
>
) : (
<>
setRealtimeCanvasConfig({
...realtimeCanvasConfig,
bflApiKey: e.target.value,
})
}
placeholder="bfl_xxxxxxxxxxxxx"
type="password"
value={realtimeCanvasConfig.bflApiKey}
/>
setRealtimeCanvasConfig({
...realtimeCanvasConfig,
bflBaseUrl: e.target.value,
})
}
placeholder={DEFAULT_BFL_BASE_URL}
value={realtimeCanvasConfig.bflBaseUrl}
/>
setRealtimeCanvasConfig({
...realtimeCanvasConfig,
bflModel: e.target.value,
})
}
placeholder={DEFAULT_BFL_REALTIME_MODEL}
value={realtimeCanvasConfig.bflModel}
/>
>
)}
主实时服务失败时自动切换到备用 BFL 服务。
setRealtimeCanvasConfig({
...realtimeCanvasConfig,
fallbackEnabled: checked,
})
}
/>
{realtimeCanvasConfig.fallbackProviderType === "replicate" ? (
<>
setRealtimeCanvasConfig({
...realtimeCanvasConfig,
fallbackReplicateApiToken: e.target.value,
})
}
placeholder="r8_xxxxxxxxxxxxx"
type="password"
value={realtimeCanvasConfig.fallbackReplicateApiToken}
/>
setRealtimeCanvasConfig({
...realtimeCanvasConfig,
fallbackReplicateModel: e.target.value,
})
}
placeholder="black-forest-labs/flux-2-klein-4b"
value={realtimeCanvasConfig.fallbackReplicateModel}
/>
>
) : realtimeCanvasConfig.fallbackProviderType === "fal" ? (
<>
备用 FAL 目前同样走现有服务端生成链路,不是前端直连 WebSocket
真流式实时。
setRealtimeCanvasConfig({
...realtimeCanvasConfig,
fallbackFalApiKey: e.target.value,
})
}
placeholder="FAL_KEY_ID:FAL_KEY_SECRET 或 token"
type="password"
value={realtimeCanvasConfig.fallbackFalApiKey}
/>
setRealtimeCanvasConfig({
...realtimeCanvasConfig,
fallbackFalModel: e.target.value,
})
}
placeholder="fal-ai/your-image-edit-model"
value={realtimeCanvasConfig.fallbackFalModel}
/>
setRealtimeCanvasConfig({
...realtimeCanvasConfig,
fallbackFalBaseUrl: e.target.value,
})
}
placeholder="https://fal.run"
value={realtimeCanvasConfig.fallbackFalBaseUrl}
/>
>
) : (
<>
setRealtimeCanvasConfig({
...realtimeCanvasConfig,
fallbackBflApiKey: e.target.value,
})
}
placeholder="bfl_xxxxxxxxxxxxx"
type="password"
value={realtimeCanvasConfig.fallbackBflApiKey}
/>
setRealtimeCanvasConfig({
...realtimeCanvasConfig,
fallbackBflBaseUrl: e.target.value,
})
}
placeholder={DEFAULT_BFL_BASE_URL}
value={realtimeCanvasConfig.fallbackBflBaseUrl}
/>
setRealtimeCanvasConfig({
...realtimeCanvasConfig,
fallbackBflModel: e.target.value,
})
}
placeholder={DEFAULT_BFL_REALTIME_MODEL}
value={realtimeCanvasConfig.fallbackBflModel}
/>
>
)}
推荐:BFL 实时草图模型使用 `flux-2-klein-4b`;FAL
需填写支持图像编辑输入的模型 ID。
{/* 全站生图单模型并发 */}