feat: 模型配置提交格式改为JSON数组字符串
- handleSave中将model字段转换为JSON字符串格式:[{id, name}]
- 更新parseModelSelections支持解析JSON格式和旧逗号分隔格式
- 移除normalize函数,由handleSave统一处理格式转换
main
parent
d00ef10e9f
commit
40c5396a80
|
|
@ -152,9 +152,6 @@ export default function CapabilitySettings({
|
||||||
label="模型"
|
label="模型"
|
||||||
className="mb-0"
|
className="mb-0"
|
||||||
getValueProps={(value) => ({ value: parseModelSelections(value) })}
|
getValueProps={(value) => ({ value: parseModelSelections(value) })}
|
||||||
normalize={(value) =>
|
|
||||||
Array.isArray(value) ? value.map((item) => String(item).trim()).filter(Boolean).join(',') : ''
|
|
||||||
}
|
|
||||||
>
|
>
|
||||||
<ModelCheckboxDropdown models={models} />
|
<ModelCheckboxDropdown models={models} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
|
|
|
||||||
|
|
@ -32,10 +32,26 @@ export const TYPE_TAG: Record<SkillType, { color: string; icon: string; label: s
|
||||||
|
|
||||||
export const isImageUrl = (url: string | undefined) => url?.startsWith('http') || url?.startsWith('/');
|
export const isImageUrl = (url: string | undefined) => url?.startsWith('http') || url?.startsWith('/');
|
||||||
|
|
||||||
export const parseModelSelections = (value?: string | string[]) =>
|
export const parseModelSelections = (value?: string | string[]) => {
|
||||||
Array.isArray(value)
|
if (Array.isArray(value)) {
|
||||||
? value
|
return value;
|
||||||
: String(value || '')
|
}
|
||||||
|
// 尝试解析 JSON 格式
|
||||||
|
try {
|
||||||
|
const parsed = JSON.parse(String(value || '[]'));
|
||||||
|
if (Array.isArray(parsed)) {
|
||||||
|
return parsed.map((item: any) => {
|
||||||
|
if (typeof item === 'object' && item.id) {
|
||||||
|
return item.id;
|
||||||
|
}
|
||||||
|
return String(item);
|
||||||
|
}).filter(Boolean);
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
// 兼容旧格式:逗号分隔的字符串
|
||||||
|
}
|
||||||
|
return String(value || '')
|
||||||
.split(',')
|
.split(',')
|
||||||
.map((item) => item.trim())
|
.map((item) => item.trim())
|
||||||
.filter(Boolean);
|
.filter(Boolean);
|
||||||
|
};
|
||||||
|
|
|
||||||
|
|
@ -163,9 +163,13 @@ export function useAgentEditor({ id, isNew, form, message, navigate }: UseAgentE
|
||||||
Object.keys(values).forEach((key) => {
|
Object.keys(values).forEach((key) => {
|
||||||
const formValue = (values as any)[key];
|
const formValue = (values as any)[key];
|
||||||
const originalValue = (agent as any)?.[key];
|
const originalValue = (agent as any)?.[key];
|
||||||
// 特殊处理 model 字段:如果是数组,用逗号拼接成字符串
|
// 特殊处理 model 字段:将 id 和 name 组合成 JSON 数组字符串
|
||||||
if (key === 'model' && Array.isArray(formValue)) {
|
if (key === 'model' && Array.isArray(formValue)) {
|
||||||
changedFields[key] = formValue.join(',');
|
const modelObjects = formValue.map((modelId: string) => {
|
||||||
|
const model = models.find((m) => m.id === modelId);
|
||||||
|
return { id: modelId, name: model?.model_name || '' };
|
||||||
|
});
|
||||||
|
changedFields[key] = JSON.stringify(modelObjects);
|
||||||
} else if (formValue !== originalValue) {
|
} else if (formValue !== originalValue) {
|
||||||
changedFields[key] = formValue;
|
changedFields[key] = formValue;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue