refactor(web): migrate code generator model storage (#37195)

This commit is contained in:
lmlm 2026-06-09 10:07:24 +08:00 committed by GitHub
parent 5d814ca8c1
commit d80bd2a135
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 22 additions and 27 deletions

View File

@ -438,9 +438,6 @@
}
},
"web/app/components/app/configuration/config/code-generator/get-code-generator-res.tsx": {
"no-restricted-globals": {
"count": 6
},
"react/set-state-in-effect": {
"count": 4
},

View File

@ -27,6 +27,7 @@ import Loading from '@/app/components/base/loading'
import { ModelTypeEnum } from '@/app/components/header/account-setting/model-provider-page/declarations'
import { useModelListAndDefaultModelAndCurrentProviderAndModel } from '@/app/components/header/account-setting/model-provider-page/hooks'
import ModelParameterModal from '@/app/components/header/account-setting/model-provider-page/model-parameter-modal'
import { useLocalStorage } from '@/hooks/use-local-storage'
import { generateRule } from '@/service/debug'
import { useGenerateRuleTemplate } from '@/service/use-apps'
import { languageMap } from '../../../../workflow/nodes/_base/components/editor/code-editor/index'
@ -39,6 +40,17 @@ import { GeneratorType } from '../automatic/types'
import useGenData from '../automatic/use-gen-data'
const i18nPrefix = 'generate'
const AUTO_GEN_MODEL_STORAGE_KEY = 'auto-gen-model'
const defaultCompletionParams = {
temperature: 0.7,
max_tokens: 0,
top_p: 0,
echo: false,
stop: [],
presence_penalty: 0,
frequency_penalty: 0,
}
type IGetCodeGeneratorResProps = {
flowId: string
nodeId: string
@ -63,19 +75,8 @@ export const GetCodeGeneratorResModal: FC<IGetCodeGeneratorResProps> = (
},
) => {
const { t } = useTranslation()
const defaultCompletionParams = {
temperature: 0.7,
max_tokens: 0,
top_p: 0,
echo: false,
stop: [],
presence_penalty: 0,
frequency_penalty: 0,
}
const localModel = localStorage.getItem('auto-gen-model')
? JSON.parse(localStorage.getItem('auto-gen-model') as string) as Model
: null
const [model, setModel] = React.useState<Model>(localModel || {
const [storedModel, setStoredModel] = useLocalStorage<Model>(AUTO_GEN_MODEL_STORAGE_KEY)
const [model, setModel] = React.useState<Model>(storedModel || {
name: '',
provider: '',
mode: mode as unknown as ModelModeType,
@ -122,8 +123,8 @@ export const GetCodeGeneratorResModal: FC<IGetCodeGeneratorResProps> = (
mode: newValue.mode as ModelModeType,
}
setModel(newModel)
localStorage.setItem('auto-gen-model', JSON.stringify(newModel))
}, [model, setModel])
setStoredModel(newModel)
}, [model, setModel, setStoredModel])
const handleCompletionParamsChange = useCallback((newParams: FormValue) => {
const newModel = {
@ -131,8 +132,8 @@ export const GetCodeGeneratorResModal: FC<IGetCodeGeneratorResProps> = (
completion_params: newParams as CompletionParams,
}
setModel(newModel)
localStorage.setItem('auto-gen-model', JSON.stringify(newModel))
}, [model, setModel])
setStoredModel(newModel)
}, [model, setModel, setStoredModel])
const onGenerate = async () => {
if (!isValid())
@ -172,15 +173,12 @@ export const GetCodeGeneratorResModal: FC<IGetCodeGeneratorResProps> = (
useEffect(() => {
if (defaultModel) {
const localModel = localStorage.getItem('auto-gen-model')
? JSON.parse(localStorage.getItem('auto-gen-model') || '')
: null
if (localModel) {
if (storedModel) {
setModel({
...localModel,
...storedModel,
completion_params: {
...defaultCompletionParams,
...localModel.completion_params,
...storedModel.completion_params,
},
})
}
@ -192,7 +190,7 @@ export const GetCodeGeneratorResModal: FC<IGetCodeGeneratorResProps> = (
}))
}
}
}, [defaultModel])
}, [defaultModel, storedModel])
const renderLoading = (
<div className="flex h-full w-0 grow flex-col items-center justify-center space-y-3">