mirror of
https://github.com/Fasthei/taiji-pda-v0.git
synced 2026-09-26 20:12:27 +00:00
refactor: 将数据存储模块移动到Pod资源配置部分
- 从顶部移除数据存储模块选择器 - 将数据存储模块选择器移动到Pod资源配置部分,替换原有的'数据模块'(选择已注册的工具) - 将动态环境变量配置也移动到Pod资源配置部分 - 移除handleDeployAgent中对selectedDataTemplate的引用
This commit is contained in:
+63
-94
@@ -411,16 +411,6 @@ export default function DataToolsPage() {
|
||||
const memoryRequest = `${podConfig.memoryGB}Gi`
|
||||
const memoryLimit = `${podConfig.memoryGB}Gi` // 默认与request相同
|
||||
|
||||
// 收集选择的工具ID列表
|
||||
const selectedTools: string[] = []
|
||||
if (selectedDataTemplate) {
|
||||
// 从工具列表中找到对应的工具ID
|
||||
const tool = tools.find((t) => t.name === selectedDataTemplate || t.id === selectedDataTemplate)
|
||||
if (tool?.id) {
|
||||
selectedTools.push(tool.id)
|
||||
}
|
||||
}
|
||||
|
||||
// 框架类型(默认MCP)
|
||||
const frameworkName = selectedFramework || "MCP"
|
||||
|
||||
@@ -434,7 +424,6 @@ export default function DataToolsPage() {
|
||||
cpuLimit: cpuLimit, // 可选:CPU限制量
|
||||
memoryRequest: memoryRequest, // 必填:内存请求量
|
||||
memoryLimit: memoryLimit, // 可选:内存限制量
|
||||
tools: selectedTools.length > 0 ? selectedTools : undefined, // 可选:工具ID列表
|
||||
model: podConfig.model, // 可选:模型名称
|
||||
}
|
||||
|
||||
@@ -462,7 +451,6 @@ export default function DataToolsPage() {
|
||||
// 重置表单
|
||||
setSelectedFramework("")
|
||||
setSelectedServiceGateway("")
|
||||
setSelectedDataTemplate("")
|
||||
setSelectedApiDataTemplate("")
|
||||
setEnvConfig({})
|
||||
setAgentRole("")
|
||||
@@ -867,78 +855,6 @@ export default function DataToolsPage() {
|
||||
/>
|
||||
</div>
|
||||
|
||||
{/* 数据存储模块选择 */}
|
||||
<div className="space-y-2">
|
||||
<Label>{t("数据存储模块", "Data Storage Module")} <span className="text-destructive">*</span></Label>
|
||||
<Select
|
||||
value={selectedApiDataTemplate}
|
||||
onValueChange={(value) => {
|
||||
setSelectedApiDataTemplate(value)
|
||||
// 重置环境变量配置
|
||||
setEnvConfig({})
|
||||
}}
|
||||
>
|
||||
<SelectTrigger>
|
||||
<SelectValue placeholder={t("选择数据存储模块", "Select data storage module")} />
|
||||
</SelectTrigger>
|
||||
<SelectContent>
|
||||
{apiDataTemplates.length === 0 ? (
|
||||
<SelectItem value="" disabled>
|
||||
{t("暂无可用模块", "No modules available")}
|
||||
</SelectItem>
|
||||
) : (
|
||||
apiDataTemplates.map((template) => (
|
||||
<SelectItem key={template.template} value={template.template}>
|
||||
<div className="flex flex-col">
|
||||
<span>{template.template}</span>
|
||||
{template.description && (
|
||||
<span className="text-xs text-muted-foreground">{template.description}</span>
|
||||
)}
|
||||
</div>
|
||||
</SelectItem>
|
||||
))
|
||||
)}
|
||||
</SelectContent>
|
||||
</Select>
|
||||
<p className="text-xs text-muted-foreground">
|
||||
{t("选择Agent使用的数据存储类型", "Select data storage type for the agent")}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
{/* 动态环境变量配置(根据选择的模块) */}
|
||||
{selectedApiDataTemplate && (() => {
|
||||
const template = apiDataTemplates.find(t => t.template === selectedApiDataTemplate)
|
||||
if (!template?.env_info) return null
|
||||
const required = template.env_info.required || {}
|
||||
const optional = template.env_info.optional || {}
|
||||
return (
|
||||
<div className="border rounded-lg p-4 space-y-3 bg-muted/30">
|
||||
<h4 className="font-medium text-sm">{t("数据库连接配置", "Database Connection Config")}</h4>
|
||||
{Object.entries(required).map(([key, desc]) => (
|
||||
<div key={key} className="space-y-1">
|
||||
<Label className="text-sm">{key} <span className="text-destructive">*</span></Label>
|
||||
<Input
|
||||
placeholder={String(desc)}
|
||||
value={envConfig[key] || ""}
|
||||
onChange={(e) => setEnvConfig({ ...envConfig, [key]: e.target.value })}
|
||||
type={key.toLowerCase().includes('password') ? 'password' : 'text'}
|
||||
/>
|
||||
</div>
|
||||
))}
|
||||
{Object.entries(optional).map(([key, desc]) => (
|
||||
<div key={key} className="space-y-1">
|
||||
<Label className="text-sm text-muted-foreground">{key} {t("(可选)", "(Optional)")}</Label>
|
||||
<Input
|
||||
placeholder={String(desc)}
|
||||
value={envConfig[key] || ""}
|
||||
onChange={(e) => setEnvConfig({ ...envConfig, [key]: e.target.value })}
|
||||
/>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
)
|
||||
})()}
|
||||
|
||||
{/* 框架类型选择 */}
|
||||
<div className="space-y-2">
|
||||
<Label>{t("框架类型", "Framework Type")}</Label>
|
||||
@@ -1019,31 +935,84 @@ export default function DataToolsPage() {
|
||||
</div>
|
||||
|
||||
<div className="space-y-2">
|
||||
<Label>{t("数据模块", "Data Module")}</Label>
|
||||
<Select value={selectedDataTemplate} onValueChange={setSelectedDataTemplate}>
|
||||
<Label>{t("数据存储模块", "Data Storage Module")} <span className="text-destructive">*</span></Label>
|
||||
<Select
|
||||
value={selectedApiDataTemplate}
|
||||
onValueChange={(value) => {
|
||||
setSelectedApiDataTemplate(value)
|
||||
// 重置环境变量配置
|
||||
setEnvConfig({})
|
||||
}}
|
||||
>
|
||||
<SelectTrigger>
|
||||
<SelectValue placeholder={t("选择已注册的工具", "Select registered tool")} />
|
||||
<SelectValue placeholder={t("选择数据存储模块", "Select data storage module")} />
|
||||
</SelectTrigger>
|
||||
<SelectContent>
|
||||
{dataTemplates.length === 0 ? (
|
||||
<SelectItem value="none" disabled>
|
||||
{t("暂无可用工具", "No available tools")}
|
||||
{apiDataTemplates.length === 0 ? (
|
||||
<SelectItem value="" disabled>
|
||||
{t("暂无可用模块", "No modules available")}
|
||||
</SelectItem>
|
||||
) : (
|
||||
dataTemplates.map((template) => (
|
||||
<SelectItem key={template.name} value={template.name}>
|
||||
{template.name}
|
||||
apiDataTemplates.map((template) => (
|
||||
<SelectItem key={template.template} value={template.template}>
|
||||
<div className="flex flex-col">
|
||||
<span>{template.template}</span>
|
||||
{template.description && (
|
||||
<span className="text-xs text-muted-foreground">{template.description}</span>
|
||||
)}
|
||||
</div>
|
||||
</SelectItem>
|
||||
))
|
||||
)}
|
||||
</SelectContent>
|
||||
</Select>
|
||||
<p className="text-xs text-muted-foreground">
|
||||
{t("选择已注册的工具作为数据源", "Select registered tool as data source")}
|
||||
{t("选择Agent使用的数据存储类型", "Select data storage type for the agent")}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* 动态环境变量配置(根据选择的数据存储模块) */}
|
||||
{selectedApiDataTemplate && (() => {
|
||||
const template = apiDataTemplates.find(t => t.template === selectedApiDataTemplate)
|
||||
if (!template?.env_info) return null
|
||||
const required = template.env_info.required || {}
|
||||
const optional = template.env_info.optional || {}
|
||||
return (
|
||||
<div className="border rounded-lg p-4 space-y-3 bg-muted/30">
|
||||
<h4 className="font-medium text-sm">{t("数据库连接配置", "Database Connection Config")}</h4>
|
||||
{Object.entries(required).map(([key, desc]) => (
|
||||
<div key={key} className="space-y-1">
|
||||
<Label className="text-sm">{key} <span className="text-destructive">*</span></Label>
|
||||
<Input
|
||||
placeholder={String(desc)}
|
||||
value={envConfig[key] || ""}
|
||||
onChange={(e) => setEnvConfig({ ...envConfig, [key]: e.target.value })}
|
||||
type={key.toLowerCase().includes('password') ? 'password' : 'text'}
|
||||
/>
|
||||
</div>
|
||||
))}
|
||||
{Object.keys(optional).length > 0 && (
|
||||
<>
|
||||
<div className="border-t pt-2 mt-2">
|
||||
<p className="text-xs text-muted-foreground mb-2">{t("可选配置", "Optional Config")}</p>
|
||||
</div>
|
||||
{Object.entries(optional).map(([key, desc]) => (
|
||||
<div key={key} className="space-y-1">
|
||||
<Label className="text-sm text-muted-foreground">{key}</Label>
|
||||
<Input
|
||||
placeholder={String(desc)}
|
||||
value={envConfig[key] || ""}
|
||||
onChange={(e) => setEnvConfig({ ...envConfig, [key]: e.target.value })}
|
||||
/>
|
||||
</div>
|
||||
))}
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
)
|
||||
})()}
|
||||
|
||||
<div className="grid grid-cols-2 gap-4">
|
||||
<div className="space-y-2">
|
||||
<Label>{t("Agent个数", "Agent Count")}</Label>
|
||||
|
||||
Reference in New Issue
Block a user