Merge branch 'feat/support-free-try-app' of github.com:langgenius/dify into feat/support-free-try-app

This commit is contained in:
CodingOnStar 2025-10-14 18:54:11 +08:00
commit 1507792a0c
6 changed files with 64 additions and 18 deletions

View File

@ -19,6 +19,7 @@ import { ModelModeType } from '@/types/app'
const Config: FC = () => {
const {
readonly,
mode,
isAdvancedMode,
modelModeType,
@ -66,16 +67,20 @@ const Config: FC = () => {
promptTemplate={promptTemplate}
promptVariables={promptVariables}
onChange={handlePromptChange}
readonly={readonly}
/>
{/* Variables */}
<ConfigVar
promptVariables={promptVariables}
onPromptVariablesChange={handlePromptVariablesNameChange}
readonly={readonly}
/>
{/* Dataset */}
<DatasetConfig />
<DatasetConfig
// readonly={readonly}
/>
{/* Tools */}
{isAgent && (

View File

@ -98,13 +98,15 @@ const Item: FC<ItemProps> = ({
text={t('dataset.externalTag') as string}
/>
}
<Drawer isOpen={showSettingsModal} onClose={() => setShowSettingsModal(false)} footer={null} mask={isMobile} panelClassName='mt-16 mx-2 sm:mr-2 mb-3 !p-0 !max-w-[640px] rounded-xl'>
<SettingsModal
currentDataset={config}
onCancel={() => setShowSettingsModal(false)}
onSave={handleSave}
/>
</Drawer>
{showSettingsModal && (
<Drawer isOpen={showSettingsModal} onClose={() => setShowSettingsModal(false)} footer={null} mask={isMobile} panelClassName='mt-16 mx-2 sm:mr-2 mb-3 !p-0 !max-w-[640px] rounded-xl'>
<SettingsModal
currentDataset={config}
onCancel={() => setShowSettingsModal(false)}
onSave={handleSave}
/>
</Drawer>
)}
</div >
)
}

View File

@ -21,7 +21,7 @@ import type { Features as FeaturesData, FileUpload } from '@/app/components/base
import { FILE_EXTS } from '@/app/components/base/prompt-editor/constants'
import { SupportUploadFileTypes } from '@/app/components/workflow/types'
import { useGetTryAppInfo } from '@/service/use-try-app'
import { useGetTryAppDataSets, useGetTryAppInfo } from '@/service/use-try-app'
import { noop } from 'lodash'
import { correctModelProvider } from '@/utils'
import { userInputsFormToPromptVariables } from '@/utils/model-config'
@ -57,12 +57,36 @@ const Configuration: FC<Props> = ({
const media = useBreakpoints()
const isMobile = media === MediaType.mobile
const { data: appDetail, isLoading } = useGetTryAppInfo(appId)
const { data: appDetail, isLoading: isLoadingAppDetail } = useGetTryAppInfo(appId)
const datasetIds = (() => {
if(isLoadingAppDetail)
return []
const modelConfig = appDetail?.model_config
if(!modelConfig)
return []
let datasets: any = null
if (modelConfig.agent_mode?.tools?.find(({ dataset }: any) => dataset?.enabled))
datasets = modelConfig.agent_mode?.tools.filter(({ dataset }: any) => dataset?.enabled)
// new dataset struct
else if (modelConfig.dataset_configs.datasets?.datasets?.length > 0)
datasets = modelConfig.dataset_configs?.datasets?.datasets
if (datasets?.length && datasets?.length > 0)
return datasets.map(({ dataset }: any) => dataset.id)
return []
})()
const { data: dataSetData, isLoading: isLoadingDatasets } = useGetTryAppDataSets(appId, datasetIds)
const dataSets = dataSetData?.data || []
const isLoading = isLoadingAppDetail || isLoadingDatasets
const modelConfig = ((modelConfig?: BackendModelConfig) => {
if(isLoading || !modelConfig)
return defaultModelConfig
const model = modelConfig.model
const newModelConfig = {
provider: correctModelProvider(model.provider),
model_id: model.name,
@ -105,7 +129,7 @@ const Configuration: FC<Props> = ({
retriever_resource: modelConfig.retriever_resource,
annotation_reply: modelConfig.annotation_reply,
external_data_tools: modelConfig.external_data_tools,
dataSets: [],
dataSets,
agentConfig: appDetail?.mode === 'agent-chat' ? {
max_iteration: DEFAULT_AGENT_SETTING.max_iteration,
...modelConfig.agent_mode,
@ -143,12 +167,6 @@ const Configuration: FC<Props> = ({
// completion configuration
const completionPromptConfig = modelConfig?.completion_prompt_config || clone(DEFAULT_COMPLETION_PROMPT_CONFIG) as any
// datasets
const dataSets = (() => {
return []
})()
// const selectedIds = dataSets.map(item => item.id)
// prompt & model config
const inputs = {}
const query = ''
@ -209,6 +227,7 @@ const Configuration: FC<Props> = ({
</div>
}
const value = {
readonly: true,
appId,
isAPIKeySet: true,
isTrailFinished: false,

View File

@ -29,6 +29,7 @@ import type { Collection } from '@/app/components/tools/types'
import { noop } from 'lodash-es'
type IDebugConfiguration = {
readonly?: boolean
appId: string
isAPIKeySet: boolean
isTrailFinished: boolean
@ -108,6 +109,7 @@ type IDebugConfiguration = {
}
const DebugConfigurationContext = createContext<IDebugConfiguration>({
readonly: false,
appId: '',
isAPIKeySet: false,
isTrailFinished: false,

View File

@ -6,6 +6,8 @@ import type {
SiteInfo,
} from '@/models/share'
import type { ModelConfig } from '@/types/app'
import qs from 'qs'
import type { DataSetListResponse } from '@/models/datasets'
type TryAppInfo = {
name: string
@ -17,3 +19,8 @@ type TryAppInfo = {
export const fetchTryAppInfo = async (appId: string) => {
return get(`/trial-apps/${appId}`) as Promise<TryAppInfo>
}
export const fetchTryAppDatasets = (appId: string, ids: string[]) => {
const urlParams = qs.stringify({ ids }, { indices: false })
return get<DataSetListResponse>(`/trial-apps/${appId}/datasets?${urlParams}`)
}

View File

@ -1,6 +1,7 @@
import { useQuery } from '@tanstack/react-query'
import { fetchTryAppInfo } from './try-app'
import { fetchTryAppDatasets, fetchTryAppInfo } from './try-app'
import { AppSourceType, fetchAppParams } from './share'
import type { DataSetListResponse } from '@/models/datasets'
const NAME_SPACE = 'try-app'
@ -21,3 +22,13 @@ export const useGetTryAppParams = (appId: string) => {
},
})
}
export const useGetTryAppDataSets = (appId: string, ids: string[]) => {
return useQuery<DataSetListResponse>({
queryKey: [NAME_SPACE, 'dataSets', ids],
queryFn: () => {
return fetchTryAppDatasets(appId, ids)
},
enabled: ids.length > 0,
})
}